Вертексколор | Gamedev Блог


Kanal geosi va tili: Butun dunyo, Ruscha


Инди блог, делюсь полезностями о разработке игр, прогрессом по проектам. Unity, Blender, Substance.
t.me/grigoriy_ign
https://www.artstation.com/greg_ign

Связанные каналы

Kanal geosi va tili
Butun dunyo, Ruscha
Statistika
Postlar filtri


Значительно переработал механику с алхимией, пилил еще разные фичи. Разделил логику инструментов, ингредиентов и самого процесса крафта (Humble Object Pattern). Теперь для алхимической игры тоже есть тесты: добавление ингредиента в игру, использование с инструментом, добавление в котел и крафт зелья. Нужно еще проверять сохраняется ли прогресс изучения (ингредиент ⇔ инструмент), сохраняется ли открытый рецепт и т.д, но это уже легко будет теперь.


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
🎁 Алхимия, переделал немного реторту, теперь она помещается как нужно и при ее использовании ингредиент перерабатывается в колбочку, которую потом можно вылить в котел.

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


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
🎮 Контроллер уже в игре, часть первая. Пока главное меню, настройки, заодно поправляю размер шрифта (x-height) чтоб был 12px на 1280x800. Управление персонажем (left stick), пока перемещение и выбор цели. Выбор цели учитывает расстояние до цели и угол направления игрока. Думаю еще добавлю угол направления стика, а потом это все нужно будет долго настраивать, чтобы было удобно: ближний бой, дальний бой, скиллы перса, приоритет целей. В состоянии боя игроку очевидно не до добычи ресурсов, у целей-противников приоритет должен быть выше.




Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Добавил клиентов на ферме, приходят покупать зелья, которые игрок разместил в лавке. Рандомизация внешнего вида готова, нужно будет еще продумать прогресс (как будет формироваться список клиентов, что они будут покупать, как это будет влиять на репутацию алхимика).

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

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

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


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Чуть не забыл поделиться, попробовал сбилдить проект в 6.7.2 alpha, CoreCLR. Немного тут и там отвалилось, ассеты через Addressables (свои и локализация) не грузятся, где-то пропали элементы UI, но в целом ок. И даже xNode не пришлось много переделывать, там просто EntityID вместо InstanceID в паре мест. (а может вообще перенести редактор диалогов на graph toolkit?)

Буду игру переносить на 6.7, 7+ в дальнейшем, учитывая что:

• Не придется все переделывать
• Оставят uGUI (ох как же мне не хочется переделывать весь интерфейс на UI тулкит)
• 6.7+ обновления URP (но кэширования теней в роадмапе так и не увидел…)

В своем “движке” на opengl уже реализовал рендер point light теней в атлас, навскидку думаю до кэширования там совсем недалеко, надо бы найти время и допилить. В теории можно было бы и в URP повторить подобное, но как потом это все тестить, оно ведь может на каком-то железе неправильно работать, буду думать. Может до релиза игры и в URP добавят, может ассет какой возьму.


Всегда был далек от геймпадов и консолей. Регулярно играл в консоль в последний раз в 2000ом году (PS1, сега, денди). После этого ПК гейминг, клава и мышь стали для меня единственной опцией. Вчера задумался о добавлении поддержки контроллера в игру. Под рукой был Grim Dawn и мобилка.

Настроил виртуальный геймпад через PC Remote от Monect под андроид. Что меня удивило: даже с таким неудобным сетапом диаблоид играбелен, перемещение по меню, скиллы, файты и выбор целей ок. Поизучал еще тему подробнее, попробовал по-быстрому у себя в игре добавить перемещение камеры с геймпада (Input System), все ок.

Итого: буду постепенно добавлять поддержку геймпада, нужно еще прикупить какой-нибудь физический девайс потом. Затем пофиксить размеры шрифтов в интерфейсе. Также у меня сейчас проект на URP и системные требования низкие, все это вместе выглядит как… ✅ Steam Deck Verified!


Если предыдущий пост не отображается – это в ТГ наконец завезли возможность оформлять статьи. 🎉
надо обновиться, выглядит вот так:




Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Отображение и потребление ресурсов при постройке и крафте готово. Требования к рецепту могут состоять из ресурсов любого качества, минимально допустимого качества и точного совпадения качества.

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

Вообще, инвентарь в котором у предметов есть качество, отдельные ячейки с лимитом стака, возможность их разделять и соединять - это интересная задачка. Когда делал инвентарь, где просто список предметов (предмет - количество) и ограничение по весу, было проще. Но зато такой инвентарь сам ощущается как механика. Помню как затягивало в Titan Quest собирать ресурсы и стакать их. Весь день бы собирал и нажимал эту кнопку с приятным звуком и эффектами (neuron activation 🐒). Надо у себя тоже такое сделать, чтобы куча разных стаков собиралась в полные.

Добавлял еще всякие улучшения, зелья теперь тоже можно перетаскивать на хотбар и использовать, отображается количество. Предметы в инвентаре теперь можно сортировать по времени добавления в инвентарь. #unity #gamedev #wip


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Добавил взаимодействие с постройками на локе с фермой. У каждой постройки может быть свой тип, от которого зависит реализация формирования предметов и рецептов для крафта. Для алхимического котла прогружаются исследованные игроком рецепты нужного зелья, а для других построек - статический список из scriptable object этой постройки.

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


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Ранняя версия интерфейса для мини-игры с алхимией, пока что чтоб работало, графику и анимации позже #unity #gamedev #wip


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

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


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Немного автоматизировал нарезку ингредиентов с автоматериалом и авторазверткой разреза через геоноды в Blender.

В repeat zone используется плейн два раза на итерацию, меняется направление, по нему boolean difference, место разреза выбирается по маске из булеана, дальше нода uv unwrap и set material index. Для разреза вообще думаю можно сделать атлас разных внутренностей разных ингредиентов, либо буду в каждой текстуре ингредиента выделять фиксировано место для разреза и туда размещать остров на геонодах. В этой же repeat zone увеличивается оффсет плейна для каждой итерации.

Еще нужно немного рандомизации наклона разрезов добавить. Сама анимация не нужна, просто для демки.


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Успел к скриншотной субботе настроить первый ингредиент в игре, пока топорно и деревянно, но в общем задумка такая, ее и буду дорабатывать. При нарезке убирается isKinematic у каждой части ингредиента и дается небольшой импульс от центра, при перетаскивании гравитация отключается и добавляется постоянная сила, которая притягивает ингредиенты к центру. #unity #gamedev #wip


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Нарезка ингредиентов для алхимического стола. Не думаю что нужно пилить нарезку меша на лету в игре, поэтому буду подготавливать в блендере. (Я даже скачал снова fruit ninja и не заметил чтоб там разрез шел по месту проведения пальцем, хотя по памяти оно ощущалось очень естественно) Единственное только мб получится автоматизировать процесс на геонодах. Сейчас это boolean + data transfer модификатор для переноса нормалей с цельного меша, чтобы скрыть следы. В data transfer -> face corner data, custom normals. В маске та группа, которая отвечает за вертексы внутри, на месте разреза, так как у них хочу сохранить flat shading.


Год назад пробовал перекинуть проект на URP, не понравилось, а вот сейчас уже вроде как лучше стало. Но вообще это решение связано с тем, что юнити сфокусируются на одном пайплайне. Если бы выпускал игру сейчас, то остался бы на HDRP, а так думаю можно и urp, тем более что у меня стилизация. Из фич сейчас не хватает блендинга каскадов теней и кэширования (это про 6.3 LTS). Из минусов только что мне придется получается со временем обновляться на новые версии, куда подвезут апдейты URP, но надеюсь ничего не сломается.

Когда попробовал сделать чистый билд мягко говоря был удивлен, что он занял вместо 30 минут 4 часа из-за компиляции шейдеров. Да, у меня пожилой i5, но это не дело все равно. Немного повозился и снизил до 20 минут.

• Отключил ненужные мне фичи в проекте

• Объединил дубликаты шейдеров по смыслу, а то наплодил всяких лишних на шейдерграфе типа (Shallow Water, Ocean Water) теперь это общий Water, для Foliage также, но еще не везде

• Убрал GPU Instancing на тех материалах, где он не нужен

• Убрал некоторые кейворды в шейдерах, у меня практически на всех ассетах есть и карта нормалей, и остальные карты упакованные, мне редко нужен вариант шейдера без этого, оставлю только кейворд для emission/tint map

• Вручную указал lightmap, fog modes в Settings -> Graphics -> Shader Stripping

• В Keyword Declaration Overrides еще дополнительно временно переключил _ FOG_LINEAR FOG_EXP FOG_EXP2 на dynamic_branch, просто насчет тумана еще буду думать, может у меня он вообще будет свой

• Убрал include terrain shaders, так как у меня все равно свой шейдер террейна (но юнити почему-то все равно их включает в билд, либо у меня где-то завалялся стандартный материал, либо оно так задумано)

• Включил strict shader variant matching чтобы в билде видеть ошибки и заглушку вместо шейдера, на случай если я вырежу что-то нужное

• Для промежуточных билдов можно вообще некоторые фичи еще отключать в теории, хотя уже и так норм

• Ну и главное, что дало ощутимый прирост: написал скрипт для ручного стриппинга ненужных вариантов (https://docs.unity3d.com/6000.3/Documentation/ScriptReference/Build.IPreprocessShaders.OnProcessShader.html)

Например, буду использовать либо каскадные тени, либо 1 каскад, соответственно мне нужен только один вариант. Некоторые материалы никогда не будут юзать лайтмапы (типа одежды игрока/персонажей). Тут же удаление ненужных вариантов для стандартного террейна. Плюс еще оставил только те варианты, когда включен dir light и тени от него, поскольку у меня во всех локациях это именно так, но это пока временно и еще подумаю, может перебор (пасмурная погода и данжи какие-нибудь)

Полезное из доков по теме: https://docs.unity3d.com/6000.3/Documentation/Manual/urp/shader-stripping-landing.html

Пока так, в билде вроде все ок, но буду еще дорабатывать все это.

#unity #gamedev #wip


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

Вторая проблема – сбор ингредиентов на различных локациях. Исследовать локацию в первый или второй раз интересно, а дальше очевидно это превращается в надоедающую беготню. Тут пока идея такая: NPC/Фракции с побочными квестами, которые при повышении репутации обеспечивают стабильный поток выбранных ингредиентов. Это заодно и дает дополнительный стимул для выполнения побочных квестов.

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

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


На той неделе завел еще твиттер для игры, буду там тоже постить всякое и продвигать
https://x.com/GregoryIGamedev

Путь предстоит непростой, основной акк по графике/разработке продвигал долго. С 8 фолловеров до почти 700 дошел за несколько лет. Кому интересно вот https://x.com/GrigoriyIgn там тоже иногда пощу всякое по блендеру, сабстенсам, юнити


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

20 ta oxirgi post ko‘rsatilgan.