Разработка собственного игрового движка: итоги 2023 года

Мод для Thief: The Dark Project - The Black Parade на моём движке Force Tech
Мод для Thief: The Dark Project - The Black Parade на моём движке Force Tech

Как раз в конце прошлого года я начал вести публичные каналы, посвященные моему игровому движку - Force Tech. Прошел ровно год, и именно за этот прошедший год, пожалуй, и произошло больше всего положительных изменений в проекте, из-за более тесного контакта с сообществом. Особенно хотелось поблагодарить Артёма Башева за регулярные пожертвования и Mic'а, спасибо за ваш вклад! Кстати, за этот год на каждом из каналов собралось более сотни подписчиков! Спасибо вам, друзья, за интерес, проявляемый к проекту!

Самым значимым событием в уходящем году был очередной релиз Dark Engine Viewer 0.6.9, программы, использующей движок Force Tech, которая готовилась почти два года и вышла в июле. Многие смогли впервые притронуться к тому, за развитием чего долгое время наблюдали. А кто-то, я надеюсь, обрёл для себя полезный инструмент в виде удобной утилиты для менеджмента своих игровых ассетов ;).

Из планов, которые "не сложились" - это видео с демонстрацией возможностей Force Tech. Я написал сценарий, надиктовал материала и смонтировал звук продолжительностью 20 минут на двух языках: русском и английском (ох, на английском оказалось совсем непросто). Смонтировал около двух минут видео и только потом осознал, что структура ролика неправильная, не дает представления о движке, и надо многое переделывать. Что ж, ролик остаётся в планах, надеюсь, на новой версии движка он будет более презентативен.

Сейчас, как и заявлено в опубликованной не так давно Дорожной Карте, во всю идёт работа над новой архитектурой движка, основанной на ECS. Немало времени ушло на обдумывание и проектирование, поэтому наиболее активный кодинг начался только в ноябре. Я пришёл к выводу, что самым простым и эффективным способом "рефакторинга" будет построение всей архитектуры с нуля на новом фундаменте ECS, как бы мне ни хотелось сохранить прежнюю. Логика переносится небольшими частями на новые рельсы, и правится с учётом многолетнего опыта, приобретенного за последние годы работы в профессии разработчика C++.

Надо отметить, что парадигма Data Oriented Design, после Object Oriented Design, довольно непривычна, и многие вещи приходилось переосмысливать и отказываться от ООП с определенными усилиями ;).

На данный момент основные части движка спроектированы, и уже реализованы системы обеспечивающие рендеринг, основанный на полном стриминге данных. Кроме того, как и писал ранее, я пытаюсь сразу учесть и сделать правильно огромное количество накопившихся архитектурных пожеланий, которые в обычном режиме потребовали бы массу переделок. К примеру, работа с геометрическими данными. Сейчас удалось реализовать системы таким образом, чтобы сократить многократное перекладывание вершин из одной структуры в другую перед отрисовкой. Пока ещё о результатах говорить рано, но ожидается значительное увеличение скорости загрузки данных, в том числе и за счёт стриминга. В целом, я считаю, всё идёт согласно планам, указанным в дорожной карте.

В качестве небольшой иллюстрации прикладываю этот странный кривой скриншот 😁.

ECS "beyond-omega" prototype
ECS "beyond-omega" prototype

Пусть он не вызывает у вас недоумение и ропот, здесь работает стриминг, и системы ECS! 😆 Для вывода этой кривой картинки понадобилось написать почти полмегабайта кода, а раз картинка есть, значит прототип работает! ;)

В новом году желаю всем здоровья, сил и достаточной целеустремлённости для реализации собственных проектов и планов! ;) Со своей стороны, поскольку уже есть что показывать, надеюсь, будет получаться чаще радовать вас интересными подробностями о разработке.

P.S. За последние пару месяцев, пока разрабатывал новую архитектуру движка, появилась идея зафиксировать этот опыт в виде статьи. Думаю, это будет очень актуально, поскольку в интернете мало информации о разработке именно архитектуры игровых движков. Так что, можно считать это своего рода анонсом.

70
36 комментариев