shiru8bit

shiru8bit 

Программист, музыкант, самоделкин, ретрогеймер

90subscribers

919posts

Сдул пыль с движка

Вчера сдул пыль с движка EvgEngine и начал его оживление. Почему он оказался под пылью, когда-нибудь расскажем в дневниках разработки, а пока — снова настало его время.
Так как я обновил компьютер и теперь у меня стоит только последняя VS 2026 (и 2012 для рабочих нужд), движок нужно было обновить после перехода с VS 2017 и тулсета v110_xp на v141_xp. А заодно, посмотрев свежим взглядом, я решил немного доработать моменты, которые казались несущественными, ну и вспомнить, что я там вообще навертел.
Для начала, я решил разделить движок и игру. Хотя он изначально разрабатывался как отдельная сущность, разделения я не делал, и сейчас оказалось, что код игры довольно сильно запутался с кодом движка.
Не делал я разделения, так как движок разрабатывался с нуля, постоянно обновлялся, и пересобирать зависимую библиотеку на каждый мелкий чих не хотелось. Тогда я не знал, как организовать это удобнее, и просто закинул код движка в код проекта, чтобы собирались только изменения.
Сейчас я вытащил код в отдельный проект, настроил зависимую сборку, и хотя движок теперь линкуется как статическая библиотека, заново пересобираются только изменившиеся файлы, и они сразу видны в дереве ресурсов общего проекта. Так и надо было сделать, но… это называется техдолг.
Также я отвязал глобальные настройки движка типа внутреннего пиксельного разрешения и убрал весь в него платформозависимый код. В основном проекте теперь есть исключительно код игры. Никаких больше SDL'ей и циклов событий в main. Стало чище и приятнее.
Ну и главное, что тоже никак не видно снаружи, но повышает удобство работы: переработал систему состояний (отдельных экранов и режимов). Раньше при добавлении в игру очередного состояния нужно было создать его класс, а потом занести в списки в нескольких местах. Это было утомительно.
Теперь же в конструкторе класса состояния я вызываю функцию регистрации состояния, которая даёт ему простое строковое имя (чтобы не делать никакие enum'ы). Класс объявляется статически, и таким образом сам по себе в момент запуска приложения добавляется в карту состояний. Далее я легко могу получить или переключить состояние по его имени. Пустячок, а работать приятнее. Как говорится, почему я не сделал этого раньше.
А ещё привыкаю к тёмной теме в VS. Со времён Спектрума не пользовался тёмными темами для кода, как-то необычно. Зато модно и молодёжно.
Зато глаза на тёмной теме меньше напрягаются)
Будешь ли использовать AI для ускорения разработки движка/игры?
Салават Абдуллин, я уже давно использую ИИ во всех задачах, включая разработку. Сейчас без этого никуда. Copilot вообще встроен в VS, теперь когда ты пишешь код, он следит за тем, что ты набираешь, и заранее подсказывает, что ты хочешь написать - остаётся нажать TAB, и не дописывать самому.
Subscription levels6

Микро 16

$0.2 per month
Просто потому что нельзя 8. Даже самая малая поддержка важна. Спасибо!

База 128

$1.57 per month
Для тех, кто просто хочет поддержать. Спасибо!

Супер 256

$3.2 per month
Для тех, кто хочет поддержать. Спасибо!

Кило 320

$4 per month
Для тех, кто сильно хочет поддержать. Спасибо!

Мега 640

$7.9 per month
Для тех, кто очень хочет поддержать. Спасибо!

Гига 1024

$12.6 per month
Для тех, кто крайне хочет поддержать. Спасибо!
Go up