Crytek открыла исходный код CryEngine |
Здравствуйте, гость ( Авторизация | Регистрация )
Crytek открыла исходный код CryEngine |
26.07.2016, 22:03
Сообщение
#1
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
Движок, на котором сделаны такие игры как: Crysis, Ryse: Son of Rome, Star Citizen и многие другие, выложен в виде исходных кодов на github.com и доступен теперь бесплатно для разработчиков игр.
Разработчики могут использовать CryEngine 5.1 для создания коммерческих игр, и при этом не обязаны платить создателям движка за его использование, так как он теперь распространяется по схеме pay what you want (плати сколько хочешь). В случае, если игра на CryEngine будет финансово успешной и разработчик захочет заплатить за использование движка, он сможет не только выбрать произвольную сумму, но и указать, какой процент из этих денег пойдет CryEngine, а какой на поддержку инди-проектов, также использующих движок CryEngine. Ссылка на репозиторий: Интересный факт: из авторитетных источников стало известно, что основной костяк программистов в разное время составляли выходцы из постсоветских стран. В комментариях к исходному коду также можно встретить их фамилии: Хонич - автор рендерера Давиденко - автор редактора Князев - физики Шайкин (основатель gamedev.ru, к слову) - то там то сям приложил руки Мигдальский - автор анимационной системы -------------------- nop
|
 
|
|
|
|
26.07.2016, 22:07
Сообщение
#2
|
|
Кандидат Игровых Наук Репутация: 367 Группа: Участник Сообщений: 3201 Награды: 10 Регистрация: 16.07.2008 |
топикбан за нарушение правил
Сообщение отредактировал refuse - 26.07.2016, 22:08 |
 
|
|
26.07.2016, 22:16
Сообщение
#3
|
|
Опытный Геймер Репутация: 18 Группа: Участник Сообщений: 178 Награды: 3 Регистрация: 01.03.2009 |
с подключением
-------------------- An error... error... fails to understand... creation...
|
 
|
|
26.07.2016, 22:53
Сообщение
#4
|
|
Заслуженный Мастер Игры Репутация: 759 Группа: Участник Сообщений: 1711 Награды: 2 Регистрация: 21.07.2011 |
Интересный факт: из авторитетных источников стало известно, что основной костяк программистов в разное время составляли выходцы из постсоветских стран. В комментариях к исходному коду также можно встретить их фамилии: Хонич - автор рендерера Давиденко - автор редактора Князев - физики Шайкин (основатель gamedev.ru, к слову) - то там то сям приложил руки Мигдальский - автор анимационной системы Ещё во времена создания первого Crysis к ним ездили из Игромании, и показывали что двигло делают практически одни русскоязычные спецы. Нашел видос - -------------------- PC1 - Core i7 5820k * 64Gb RAM * GeForce GTX 770 * 240Gb SSD * 4+3+1,5 Tb HDD
Node1 - Core i7 4770 * 16Gb RAM Node2 - Core i7 3770 * 16Gb RAM Node3 - Core i7 4790K * 16Gb RAM PC2 - Core i5 2400 * 4Gb RAM * ATI FirePro V5800 * 60 Gb SSD Хе-хе |
 
|
|
26.07.2016, 22:59
Сообщение
#5
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Нашел видос - О, знакомый чувак Видели его в Киеве на выставке в 2007-м: -------------------- |
 
|
|
26.07.2016, 23:11
Сообщение
#6
|
|
Ветеран Репутация: 4 Группа: Участник Сообщений: 85 Награды: 1 Регистрация: 27.09.2015 |
Теперь можно сделать ?
|
 
|
|
28.07.2016, 01:23
Сообщение
#7
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
Итак, собрал CryEngine из исходных кодов, а вместе с ним небольшое демонстрационное приложение (запустить правда не удалось, думаю по причине отсутствия ресурсов). Процесс этот занял у меня всего несколько часов, да и то только потому, что не учел некоторые нюансы, зная о которых время сборки можно сократить где-то до получаса. Но обо всем по порядку:
Первым делом нам надо получить исходники, это можно сделать двумя способами - скачать архив с исходниками с хостинга проекта - клонировать репозиторий с исходным кодом на жесткий диск при помощи git-клиента Я предпочитаю второй способ, также я предпочитаю использовать консольную версию гита, и вам советую, скачать гит-клиент можно здесь: Для клонирования репозитория открываем терминал Git Bash и выбираем целевую директорию куда мы хотим клонировать папку с исходным кодом, делается это при помощи консольной команды: Код $ cd /диск/путь Далее, клонируем репозиторий, введя в терминал команду git clone Код git clone https://github.com/CRYTEK-CRYENGINE/CRYENGINE.git после окончания клонирования переместимся в папку с исходным кодом Код cd CRYENGINE и убедимся, что мы находимся в релизной ветке проекта, в которую попадают только стабильные версии Код git branch результат операции "release" - ок, мы попали в нужную ветку, если же нет, говорим следующее: Код git checkout release После того как мы получили исходный код нам нужно подсосать с серверов CryTek необходимые для сборки зависимости, для этого запускаем программу download_sdks.exe которая находится в корне проекта. Ок, переходим ко второй части - сборке проекта. При просмотре папки с исходным кодом можно заметить файл со скриптом кроссплатформенной системы сборки проектов CMake и как вы уже догадались нам понадобится установить ее - но нет, на самом деле проект собирается другой системой сборки, называется она Перед тем как ей воспользоваться, должен предупредить любителей ставить на комп все самое модное и современное - если вы уже успели поставить себе Visual Studio 2015 то знайте, она вам не пригодится (ну или придется углубляться в тонкости настройки waf, чтобы собрать проект в ней) придется воспользоваться более ранними версиями. В качестве минимальной указана версия 11.0 т.е. VisualStudio 2012, но я собирал VS 2013. Запускаем программу cry_waf.exe и отмечаем проекты, для которых мы хотим сгенерировать сборочные конфигурации. Далее, если у вас в системе уже установлена VS 2015 необходимо в options -> Compiler detection установить в поле force_msvc другую версию компилятора (11 или 12). И наконец жмем последовательно на кнопочки Generate / Visual studio solutions и Tools / Configure, переходим в папку Solutions, запускаем солюшн CRYENGINE.sln и компилируем код. Сообщение отредактировал refuse - 28.07.2016, 01:26 -------------------- nop
|
 
|
|
28.07.2016, 08:36
Сообщение
#8
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
А SandBox в исходниках имеется? Чего-то не обнаружил иль пропустил. Если нет, выходит далеко не полные.
Сообщение отредактировал MegaNub - 28.07.2016, 08:36 |
 
|
|
28.07.2016, 08:44
Сообщение
#9
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
также я предпочитаю использовать консольную версию гита, и вам советую, скачать гит-клиент можно здесь: Для новичков (и не только), удобнее будет использовать -------------------- |
 
|
|
28.07.2016, 10:50
Сообщение
#10
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
А SandBox в исходниках имеется? Нет, насколько я понимаю исходники редактора в открытый доступ не попали, также как не попали туда исходные коды игр от Crytek. Полагаю, разработчики предоставили нам исходные коды ядра, вокруг которого выстраивается игра со своими редакторами, утилитами, игровой логикой и прочими специфическими фишками. Но вполне возможно, что предусмотрены некоторые лазейки для использования Sandbox в качестве внешнего инструмента, не могу пока ничего определенного сказать на этот счет т.к. только начал исследование. Для новичков (и не только), удобнее будет использовать Это дело привычки, на мой вкус привыкать надо сразу к хорошему, а консольная утилита хороша тем, что позволяет общаться с гитом напрямую, избегая оболочек которые навязывают гит таким, каким его себе представляет ее разработчик -------------------- nop
|
 
|
|
28.07.2016, 10:58
Сообщение
#11
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
28.07.2016, 11:03
Сообщение
#12
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
-------------------- nop
|
 
|
|
29.07.2016, 00:11
Сообщение
#13
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
Нашел ошибку в physicalentity.cpp(24), очевидно объявленный в этой строке массив объектов RigidBody используется при конструировании другого объекта.
После того как исправил запустилось демонстрационное приложение и я увидел пустую консоль, очевидно необходимо подсунуть ресурсы. Проблемная строчка помечена комментарием: Приделал костыль на скорую руку: git diff diff --git a/Code/CryEngine/CryPhysics/physicalentity.cpp b/Code/CryEngine/CryPhysics/physicalentity.cpp index 4f54d21..d0c591a 100644 --- a/Code/CryEngine/CryPhysics/physicalentity.cpp +++ b/Code/CryEngine/CryPhysics/physicalentity.cpp @@ -21,7 +21,12 @@ #include "rigidentity.h" #include "softentity.h" -RigidBody g_StaticRigidBodies[MAX_PHYS_THREADS]; +RigidBody *GetStaticRigidBodies() +{ + static RigidBody g_StaticRigidBodies[MAX_PHYS_THREADS]; + return g_StaticRigidBodies; +} + CPhysicalEntity g_StaticPhysicalEntity(0); geom CPhysicalEntity::m_defpart; diff --git a/Code/CryEngine/CryPhysics/physicalentity.h b/Code/CryEngine/CryPhysics/physicalentity.h index 084bb6d..77617df 100644 --- a/Code/CryEngine/CryPhysics/physicalentity.h +++ b/Code/CryEngine/CryPhysics/physicalentity.h @@ -393,8 +393,8 @@ public: static int g_nPartsAlloc,g_nJointsAlloc; }; -extern RigidBody g_StaticRigidBodies[]; -#define g_StaticRigidBody (g_StaticRigidBodies[0]) +extern RigidBody *GetStaticRigidBodies(); +#define g_StaticRigidBody (GetStaticRigidBodies()[0]) extern CPhysicalEntity g_StaticPhysicalEntity; template<class T> int GetStructSize(T *pstruct); diff --git a/Code/CryEngine/CryPhysics/rigidbody.cpp b/Code/CryEngine/CryPhysics/rigidbody.cpp index 49f6460..ab671ab 100644 --- a/Code/CryEngine/CryPhysics/rigidbody.cpp +++ b/Code/CryEngine/CryPhysics/rigidbody.cpp @@ -447,14 +447,14 @@ char *AllocSolverTmpBuf(int size) return 0; } -extern RigidBody g_StaticRigidBodies[]; +extern RigidBody *GetStaticRigidBodies(); void RegisterContact(entity_contact *pcontact) { int iCaller = get_iCaller_int(); if (!(pcontact->flags & (contact_maintain_count|contact_rope))) pcontact->pBounceCount = &pcontact->iCount; - if ((UINT_PTR)pcontact->pbody[1]-(UINT_PTR)g_StaticRigidBodies<(UINT_PTR)(sizeof(RigidBody)*MAX_PHYS_THREADS)) - pcontact->pbody[1] = &g_StaticRigidBodies[iCaller]; + if ((UINT_PTR)pcontact->pbody[1]-(UINT_PTR)GetStaticRigidBodies()<(UINT_PTR)(sizeof(RigidBody)*MAX_PHYS_THREADS)) + pcontact->pbody[1] = &GetStaticRigidBodies()[iCaller]; g_pContacts[g_nContacts++] = pcontact; g_nContacts = min(g_nContacts,(int)(CRY_ARRAY_COUNT(g_pContacts))-1); } -------------------- nop
|
 
|
|
31.07.2016, 20:57
Сообщение
#14
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
С ресурсами действительно проблема, пытался подсунуть ресурсы из CryEngine SDK собранному из исходников демо - не жрет Разбираюсь.
-------------------- nop
|
 
|
|
01.08.2016, 00:05
Сообщение
#15
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
Всё, я его победил
В следующий раз попытаюсь поинтереснее сцену запустить Сообщение отредактировал refuse - 01.08.2016, 00:27 -------------------- nop
|
 
|
|
01.08.2016, 14:50
Сообщение
#16
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
01.08.2016, 15:42
Сообщение
#17
|
|
Продвинутый геймер Репутация: 90 Группа: Участник Сообщений: 395 Награды: 3 Регистрация: 07.04.2014 |
эх исходники бы Sandbox 2
-------------------- no more running
|
 
|
|
01.08.2016, 16:03
Сообщение
#18
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Регистрация: 05.05.2012 |
Можно движок статически слинковать? В солюшне такая конфигурация отсутствует + CryEngine использует модульную архитектуру, т.е. каждый компонент вынесен в отдельную динамическую библиотеку - рендерер в свою, физика в свою, игровая логика в свою и т.д. Загружаются модули в рантайме ф-ией LoadLibrary, которая имеет вид: Код #ifdef _WIN32 #define LoadLibrary LoadLibraryA #else ... #endif Так что без усилий в статическую библиотеку скомпилировать не получится. Какой размер экзешника получается? всего размер exe + dll в выходном каталоге примерно 122 МБ в отладочной конфигурации, в релизной еще не собирал, вечером посмотрю. эх исходники бы Sandbox 2 Думается мне они не нужны. Во всяком случае можно вполне обойтись сборкой редактора из комплекта CryEngine SDK. -------------------- nop
|
 
|
|
14.08.2016, 03:09
Сообщение
#19
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
|
 
|
|
14.08.2016, 16:00
Сообщение
#20
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
эх исходники бы Sandbox 2 Ray, на офф. форуме недовольствоели по поводу отсутствия исходников sandbox-a, сначала cry team написали, что в планах нет из-за компонентов 3-х сторон. На что им показали в сторону амазона с их lumberyard. По итогу, на сколько я помню, закончилось всё тем, что как только выделят инженера для адаптации к open source, так и появятся исходники. -------------------- |
 
|
|
Текстовая версия | Сейчас: 16.06.2024, 00:31 |