В вычислительной технике процедурная генерация (иногда сокращенно proc-gen ) — это метод создания данных алгоритмически , а не вручную, обычно посредством комбинации созданного человеком контента и алгоритмов в сочетании с генерируемой компьютером случайностью и вычислительной мощностью. В компьютерной графике она обычно используется для создания текстур и 3D-моделей . В видеоиграх она используется для автоматического создания больших объемов контента в игре. В зависимости от реализации преимущества процедурной генерации могут включать меньшие размеры файлов, большие объемы контента и случайность для менее предсказуемого игрового процесса.
Термин «процедурный» относится к процессу, который вычисляет определенную функцию. Фракталы — это геометрические узоры, которые часто могут быть сгенерированы процедурно. Обычный процедурный контент включает текстуры и сетки . Звук часто также генерируется процедурно и имеет применение как в синтезе речи, так и в музыке. Он использовался для создания композиций в различных жанрах электронной музыки такими артистами, как Брайан Ино, который популяризировал термин « генеративная музыка ». [1]
Хотя разработчики программного обеспечения годами применяли методы процедурной генерации, лишь немногие продукты широко использовали этот подход. Процедурно сгенерированные элементы появлялись в более ранних видеоиграх: The Elder Scrolls II: Daggerfall происходит в основном в процедурно сгенерированном мире, что дает мир примерно в две трети от фактического размера Британских островов . Soldier of Fortune от Raven Software использует простые процедуры для детализации моделей врагов, в то время как его продолжение включало режим случайно сгенерированного уровня . Avalanche Studios использовала процедурную генерацию для создания большой и разнообразной группы детализированных тропических островов для Just Cause . No Man's Sky , игра, разработанная игровой студией Hello Games , полностью основана на процедурно сгенерированных элементах.
Современная демосцена использует процедурную генерацию для упаковки большого объема аудиовизуального контента в относительно небольшие программы.
Новые методы и приложения ежегодно представляются на таких конференциях, как Конференция IEEE по вычислительному интеллекту и играм и Конференция AAAI по искусственному интеллекту и интерактивным цифровым развлечениям. [2]
В частности, при применении процедурной генерации в видеоиграх, которые должны быть максимально реиграбельными, существуют опасения, что процедурные системы могут генерировать бесконечное количество миров для исследования, но без достаточного человеческого руководства и правил для их управления. Результат был назван «процедурной овсянкой», термин, придуманный писательницей Кейт Комптон, поскольку, хотя и возможно математически генерировать тысячи мисок овсянки с помощью процедурной генерации, они будут восприниматься пользователем как одинаковые, и им не будет хватать понятия воспринимаемой уникальности, к которой должна стремиться процедурная система. [3]
Использование процедурной генерации в играх берет свое начало в настольных ролевых играх (RPG). [4] Ведущая настольная система Advanced Dungeons & Dragons предоставляла «мастеру подземелий» способы генерации подземелий и ландшафта с использованием случайных бросков кубиков, расширенные в более поздних изданиях сложными разветвленными процедурными таблицами. Strategic Simulations по лицензии TSR выпустила Dungeon Master's Assistant , компьютерную программу, которая генерировала подземелья на основе этих опубликованных таблиц. Tunnels & Trolls , изданная Flying Buffalo , [5] была разработана в первую очередь для одиночной игры и использовала похожую процедурную генерацию для своих подземелий. Другие настольные RPG заимствовали похожие концепции процедурной генерации для различных элементов мира. [6]
Многие онлайн-инструменты для Dungeon Masters теперь в той или иной степени используют процедурную генерацию. [ необходима цитата ]
До графически ориентированных видеоигр, игры roguelike , жанр, напрямую вдохновленный Dungeons & Dragons , адаптированный для одиночной игры, активно использовали процедурную генерацию для случайного создания подземелий, таким же образом, как это делали настольные системы. Такие ранние игры включают Beneath Apple Manor (1978) и одноименную игру жанра Rogue (1980). Система процедурной генерации в roguelike создавала подземелья в ASCII - или обычных системах на основе плиток и определяла комнаты, коридоры, монстров и сокровища, чтобы бросить вызов игроку. Roguelike и игры, основанные на концепциях roguelike, позволяют разрабатывать сложный игровой процесс без необходимости тратить чрезмерное время на создание игрового мира. [7]
В игре Maze Craze 1978 года для Atari VCS использовался алгоритм для генерации случайного лабиринта сверху вниз для каждой игры. [8]
Некоторые игры использовали генераторы псевдослучайных чисел . Эти PRNG часто использовались с предопределенными начальными значениями для генерации очень больших игровых миров, которые, казалось, были созданы заранее. Sentinel предположительно имел 10 000 различных уровней, хранящихся всего в 48 и 64 килобайтах. Крайним случаем была Elite , которая изначально планировалась содержать в общей сложности 2 48 (примерно 282 триллиона) галактик с 256 солнечными системами в каждой. Однако издатель боялся, что такая гигантская вселенная вызовет недоверие у игроков, и восемь из этих галактик были выбраны для финальной версии. [9] Другие известные ранние примеры включают игру Rescue on Fractalus 1985 года (в которой фракталы использовались для процедурного создания в реальном времени скалистых гор чужой планеты) и River Raid ( игра Activision 1982 года , в которой использовалась псевдослучайная числовая последовательность, сгенерированная линейным регистром сдвига с обратной связью , для создания прокручивающегося лабиринта препятствий).
Хотя современные компьютерные игры не имеют тех же ограничений по памяти и оборудованию, которые были у более ранних игр, использование процедурной генерации часто применяется для создания рандомизированных игр, карт, уровней, персонажей или других аспектов, которые являются уникальными при каждом прохождении. [10] [11]
В 2004 году немецкой демо-группой был выпущен шутер от первого лица для ПК под названием .kkrieger . Он полностью содержался в исполняемом файле для Microsoft Windows размером 96 килобайт , который при запуске генерировал сотни мегабайт 3D-данных и текстур. По словам одного из программистов, «это был полный провал, если говорить об игровой стороне (в основном потому, что никто из вовлеченных в процесс разработчиков не особо заботился об этом аспекте)». [12]
RoboBlitz от Naked Sky использовала процедурную генерацию для максимизации контента в загружаемом файле размером менее 50 МБ для Xbox Live Arcade . Spore от Will Wright также использует процедурный синтез.
Процедурная генерация часто используется в системах добычи в играх, основанных на квестах, таких как ролевые игры в жанре экшн и массовые многопользовательские онлайн-ролевые игры . Хотя квесты могут иметь фиксированные награды, другая добыча, такая как оружие и броня, может быть сгенерирована для игрока на основе уровня персонажа игрока, уровня квеста, его эффективности в квесте и других случайных факторов. Это часто приводит к тому, что добыча имеет качество редкости, применяемое для отражения того, когда система процедурной генерации создала предмет с характеристиками выше среднего. Например, серия Borderlands основана на своей системе процедурной генерации, которая может создать более миллиона уникальных пушек и другого оборудования. [13]
Многие игры с открытым миром или игры на выживание процедурно создают игровой мир из случайного семени или семени, предоставленного игроком, так что каждое прохождение отличается. Эти системы генерации создают многочисленные пиксельные или воксельные биомы с распределением ресурсов, объектов и существ. Игрок часто имеет возможность настраивать некоторые параметры генерации, например, указывать количество водного покрытия в мире. Примерами таких игр являются Dwarf Fortress , Minecraft и Vintage Story .
Процедурная генерация также используется в играх по исследованию космоса и торговле. Elite: Dangerous , используя 400 миллиардов известных звезд Галактики Млечный Путь в качестве своей мировой основы, использует процедурную генерацию для моделирования планет в этих солнечных системах. Аналогичным образом, Star Citizen использует эту технологию для создания бесшовно загружаемых планет в своей вручную созданной вселенной. I-Novae Infinity представляет собой множество планет, которые генерируются процедурно, между которыми игрок может путешествовать на космических кораблях. Outerra Anteworld — это видеоигра в разработке, которая использует процедурную генерацию и данные реального мира для создания виртуальной копии планеты Земля в истинном масштабе.
No Man's Sky , с использованием процедурной генерации, является крупнейшей видеоигрой в истории, включающей в себя вселенную из 18 квинтиллионов планет по всем галактикам, которые можно исследовать в полете или пешком. Все планеты имеют свой собственный уникальный разнообразный ландшафт, погоду, флору и фауну, а также ряд космических инопланетных видов. Один и тот же контент существует в одних и тех же местах для всех игроков (благодаря одному случайному числу начального числа их детерминированного движка), что позволяет игрокам встречаться и делиться открытиями. [14] [15] [16]
Как и в видеоиграх, процедурная генерация часто используется в кино для быстрого создания визуально интересных и точных пространств. Это имеет широкий спектр применений.
Одно из приложений известно как несовершенная фабрика , где художники могут быстро генерировать множество похожих объектов. Это объясняет тот факт, что в реальной жизни нет двух абсолютно одинаковых объектов. Например, художник может смоделировать продукт для полки продуктового магазина, а затем создать несовершенную фабрику для генерации множества похожих объектов для заполнения полки.
MASSIVE — это высококачественный пакет программного обеспечения для компьютерной анимации и искусственного интеллекта , используемый для создания визуальных эффектов, связанных с толпой, для кино и телевидения. Он был разработан для автоматического создания боевых армий из сотен тысяч солдат для фильмов Питера Джексона « Властелин колец» . [17]
Когерентный шум может быть чрезвычайно важен для процедурного рабочего процесса в кино. Симплексный шум часто быстрее с меньшим количеством артефактов, хотя может использоваться и более старая функция, называемая шумом Перлина . Когерентный шум в этом случае относится к функции, которая генерирует гладкую псевдослучайность в n измерениях.