Как я решил делать рогалик на Unity. Часть 3.1
Всем привет!!
Сегодня расскажу о том, как я делал персонажа в своем рогалике.
Предыдущие части:
- Как я решил делать рогалик на Unity
- Как я решил делать рогалик на Unity. Часть 2
Итак, начать надо с постановки задачи. Чего мы ждём от персонажа в рогалике?
Разумеется, чтобы персонаж мог быть разным: прически, цвет кожи и физическая форма.
А ещё было бы не плохо, если была бы расчлененка. Кто в здравом уме делает игры без расчленёнки?
Начнем с самого нуля. Скачаем из интернетов первую попавшуюся картинку с пропорциями человека, вставим в 3д редактор и начнем скульптинг. Если Вы играли когда-нибудь в игры с терраформингом (где можно добавлять холмы и реки), то знайте что скульптинг выглядит практически также, только с дополнительными удобствами.
Это достаточно медитативный процесс. Начинается всё с одного шарика, из которого постепенно выдавливаем конечности и придаем им нужные формы. Повторяем до тех пор, пока результат нас не удовлетворит.
У меня получился вот такой кожаный ублюдок. Так как он будет первым живым объектом в игре, то я назвал его Адамом.
Однако, модель сейчас имеет слишком много полигонов и её нельзя так вставлять в игру. Надо провести ретопологию. Поэтому рисуем руками низкополигональную модель поверх высокополигональной и получаем вот такой результат:
Вот это уже больше годится для игры. Также, на низкополигональной модели можно заметить "разметку" того как будет происходить расчленение (и смена одежды) и кости скелета.
Теперь сделаем персонажу возможность иметь различную физическую форму. Я реализовал это с помощью BlendShapes - для каждой "формы" (например, толстоты) мы модифицируем полигональную сетку (меняя положение полигонов, но не изменяя структуру). Это можно делать как в ручную перетаскивая отдельные полигоны, так и автоматизированно, например, тем же скульптингом. На деле это выглядит как-то так:
Повторяем этот фокус на лице, чтобы получить различные физиономии. У меня вышло около 30 разных параметров (ширина лица, уши, нос, скулы и т.д.).
Теперь наш кожаный ублюдок умеет менять формы, но всё ещё не имеет никакой текстуры. Поэтому создадим её. Мы можем создать простые текстурки с помощью графического редактора, основанного на графах. На входе у нас есть генератор шума, который мы с помощью математических преобразований превращаем во что-то похожее на пупырки кожи.
Дополнительно создаем помимо кожи текстурку волос на теле, открытого "мяса" для расчленения.
Теперь останется только объединить все это дело. Для этого можно использовать специальный графический редактор, позволяющий рисовать текстурами по модели, производить заливку и ещё много всего удобного (например, запечь карту нормалей из ранее созданной высокополигональной модели).
Теперь у нас готовы модель и текстура. Осталось только сделать шейдер *Гарольд.джепег*
Unity в последних версиях значительно упростила это своим "шейдер графом". Вот, для примера, блок смены цвета кожи и ещё кое-чего.
Шейдер граф, разумеется, будет не так эффективен по производительности как писать шейдеры на HLSL, и некоторые вещи на нём попросту не сделать, но он ЗНАЧИТЕЛЬНО облегчает работу. А так как у меня инди игра, а не ААА-проект с хай-энд графикой, то смело его использую везде где можно.
Вставляем все это дело в игру и получаем следующее:
А вот так выглядят оторванные части тела:
Вблизи выглядит крипово, но игровая камера никогда так близко и не будет приближаться. Персонаж будет примерно на таком расстоянии:
На этом я закончу первую часть про персонажа. Там есть ещё вторая часть про то как я анимировал персонажа и прочее, но так как работа ещё в процессе, то будет в следующей части.
Лига Разработчиков Видеоигр
7.4K пост22.5K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"