LTA: Lights! Thrusters! Action! - Итоги недели и немного внутренней кухни

Привет! Новая неделя - новые итоги. Сегодня, помимо описания того, что сделано в проекте, хочу подробнее рассказать о разработке и о том, какой путь проходит игровая фича от задумки, до реализации.

Если не видели прошлые посты, то кратко расскажу, чем вообще занимаюсь. Я делаю рогалик про сражения в космосе и управление командой корабля. Очень сильно вдохновляюсь таким играми, как FTL, Dwarf fortress, Rimworld, Pirates! Gold. Последняя просто взрывала мне мозг в детстве, наиграл в нее на Сеге, наверно, больше часов, чем во все скайримы вместе взятые:)

На начало недели у меня в общих чертах готова боевая система в космосе и генерация команды (об этом можно в прошлых постах почитать).

Теперь командой нужно как-то управлять, отдавать приказы, назначать на посты.

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

Потом подумал, что лучше будет сделать посты в виде отдельных комнат, как в FTL.

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

LTA: Lights! Thrusters! Action! - Итоги недели и немного внутренней кухни Gamedev, Инди, Инди игра, Разработка, Unity, Видео, Без звука, Вертикальное видео, Длиннопост

Дальше задумался о том, как реализовать перемещение команды по отсекам корабля. Для начала нужно было сделать две вещи: как-то организовать данные о внутреннем убранстве корабля и реализовать алгоритм поиска пути.

Интерьер корабля решил собирать из тайлов - у меня же все-таки рогалик:)

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

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

LTA: Lights! Thrusters! Action! - Итоги недели и немного внутренней кухни Gamedev, Инди, Инди игра, Разработка, Unity, Видео, Без звука, Вертикальное видео, Длиннопост

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

Затем начал разбираться с алгоритмом поиска пути. Есть хорошая статья, которая довольно подробно рассказывает, как работают такие алгоритмы: https://habr.com/ru/articles/444828/ Я думал сначала сделать свою реализацию этого алгоритма, но друг подсказал мне найти готовое решение, и оказалось, что их полно в Asset Store. После неких манипуляций алгоритм худо-бедно заработал.

Дальше уже дело техники: добавил контроллер персонажа, который управляет им и помогает ходить по рассчитанному пути.

Не с первого раза

Но это заработало:)

После этого нарисовал уже “чистовое” убранство корабля в редакторе.

И подготовил подробнейшую документацию, как я это вижу в игре:

LTA: Lights! Thrusters! Action! - Итоги недели и немного внутренней кухни Gamedev, Инди, Инди игра, Разработка, Unity, Видео, Без звука, Вертикальное видео, Длиннопост
LTA: Lights! Thrusters! Action! - Итоги недели и немного внутренней кухни Gamedev, Инди, Инди игра, Разработка, Unity, Видео, Без звука, Вертикальное видео, Длиннопост

Еще какое-то время потратил на то, чтобы слои картинки, нарисованные в редакторе, корректно отображались в игре.

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

Нужно еще много думать над тем, как это все будет играть во время быстрого космического боя, но это уже проблемы, которые нужно решать по мере поступления :)

На этом у меня пока все. Спасибо за внимание :)

Если хотите следить за проектом еще и в телеге, то подписывайтесь, пожалуйста: https://t.me/CubicPieLive

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"