King, Witch and Dragon. DevLog #12

Давно не было апдейтов и тому было несколько причин.

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

Во-вторых, после завершения работы над логикой боя, я начал прорабатывать игровой мир - сеттинги, биомы, а также примерно прикидывать объём работы по созданию окружения. И работы оказалось много... ОЧЕНЬ много.

В-третьих, я изучал новый софт. Но обо всём по порядку.

Сеттинг игрового мира

В одном из предыдущих девлогов я уже касался вопроса структуры мира игры.

Весь мир можно разделить на 3 основных секции:

  • Вступление. Тут игрок проходит туториал, учится основным игровым механикам и приобретает 4 специальных способности.
  • Исследование мира. Эта секция состоит из хаба и 4 больших локаций-биомов, в конце каждой из которых игрока ждёт босс
  • Заключительный этап в конце которого игрока ждёт финальный босс-файт с главным злодеем.

Я решил для начала сфокусироваться на фазе исследования и проработать 4 локации. Для каждой локации нужно было сделать следующее:

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

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

Визуальный сеттинг и референсы

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

Я решил не тратить время на создание собственных концепт артов и сделать упор на поиск подходящих референсов, с последующей их адаптацией. Потратив пару вечеров в Pinterest я нашёл достаточное количество материала, чтобы начать работу.

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

Парящие острова

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

Небольшая подборка рефов
Небольшая подборка рефов

Подземные руины

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

King, Witch and Dragon. DevLog #12

Царство грибов

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

King, Witch and Dragon. DevLog #12

Механическая долина

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

King, Witch and Dragon. DevLog #12

Геймплейные механики

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

Синие - для паучьих лап; Зеленые - для змеи; Красные - для щупальца; Оражевые - для крыльев.
Синие - для паучьих лап; Зеленые - для змеи; Красные - для щупальца; Оражевые - для крыльев.

Пайплайн работы над ассетами

Собирать картинки из интернета это, конечно, здорово, но рано или поздно придётся и ассеты для игры делать.

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

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

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

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

King, Witch and Dragon. DevLog #12

Моё знакомство с Houdini

Я сам давно на него поглядывал, но пощупать всё никак не доходили руки. Да и в интернетах многие пугают, что "Гудини не для всех", "Гудини странный" и т.д. Но я всё равно решил уделить немного времени и чуть более глубоко изучить предмет.

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

Процедурная геренация - это классно, а Houdini выводит этот процесс на совершенно иной уровень. Но мысль о том, что ассеты надо будет генерить в Houdini, а потом переносить их в Unity через условный FBX, не давала мне покоя. По сути получалось то же самое, что моделить в Blender'e, а потом экспортировать в движок. Но потом я узнал про Houdini Digital Assets и это перевернуло всё с ног на голову...

Houdini Digital Assets

Работая в гудини вы создаёту структуру нод, которая по заданному алгоритму создаёт геометрию. Houdini Digital Asset (или коротко HDA) является эдаким контейнером, который позволяет упаковать ваш алгоритм, перенести его в игровой движок, и создавать ассеты прямо в игровом движке. Для этого в движке необходимо установить плагин Houdini Engine.

Вот, например, видео с официального сайта SideFX (разработчики Houdini), в котором показано, как в HDA можно скормить простые примитивы Unity, а на выходе получить стилизованную полуразрушенную колонну. То есть, можно генерить готовые ассеты на основе примитивов, использующихся для блокинга уровня.

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

Первые результаты

Потратив пару недель на чтение мануалов и просмотр туториалов, я начал чувствовать уверенность в своих силах и решил попробовать сделать что-нибудь не по туториалам, а что-то реально полезное для проекта. Свой первый настоящий HDA. Начал я с того, что проапгрейдил лицензию до Indie и установил Houdini Engine (он требует лицензии и идёт в комплекте с Houdini Indie).

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

Что вы знаете о процедурных грибах? Далее я вам расскажу и покажу, что о них знаю я.

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

Спустя пару вечеров я закинул готовый HDA в Unity и на его основе за несколько минут создал вот такие ассеты:

Также я написал специальный шейдер и создал на его основе материал, который прописан внутри HDA и который автоматически назначается при создании нового объекта. Шейдер не содержит текстур, весь цвет задаётся с помощью Vertex color'a. Помимо этого можно гибко настраивать затенение, контурный свет (rim light) и свечение разных областей.

Помимо фентезийных грибов можно создавать и более реалистичные вариации:

King, Witch and Dragon. DevLog #12

А также грибы причудливой формы:

King, Witch and Dragon. DevLog #12

Сам процесс создания нового объекта выглядит так:

Буквально за 3-4 минуты создаётся новый ассет. Инструмент достаточно гибкий и позволяет настраивать следующие параметры:

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

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

Что дальше?

Пока что я крайне доволен результатом. Я планирую более глубоко изучить возможности Houdini и конкретно возможности HDA. Параллельно я буду нарабатывать библиотеку инструментов для создания процедрных ассетов внутри Unity. По мере появления новых интересных инструментов буду делиться ими в девлоге.

Чтобы поддержать разработку игры, добавляйте King, Witch and Dragon в вишлист на Steam, это важно не только для моей мотивации, но и для алгоритмов Steam. Чтобы принять участие в обсуждении, вступайте в группу ВК, а также подписывайтесь на меня в Twitter и Instagram.

Спасибо за внимание!

8484
34 комментария

Ку.

Полагаю, данные параметры можно крутить скриптом в рантайме, чтобы генерить кучу разных грибов на лету? Или гриб придется "запекать" в эдит тайме?

4

В рантайме, к сожалению, генерить нельзя. Можно запекать в gameobject или сразу в префаб. При этом меш кешируется и сохраняется в папке Assets.

1

Получилось очень красиво и фентезийно.

3

люблю грибы
как еду и как декор в играх)

3

Поражаюсь с вашей мотивации! 

2

Комментарий недоступен

2

🍄 Ура, новая часть! 🍄
Редактор грибов — это даже немного забавно :-)

2