Инди майонез: создание моделей для Buildest

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

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

На данный момент в игре присутствует только первая эпоха - древний Египет. Однако совсем недавно я закончил работу над ещё одной - античная Греция и Рим. В общем, для меня эта статья является попыткой подытожить и закрепить пайплайн по созданию архитектурных элементов.

Архитектурные стили и эпохи

Источник: https://youtu.be/n4dZduYMD9E

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

Несмотря на все это разнообразие, архитектура на протяжении тысячелетий в своей сути оставалась одинаковой. Практически всегда она вертикальна, прямоугольна и сделана в пропорциях человека. Здания это часто коробка с дверями, окнами и крышей. Однако то самое архитектурное разнообразие начинается в деталях. Мы стараемся проанализировать каждый из 7 архитектурных стилей и выделить в каждом из них какой-то визуальный аспект, который будет характеризовать эпоху. Древний Египет - примитивность форм и тёплая палитра местных строительных материалов, античная Греция и Рим - арки и классическая ордерная система, древний Китай - взаимодействие архитектуры и природы, барокко - богатство отделочных орнаментов, и так далее. Для нас важно познакомить игрока с этой историей без нотаций и лекций, а позволить игре самой рассказать о себе.

Коробка с дверями и окнами

Определившись с отличительными особенностями каждой эпохи стоит вернуться к основам - к тому, что объединяет всех их.
Для того, чтобы игра случилась, приходится пренебрегать некоторыми аспектами в пользу простоты и динамичности игры. В итоге длительных обсуждений мы пришли к определенной строительной схеме, в рамках которой будет происходить геймплей. Все здания - это коробки 3 на 3 блока, можно бесконечно достраивать этажи вверх, но нельзя достраивать стены вбок, только 3 на 3. Такая жесткая условность сначала сильно нас напугала, однако позже она стала холстом для экспериментов.

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

Пол, стены и крыша

По прошествии времени довольно забавно осознавать, что легче всего объяснить строительную систему в Buildest при помощи другой системы, а именно технологии индустриального строительства 20 века. Да-да, все верно, это наши родные панельные здания!

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

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

Референсы и компромиссы

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

Что характернее для архитектуры древнего Египта - настенная резьба или скульптура? Как изобразить Парфенон в формате коробки 3 на 3? Какой материал в большей степени отражает китайскую архитектуру? Все это вопросы, на которые невероятно интересно находить ответы!

Пайлайн создания ассетов

Когда общее представление об эпохе сложено можно приступать к созданию самих моделей. Пайплайн выглядит примерно так:

  • Скетч для 6 уровней
  • Моделинг элементов
  • Отрисовка текстур
  • Развертка моделей и текстуринг
  • Создание заготовок под префабы
  • Интеграция в Unity

Скетчи для 6 уровней

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

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

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

Моделинг элементов

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

Отрисовка текстур

Процесс рисования - это безумно творческий и затягивающий процесс. Через рисунок того или иного материала можно передать огромное количество информации об объекте. И я сейчас говорю только о цвете, не упоминая все остальные технические виды текстуры такие как бамп, нормали, рафнес и прочие. Отличный пример этому являются игры 90х, 2000х годов. Их дотошный подход к созданию супервыразительных рисунков просто поражает.

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

Развертка моделей и текстуринг

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

Развертка далеко не идеальная, но со своей задачей справляется. Я стараюсь по максимуму объединять поверхности, однако самые ключевые и характеризующие объекты высегда честно развёрнуты. Это необходимо для правильного запекания AO и прочих эффектов.

Создание заготовок под префабы

Для того, чтобы наша строительная система проглотила архитектурный элемент, он должен быть представлен в нескольких своих состояниях:

  • Финальный вид
  • Расколотый на фрагменты
  • В каждом из 10 состояний строительства

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

Интеграция в Unity

Ну вот и финишная прямая, осталось совсем ничего. Импортируем fbx и добавляем его на сцену. Вешаем на него специально для этого созданный компонент, и вуаля! Префаб готов! Осталось назначить ему правильные свойства и можно уже использовать в игре.

Ну вот как-то так. Спасибо, что дочитали до конца! На очереди ещё очень много работы, постараюсь держать вас в курсе!

110110
13 комментариев

Еще можно вместо использования 10 вариантов здания при строительстве использовать шейдер отрезающий геометрию. Мне кажется это более оптимизированное решение будет учитывая как выглядят этапы.

6

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

1

Обалденно

4

Замтрочился. Сколько времени на одну стенку уходило и сколько их всего в игре. 

2

Сложно сказать сколько времени уходило на одну стенку, но общее число запланированных архитектурных элементов порядка 200