Как игры придумывают карты, которые никогда не повторяются
Вы заходите в игру, открываете карту — и каждый раз видите что-то новое. Реки текут по-другому, леса в других местах, а ресурсы спрятаны не там, где были вчера. Всё это — результат алгоритмической генерации карт, и за этой, казалось бы, магией стоит очень конкретная математика.
Зачем вообще нужна генерация?
Повторное прохождение. Чтобы игроку было интересно вернуться и начать заново.
Экономия времени. Художнику не надо рисовать 100 уровней вручную.
Вариативность. Один игрок идёт по лесу, другой попадает в пустыню — и оба получают уникальный опыт.
Баланс. Иногда алгоритм даже помогает расставить ресурсы, врагов и бонусы так, чтобы всё было честно.
Какие бывают подходы?
Шаблонная генерация
Есть заготовка (например, 10×10 клеток) и набор возможных блоков: лес, вода, база, ресурсы. Алгоритм просто раскидывает элементы по правилам:
не более двух озёр рядом,
не ставить базу в углу,
ресурсы не дальше чем в 5 клетках от старта.
Так работают многие старые стратегии и рогалики.
Шум Перлина (или Симплекс-шум)
Это когда карта «рисуется» плавно, без резких перепадов. Природные формы (горы, реки, равнины) генерируются по математическому шуму. Именно так получаются красивые органичные ландшафты — без угловатых кусочков.
Клеточные автоматы
Алгоритм смотрит на соседей каждой клетки и решает, что с ней делать. Например, если вокруг 5 лесов — пусть будет тоже лес. Если меньше — пустошь. Через несколько итераций получается что-то похожее на «естественный» биом.
Бесконечные миры (chunk-based)
Такая карта не хранится целиком — она создаётся по мере движения игрока. Мир как бы строится у него под ногами. Это используют Minecraft, No Man’s Sky, Dwarf Fortress и другие.
Сложности и нюансы
Баланс и справедливость. Случай — не всегда добрый. Нужно следить, чтобы игрок не заспаунился в ловушке или в «голой» пустыне.
Повторяемость. Часто генерация идёт от seed-строки или числа. Тогда игрок может повторить тот же мир (например, в Don't Starve).
Переходы между зонами. Если карта «пришивается» по частям — важно, чтобы они стыковались без дырок или обрывов,
Ресурсы и маршруты. Игрок должен найти нужное, но не сразу — нужно сохранить интригу, ощущение поиска и прогресса от каких-то подсказок по ходу изучения.
А что мы делаем у себя?
В нашей игре Mars Frontier используется тайловая карта с бесконечными координатами. Каждый новый игрок появляется на карте в определенном радиусе, который растет по мере увеличения числа участников. На картинке ниже желтые точки - игроки, видно, как они расползаются от центра в периметр (там пока больше кристаллов для сбора :)
Карту точно стоит сделать интереснее и лучше, уйти от простого рандома в сторону сложных алгоритмов, будем пробовать те, которые рассмотрели в статье. Пока мы еще экспериментируем с алгоритмами и игра лишь в альфа-версии, тем не менее игроки с радостью соревнуются за поиск кристаллов и участвуют в постоянно проводимых конкурсах по геолокации (найди звезду победы, отыщи монету на острове, собери слово из букв, разбросанных по карте и пр.)
С удовольствием почитаю комментарии и изучу опыт как больших маститых геймдевов, так и профессиональных игроков, любое ценное мнение будет вознаграждено лайком, прошу быть вежливыми по отношению друг к другу в комментах! Хорошего дня!
Лига Разработчиков Видеоигр
8.5K поста23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"