Vitta Lucis: дневник разработки

Хей, меня зовут Сергей Исаев и я продолжаю заниматься разработкой своей игры Vitta Lucis - пытаюсь смешать геймплей из Hades с игрой отрядом из Final Fantasy и гачей без доната из Genshin Impact.

Изначально игра планировалась в 2.5D формате, но решил полностью перейти на 3D. Когда начал натягивать старые покадровые анимации, то начались проблемы с таймингами кадров - ставил кентам на телефон свой проект протестировать и слышал первый комментарий: "А персонаж будет быстрее потом атаковать?" - хотя я уже ни раз ускорял моменты пролёта меча.

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

Vitta Lucis: дневник разработки

Есть другая задача - сделать сцены для скриншотов, так как это единственное, что осталось для заполнения страницы в Steam и отправки на проверку.

Vitta Lucis: дневник разработки

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

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

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

Vitta Lucis: дневник разработки

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

Vitta Lucis: дневник разработки

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

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

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

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

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

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

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

Когда буду потом доводить меню настроек до ума, чтобы не забыть про постобработку, решил пока что захардкодить определение платформы, на которой запущена игра. Если на мобилках, то отключаю всякие мягкие тени, SSAO, FXAA, да и вообще масштаб рендера снижаю - благо апскейл FSR вытягивает не плохо картинку. Собственно, первый скриншот с компа, второй с тела.

Vitta Lucis: дневник разработки

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

Vitta Lucis: дневник разработки

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

Vitta Lucis: дневник разработки

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

Vitta Lucis: дневник разработки

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

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

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

По правильному - нужно определять края по глубине и нормалям. Но тут нужен большой опыт работы с HSLS для написания кода шейдера, так как полной реализации через Shader Graph мне не попадалось. Перепробовал много разных способов - то получается сделать обводку, но отваливается освещение, или вообще работает только в редакторе - но при запуске игры уже нет. А порой начинает жёстко нагружать систему, так как нужно проверять каждый пиксель через оператор Собеля, который в неопытных руках кушает всё что возможно от производительности.

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

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

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

Так как у паладина в правой руке, по сути, только щит, то базовой атакой будет наносить урон щитом! Основной замысел его - свой отряд лечить.

По итогу в тот же вечер немного попозировал, жена на видео сняла меня - я теперь тоже актёр захвата, как и она... ну и закончил с анимациями. Теперь осталось настроить всякие тайминги на способностях паладина. Нужно вообще будет отображать зоны каста, вроде это через декали делают, как и следы крови... короче план на дальнейшее изучение уже есть. Кому интересно следить за проектом, то в первую очередь я пишу обо всём в Telegram, и затем дублирую в ВК - туда же я заливаю большие видео, и дублирую их на YouTube - а ещё я туда гружу короткие вертикалки, которые дублирую в TikTok. Да и вообще все эти ссылки есть тут на сайте: https://isaev.space - спасибо, что дочитали до сюда, да и вообще, что дотерпели до конца!

1515
11
Начать дискуссию