Создание футуристического города “SAMPA”

Разработка игр | |

Статья изначально была опубликована в виде интервью на форуме MapCore, потом переработана на сайте Тьяго Клафке (Thiago Klafke). В данный момент автор работает над Overwatch.

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

thiago-klafke-sampa

Планирование

Первым делом я всегда делаю план всей сцены в 3ds Max. Я не хотел тратить на это слишком много времени, поэтому просто сосредоточился на создании интересных форм. Затем я импортировал все в один файл на Unreal Engine, что позволило понять, как это будет выглядеть в игре.

picture01

Поскольку художники окружения склонны уделять слишком много внимания техническим деталям, закладка – это отличное упражнение для развития творческой жилки, т.к. на этом этапе нужно полностью сосредоточиться на создании всевозможных красивостей и выстроить их в угоду геймплею. Кроме того, на стадии закладки задается правильный масштаб, что очень важно при работе с городским окружением, и в качестве «примерки» я использую полномасштабную модель игрового персонажа. Это позволяет быстро определить, на какой высоте должна быть, к примеру, дверная ручка или перила. Стадия закладки потребовала у меня всего 3 дня, но идеи, внедренные на этом этапе, пробили себе путь и к финальной версии сцены (включая начальную геометрию объектов).

picture02

Моделлинг

Первая фаза моделлинга была, по сути, самой сложной. Я начал с того, что честно спросил себя, получится ли у меня замоделлить всю закладку в установленный срок. Изучение того, как работают PBR-материалы, потребовало чуть больше времени, чем я ожидал.

Сначала я хотел сделать каждое здание по-настоящему уникальным. Но в итоге получилось так, что я потратил несколько дней на моделлинг одного единственного здания, и сам собой напросился вывод: использовать уникальную геометрию вместе с модульными «кирпичиками Lego». Я старался делать так, чтобы все уникальные объекты могли быть встроены в ту же сетку, что и модульные, чтобы я мог комбинировать их друг с другом, быстро получая большую вариативность.

picture03

Настроение

Мне хотелось, чтобы временем суток для сцены был ранний вечер, поэтому я решил использовать не резкие тени, а непрямое освещение и объемный свет. Некоторые любят делать это в конце, но я решил заняться этим с самого начала. Полагаю, так работа идет несколько медленнее (поскольку требуется больше времени, чтобы обмозговать все и вся), но это позволило мне изучить, как в Unreal работает система постобработки, и в итоге у меня получилось как раз то настроение, что я хотел.

Здесь показано, как в процессе работы менялось освещение

Здесь показано, как в процессе работы менялось освещение

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

Материалы и текстуры

В этой сцене обильно используются плиточные текстуры, большая «каемочная» текстура (это карта высот, совмещающая в себе множество разных кромок, каемок и обрамлений; в английском языке используются варианты «trim sheet» или «trim texture») и несколько уникальных текстур. В начале работы я, как и ожидалось, немного застрял на изучении PBR-материалов, но в итоге разобрался с ними. Да, признаюсь, мои материалы не выглядят фантастически, но со своей работой, на мой взгляд, справляются…

Несколько примеров материалов

Несколько примеров материалов

Кроме того, для каждого ассета я создал карты нормалей. Некоторые из них запекались в 3ds Max из высопополигональных моделей, некоторые лепились в Zbrush, а некоторые полностью делались в nDo. Карты нормалей сейчас куда важнее, чем раньше, потому что PBS для освещения нужны как раз именно они. Прошли те дни, когда детали имитировались на диффузной карте и карте отражений.

Создание тротуара

Создание тротуара

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

Мой процесс работы в dDo выглядел следующим образом: я создавал ID-карту, чтобы задать все материалы, которые будут находиться в текстуре. Затем я выбирал несколько базовых пресетов (что давало идеальные значения для неровностей, металличности и альбедо) и, добившись нужного результата, добавлял то, что нарисовал сам. В итоге получилась ситуация «вин-вин»: мои материалы стали выглядеть гораздо правдоподобнее, и я мог заново использовать слои, которые вручную рисовал для старых текстур.

[Тут потеряна картинка; Подпись: «Сравнение обычного тротуара (нарисованного вручную) и сделанного в dDo»]

Совет: Текстуру в Unreal можно сделать более четкой, указав Sharpen в ниспадающем списке Mip Gen Settings, который находится в меню Level of Detail (чтобы открыть эту настройку, дважды кликните по текстурной карте).

Работа с PBR может быть очень пугающей, особенно если заниматься металлами, поэтому я бы настоятельно рекомендовал изучить dDo и другие автоматические инструменты для создания текстур – даже если над ними нужно хорошенько поработать, чтобы они начали подходить выбранному стилю.

Образцы материалов

Одна из лучших функций Unreal Engine – это то, что образцы материалов (Material Instance) можно очень легко создавать из обычных материалов. Работать с этими образцами гораздо проще, поскольку они сэкономят вам кучу времени – вам уже не надо создавать сеть нодов каждый раз, когда вы захотите новый материал. Кроме того, доработка материалов выполняется гораздо быстрее, поскольку изменение параметров образца не приводит к перезагрузке шейдера, в отличие от сохранения обычного материала.

picture08

Простой материал с картой альбедо. Поддержка карты нормалей, а также карты неровностей, карты металличности и карты объемного света. Оригинальный материал – слева, образец материала – справа.

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

Ниже несколько созданных мной базисных материалов.

Architecture_Parallax_3Layers – это материал с поддержкой «parallax mapping» (это техника, симулирующая рельеф на плоской поверхности). Используется, как правило, для окон.

picture09

Собственно, сеть нодов для эффекта «parallax mapping» довольно проста.

picture10

Asphalt – специальный материал, использующий карту с мировыми координатами (т.е. «world space map») и «пятнистую» текстуру, которая обильно используется поверх крупномасштабных деталей. Этот материал позднее был заново использован в «мокрой» версии (см. ниже) – для дорог.

Architecture_Wet_Dirty – этот материал использует «цвета вершин» (vertex colors), чтобы совместить базовый материал с двумя другими материалами: «грязную» версию карты альбедо и плоский материал со 100-процентным отражением (для симуляции луж). Чтобы объяснить все эти ноды, потребуется отдельная статья, поэтому я просто оставлю здесь эту картинку, демонстрирующую шейдерную сеть:

picture12

«Мокрый» материал в действии:

picture12b

Создание вариативности модификатором Symmetry

Если вам надо создать много вариаций одного объекта, то один из самых простых способов – это симметрия. Набор объектов на картинке ниже состоит из двух базовых моделей и нескольких вариаций, созданных при помощи модификатора Symmetry в 3ds Max. То же самое можно сделать и в Maya при помощи MirrorCut:

picture17

Я также использовал этот трюк, чтобы создать несколько вариаций витрины:

picture17b

Освещение и постобработка

Для своей сцены я использовал стандартные карты освещения. Хотя в Unreal 4 есть возможность создавать динамическое освещение, я все же считаю, что сэкономить время – это лучше, чем  слегка увеличить качество картинки, поэтому и воспользовался картами освещения.

Освещение было сделано просто: с маленькими «золотыми» светильниками, контрастирующими с объемным синим светом. Вместо того чтобы освещать весь уровень, я создал несколько «маленьких» сцен. Это сделало уровень менее «театральным» и больше похожим на то, как должен выглядеть настоящий город. Я также специально разместил в некоторых местах источники света, чтобы они показали«мокрость», наличие луж на некоторых участках. Полагаю, созданием луж в ближайшем будущем многие будут злоупотреблять (до тех пор, пока ее не будет ненавидеть каждый уважающий себя художник окружения), но я, впрочем, старался сделать все как можно проще и добавлять эту «мокрость» лишь туда, где она имела смысл.

Лужи, специально расположенные рядом с источниками света

Лужи, специально расположенные рядом с источниками света

Что касается постобработки, то я старался свести всю работу за пределами движка к минимуму. Я специально отвел время на то, чтобы темные участки не были слишком темными (из-за этого теряется детализация), а светлые – слишком светлыми. Это делается через изменение значений, отвечающих за освещение (exposure values), а также при помощи настройки Tint/Contrast, которая находится под пунктом Global Post Process.

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

«Обертка»

Этот этап отнимает всего 10% времени, но делает все на 200% лучше. Я просто создал маленькие точки интереса и начал добавлять к ним объекты, частицы и декали. Кроме того, я раздобыл несколько моделей из незаконченных сцен и даже из начальной закладки. Например, геометрия этого газетного киоска, была «отполирована» и снабжена материалами:

picture14

Опять же, никогда не выкидывайте идеи/объекты. Они всегда могут пригодиться в будущем.

Свечение – это просто два эмиттера частиц: обычный «круглый» и горизонтальный (для имитации анаморфных бликов).

picture15

Пример использования декалей:

picture16

Некоторые объекты, использованные в сцене:

picture18

Итак, данный проект научил меня следующему:

  • Никогда не недооценивай того, сколько времени может понадобиться на создание игрового окружения. Начальная закладка получилась слишком амбициозной по отношению ко времени и ресурсам, которые у меня были для создания этой сцены.
  • Никогда не выкидывайте идеи! Некоторые объекты, созданные еще на стадии закладки, впоследствии могут быть доработаны и добавлены в финальную версию.
  • Никогда не пытайтесь найти одно правило, которое подходило бы для создания абсолютно всех ассетов. Если придерживаться определенных размеров, вы можете без труда сочетать вместе уникальные и модульные объекты. То же самое касается плиточных и уникальных текстур – найдите золотую середину, чтобы их можно было использовать вместе, когда это имеет смысл.
  • Смело ставьте работу на паузу, если чувствуете, что зашли в тупик или если возитесь с чем-то слишком долго. Лучше довериться инстинктам, чем пытаться не «тратить время впустую» и закончить работу как можно быстрее.
  • Не будьте динозавром и шагайте в ногу с прогрессом! Сначала я не хотел пользоваться dDo, потому что думал, что все мои текстуры в любом случае будут выглядеть одинаково, но результат себя оправдал. Нужно лишь пользоваться этой штукой с умом.
  • Чтобы создавать хорошие материалы, текстурный художник должен уметь пользоваться разными инструментами. Не прилипайте к чему-то одному, исследуйте все варианты, чтобы найти тот, который лучше подойдет к каждой из возможных ситуаций.
  • Нет такого понятия, как потерянное время или сделанная впустую работа. Даже если результат почти незаметен, каждый раз, когда вы над чем-то работаете, вы постепенно становитесь более умелым и опытным художником. Как правило, это означает работу и над «провалившимися» проектами. Но если вдуматься, то их трудно назвать провалами, потому что мы учимся и на ошибках, и на вещах, что сделаны, как надо. У меня было несколько идей, над которыми я упорно трудился по несколько часов, но так и не довел до воплощения, и это нормально. В итоге это дало мне более широкое понимание того, как работать с игровым окружением, благодаря чему я принимал правильные решения в финале этого проекта.
  • Забавный факт: Я пытался сделать эту сцену в течение года, исследуя несколько идей, придуманных ранее. По сути, это уже третья версия данной идеи, и штука в том, что в финале свое применение нашли (разумеется, не без доработки) множество ассетов, созданных для предыдущих версий.
  • Это немного клише, но отметить все же важно: не бойтесь делать. Сделайте кучу барахла, а показывайте лишь, что стоит того, чтобы его показать (как правило, это лишь небольшой процент из созданного). Это единственный способ найти свой стиль и обрести уверенность в собственных навыках.

thiago-klafke-sampavr-2

thiago-klafke-sampavr-3

thiago-klafke-sampavr-car

thiago-klafke-sampavr-4

Еще одну работу Тьяго Клафке найдете по ссылке: «Храм Уту».

Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить