Моя пошаговая стратегия на Unreal Engine ч.1
Вот уже почти год, как я работаю над своей собственной стратегий, но никак не решался показать её людям. Это мой первый проект и меня постоянно терзают сомнения, сможет ли он кому-то понравится. Но вот с чего всё началось.
Я очень люблю стратегии, и переиграл в огромное количество, но всё время меня разрывали две крайности - RTS и пошаговые стратегии.
RTS крайне привлекательны внешне и очень динамичен. Многие из них связаны с механиками анти-юнитов, интересной экономической системой. Но что меня всегда в них убивало - постоянная необходимость кликать. И чем выше уровень игры, тем быстрее и больше нужно контролировать юнитов, в идеале - каждого юнита под вашим руководством. На высоком уровне обычно почти все стратегии уже известны, и людям остается только применить шаблон и перекликать оппонента.
С другой стороны пошаговые стратегии. Вы вдумчиво выстраиваете свою империю и неспешно сражаетесь с соперником. Прекрасные игры, для моих кривых рук подходящие значительно больше. Но вот их длительность - она действительно мешает. Хочется прийти с работы, сыграть 1-2 игры и расслабиться. В тоже время такие великолепные игры как Civilization и Stellaris растягивают сессию 8-10 часов на несколько дней. Многие такие сессии не доигрываются и часто не хочется стартовать новые с этим понимание.
Поэтому я попытался собрать всё лучшее, что мне нравится в играх в одну стратегию. Сделать её с интересной экономикой и системой боя, но в то же время ограничить время сессии до 1-2 часов. И с этими мыслями я начал свой проект. Моими кумирами стали:
Age of Empies 2: Невероятно крутая экономическая система и механика анти-юнитов.
HoMM: На мой вкус лучшая тактическая система.
Civilization 6: Строительство на карте мира, влияющее на бой и технологии.
Nothgard: Отличная система секторов с ограниченным строительством.
Первое, с чего я начал - генерация карты. Я отказался от генерации с помощью шумов из-за подлинной случайности, и начал делать свою псевдослучайную систему генерации карты. Это было хождение по мукам, но в конечном счёте явило собой систему, которая почти случайным образом заполняет несколько ячеек двумерного массива индексами, а затем они "растекаются" до встречи друг с другом. Ячейки одного индекса - это Сектор.
Здесь правда уже немного более поздний скрин, но по факту - каждый сектор заполняется одним или двумя ресурсами, которые "растекаются" на некоторое количество клеток.
Особую сложность представил собой алгоритм поиска пути и отсечения лишних секторов. Т.к. в моей игре нельзя было ходить через лес и воду - пришлось использовать немного измененный алгоритм Дейкстры. Например - Если у сектора только 1 сосед, и тот отделен лесом и водой - нужно прорубить путь друг к другу.
Чтобы оптимизировать алгоритм для генерации, пришлось помучаться, но в итоге даже очень большая карта генерировалась за 10-15 секунд на моем ведре.
Саму систему боя я решил организовывать между двумя секторами. Каждый игрок или команда, выставляют своих юнитов в пределах заданных клеток. Чтобы это нормально работало в мультиплеере, пришлось поделить сектор на количество игроков в нём.
Вроде всё работает верно. Осталось только насадить поверх карты растений, заменить текстуры и получить уже неплохой вид) Хотя была ещё одна деталь, я хотел, чтобы карта выглядела рвано, поэтому просто удалил крайние сектора, чтобы получить неровный край.
Правда потом я заменил большую часть текстур, чтобы выглядело красивее)
Вроде пост получился уже довольно длинным, и наверно будет лучше, если я расскажу о других аспектах разработки в следующей части)
Лига Разработчиков Видеоигр
7.8K поста22.7K подписчик
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"