Создание игры мечты. Часть 2

Год назад я написал статью о разработке собственной «игры мечты». Советую сначала прочесть ее для лучшего понимания контекста происходящего. С того времени многое изменилось, и пришла пора поведать об этом.

Что же произошло за этот год? Да, честно говоря, многое. И в этом «многом» как то затерялась разработка игры. Так уж получилось, что в первой половине года были более насущие проблемы и разработка игры шла, но довольно медленно. А летом я уехал на заработки в Горный Алтай, и разработка встала. Но смерть не настигла проект, как можно было того ожидать!

Создание игры мечты. Часть 2
Последний рабочий вечер на стройке

В сентябре я с новыми силами принялся за разработку игры! Проект претерпел «мягкий» перезапуск и самым ярким нововедением стал переезд с GDevelop 5, на котором игре стало откровенно говоря тесно на Godot 4.3.

Внимательный читатель может спросить: «Ты же писал в первой части, что Godot не подошел для разработки. Что поменялось? «. Отвечаю — с того момента появилось множество туториалов и статей, которые помогают в разработке, а разработчики движока исправили самые критические проблемы. Как результат — разработка на Godot 4.3 является вполне комфортным занятием. Если же у меня появляются проблемы, на которые еще не появились туториалы, то на помощь прибегает Claude 3.5, который умеет на удивление крайне понятно и подробно объяснять непонятные темы. Но вернемся к разработке.

За пару месяцев я с нуля перерисовал с нуля все ассеты. По скольку проект после переезда обрел 3д графику, то, следовательно, появились и 3д модели. В качестве программы для моделирования выбрал BlockBench. Почему не Blender? Все дело в том, что для моего проекта его функционал избыточен и будет лишь тормозить разработку. Все равно, что забивать гвоздь шуруповертом.

Дерево. Просто дерево
Дерево. Просто дерево

Первым делом я принялся за разработку генератора уровней — игра ведь в жанре рогалик. Изначально реализовал создание ландшафта через генерацию шума и создание на его основе меша. Но у данного решения было 3 проблемы:.

  • Высокая нагрузка на систему

  • Невозможность сгенерировать навигационную сетку. Во всяком случае у меня не получилось

  • Общая унылость получаемого окружения

Решение оказалось простым — сделать генерацию из заранее готовых тайлов. За счет этого получилось убить сразу всех зайцев, а код получился простым и легко расширяемым.

Один из тайлов
Один из тайлов

Со временем переписал код поиска пути у противников. Вместо NavMesh стал использовать вектора. Возможно это менее точно, но обеспечивает более высокую производительность, и менее рельсовое поведение.

В какой-то момент понял, что из-за того, что пули игрока при стрельбе влево и вправо летят не точно по направлению курсора. Было это из-за того, что учитываются только горизонтальные координаты курсора, а камера расположена над персонажем под углом. Решил это за счет того, что добавил точку прицела прямо на плоскости на реальных координатах курсора, при этом скрыв его и заменив на фейковый, который наводится на точку на плоскости. Переусложнил? Да. Но заставить учитывать угол камеры при расчетах координат курсора у меня так и не вышло.

После этого я добавил различные мелкие геймплейные возможности, по типу возможности спрятаться в кустах от противника. Прям как в серии игр от небезызвестного гения 🙂

В динамике это выглядит гораздо лучше, чем за скриншоте...
В динамике это выглядит гораздо лучше, чем за скриншоте…

Когда же ожидать релиз? Что ж, я придумал для себя отличную мотивацию — я подвязал свою дипломную работу к разработке игры. Данный фактор будет мотивировать меня закончить разработку в течении ближайшего полугода. Ну или отчислится. Одно из двух.

Отвлекающих факторов у меня не так уж и много — лишь походы на пары и капиталка мотора моей японской ласточки. Так что нет никаких препятствий для завершения разработки в данный срок!

Надеюсь, что данная статья была интересной и познавательной!

 

Источник

Читайте также