Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Crytek открыла исходный код CryEngine
GAMEINATOR forums > Soft, Hard и периферия > Hard & Soft
autistic
Движок, на котором сделаны такие игры как: Crysis, Ryse: Son of Rome, Star Citizen и многие другие, выложен в виде исходных кодов на github.com и доступен теперь бесплатно для разработчиков игр.
Разработчики могут использовать CryEngine 5.1 для создания коммерческих игр, и при этом не обязаны платить создателям движка за его использование, так как он теперь распространяется по схеме pay what you want (плати сколько хочешь).
В случае, если игра на CryEngine будет финансово успешной и разработчик захочет заплатить за использование движка, он сможет не только выбрать произвольную сумму, но и указать, какой процент из этих денег пойдет CryEngine, а какой на поддержку инди-проектов, также использующих движок CryEngine.

Ссылка на репозиторий: https://github.com/CRYTEK-CRYENGINE/CRYENGINE

Интересный факт:
из авторитетных источников стало известно, что основной костяк программистов в разное время составляли выходцы из постсоветских стран. В комментариях к исходному коду также можно встретить их фамилии:
Хонич - автор рендерера
Давиденко - автор редактора
Князев - физики
Шайкин (основатель gamedev.ru, к слову) - то там то сям приложил руки
Мигдальский - автор анимационной системы
pentax
топикбан за нарушение правил
skina12
с подключением
LexxoR
Цитата(refuse @ 27.07.2016, 02:01) *
Интересный факт:
из авторитетных источников стало известно, что основной костяк программистов в разное время составляли выходцы из постсоветских стран. В комментариях к исходному коду также можно встретить их фамилии:
Хонич - автор рендерера
Давиденко - автор редактора
Князев - физики
Шайкин (основатель gamedev.ru, к слову) - то там то сям приложил руки
Мигдальский - автор анимационной системы


Ещё во времена создания первого Crysis к ним ездили из Игромании, и показывали что двигло делают практически одни русскоязычные спецы.

Нашел видос - https://youtu.be/Cjfk3U18rFw?t=6m50s
OlegatoR
Цитата(LexxoR @ 26.07.2016, 22:51) *
Нашел видос - https://youtu.be/Cjfk3U18rFw?t=6m50s

О, знакомый чувак smile.gif Видели его в Киеве на выставке в 2007-м:


Bidjo
Теперь можно сделать totstalkir.gif ?
autistic
Итак, собрал CryEngine из исходных кодов, а вместе с ним небольшое демонстрационное приложение (запустить правда не удалось, думаю по причине отсутствия ресурсов). Процесс этот занял у меня всего несколько часов, да и то только потому, что не учел некоторые нюансы, зная о которых время сборки можно сократить где-то до получаса. Но обо всем по порядку:

Первым делом нам надо получить исходники, это можно сделать двумя способами
- скачать архив с исходниками с хостинга проекта https://github.com/CRYTEK-CRYENGINE/CRYENGINE
- клонировать репозиторий с исходным кодом на жесткий диск при помощи git-клиента

Я предпочитаю второй способ, также я предпочитаю использовать консольную версию гита, и вам советую, скачать гит-клиент можно здесь: https://git-scm.com/downloads
Для клонирования репозитория открываем терминал 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 и как вы уже догадались нам понадобится установить ее - но нет, на самом деле проект собирается другой системой сборки, называется она waf
Перед тем как ей воспользоваться, должен предупредить любителей ставить на комп все самое модное и современное - если вы уже успели поставить себе 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 и компилируем код.
MegaNub
А SandBox в исходниках имеется? Чего-то не обнаружил иль пропустил. Если нет, выходит далеко не полные.
RedMagic
Цитата(refuse @ 28.07.2016, 01:21) *
также я предпочитаю использовать консольную версию гита, и вам советую, скачать гит-клиент можно здесь: https://git-scm.com/downloads

Для новичков (и не только), удобнее будет использовать официальный клиент гитхаба.
autistic
Цитата(MegaNub @ 28.07.2016, 10:34) *
А SandBox в исходниках имеется?

Нет, насколько я понимаю исходники редактора в открытый доступ не попали, также как не попали туда исходные коды игр от Crytek.
Полагаю, разработчики предоставили нам исходные коды ядра, вокруг которого выстраивается игра со своими редакторами, утилитами, игровой логикой и прочими специфическими фишками. Но вполне возможно, что предусмотрены некоторые лазейки для использования Sandbox в качестве внешнего инструмента, не могу пока ничего определенного сказать на этот счет т.к. только начал исследование.


Цитата(STALKER2011x @ 28.07.2016, 10:42) *
Для новичков (и не только), удобнее будет использовать официальный клиент гитхаба.

Это дело привычки, на мой вкус привыкать надо сразу к хорошему, а консольная утилита хороша тем, что позволяет общаться с гитом напрямую, избегая оболочек которые навязывают гит таким, каким его себе представляет ее разработчик smile.gif
abramcumner
Цитата(refuse @ 28.07.2016, 01:21) *
собрал CryEngine из исходных кодов

Цитата
запустить правда не удалось

Сборка не засчитана biggrin.gif
autistic
Цитата(abramcumner @ 28.07.2016, 12:56) *
Сборка не засчитана biggrin.gif

билд лог утверждает обратное smile.gif
autistic
Нашел ошибку в 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);
}
autistic
С ресурсами действительно проблема, пытался подсунуть ресурсы из CryEngine SDK собранному из исходников демо - не жрет sad.gif Разбираюсь.
autistic
Всё, я его победил biggrin.gif



В следующий раз попытаюсь поинтереснее сцену запустить wink_old.gif
abramcumner
Цитата(refuse @ 01.08.2016, 00:03) *
Всё, я его победил biggrin.gif

Вооо, другое дело.

Можно движок статически слинковать? Какой размер экзешника получается?
Asterix
эх исходники бы Sandbox 2 sad.gif
autistic
Цитата(abramcumner @ 01.08.2016, 16:48) *
Можно движок статически слинковать?

В солюшне такая конфигурация отсутствует + CryEngine использует модульную архитектуру, т.е. каждый компонент вынесен в отдельную динамическую библиотеку - рендерер в свою, физика в свою, игровая логика в свою и т.д. Загружаются модули в рантайме ф-ией LoadLibrary, которая имеет вид:
Код
#ifdef _WIN32
#define LoadLibrary LoadLibraryA
#else
...
#endif

Так что без усилий в статическую библиотеку скомпилировать не получится.

Цитата(abramcumner @ 01.08.2016, 16:48) *
Какой размер экзешника получается?

всего размер exe + dll в выходном каталоге примерно 122 МБ в отладочной конфигурации, в релизной еще не собирал, вечером посмотрю.

Цитата(Ray @ 01.08.2016, 17:40) *
эх исходники бы Sandbox 2

Думается мне они не нужны. Во всяком случае можно вполне обойтись сборкой редактора из комплекта CryEngine SDK.
Tron
Цитата(Ray @ 01.08.2016, 15:40) *
эх исходники бы Sandbox 2 sad.gif

Возьми ламберярд первых версий, отличий 0

Цитата
Так что без усилий в статическую библиотеку скомпилировать не получится.

Получится, там был раньше(в CE3) отдельный флаг smile.gif
Neo][
Цитата(Ray @ 01.08.2016, 17:40) *
эх исходники бы Sandbox 2

Ray, на офф. форуме недовольствоели по поводу отсутствия исходников sandbox-a, сначала cry team написали, что в планах нет из-за компонентов 3-х сторон. На что им показали в сторону амазона с их lumberyard.
По итогу, на сколько я помню, закончилось всё тем, что как только выделят инженера для адаптации к open source, так и появятся исходники.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.