Media is too big
VIEW IN TELEGRAM
Когда у тебя все нпц интерактивные - конечно же это усложняет производство
На Этот квест про предложение потратил пол дня ( тут упрощенное прохождение ), ведь нпц не просто должны проиграть анимацию, а засинхронизировать действия , позицию , менять свое поведение и отношение к игроку, да и просто не конфликтовать с другими базовыми их надстройками ,ну и в том числе желательно не сбивать игрока пока идут по своим делам
На Этот квест про предложение потратил пол дня ( тут упрощенное прохождение ), ведь нпц не просто должны проиграть анимацию, а засинхронизировать действия , позицию , менять свое поведение и отношение к игроку, да и просто не конфликтовать с другими базовыми их надстройками ,ну и в том числе желательно не сбивать игрока пока идут по своим делам
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Мелочи в деталях
Для кольца с алмазом сделал такой каустик шейдер ( конечно же не без тутора ) , но помимо этого я сверху добавил свой эффект блика на него
Кто то скажет , что слишком большие заморочки для одного мелкого предмета в игре, но как по мне из таких проработок и состоит весь шарм в играх + можно эксперементировать с этим эффектом на окружении
Для кольца с алмазом сделал такой каустик шейдер ( конечно же не без тутора ) , но помимо этого я сверху добавил свой эффект блика на него
Кто то скажет , что слишком большие заморочки для одного мелкого предмета в игре, но как по мне из таких проработок и состоит весь шарм в играх + можно эксперементировать с этим эффектом на окружении
This media is not supported in your browser
VIEW IN TELEGRAM
Немного про мувмент NPC
У каждого NPC есть несколько машин состояний, но основные две:
-глобальное поведение
-состояние движения
Глобальное состояние определяет состояние движения - как NPC должен двигаться: отходить от игрока, гнаться за целью, следовать маршруту и т.д.
Под каждое поведение выбирается своя стратегия ходьбы.
Например, NPC может находиться в состоянии «фотографировать игрока», но если игрок едет прямо в него — NPC будет уворачиваться, а не стоять на месте.
Дополнительно есть два подсостояния:
-состояние этапа пути ( идет или дошел )
-состояние траектории пути ( идет к точке или по траектории )
Из-за этого, если NPC уже идёт к точке и замечает игрока, он не останавливается, а пытается аккуратно обойти его.
В зависимости от ситуации (игрок стоит, движется к точке или идёт по траектории) применяются разные стратегии мувмента внутри глобальных состояний
У каждого NPC есть несколько машин состояний, но основные две:
-глобальное поведение
-состояние движения
Глобальное состояние определяет состояние движения - как NPC должен двигаться: отходить от игрока, гнаться за целью, следовать маршруту и т.д.
Под каждое поведение выбирается своя стратегия ходьбы.
Например, NPC может находиться в состоянии «фотографировать игрока», но если игрок едет прямо в него — NPC будет уворачиваться, а не стоять на месте.
Дополнительно есть два подсостояния:
-состояние этапа пути ( идет или дошел )
-состояние траектории пути ( идет к точке или по траектории )
Из-за этого, если NPC уже идёт к точке и замечает игрока, он не останавливается, а пытается аккуратно обойти его.
В зависимости от ситуации (игрок стоит, движется к точке или идёт по траектории) применяются разные стратегии мувмента внутри глобальных состояний
🔥3
Я победил траву!
Одна из проблем с такой растительностью в том, что мелкие предметы теряются в ней.
я подумал что было бы неплохо , если предметы будут просвечивать сквозь траву. Но оказалось, что эта фича не такая уж простая.
Сначала я думал, что достаточно просто отключить у травы запись глубины. И вроде бы работало, но трава стала очень дорогой для рендера, поэтому этот вариант сразу отпал.
В итоге я начал разбираться со stencil . Долго сидел и не понимал почему ничерта не работает , но по итогу все вышло
Одна из проблем с такой растительностью в том, что мелкие предметы теряются в ней.
я подумал что было бы неплохо , если предметы будут просвечивать сквозь траву. Но оказалось, что эта фича не такая уж простая.
Сначала я думал, что достаточно просто отключить у травы запись глубины. И вроде бы работало, но трава стала очень дорогой для рендера, поэтому этот вариант сразу отпал.
В итоге я начал разбираться со stencil . Долго сидел и не понимал почему ничерта не работает , но по итогу все вышло
Media is too big
VIEW IN TELEGRAM
Наконец-то выпустил Sentiel - небольшой WebGL-экшон, сделанный в коллаборации с HTC VIVERSE 💫
В итоге игра весит около 50 МБ, что, по-моему, вполне неплохо с учётом всех визуальных ассетов
👉 Попробовать можно тут:
https://worlds.viverse.com/Y6sht8h
Также, если хотите попробовать сделать свою игру, можно подать заявку в их Creator Program:
https://create.viverse.com/creator-program
В итоге игра весит около 50 МБ, что, по-моему, вполне неплохо с учётом всех визуальных ассетов
👉 Попробовать можно тут:
https://worlds.viverse.com/Y6sht8h
Также, если хотите попробовать сделать свою игру, можно подать заявку в их Creator Program:
https://create.viverse.com/creator-program
Сделал пошаговый разбор как я создаю окружение в юнити для Tiny Delivery , какие инструменты юзаю , и каких принципов придерживаюсь 🌿
Надеюсь эта статья поможет вам в создании ваших миров!
И с наступающим новым годом! ✨
https://www.notion.so/Unity-2da3c8cbe8fa804d8003e1442153d774
Англ версия ( открывается только с vpn + медиум сейчас подлагивает если что)
https://medium.com/@sinitsyndev/step-by-step-environment-creation-breakdown-in-unity-4073f1a73125
Надеюсь эта статья поможет вам в создании ваших миров!
И с наступающим новым годом! ✨
https://www.notion.so/Unity-2da3c8cbe8fa804d8003e1442153d774
Англ версия ( открывается только с vpn + медиум сейчас подлагивает если что)
https://medium.com/@sinitsyndev/step-by-step-environment-creation-breakdown-in-unity-4073f1a73125
🔥3⚡1👍1
Media is too big
VIEW IN TELEGRAM
Доработал пса компаньена , он теперь лает , когда игрок бибикает
Эта механика нужна что бы распугивать коров , но возможно потом добавлю еще варианты использования
Эта механика нужна что бы распугивать коров , но возможно потом добавлю еще варианты использования
❤2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Я переизобрел рыбалку 🤣госпади как же я ору с конечного результата
😁4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец то начал работу над кошками! Уже есть пару идей и фич с ними
Но а если серьезно- добавлении кошки заняло 10 минут , точней не так , добавил я ее за минуту а остальное время просто анимации заменял/ подбирал
Оч сильно доволен своей архитектурой нпц, что в общий шаблон вставить можно что угодно, только анимации подобрать придется, а дальше только дополнять уникальными поведениями
Но а если серьезно- добавлении кошки заняло 10 минут , точней не так , добавил я ее за минуту а остальное время просто анимации заменял/ подбирал
Оч сильно доволен своей архитектурой нпц, что в общий шаблон вставить можно что угодно, только анимации подобрать придется, а дальше только дополнять уникальными поведениями
🔥4❤1
Media is too big
VIEW IN TELEGRAM
Продолжаю работу над кошаками, и первый этап готов — теперь пушистики могут запрыгивать на препятствия, когда пугаются. Причём препятствия могут быть многоступенчатыми: после прыжка они замирают наверху и начинают наблюдать за тобой.
Препятствия могут быть любыми по высоте и расстоянию — скорость и высота прыжка рассчитываются динамически по заданным кривым. Конечно, можно было бы сделать полностью процедурные точки, но по геймдизайну мне нужен определённый пул мест, куда они могут запрыгивать, так как при приземлении кошки смогут триггерить ивенты — например, скидывать предметы.
Осталось сделать спрыгивание обратно, если игрок уехал
Препятствия могут быть любыми по высоте и расстоянию — скорость и высота прыжка рассчитываются динамически по заданным кривым. Конечно, можно было бы сделать полностью процедурные точки, но по геймдизайну мне нужен определённый пул мест, куда они могут запрыгивать, так как при приземлении кошки смогут триггерить ивенты — например, скидывать предметы.
Осталось сделать спрыгивание обратно, если игрок уехал
This media is not supported in your browser
VIEW IN TELEGRAM
Интерактивное отступление кота почти готово!
Кот при гудке выбирает ближайшую точку для запрыгивания , вдобавок учитывается зона, из которой он может прыгнуть . Если игрок рядом-он смотрит на игрока и спрыгивает только когда игрок отьехал.
Осталось сделать логику, если зон вообще рядом нету , может что бы удирал к какой нить зоне, или просто на месте подпрыгивал.
Анимация , высота и скорость определяются кривыми автоматически , по этому добавление точек для запрыгивания - дело пяти секунд
Кот при гудке выбирает ближайшую точку для запрыгивания , вдобавок учитывается зона, из которой он может прыгнуть . Если игрок рядом-он смотрит на игрока и спрыгивает только когда игрок отьехал.
Осталось сделать логику, если зон вообще рядом нету , может что бы удирал к какой нить зоне, или просто на месте подпрыгивал.
Анимация , высота и скорость определяются кривыми автоматически , по этому добавление точек для запрыгивания - дело пяти секунд
🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
над запрыгиванием еще поработать конечно надо, чуть уменьшил скорость и подергал кривую, что бы органичнее смотрелось
Немного технички: хакаем интерполяцию Rigidbody 👇
Interpolation нужна, чтобы сгладить движение физики между FixedUpdate.
Если камера следует за игроком в LateUpdate, а объект двигается в FixedUpdate - без интерполяции появится джиттеринг тк позиция меняется реже чем обновляется камера.
Почему камера в LateUpdate а не в Fixed?
Чтобы получить максимально плавную картинку.
Интерполяция хорошо работает для полностью физических объектов. Но если объект меняет режим (например, предмет можно подобрать и он становится kinematic), она может ломать логику.
Вручную переключать интерполяцию не всегда удобно:
-не все можно учесть
-легко забыть
-часть API её игнорирует (например, pathfinding)
Решение — ручная интерполяция визуала:
физика двигается без интерполяции
визуальная модель сглаживается вручную
Единственное что - нужен отдельный вложенный обьект с визуалом внутри , который бы интерполировал движение родителя
Interpolation нужна, чтобы сгладить движение физики между FixedUpdate.
Если камера следует за игроком в LateUpdate, а объект двигается в FixedUpdate - без интерполяции появится джиттеринг тк позиция меняется реже чем обновляется камера.
Почему камера в LateUpdate а не в Fixed?
Чтобы получить максимально плавную картинку.
Интерполяция хорошо работает для полностью физических объектов. Но если объект меняет режим (например, предмет можно подобрать и он становится kinematic), она может ломать логику.
Вручную переключать интерполяцию не всегда удобно:
-не все можно учесть
-легко забыть
-часть API её игнорирует (например, pathfinding)
Решение — ручная интерполяция визуала:
физика двигается без интерполяции
визуальная модель сглаживается вручную
Единственное что - нужен отдельный вложенный обьект с визуалом внутри , который бы интерполировал движение родителя