Геймдев
#статьи

Процедурная генерация в играх: что это такое и зачем она нужна

Раньше произведения искусства создавались вручную. В XXI веке для этого есть алгоритмы.

 vlada_maestro / shutterstock

Процедурная генерация — незаменимый инструмент в геймдизайне. С её помощью создают огромные виртуальные миры в Minecraft и No Man’s Sky, а также — отдельных персонажей, уровни, сюжеты и даже игровые правила. Иногда кажется, что в будущем алгоритмы будут делать всю работу за геймдизайнеров — но всё не так просто.

Как работает процедурная генерация

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

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

Карта из тайлов в Sid Meier’s Civilization 5

Тайлы часто используются в стратегиях: например, в играх серии Civilization карты генерируются из шестиугольников, имитирующих разные типы ландшафта. Игроки при этом могут менять параметры создаваемого мира: его размер, рельеф, количество ресурсов и так далее. Иначе говоря, они «настраивают» формулу процедурной генерации.

Но как сделать, чтобы эта формула каждый раз выдавала новый результат? Здесь на помощь приходит зерно — код, созданный генератором случайных чисел. Этот код «скармливают» алгоритму, который затем выдаёт в качестве результата карту, созданную процедурно.

Тайлы не единственный метод процедурной генерации. Авторы Minecraft и Terraria, например, используют шум Перлина — алгоритм градиентного шума. Изначально его придумали для создания достоверных текстур поверхности. Со временем, однако, дизайнеры нашли ему ещё одно применение — в процедурной генерации ландшафта.

Шум Перлина

Работает это так: светлые участки шума Перлина считываются как возвышенности, а тёмные — как низины. На их основе алгоритм создаёт приблизительный рельеф будущей карты. Процесс повторяется несколько раз, пока не получается достаточно достоверный ландшафт с горами, долинами и ущельями. После этого мир наполняют флорой, фауной, монстрами, деревнями и так далее.

Генерация миров при этом подчиняется множеству заранее прописанных правил, чтобы избежать досадных нестыковок вроде хвойных лесов в пустыне. Поэтому в Minecraft хвойные леса растут в тундре, а в пустыне можно найти лишь сахарный тростник.

Процедурная генерация как игровая философия

Как правило, мы ассоциируем процедурную генерацию с конкретными жанрами. Например, с «рогаликами» (англ. roguelike), где геймплей строится на том, что вы будете пробовать, умирать и начинать заново. Следовательно, уровни всякий раз тоже генерируются заново — чтобы не надоесть игроку и не дать ему пройти игру на мышечной памяти.

Жанр развился из данжен-кроулеров (англ. dungeon crawler) — игр про блуждания в подземельях. У них уже были все приметы roguelike — скажем, пошаговый геймплей (то есть одна команда соответствует одному действию и ходу) и «перманентная смерть». Классические «рогалики» вроде Rogue 1980-го (её именем жанр и назвали) или NetHack 1987-го только добавили к нему процедурную генерацию подземелий, чтобы повысить реиграбельность.

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

Сегодня roguelike запросто комбинируют с другими жанрами: с платформерами — в Spelunky и Rogue Legacy, с RPG — в Diablo, со стратегиями — в FTL: Faster Than Light. Или просто создают привычные, казалось бы, «рогалики» про условные подземелья, но с динамичным геймплеем — как в The Binding of Isaac и Hades. И во всех этих играх в том или ином виде применяется процедурная генерация — уровней, экипировки, оружия, врагов и так далее.

Hades

Или вот «песочницы», где процедурная генерация служит всему подряд, вплоть до нарратива.

Так, Dwarf Fortress перед началом каждой новой игры генерирует не только мир, но и сотни лет его истории. А RimWorld поручает игроку жизни трёх процедурно созданных астронавтов, чей корабль разбился на планете, также появившейся в ходе процедурной генерации.

RimWorld

Вдобавок игра предлагает на выбор трёх «рассказчиков» — это своего рода «генераторы» истории, каждый со своим стилем повествования. Кассандра строит рассказ по канонам приключенческих повестей, Фиби время от времени даёт время на передышку, а Рэнди кидает игрока в пучины хаоса. Всё для того, чтобы превратить каждое прохождение в уникальный опыт.

Здесь ваши герои могут погибнуть от холода в тундре. Ядерная зима уничтожит весь ваш урожай. Один из колонистов сойдёт с ума и перебьёт остальных. Или это сделают агрессивные аборигены. В RimWorld такие моменты — сплошь и рядом, но воспринимаются не как наказание за ошибки, а как истории, которые вы будете рассказывать друзьям.

No Man’s Sky и вовсе использует процедурное звуковое сопровождение. У игры, конечно, есть альбом с саундтреком, записанный группой 65daysofstatic, и треки из него играют в ключевые моменты сюжетной кампании: например, первая стыковка с космической станцией происходит под крещендо песни «Asimov».

Впрочем, большую часть времени игрок слышит не композиции целиком, а лишь их фрагменты, пересобранные звуковым движком No Man’s Sky. Алгоритм берёт звуки из библиотеки сэмплов, созданных на основе треков 65daysofstatic, и комбинирует их так, чтобы они подходили к моменту. Скажем, прогулки по планете сопровождаются мелодичными клавишными, но как только начинается буря, их сменяет резкий электронный шум.

Похожий приём использовала студия id Software при разработке Doom 2016 года. Саундтрек для игры написал австралийский композитор Мик Гордон — официальный OST в этом случае тоже разделён на множество заранее записанных и грамотно сведённых композиций.

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

Процедурная генерация, конечно, подходит не только для «рогаликов» и «песочниц» — она также помогает при работе над играми с более традиционным подходом к геймдизайну.

Процедурные леса и мегаполисы

То, что процедурное создание локаций может помочь в создании игр с открытым миром, доказали ещё авторы The Elder Scrolls II: Daggerfall в 1996 году. Им удалось сделать из заготовленных ассетов карту размером с Великобританию, где поместились 15 тысяч городов, деревень и подземелий.

Карта The Elder Scrolls II: Daggerfall. Цветные точки на карте — игровые локации

Да, локации вышли однообразными, но преимущества процедурной генерации были слишком очевидны, чтобы ими не воспользовались другие разработчики. Например, авторы The Witcher 3: Wild Hunt, которым требовалось создать мир, в 35 раз превышающий размерами карту из второй части. Сделать это вручную было почти невозможно, поэтому команда художников под руководством Марчина Голлента применила кисти.

Кисти — это инструменты с наборами ассетов, а в случае третьего «Ведьмака» — с типами растительности. С их помощью разработчики создали все биомы игры — от тайги на севере до лиственных рощ на юге.

Инструментарий генератора

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

Роскошные пейзажи The Witcher 3: Wild Hunt были бы невозможны без процедурной генерации

Кисти не просто сэкономили время и ресурсы CD Projekt Red — они помогли сделать мир «Ведьмака» куда более живым и достоверным.

Процедурная генерация бывает полезна даже в тех случаях, когда карта создаётся по мотивам реального места. В Marvel’s Spider-Man события происходят на виртуальной версии острова Манхэттен, 80% которого создали алгоритмы.

Площадь процедурно сгенерированного Манхэттена в Marvel’s Spider-Man — 18 квадратных километров

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

Алгоритм действует и в самой игре: он генерирует уличный трафик, пешеходов и случайные события вроде погонь и столкновений с бандитами. Во время драки он следит, чтобы у Человека-паука всегда были под рукой предметы, которыми герой швыряется в противников: люки, строительные балки и почтовые ящики.

Можно сказать, система генерации в Marvel’s Spider-Man играет в градостроительный симулятор — с той разницей, что её город — это декорация для истории про знаменитого супергероя.

Алгоритмы в играх, которые создаются «вручную», могут пригодиться не только для работы над локациями. Помните опцию «Создать случайного персонажа» почти в любой RPG? За это тоже отвечает алгоритм процедурной генерации.

Для него есть и более необычные применения. В серии Borderlands геймплей построен вокруг добычи случайно сгенерированных образцов экипировки и оружия. А в серии Watch Dogs одна из самых разрекламированных особенностей — созданные алгоритмом горожане со своими биографиями и перками. Правда, именно Watch Dogs показывает, что происходит, когда процедурная генерация работает не так, как нужно.

«Педиатр. Закончила личные отношения с пациентом»

И это подводит нас к одному из давних споров…

Процедурная генерация — это хорошо или плохо?

Споры о преимуществах и недостатках процедурной генерации продолжаются столько, сколько существует сам инструмент. И у обеих сторон есть веские аргументы.

За: масштаб. Как отметил Яп ван Мёйден, создатель инструментов для левел-дизайнеров Guerrilla Games, огромный открытый мир Horizon: Zero Dawn был бы невозможен без процедурной генерации. Алгоритм позволил художникам студии не только сократить время на проработку карты, но и быстро редактировать вручную созданные локации.

Космические песочницы No Man’s Sky и Elite: Dangerous и вовсе невозможно представить без этого инструмента. В их вселенных требуются сотни миллиардов лет, чтобы облететь каждую планету, — о том, чтобы создавать их вручную, не может быть и речи.

No Man’s Sky

Против: даже лучшие песочницы вроде Minecraft или той же No Man’s Sky страдают от однообразия. Обе игры предлагают впечатляющие вариативностью биомы, но спустя неделю-другую их контент начинает повторяться.

Авторы No Man’s Sky и сами признали эту проблему. Глава студии Hello Games Шон Мюррей рассказывал: «Это и впрямь так работает: игроки встречают одни и те же местности, биомы и планеты». Разработчики попытались решить эту проблему, но отказаться от процедурной генерации всё же не смогли.

Она, к слову, может испортить и более традиционные игры. Bethesda пыталась заполнить мир The Elder Scrolls 5: Skyrim процедурно созданными квестами, чтобы в неё можно было «играть бесконечно». Результат был предсказуемым: система генерации заполнила игру однообразными заданиями по типу «собери пять цветков» и «убей десять бандитов».

The Elder Scrolls 5: Skyrim

За: экономия памяти. Когда локации создаются вручную, каждый объект на них сохраняется отдельно, тогда как, скажем, процедурно сгенерированная растительность хранится в виде отдельной карты. Это позволяет существенно сэкономить место.

Если же алгоритм создаёт целые миры, объём жёсткого диска и вовсе перестаёт быть проблемой — для их загрузки вам нужно только зерно. Именно поэтому No Man’s Sky «весит» чуть больше 10 ГБ: на жёстком диске игра хранит только ассеты, из которых при каждом запуске алгоритм собирает вселенную на 18 квинтиллионов планет.

Против: ошибки генератора. Пример с Watch Dogs: Legion хорошо показывает, что система генерации требует тонкой настройки. К сожалению, предусмотреть все комбинации почти невозможно — значит, всегда есть шанс допустить оплошность, которая сломает баланс или просто выдаст смешную комбинацию.

Даже лучшие алгоритмы временами дают сбой

За: элемент неожиданности. Процедурная генерация — один из главных способов сделать геймплей непредсказуемым. Без неё поклонники Civilization (или Worms) быстро исчерпали бы запас возможных тактик, а фанаты Hades вызубрили бы наизусть каждый уровень игры.

Против: ошибки геймдизайнера. На канале Noclip есть отличное интервью с создателем Dwarf Fortress, где он рассказывает, как открытие баров в игре привело к массовой смерти кошек от алкогольной интоксикации.

Такие дыры в геймплее встречаются и в «обычных» играх, однако процедурная генерация в несколько раз усложняет процесс их отслеживания. Обратная сторона эффекта неожиданности — ни игрок, ни разработчик в точности не знает, чем обернётся следующий патч.

За: возможности для инди-разработчиков. Процедурная генерация — потрясающий инструмент для инди-студий и геймдизайнеров. На момент выхода No Man’s Sky в студии Hello Games работало всего 15 человек. Позже её коллектив вырос до 26 сотрудников.

Minecraft и вовсе создал один геймдизайнер, который после релиза стал знаменитостью, — Маркус «Нотч» Перссон.

Против: меньше рабочих мест для AAA-разработчиков. Экономия ресурсов также значит, что студиям нужно куда меньше сотрудников. Всего три человека в Guerrilla Games нарисовали 500 типов растений для Horizon: Zero Dawn, а их шаблонами занимался один технический художник.

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

Все эти «против» — лишь одна из причин, по которой алгоритмы до сих пор не заменили всех геймдизайнеров. И ещё одна — тот факт, что процедурная генерация — инструмент для выполнения некоторых, вполне конкретных задач. С её помощью сегодня создают просторные открытые миры и отдельные локации, врагов и оружие для «рогаликов», даже сюжеты. Но уникальный игровой опыт всё ещё «строят» сами разработчики — его рядом случайных цифр задать не получится.

Жизнь можно сделать лучше!
Освойте востребованную профессию, зарабатывайте больше и получайте от работы удовольствие.
Каталог возможностей
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована