136

Как процедурная генерация помогает создавать открытые миры. Часть 1

Современные открытые миры в играх — это огромные пространства с реалистичными лесами и полями, городами и деревнями, тропинками и многополосными шоссе. Зачастую они выглядят настолько впечатляюще, что игроки всерьёз любуются виртуальными пространствами и делают десятки скриншотов. Фотографируя очередную поляну в рассветных лучах, игрок может и не догадываться, что она была сгенерирована автоматически.


Мы изучили доклады и презентации специалистов по генерации открытых миров, а также пообщались с программистом AAA-игр Александром Балакшиным, и теперь рассказываем, как работают эти алгоритмы, кому они могут пригодиться, и как их использовали в разработке The Witcher 3: Wild Hunt, Horizon Zero Dawn, The Sinking City и Spider-Man 2018-года.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Horizon Zero Dawn


Автор: Юрий Кулагин


Кому и зачем нужна генерация


Процедурная генерация в игровой индустрии используется давно. В Rogue, прародителе жанра roguelike, при помощи генерации создавали обширные уровни, — в дальнейшем этот подход стал стандартом для подобных игр. Diablo уже выстраивала с помощью алгоритмов целые многоуровневые катакомбы.


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

The Elder Scrolls II: Daggerfall


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


Александр Балакшин, геймплей-программист:

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

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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


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


Александр Балакшин, геймплей-программист:

Работая с процедурной генерацией, нужно понимать, что ручную работу никто не отменял. Художники могут взять сгенерированный кадр и сказать: “Всё, конечно, хорошо, но отсюда это смотрится паршиво, оттуда — неестественно, а там вообще какая-то дичь”. И они начнут потихоньку это исправлять. Так что генерация облегчает работу, но не заменяет соответствующих специалистов.

Художники не останутся без работы ещё и потому, что в открытых мирах отлично работает принцип Парето — игрок активно изучает только 20% локации, а оставшиеся 80% служат фоном. Так что логичным шагом будет отдать проработку и заполнение этого фона на откуп алгоритмам, и дать художникам больше времени на проработку того, на что игрок обратит внимание.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Spider-Man (2018)


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


Александр Балакшин, геймплей-программист:

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

А с точки зрения геймплея не нужно ставить какой-то дикий грейбокс, чтобы обозначить лес, — он же вообще не будет отражать окончательный вариант. Одно дело — использовать грейбокс для здания, совсем другое — когда такой же кубик берут для леса.

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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


Кисти для процедурной растительности

Для The Witcher 3 разработчикам из CD Projekt RED нужно было создать мир, который в 35 раз превышал бы размер локаций второго “Ведьмака”. Людей с опытом работы над полностью открытым миром не хватало, а приступить к созданию локаций нужно было как можно скорее.


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

The Witcher 3: Wild Hunt


Александр Балакшин, геймплей-программист:

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

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


Программисты обучили алгоритм распознавать два типа поверхностей: к природным система относила почву, песок, каменистую местность, а к рукотворным — кирпич, брусчатку, бревенчатые стены. Это помогало по-разному накладывать эффекты на разные типы материалов — например, на стене дома снег выглядел не так, как на земле. Благодаря этому и получались плавные переходы — по краям дороги генератор складывал рукотворную текстуру брусчатки и природную текстуру земли так, что оставались видны контуры отдельных булыжников.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


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


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


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

Марчин Голлент, ведущий программист графики CD Projekt RED:

Недостаточно просто добавить в движок генерацию текстур: всегда нужно прорабатывать и связанный с ней инстурментарий. Художникам нужна возможность отключать конкретные компоненты инструмента и управлять отдельными параметрами.

Источник


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


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


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

The Witcher 3: Wild Hunt


Если для конкретного дерева не хватало воды или солнца, то кисть исключала этот тип из локации. Но даже если ресурсов было достаточно, объект всё равно сравнивался с заданными “идеальными условиями”, и его размер менялся соответственно. Поэтому одна и та же кисть, применённая на долину у озера и на скалистый засушливый холм, выдавала разный результат.


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


Марчин Голлент, ведущий программист графики CD Projekt RED:

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

Источник

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


Слои для процедурных биомов

Работая над Horizon Zero Dawn, программисты Guerrilla Games тоже использовали процедурную генерацию. Художники студии привыкли контролировать каждую деталь на локации ещё во времена работы над серией Killzone. Поэтому и в новой игре они хотели иметь возможность поменять результат генерации — например, передвинуть гору, которую алгоритм поставил неправильно.


В результате студия разработала систему, которая поддавалась тонкой настройке и редко ошибалась с размещением объектов. В основе этой системы лежали слои.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Horizon Zero Dawn


Александр Балакшин, геймплей-программист:

В Horizon: Zero Dawn художники создали карты дорог, высот, рек и растительности. В зависимости от биома между этими картами выстраивается определённая логика взаимодействия. В них хранится информация о плотности: чёрные значения означают, что в конкретной точке не может быть растительности, белые — что в ней должно быть максимальное количество растительности.

Главным слоём служила карта растительности, на которой художники отмечали, где должен расти лес и насколько густым он должен быть. Эта карта накладывалась на другие карты местности, после чего алгоритм сравнивал значения в конкретных точках. Если даже через очень густой лес проходила дорога или река, система сама изменяла параметры так, чтобы под водой не росла трава, а кусты постепенно редел на подходах к тропинке.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


Чтобы сгенерированные локации не просто работали, но и выглядели разнообразно, художникам студии потребовалось создать множество ассетов и шаблонов растительности, — но это всё равно оказалось быстрее и выгоднее, чем ручная проработка мира. Три человека в Guerrilla Games нарисовали 500 типов растений, а шаблонами занимался один технический художник.


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

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


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


Александр Балакшин, геймплей-программист:

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

В Horizon: Zero Dawn игрок исследует множество разных биомов, — от среднеевропейских лесов до заснеженной тундры. Сами разработчики называли их “экотопами”: с точки зрения инструмента генерации это были просто наборы настроек для создания локации.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Horizon Zero Dawn


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


Система работала и с геймплейными элементами. Например, при помощи отдельного инструмента художники могли размещать на локации специальный “стелс-кустарник”, в котором игрок прятался от врагов. Его расстановка и логика тоже подчинялись общим правилам — в воде или на дороге кусты не генерировались.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Horizon Zero Dawn


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


Яаап ван Мюжден, старший технический программист Guerrilla Games:

Процедурную генерацию в Horizon Zero Dawn мы использовали везде, где только могли — для ассетов, эффектов, даже геймплейных элементов. И результат выглядел очень здорово: он полностью вписывался в видение арт-директора.

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

Источник

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

Источник


Сетка для процедурного города

Чтобы построить большой и реалистичный город в The Sinking City, студия Frogwares создала инструмент процедурной генерации для Unreal Engine 4. По словам Константина Якушенко, который возглавляет в компании команду tools-инженеров, разработчики вдохновлялись конструктором Ubisoft, с помощью которого создавали здания и улицы в Assassin’s Creed Unity и Syndicate.


Процедурная генерация в города в The Sinking City начиналась с ручной работы. Художники создавали “сетку”, — макет основных улиц и ориентиров — и указывали, какие типы домов могут находиться в том или ином районе. А ландшафт, рельеф и ширина улиц определялись лишь предварительно.

Как процедурная генерация помогает создавать открытые миры. Часть 1 Xyz, Gamedev, Игры, Компьютерная графика, Художник, Разработка, Гифка, Длиннопост

The Sinking City

CGI Media

3.1K постов6.6K подписчика

Правила сообщества

• Посты должны соответствовать тематике cообщества.

• Не допускается спам и нарушение правил сайта pikabu.