Разработчики рассказывают, почему они используют процедурную генерацию.

Некоторые крупные игры начинают использовать процедурную генерацию. В прошлом месяце на Е3 были представлены космический симулятор Elite: Dangerous и No Man’s Sky, которые приятно удивили посетителей своими амбициозными планами и огромными вселенными.

Sean Murray, сотрудник из Hello Games’, разрабатывающей No Man’s Sky, рассказал, что игра создается небольшой группой людей. Действие игры будет происходить в процедурно генерируемой вселенной “бесконечного” размера. «Даже мы не знаем, что там», – утверждал он.

Технические приемы, использованные для автоматического построения уровней и окружения, работают на основе набора “правил генерации” и множества разработанных заранее ассетов. Этот принцип также можно применять для случайной генерации предметов, фауны и других геймплейных элементов. David Braben, продюсер Elite: Dangerous, отмечает, что несмотря на случайную генерацию некоторых элементов, игра не должна ощущаться полностью рандомной – не должно быть ощущения искусственности.

 «Если есть ощущение искусственности, то это плохое процедурное генерирование. Представьте себе 3D текстуру древесной коры вблизи – она должна выглядеть так же, как кора настоящего дерева.

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

Если результаты этих подходов визуально неотличимы, то первый метод лучше, так как вы можете создать сколько угодно различных текстур, в то время как художнику пришлось бы каждый раз проводить работу заново. Основной вопрос в “правилах генерации” – как их сформировать, чтобы генерация была применима (сгенерированный материал подходил).”

За последние несколько лет процедурная генерация оказалось чрезвычайно популярной среди инди-разработчиков. Отчасти она начинает использоваться и в triple-A студиях для некоторых аспектов.

Но почему же этим особенно увлеклись небольшие команды разработчиков?

«Крупные разработчики могут себе позволить разработку  специализированных  инструментов для дизайна уровней. Для инди это зачастую не представляется возможным. Так что процедурная генерация является интересным вариантом, как альтернатива для трудоемкого ручного создания уровней», – говорит Maarten Brouwer, эксперт по процедурной генерации из Serious Brew, работавший над Cargo Commander.

«Это также дает возможность создания бесконечно длинной игры, имея при этом ограниченное количество ассетов.»

Tanya Short, креативный директор Kitfox Games, работала над игрой с элементами пошаговой RPG — Shattered Planet. Она подтверждает, что процедурная генерация – это мудрое бизнес-решение для многих инди, которые, в некоторой степени, конкурируют с крупными издательствами. Tanya отмечает, что поскольку эта техника ещё нова, то дизайн какого-то аспекта может потребовать проведения углубленных исследований. Но, в свою очередь, это позволит получить новый опыт.

«Нам надо было что-то новое. Нам нравятся головоломки и решение задачек. А что может быть интереснее процедурно сгенерированной головоломки? Это головоломка внутри головоломки – при каждом прохождении она решается по-новому. Поэтому Rogue и Dwarf Fortress – 20-летние проекты. Процедурная генерация является “черной дырой”, готовой поглотить вашу жизнь. В хорошем смысле».

 

Ведение контроля

Tanya Short рассказывает, что в первую очередь команда строит пример уровня в редакторе вручную (в ее случае это  Unity). Затем происходит анализ различных интересных элементов на этом уровне.

Затем разработчики разбивают дизайн на “правила”: определяют максимальный и минимальный размер комнат и коридоров, как должны быть размещены сокровища и враги. Даже какие декоративные элементы могут быть размещены, и каким образом.

«Но на самом деле, это больше похоже на укрощение бесконечности возможных вариантов, где может случиться что угодно. Мы создаем необходимые рамки, чтобы некоторые элементы не могли получиться по-другому.»

Но как при создании такого набора “правил” разработчики могут запретить игре создавать повторяющиеся, скучные для игроков уровни? Ведь отсутствие такого контроля может привести к генерации скучного, монотонного геймплея. Как оградить игрока от этого?

Short рекомендует избегать набора “правил”, делающих игру “bland and samey”. Алгоритм будет генерировать однообразный продукт в рамках заданных условий, так что необходимо создать некоторые исключения из правил.

Brouwer говорит, что часть интересности в результате процедурной генерации, заключается именно в отсутствии контроля. Он признает, что часто устает от тщательно проработанных событий в играх, которые создаются более традиционно.

«Бывает гораздо интереснее играть в то, что уникально. Приятно чувствовать возможность встретить что-то новое, не фиксированное. Дизайнеру это позволяет понять, какие элементы всё же стоит задать жестко, а какие “отпустить” под свободную генерацию, не боясь получить слишком скучную игру».

Сокращение расходов

Одним из ключевых преимуществ процедурной генерации – это сокращение затрат разработки, даже для triple-А игр. Например, Hello Games, небольшая команда под руководством Sean Murray, смогла создать то, что выглядит как огромная Вселенная.

Kevin Meredith из Interactive Data Visualization (компании, разработавшей инструмент для моделирования и рендеринга растительности – SpeedTree), считает, что такие инструменты могут значительно сократить время, необходимое для моделирования и размера ассетов.

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

Brouwer говорит, что эта техника широко используется для упрощения редактирования уровня, вышеупомянутых задач генерации растительности, а также мест спавна врагов и выпадения лута. Однако он предупреждает, что процедурная генерация не должна полностью заменить вручную создаваемый контент.

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

Braben же считает, что процедурная генерация может привести к противоположному:

«Есть опасность, что при создании triple-A игр это повлечет за собой увеличение затрат. Зачастую на разработку таких игр наложены определенные ограничения: размер системной памяти, дискового пространства, производительность рендеринга, пропускная способность сети и так далее. А лучшая игра, это та, которая наилучшим образом работает в рамках этих условий.

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

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

 

Перевод — А. Мальков, оригинал — здесь

Become a patron at Patreon!