Процедурная генерация, концепция, заимствованная из информатики, представляет собой метод создания данных с помощью алгоритмов. Это означает, что с использованием запрограммированных инструкций и обработки числовых кодов, известных как seed карты, можно автоматически и случайным образом генерировать элементы. Этот процесс способен создавать как текстуры, так и сложные трехмерные модели, и широко применяется в компьютерной графике. Несмотря на разнообразное применение, процедурная генерация получила заметное освещение во время разработки видеоигр.
В играх процедурная генерация была внедрена с целью упрощения создания уровней, карт и миров, требуя минимального вмешательства человека. Для достижения этой цели используются специальные алгоритмы и методы, зависящие от типа генерируемого контента.
Случайный обход графов (Randomized graph traversal) часто используется при создании подземелий или ветвящихся карт, как это видно в таких играх, как Slay the Spire и FTL: Faster Than Light. Эта процедура включает построение графов — математических моделей — для структурирования комнат и их соединений, применяя заранее установленные правила относительно таких аспектов, как кратчайший путь, количество препятствий (например, запертых дверей или других барьеров, которые требуют определенных предметов или навыков для открытия) и наличие тупиков.
Обычно все эти компоненты берутся из готовых ассетов, а затем организуются в геометрическую конфигурацию, которую можно отрисовать. Примером этого является преобразование структуры узлов и связей в различные диагонали в более «квадратную» структуру, с соединениями только по горизонтали и вертикали, как это наблюдается в подземельях игр.
Другие важные алгоритмы включают шум Перлина (Perlin Noise) и диаграмму Вороного (Voronoi Diagram). Эти функции отвечают за плавные переходы между элементами и идеально подходят для представления природных ландшафтов. Наиболее распространенные применения этих инструментов охватывают поднятие рельефа, текстуру облаков и разграничение различных биомов или типов местности. Такие ресурсы широко распространены в игровых движках, таких как Unity 3D и Unreal Engine.
Взвешенный случайный выбор (Weighted random selection) — еще одна очень используемая функция, особенно при размещении врагов и ловушек, а также при создании предметов и снаряжения. Все эти данные предварительно вводятся вместе с «весом», присвоенным каждому из них. С этой информацией алгоритм должен взвесить, следуя заданному «весу», и включить в игру на основе вероятности и других установленных правил.
Иллюстративный пример можно найти в таких играх, как Diablo и Borderlands, а также в большинстве roguelike. Их оружие и снаряжение имеют различные атрибуты и способности, которые случайным образом вносятся в каждый предмет, с учетом его типа, редкости и других факторов.
Применение процедурной генерации в играх восходит к концу 70-х годов, а именно к первым roguelike. Эти игры были вдохновлены Dungeons & Dragons, но предлагали одиночную игровую механику, и их подземелья генерировались случайным образом. Однако процесс был намного проще, поскольку графика состояла в основном из символов ASCII (обычных клавиш и значков).
Одной из самых популярных игр того времени был Rogue, выпущенный в 1980 году, который послужил вдохновением для roguelike. Хотя это и старая технология, первое использование процедурной генерации с большей сложностью и графическим потенциалом произошло в 1996 году. Именно в этом году вышел The Elder Scrolls II: Daggerfall, представивший процедурно сгенерированную карту. Результатом стал колоссальный мир площадью 160 000 км², сочетающий предопределенные центральные регионы с ландшафтами, городами и подземельями, построенными алгоритмически.
Более «примитивная» форма процедурной генерации стала известна благодаря Gauntlet, выпущенному в 1985 году для аркадных автоматов. Эта игра использовала 125 различных карт, что создавало ощущение новизны при перезапуске игры и возвращении к первой карте, в сочетании с увеличением сложности и рандомизацией сокровищ и предметов.
В его продолжении, выпущенном в 1986 году, эта «случайность» была еще больше усовершенствована. Его более чем 100 карт могли появляться перевернутыми по вертикали или горизонтали, а также вращаться до 180 градусов, а точки выхода также могли менять местоположение — элементы, которые усиливали ощущение уникальности.
Недавно нейронные сети, которые являются моделями машинного обучения, вдохновленными человеческим мозгом, начали включаться для усовершенствования процедурной генерации. Объединяя традиционные методы генерации с глубоким обучением ИИ, появляются новые возможности для создания аудио, изображений и уровней в играх. Также возможно разработать агентов, которые тестируют саму игру, или более сложные NPC, способные естественно реагировать на голосовые команды или вопросы игроков.
Однако это технологии, которые все еще находятся на очень ранних стадиях разработки. Примером является проект NEO NPC от Ubisoft, целью которого было создание NPC с естественным взаимодействием с игроками, генерируя автоматические ответы, соответствующие высказываниям пользователей, но проект не развивался, как планировалось. Без больших объяснений он изменил направление на Teammates — агентов, которые автоматически реагируют на голосовые команды игрока, заменяя предопределенные списки команд.
Эти идеи представляют большой потенциал для повышения уровня интерактивности игр, предлагая беспрецедентный опыт и большую иммерсию. Тем не менее, это технологии, которые пока остаются обещаниями, большинство из которых находится на предварительном тестировании и могут привести к неудаче или к чему-то совершенно иному от первоначальной концепции, как это произошло с NEO NPC. Поэтому рекомендуется наблюдать за этими инновациями с осторожностью, пока не появятся более конкретные результаты.