Статья поднимает интересные темы, но с большинством объяснений я не согласен.
Про документацию - сравнивать с Юнити хорошо, но это сравнение некорректное. В юнити у вас по дефолту не то что документации нет, у вас _кода_ нет (если нет договора за много денег с юнитеками). Соответственно к отсутствующему коду у вас тоже документации нет. В анриле часть движка, ориентированная на контент-мейкеров и программистов игровых механик неплохо задокументирована. Не могу сказать, что лучше чем в юньке, но по ней можно хоть что-то выяснить. По крайней мере, если сравнивать с проприетарными движками. По секрету, у проприетарных закрытых движков довольно часто документации нет никакой _вообще_. Вот совсем нет. Может быть немножко статей, преимущественно нацеленных на контент мейкеров есть. Остальное - ищи человека, который это писал. Если он не уволился. Если возможности такой нет, то только код. И нет тредов на форумах, где кто-то из коммьюнити нашел решение. Потому что коммьюнити нету. Не для всех закрытых движков очевидно справедливо, но не могу сказать что ситуация уникальная. Для сомневающихся предлагаю оценить документацию к CryEngine, который даже не закрытый: https://docs.cryengine.com Найдете там нормальные доки по коду - покажите. В закрытых движках ситуация не лучше.
Хот релоад - за всю жизнь не видел ни единого нормального инструмента для хот-релоада плюсового кода, который бы работал всегда. Потихоньку начинаю склоняться к мысли, что для достаточно сложных систем задача невозможная. Это же не просто дллку пересобрать и сделать LoadLibrary. Надо еще не профакапить данные, которые в ram лежат. Часть из них будет лежать в той ддлке, которую релоадят, часть нет, другие модули будут зависеть от данных, которые получены из перезагруженной либы и т.д. и т.п. Это не просто сложная задача, это архисложная задача, если хочется релоадить произвольный юзерский код. Потому что юзерский код вообще что угодно делать может. В итоге плюсовый хот релоад надежно можно использовать только для чего-то очень простого. Какую-нить функцию без сайдэффектов зарелоадить - норм.
Корень проблемы, на мой взгляд, в другом. Для крупных игр вам _нужна_ команда, занимающаяся движком. Потому что в движках есть баги, недоделки, отсутствующие возможности и т.д. Команда движка будет намного лучше знать движок, который они написали, нежели сторонний движок, на который еще и апдейты накатывают. А если команда движка маленькая и неопытная (мы же сэкономили на ней, взяв проприетарный движок, зачем нам столько же людей на уе, сколько на свой движок), то приходится часть технически сложных задач закрывать геймдизам, художникам и программистам игромеха. А попытки отдавать в массовом продакшене технические задачи людям, имеющим недостаточно компетенции в технических аспектах, приводят к тому, что результат страдает в техническом плане. Блюпринты, ниагара, редактор материалов - отличные фичи, которые дают возможность нетехническим людям делать красиво. Но если у вас большой продакшен, то подход перестает работать, потому что объем контента в разы больше, чем у инди, и требования к технической части вырастают в разы. Надо по хорошему в таких случаях не допускать написанные художниками шейдера в прод, и хотя бы ревьюить их или переписывать силами рендеристов (или _очень_ технических художников, что не самая частая ситуация), но это не слишком удобно делать в анриле (немержабельные ассеты и все такое). Как это решать - непонятно. Мое мнение - при использовании 3rd party движков, если вы AA / AAA, вам все равно нужна такая же квалифицированная и такая же большая команда движка, как и для своего. Все, что вы реально выигрываете - вам не нужно писать движок с нуля. И вам нужно будет время, на то, чтобы эта команда успела поработать и привыкнуть к движку настолько, чтобы ощущать его почти своим.
Статья поднимает интересные темы, но с большинством объяснений я не согласен.
Про документацию - сравнивать с Юнити хорошо, но это сравнение некорректное. В юнити у вас по дефолту не то что документации нет, у вас _кода_ нет (если нет договора за много денег с юнитеками). Соответственно к отсутствующему коду у вас тоже документации нет. В анриле часть движка, ориентированная на контент-мейкеров и программистов игровых механик неплохо задокументирована. Не могу сказать, что лучше чем в юньке, но по ней можно хоть что-то выяснить. По крайней мере, если сравнивать с проприетарными движками. По секрету, у проприетарных закрытых движков довольно часто документации нет никакой _вообще_. Вот совсем нет. Может быть немножко статей, преимущественно нацеленных на контент мейкеров есть. Остальное - ищи человека, который это писал. Если он не уволился. Если возможности такой нет, то только код. И нет тредов на форумах, где кто-то из коммьюнити нашел решение. Потому что коммьюнити нету. Не для всех закрытых движков очевидно справедливо, но не могу сказать что ситуация уникальная. Для сомневающихся предлагаю оценить документацию к CryEngine, который даже не закрытый: https://docs.cryengine.com Найдете там нормальные доки по коду - покажите. В закрытых движках ситуация не лучше.
Хот релоад - за всю жизнь не видел ни единого нормального инструмента для хот-релоада плюсового кода, который бы работал всегда. Потихоньку начинаю склоняться к мысли, что для достаточно сложных систем задача невозможная. Это же не просто дллку пересобрать и сделать LoadLibrary. Надо еще не профакапить данные, которые в ram лежат. Часть из них будет лежать в той ддлке, которую релоадят, часть нет, другие модули будут зависеть от данных, которые получены из перезагруженной либы и т.д. и т.п. Это не просто сложная задача, это архисложная задача, если хочется релоадить произвольный юзерский код. Потому что юзерский код вообще что угодно делать может.
В итоге плюсовый хот релоад надежно можно использовать только для чего-то очень простого. Какую-нить функцию без сайдэффектов зарелоадить - норм.
Корень проблемы, на мой взгляд, в другом. Для крупных игр вам _нужна_ команда, занимающаяся движком. Потому что в движках есть баги, недоделки, отсутствующие возможности и т.д. Команда движка будет намного лучше знать движок, который они написали, нежели сторонний движок, на который еще и апдейты накатывают. А если команда движка маленькая и неопытная (мы же сэкономили на ней, взяв проприетарный движок, зачем нам столько же людей на уе, сколько на свой движок), то приходится часть технически сложных задач закрывать геймдизам, художникам и программистам игромеха. А попытки отдавать в массовом продакшене технические задачи людям, имеющим недостаточно компетенции в технических аспектах, приводят к тому, что результат страдает в техническом плане. Блюпринты, ниагара, редактор материалов - отличные фичи, которые дают возможность нетехническим людям делать красиво. Но если у вас большой продакшен, то подход перестает работать, потому что объем контента в разы больше, чем у инди, и требования к технической части вырастают в разы. Надо по хорошему в таких случаях не допускать написанные художниками шейдера в прод, и хотя бы ревьюить их или переписывать силами рендеристов (или _очень_ технических художников, что не самая частая ситуация), но это не слишком удобно делать в анриле (немержабельные ассеты и все такое). Как это решать - непонятно. Мое мнение - при использовании 3rd party движков, если вы AA / AAA, вам все равно нужна такая же квалифицированная и такая же большая команда движка, как и для своего. Все, что вы реально выигрываете - вам не нужно писать движок с нуля. И вам нужно будет время, на то, чтобы эта команда успела поработать и привыкнуть к движку настолько, чтобы ощущать его почти своим.