Разработка игры мечты. Часть 2

в 19:49, , рубрики: devlog, Godot Engine, геймдев, геймдизайн, инди-игры, инди-разработка

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

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

Последний рабочий вечер на стройке
Последний рабочий вечер на стройке

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

Разработка игры мечты. Часть 2 - 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Sergei2906

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js