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

1