BigChick экшен-паззл в духе добрых старых леммингов

Как мы придумывали экшен-паззл в духе добрых старых леммингов.

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

Игрок управляет одним супергероем. Он протаптывает дорожки (или роет каналы), чтобы птенцы могли дойти или доплыть до спасительного пункта назначения.

Также супергерой может ускорять (активная абилка без кулдауна) и защищать(пассивная абилка) ближайших к нему птенцов. А еще оглушать-отгонять мобов.

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

Как мы придумывали игру

Прошлым летом решил поучаствовать в двухдневном джеме. Ближайший был от замечательного сообщества "Индикатор" - гиперказуальные игры про строительство и ремонт.

Так как как предыдущая пятилетка со сказкой-платформером The StoryTale меня порядком вымотала, то я подумал - отлично, это то, что надо для маленького и победоносного релиза.

Все делали игры про стройку. Много было в простеньких в духе про молоток и забивание гвоздей. Это соответствовало метажанровой направленности джема.

Я позвал приятеля-разработчика, автора игры Knightin+ на арт-музыку и закопался в размышления-код.

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

BigChick  экшен-паззл в духе добрых старых леммингов

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

Другая идея, которую мне хотелось реализовать - это передвижение массы юнитов, потому что очереди-толпы (если не в жизни) - это обычно весело. Например, когда в игре за твоим юнитом чешет толпа и рубится с другой толпой. Похожая идея, например, была в Crowd City - среди списка рекомендованных "Индикатором" гиперказуальных игр для погружения в жанр.

BigChick  экшен-паззл в духе добрых старых леммингов

И как-то все это прилепить к теме строительства и ремонта.

К концу первого дня я соорудил простенький генератор карты, в которой постоянно меняются клеточки по одной из моделей в той статье (см.выше). То есть происходит некоторое распространение одних клеток на другие.

С толпами все было плохо, они не придумывались :)

Вынырнувший из реального жизни приятель сказал, что надо делать хоть что-нибудь. Поэтому космические просторы будем бороздить в другой раз. А в этот раз он предлагает сделать игру про цыплят. Так мы вышли на тему цыплят и хищников, которые пытаются их слопать. Игрок должен этому помешать.

Еще через полдня я допрототипировался до некоторых самоходных очередей к пункту назначения. И тут стали проглядываться уши "Леммингов". Но в леммингах игрок выступает в роли демиурга, расставляя. Мне же хотелось большей агентивности и курсор игрока стал одушевленным.

Приятель дорисовал арты, докинул звуков и написал милую музыку с банджо.

Так появился Большой Курь, который бегал и строил пути для цыплят. Цыплята находили ближайший доступный путь и бодро топали до домика без остановки. На пути они могли утонуть (если место пути вдруг оказывалось затопленным) или быть съеденными.

Заодно Большой Курь "чинил" тонущие острова (процесс затопления - та самая модель из статьи) во время большого потопа. Или наоборот - рыл каналы, чтобы отрезать хищников на изолированных территориях.

Чтобы добавить некую активную абилку, после перебора разных вариантов, остановился на ускорении птенцов рядом.

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

Изначально игроку давался некий запас "очков". Если птенцы тонули или их съедали - штраф. Если птенцы долго ждут и не могут идти - штраф. Если птенец дошел до домика - бонус. Игрок проигрывал, если "очки" падали до нуля. В игре было 4 генерируемых уровня с усложнением (больше островов-птенцов-хищников)

Тему конкурса и гиперказуальность мы не особо соблюли :) Но игрокам (сами на джеме разработчики играют в игры друг друга) и жюри игра даже понравилась. И это было приятно.

Потом мы решили за пару месяцев её доделать до небольшой игры и выпустить ее в Steam. Пара месяцев разработки расползлась на 9 месяцев. Но и не пять лет, как с предыдущей игрой, что уже неплохо :)

Всем спасибо за внимание и заходите на огонёк :)

BigChick  экшен-паззл в духе добрых старых леммингов

Ссылки по игре:

3030
6 комментариев

Какой то мужик из Саратова одобряет эту игру.

4

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

@Maxim Nuriev , клеточные автоматы в контексте генерирования уровней, хорошо подходят для создания подземелий:
https://jeremykun.com/2012/07/29/the-cellular-automaton-method-for-cave-generation/
https://gamedevelopment.tutsplus.com/tutorials/generate-random-cave-levels-using-cellular-automata--gamedev-9664
http://www.roguebasin.com/index.php?title=Cellular_Automata_Method_for_Generating_Random_Cave-Like_Levels
http://www.evilscience.co.uk/a-c-algorithm-to-build-roguelike-cave-systems-part-1/
https://www.gridsagegames.com/blog/2014/06/mapgen-cellular-automata/
Но все же лучше применять КА для других штук: моделирование эпидемий, пожаров, процедуральная генерация музыки и т.д. и т.п., в общем для моделирования любого распространяющейся процесс, например, КА неплохо работают для генерирования распространения растительности, правда для деревьев хорошо работает все же Пуассоновский процесс
http://devmag.org.za/2009/05/03/poisson-disk-sampling/
Также еще забавным алгоритмом является DLA
https://en.wikipedia.org/wiki/Diffusion-limited_aggregation
http://www.roguebasin.com/index.php?title=Diffusion-limited_aggregation
Особенно для всяких снежинок, симуляции диффузии и т.д. и т.п.

А вот для генерация general-purpos ландшафта лучше всего работают именно шумы Перлина, т.к. дают результат очень похожий на реальный:
https://www.redblobgames.com/maps/terrain-from-noise/
http://www.jgallant.com/procedurally-generating-wrapping-world-maps-in-unity-csharp-part-1/
https://medium.com/@yvanscher/playing-with-perlin-noise-generating-realistic-archipelagos-b59f004d8401
http://libnoise.sourceforge.net/tutorials/tutorial3.html
http://libnoise.sourceforge.net/tutorials/tutorial5.html
http://libnoise.sourceforge.net/tutorials/tutorial8.html
https://www.youtube.com/watch?v=WP-Bm65Q-1Y
http://jcgt.org/published/0004/02/01/
https://www.iquilezles.org/www/articles/morenoise/morenoise.htm
http://thingonitsown.blogspot.com/2018/11/monstrous-terrain.html
https://pvigier.github.io/2019/05/12/vagabond-map-generation.html
В общем-то на самом деле на основе шума Перлина можно все что угодно смоделировать — шумы непрерывные, значение зависит только от координаты, результат похож на что-то природное, и они отлично масштабируемы.

Хз на чем вы пишите, но вот хорошая библиотека с примерами
https://github.com/rthome/SharpNoise
Шейдеры правда побыстрее будут.

Для космоса (солнечные системы и бла-бла-бла-бла) лучше всего работает прямая симуляция процесса аккреции космической пыли в лоб.

Но это все для естественных объектов. Для процедуральной генерации рукотворных помещений лучше подходят уже алгоритмы совершенно другого типа, ну там, например, двоичное разбиение пространства:
http://www.roguebasin.com/index.php?title=Basic_BSP_Dungeon_generation


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

Модель жидкости хорошо подходит, но это если их реально дохрена, прям совсем дохрена.

А если акторов немного, то steering behavior хватит (к слову сказать в старом Бэтмене нашествие пингвинов именно так и моделировали):
https://gamedevelopment.tutsplus.com/series/understanding-steering-behaviors--gamedev-12732
https://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867?_ga=2.235534977.1613626926.1616110355-2119885010.1607534354
https://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-squad-pattern-using-steering-behaviors--gamedev-13638?_ga=2.235534977.1613626926.1616110355-2119885010.1607534354
Перевод:
https://habr.com/ru/post/358366/
https://habr.com/ru/post/358460/
Первоисточник:
https://www.red3d.com/cwr/steer/gdc99/

Но это все достаточно хорошо известные техники, про которые можно почитать вот здесь
https://www.oreilly.com/library/view/ai-for-game/0596005555/ch04.html

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

Космические корабли, бороздящие просторы Большого Театра — самое простое, инфа 145% Впрочем если замаскировать космические корабли под цыплят, а галактические фоны под лужайку, то тоже норм :-)

4

Комментарий больше статьи вышел :)
Спасибо тебе, Доброе Сердце

1

Был рад приложить свою руку к этой милой игрушке :)

3