ECW Dev. проект под HGE/DX9 в 2026...

Знаете, что это такое? Прыжок в прошлое. Вообще, это мета сейчас хайповая. Как же так вышло?

Рис. 1. Безумец
Рис. 1. Безумец

Задумка

Как и многим другим, мне в какой-то момент жутко захотелось начать воплощать своего гения. Только была одна проблема. Две проблемы. В общем, проблем было много, в течение последующих 10 лет с того момента, как я выбрал HGE в качестве движка для своей игры мечты!

Причины

Вообще, уже на тот момент существовали всякие крутые конструкторы, в которых нужно-то было кнопки потыкать и всё - игра готова. Но опыт работы с JASS в редакторе WarCraft III дал чёткое понимание того, что создавать игру мечты нужно жёстко и по-хардкору. А ещё с конструкторами разбираться долго, сложно, ничего не понятно!

То ли дело HGE. Ты просто кидаешь его на диск, настраиваешь пути, и получаешь простую понятную функциональность:

static bool render(){ mHGE.Gfx_BeginScene(); mHGE.Gfx_Clear( 0 ); mGUI.render(); mHGE.Gfx_EndScene(); return false; }

И всё-о! Ничего больше делать не надо. Ну, ладно. На самом деле там в объектах зашита вся функциональность, но способ реализации всё равно для неокрепшего ума невероятно прозрачен: есть начало сцены, есть конец. Между ними рисуй что хочешь, только не забудь текстурки выделить, обязательно не забудь удалить и не дай бог обратиться по невалидному указателю!

Короче, всё по канонам низкоуровневого программирования C/C++

Рис. 2. Каждый день C++
Рис. 2. Каждый день C++

Проблемы

И вот в ходе первых проб и освения всего этого великолепия оказалось, что писать свою игру практически с нуля - это занятие невероятно увлекательное (нет).

И дело даже не в том, что HGE может только в 2D, а даже простых элементарных функций недостаточно. Например:

  • Локализация. Ах, да. Движок ещё и std::string использует, что душит нас ASCII-кодировкой. Извините, друзья иероглифы, придётся вам играть в англ. весию игры мечты!
  • Менеджер ресурсов. Он в движке как бы есть, но при создании даже небольшой игры оказывается довольно неудобным в использовании.
  • Звук. Нужна отдельная библиотека.
  • UI. Есть пример реализации UI в туторах, но по факту писать тоже нужно с нуля.
  • Система частиц. В принципе норм, но сильно ограничена функционально. Основная проблема: смена стейта от А до Б. Нет третьего промежуточного значения, чтобы можно было сделать и fade-in, и fade-out.
  • Альфа-маски. Да, никаких красивых обрезок текстур по альфа-каналу.

Можно ещё много чего перечислять, и дойти до трассировки лучей и ИИ, но даже и этого хватает.

Почему не Unreal/Unity???

(с) каждый первый на стриме
Рис. 3. Испанский стыд
Рис. 3. Испанский стыд

Да потому.

  • Концепция игры подогнана под возможности движка. Используем только 2D, без теней, без шейдеров, будем вывозить художкой.
  • Некий умелец адаптировал HGE, так что сейчас используется версия под DX9 и сборка производится под х64.
  • HGE можно заменить с минимальными потерями на SFML/SDL. А если, прям, ну, очень сильно захочется, то хоть на тот же Unreal.
  • Не важно, какой движок используется. Писать игровую логику нужно одинаково, что для Unreal, что для микроволновки.
  • Опыт разработки и программирования. Интересные архитектурные задачи, изобретение велосипедов. Некий челлендж в превозмогании непревозмогаемого.
  • Обложка важна, но содержание важнее. Это вызов создать такой геймплей, который замаскирует технологии динозавров.

Скрин мотивации

Рис. 4. ECW Stage III
Рис. 4. ECW Stage III

Глядя на рис. 4, так и хочется возращаться к проекту. Визуальная эстетика есть. Игровая механика была. И плевать, что HGE. Многое уже сделано и работает на разных уровнях разработки, начиная от концепта, заканчивая реализацией в коде.

Но есть нюанс

Этот билд (рис. 4), как и все предыдущие я снёс, принявшись переписывать всё с нуля. Надеюсь теперь всё получится, ведь 5-ая итерация должна вобрать в себя все разрозненные идеи и предыдущие наработки.

Автору будет интересно почитать ваши комментарии и собрать мнения о таком подходе к созданию собственной игры. Спасибо за внимание!

2