Год назад я написал статью о разработке собственной "игры мечты". Советую сначала прочесть ее для лучшего понимания контекста происходящего. С того времени многое изменилось, и пришла пора поведать об этом.
Что же произошло за этот год? Да, честно говоря, многое. И в этом "многом" как то затерялась разработка игры. Так уж получилось, что в первой половине года были более насущие проблемы и разработка игры шла, но довольно медленно. А летом я уехал на заработки в Горный Алтай, и разработка встала. Но смерть не настигла проект, как можно было того ожидать!
В сентябре я с новыми силами принялся за разработку игры! Проект претерпел "мягкий" перезапуск и самым ярким нововедением стал переезд с GDevelop 5, на котором игре стало откровенно говоря тесно на Godot 4.3.
Внимательный читатель может спросить: "Ты же писал в первой части, что Godot не подошел для разработки. Что поменялось? ". Отвечаю - с того момента появилось множество туториалов и статей, которые помогают в разработке, а разработчики движока исправили самые критические проблемы. Как результат - разработка на Godot 4.3 является вполне комфортным занятием. Если же у меня появляются проблемы, на которые еще не появились туториалы, то на помощь прибегает Claude 3.5, который умеет на удивление крайне понятно и подробно объяснять непонятные темы. Но вернемся к разработке.
За пару месяцев я с нуля перерисовал с нуля все ассеты. По скольку проект после переезда обрел 3д графику, то, следовательно, появились и 3д модели. В качестве программы для моделирования выбрал BlockBench. Почему не Blender? Все дело в том, что для моего проекта его функционал избыточен и будет лишь тормозить разработку. Все равно, что забивать гвоздь шуруповертом.
Первым делом я принялся за разработку генератора уровней - игра ведь в жанре рогалик. Изначально реализовал создание ландшафта через генерацию шума и создание на его основе меша. Но у данного решения было 3 проблемы:
-
Высокая нагрузка на систему
-
Невозможность сгенерировать навигационную сетку. Во всяком случае у меня не получилось
-
Общая унылость получаемого окружения
Решение оказалось простым - сделать генерацию из заранее готовых тайлов. За счет этого получилось убить сразу всех зайцев, а код получился простым и легко расширяемым.
Со временем переписал код поиска пути у противников. Вместо NavMesh стал использовать вектора. Возможно это менее точно, но обеспечивает более высокую производительность, и менее рельсовое поведение.
В какой-то момент понял, что из-за того, что пули игрока при стрельбе влево и вправо летят не точно по направлению курсора. Было это из-за того, что учитываются только горизонтальные координаты курсора, а камера расположена над персонажем под углом. Решил это за счет того, что добавил точку прицела прямо на плоскости на реальных координатах курсора, при этом скрыв его и заменив на фейковый, который наводится на точку на плоскости. Переусложнил? Да. Но заставить учитывать угол камеры при расчетах координат курсора у меня так и не вышло.
После этого я добавил различные мелкие геймплейные возможности, по типу возможности спрятаться в кустах от противника. Прям как в серии игр от небезызвестного гения :-)
Когда же ожидать релиз? Что ж, я придумал для себя отличную мотивацию - я подвязал свою дипломную работу к разработке игры. Данный фактор будет мотивировать меня закончить разработку в течении ближайшего полугода. Ну или отчислится. Одно из двух.
Отвлекающих факторов у меня не так уж и много - лишь походы на пары и капиталка мотора моей японской ласточки. Так что нет никаких препятствий для завершения разработки в данный срок!
Надеюсь, что данная статья была интересной и познавательной!
Автор: Sergei2906