Моя пошаговая стратегия на Unreal Engine ч.1

Вот уже почти год, как я работаю над своей собственной стратегий, но никак не решался показать её людям. Это мой первый проект и меня постоянно терзают сомнения, сможет ли он кому-то понравится. Но вот с чего всё началось.

Я очень люблю стратегии, и переиграл в огромное количество, но всё время меня разрывали две крайности - RTS и пошаговые стратегии.
RTS крайне привлекательны внешне и очень динамичен. Многие из них связаны с механиками анти-юнитов, интересной экономической системой. Но что меня всегда в них убивало - постоянная необходимость кликать. И чем выше уровень игры, тем быстрее и больше нужно контролировать юнитов, в идеале - каждого юнита под вашим руководством. На высоком уровне обычно почти все стратегии уже известны, и людям остается только применить шаблон и перекликать оппонента.
С другой стороны пошаговые стратегии. Вы вдумчиво выстраиваете свою империю и неспешно сражаетесь с соперником. Прекрасные игры, для моих кривых рук подходящие значительно больше.  Но вот их длительность - она действительно мешает. Хочется прийти с работы, сыграть 1-2 игры и расслабиться. В тоже время такие великолепные игры как Civilization и Stellaris растягивают сессию 8-10 часов на несколько дней. Многие такие сессии не доигрываются и часто не хочется стартовать новые с этим понимание.
Поэтому я попытался собрать всё лучшее, что мне нравится в играх в одну стратегию. Сделать её с интересной экономикой и системой боя, но в то же время ограничить время сессии до 1-2 часов. И с этими мыслями я начал свой проект. Моими кумирами стали:
Age of Empies 2: Невероятно крутая экономическая система и механика анти-юнитов.
HoMM: На мой вкус лучшая тактическая система.
Civilization 6: Строительство на карте мира, влияющее на бой и технологии.
Nothgard: Отличная система секторов с ограниченным строительством.

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

Моя пошаговая стратегия на Unreal Engine ч.1 Gamedev, Инди игра, Длиннопост, Разработка, Unreal Engine 4, Пошаговая стратегия, Видео

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

Моя пошаговая стратегия на Unreal Engine ч.1 Gamedev, Инди игра, Длиннопост, Разработка, Unreal Engine 4, Пошаговая стратегия, Видео

Чтобы оптимизировать алгоритм для генерации, пришлось помучаться, но в итоге даже очень большая карта генерировалась за 10-15 секунд на моем ведре.
Саму систему боя я решил организовывать между двумя секторами. Каждый игрок или команда, выставляют своих юнитов в пределах заданных клеток. Чтобы это нормально работало в мультиплеере, пришлось поделить сектор на количество игроков в нём.

Моя пошаговая стратегия на Unreal Engine ч.1 Gamedev, Инди игра, Длиннопост, Разработка, Unreal Engine 4, Пошаговая стратегия, Видео

Вроде всё работает верно. Осталось только насадить поверх карты растений, заменить текстуры и получить уже неплохой вид)  Хотя была ещё одна деталь, я хотел, чтобы карта выглядела рвано, поэтому просто удалил крайние сектора, чтобы получить неровный край.

Моя пошаговая стратегия на Unreal Engine ч.1 Gamedev, Инди игра, Длиннопост, Разработка, Unreal Engine 4, Пошаговая стратегия, Видео

Правда потом я заменил большую часть текстур, чтобы выглядело красивее)
Вроде пост получился уже довольно длинным, и наверно будет лучше, если я расскажу о других аспектах разработки в следующей части)

Лига Разработчиков Видеоигр

6.6K постов22.1K подписчиков

Добавить пост

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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