Процедурная генерация (, сокр. PCG) — автоматическое создание контента с помощью алгоритмов. Другими словами, PCG представляет собой программное обеспечение, которое может создавать контент самостоятельно, или совместно при взаимодействии с пользователями или дизайнерами. Под контентом понимается создание уровней игры, карты игрового мира, правил игры, текстур, сюжетов, предметов, квестов, музыки, оружия, транспортных средств, персонажей и др. В данном контексте под играми понимаются компьютерные игры, видеоигры, настольные игры, карточные игры, головоломки и другие. Ключевой особенностью создаваемого контента является то, что он должен быть играбельным — игрок должен быть в состоянии пройти созданный уровень, использовать сгенерированное оружие, подняться по сгенерированной лестнице и тому подобное.
Термины «процедурный» и «генерация» относятся к компьютерам, так как PCG должно быть запущено в виде процедуры на компьютере, которая выдаст на выход что-то для последующего применения. При этом процедура является частью чего-то, например всей игры или инструмента геймдизайнера. Также процедурная генерация часто применяется в киноиндустрии для создания множества схожих, но не одинаковых объектов, например толпы.
Применение в компьютерных играх
В качестве характерных примеров использования PCG в компьютерных играх называются: генерация без участия человека игровых миров в приключенческих играх (таких как The Legend of Zelda), получающая новый мир на каждом запуске; система, создающая новые типы вооружений в шутере в космическом сеттинге в зависимости от действий игрока; генерация полной, играбельной и сбалансированной настольной игры; внутренняя процедура игрового движка, быстро заполняющая игровой мир растениями; инструмент, дающий возможность создавать человеку карты для стратегической игры, и при запросах и заданных изменениях пересчитывающий карту для её улучшения, а также предлагающий варианты, позволяющие сделать карту более сбалансированной и интересной. В то же время, простой редактор карт, искусственный интеллект для настольной игры или инструмент интеграции созданного контента не относятся к PCG.
Целью использования PCG может являться создание игрового контента без участия человека (что может быть как менее затратно, так и помогать геймдизайнерам в решении их задач), разработка других типов игр (улучшение показателей разнообразия и реиграбельности), адаптация игр под игрока «на лету», улучшение контента с помощью алгоритмических решений, а также формализация геймдизайна как широкая научная задача.
Первые широко известные применения PCG относятся к началу 1980-х годов, когда при ограниченных ресурсах компьютеров можно было создавать большие и разнообразные миры — характерными примерами являются Rogue и Elite. В более позднее время PCG используется в коммерческих играх: например, в X-COM: UFO Defense (1994) и Diablo (1996) PCG используется для создания карт, генерации местоположения и числа монстров и предметов; краеугольным камнем игрового процесса PCG становится в Spore, использующей процедурную анимацию; повсеместно используется в серии Civilization для создания карт; известными примерами применения становятся Minecraft и Spelunky (игровой мир) и (генерация текстур).
Достоинства и недостатки Одним из преимуществ процедурной генерации является возможность создания больших или теоретически бесконечных миров при минимальных затратах вычислительных ресурсов и бюджета, например для игр с открытым миром. Процедурный воксельный мир игры Minecraft имеет искусственную непроходимую границу на расстоянии 30 миллионов метров от центра мира, хотя сам мир теоретически может расширяться бесконечно; выход далеко за границу вызывает артефакты из-за потери точности вычислений с плавающей запятой. Площадь поверхности мира Minecraft составляет 3,6 миллиарда квадратных километров, что в семь раз превышает общую площадь поверхности Земли. В качестве начального значения (сида) для генерации мира используется 64-битное целое число, что обеспечивает возможность создания 18 квинтиллионов () вариантов миров. В игре Fuel (2009) процедурная генерация ландшафта сочетается с использованием объектов и ориентиров, созданных вручную, что позволяет эффективно генерировать и хранить данные об игровом мире площадью более 12,900 квадратных километров. Создание подобных миров вручную потребовало бы огромных усилий и финансовых затрат, а их хранение традиционными методами — непомерно больших объёмов памяти.
Большинство алгоритмов процедурной генерации ограничены фиксированным набором параметров и ассетов, что приводит к однообразности. Хотя алгоритмы генерации мира в No Man's Sky получили высокую оценку за техническую изобретательность, их также критиковали за однообразие ландшафта, хотя разработчики улучшили ситуацию в будущих обновлениях. Аналогичной критике подверглась и Starfield: критики отмечали безжизненные ландшафты и повторяющуюся планировку объектов и сооружений, вплоть до одинакового расположения отдельных предметов, на большинстве из более чем тысячи планет игры. Кроме того, создание слишком больших миров может приводить к графическим и физическим ошибкам на больших расстояниях от центра мира из-за потери точности вычислений с плавающей запятой, хотя этого можно избежать с помощью метода «плавающего начала координат» ().
В других сферах Как и в видеоиграх, в киноиндустрии часто применяется процедурная генерация, позволяющая быстро создавать визуально интересные и достоверные пространства. Одним из примеров являются так называемые «неидеальные фабрики» для быстрого создания множества схожих объектов, например толпы людей. Такой подход учитывает тот факт, что в реальном мире не существует двух абсолютно одинаковых предметов. — программный комплекс, сочетающий технологии компьютерной анимации и искусственного интеллекта и предназначенный для создания визуальных эффектов с участием толп в кино и на телевидении. Изначально он был разработан для автоматического создания сражающихся армий в сотни тысяч солдат в кинотрилогии Питера Джексона «Властелин колец».
Гриффин Пойк исследовал, как процедурные городские ландшафты могут использоваться для поддержки социальных симуляций и обучения беспилотных автомобилей.
Целевые свойства генерации Создаваемый контент должен удовлетворять определённым условиям и таким образом решать соответствующие проблемы, и на практике чаще всего рассматриваются следующие свойства: Скорость: в зависимости от задачи требования разнятся от миллисекунд до месяцев, но в общем случае контент должен быть создан вовремя для удовлетворения нужд определённой задачи. Надёжность: некоторые генераторы создают «кучу чего-то», в то время как другие могут гарантировать выполнение заданных критериев, например всегда обеспечивать возможность проходимости пользователем до выхода лабиринта. Контролепригодность: способность контролировать сгенерированный контент исходя из ситуации и предоставление дизайнеру соответствующей свободы (данное свойство требуется далеко не всегда); например, генерация гладкого продолговатого камня или создание уровня с определённой атмосферой. Разнообразие: создание такого контента, который был бы как можно более разным на разных запусках, и при взгляде на него пользователь не чувствовал бы однообразие. Креативность и правдоподобие: генерация такого контента, который выглядит так, как будто его создал человек, а не генератор.
См. также
Клеточный автомат Фрактальная поверхность L-система Процедурное текстурирование Процедурная анимация
Примечания
Литература
Ссылки Procedural Content Generation Wiki.
Категория:Механизмы компьютерных игр Категория:Процедурная генерация Категория:Терминология компьютерных игр