King, Witch and Dragon. Devlog #2
В прошлом девлоге я показывал 2D концепт-арты главного героя и его способностей для моей "метроидвании наоборот", теперь пришло время посмотреть и оценить, как это всё получилось в 3D. В этот раз будут GIF-ки и в конце небольшой опрос.
Болванка гуманоида
В начале работы я решил сделать универсальную болванку гуманоидного персонажа, на основе которого впоследствие можно было бы делать всех антропоморфных персонажей.
Покопавшить в архивах polycount wiki, я нашёл подходящий референс, а также несколько полезных статей по топологии.
Ещё одним интересным челленджем было освоение Blender'a. Лет 10 назад, когда я начал увлекаться 3D-моделированием, Blender был... ну скажем так, "странным". Потом я надолго забросил увлечение 3D графикой, но с недавним релизом версии 2.8 захотелось снова "пощупать" Blender и вот появился хороший повод.
После пары вечеров тягания вертексов получилась вот такая болванка:
Выглядит не очень впечатляюще, но в качестве болванки вполне сойдет.
Модель ГГ
После этого логичным шагом было создание модели главного героя, на основе той самой болванки. Целью было вписаться в бюджет из 10.000 треугольников (не полигонов/квадов/N-гонов, а именно треугольников).
Как видите, я почти уложился в указанный лимит. Лишние 150 треугольников, в данном случае, погоды не сделают.
Развёртка и текстура
При создании моделей для игр, очень много памяти "съедают" текстуры. Для моделей в ААА-играх вполне могут использоваться несколько текстур размером 2к или 4к (Diffuse map, Normal map, Specular/Glossiness/Roughness map и т.д. и т.п.). Я решил поставить себе цель использовать минимум текстур минимального размера.
Так как персонаж будет занимать не очень много места на экране (примерно 1/8 по высоте), а также в качестве визуального стиля выбран cel-shading, то это сильно облегчает задачу. Во-первых не нужна излишняя детализация, потому что её всё равно никто не увидит на персонаже такого размера. Цел-шейдинг подразумевает "плоский" свет и тени без плавных градиентов, т.е. по сути, это заливка разных элементов разным цветом.
Я также решил полностью отказаться от карт нормалей (Normal map) и карт бликов (Specular map) и добиваться нужного мне результата с помощью самописного шейдера, который вместо текстур использует цвета вершин модели (vertex colors). Об этом шейдере я уже написал подробную статью
Чтобы совсем не потерять детализацию при подобном подходе, я использовал приём показаный на GDC техническим художником, работавшим над серией Guilty Gear. Он делает текстуру и развертку особым образом, чтобы получать очень чёткие неразмытые чёрные линии на модели, которые используются для имитации швов, затенённых зон и просто "внутреннего контура":
И последний момент, который я учитывал на этом этапе, это то, что модель главного героя, модель оружия и модели для всех его способностей (крылья летучей мыши, паучьи лапы, щупальце и змея) должны использовать один и тот же материал, чтобы отрисовываться в один проход (draw call). По факту отрисовывается в 3 прохода: основная модель, контур и отбрасывание теней, но это уже особенности шейдера.
По факту я рисовал не текстуру, а атлас для всех моделей. В итоге у меня получилась
1 текстура, размером 8х16 пикселей и объёмом 384 байта
На текстуре можно увидеть несколько "зон". Левый столбец - это "палитра" самого персонажа. В цетре 4 вертикальных группы пикселей - "палитры" способностей". В правом столбце "палитра" оружия. Столбцы разделены черными пикселями, чтобы иметь возможность делать развертку с черными линиями, как показано на GIF выше.
Все модели, которые будут показаны ниже используют один и тот же материал с одной лишь этой текстурой.
Главный герой
Оружие - Коготь
Крылья летучей мыши (двойной прыжок)
Паучьи лапы (карабканье по стенам и потолку)
Щупальце (grappling hook)
Змея (бросок)
Что дальше?
Теперь можно сказать, что этап моделирования и текстурирования закончен. Следующим большим шагом будет риггинг, скининг и анимация всего этого добра, чтобы посмотреть на него в действии. Да-да, геймплейные видео и GIF-ки уже не за горами :)
И ещё один момент...
Я думаю, все понимают, что я пишу всё это для того, чтобы наращивать свою аудиторию и собирать вокруг проекта заинтересованных и лояльных людей. Я хотел бы сделать этот процесс более приятным и продуктивным и для меня и для вас. По этому я хочу спросить
Я уверен, это не только мне будет интересно и полезно, но и другим инди-разработчикам, которые хотят продвигать свои проекты в массы.
Спасибо за внимание!