#Bevy
Привет всем, последние несколько недель я занимался прототипированием некоторых компонентов ИИ, улучшая поведение агентов в игре. Подход имеет в основе метод "job givers", который включает в себя кастомный планировщик задач похожий на GOAP. Само улучшение пока небольшое, но в будущем на его основе я буду строить другие поведения для агентов.…
Осталось прикрутить хот-релоад. Сам код довольно простой потому что почти всю тяжелую работу выполняют другие библиотеки: asefile – парсер для файлов и image – буфер с помощью которого можно собрать атлас из фреймов анимации. Моя работа в том чтобы записать фреймы в атлас и запомнить какие кадры каким индексам из этого атласа соответствуют.
Для чего это нужно? Можно быстро находить медленные системы и другие узкие места. Этот плагин конечно пока не дает такой подробной диагностики как offline профайлеры вроде superluminal или tracy, но зато работает в реальном времени и дает быстрый сигнал, который дальше уже можно изучить в более продвинутом софте. Идея в том чтобы оптимизировать…
Экспериментирую с боевой системой и инвентарем. Попробовал написать простую систему для скелетной анимации чтобы упростить себе работу над созданием разных оружий в моем прототипе. Подглядел этот прием в Archvale, но скорее всего это много где используется. На видео анимация с несколькими видами рубящего оружия. Что думаете?
Долго тянул, но вчера вечером добавил базовую систему боев. Все очень просто – система AI агента отправляет события урона со всякими параметрами, обработчик их применяет и запускает анимацию деспауна (ее пока что нет). В событие можно добавить тип оружия, урона, прямой или по площади и прочее. Обработчик может читать параметры целей (броню и…
Добавил начальный хот-релоад в движок для карт созданных в LDTK (такой универсальный 2D редактор уровней для спрайтовых игр). Я долго тянул с этой фичей, но она оказалась реализуема за 30 минут. Уровень загружается в свою иерархию в ECS которую мы потом подменяем на новую когда обновляется ресурс файла карты. До этого приходилось перезагружать…
Доработал то как шейдятся объекты над полом. Я разделил пол, стены, и "остальные объекты" на 3 отдельных слоя (RenderLayer в Bevy). Текстуры этих слоев затем передаются в один фрагментный шейдер для всего экрана где они по разному освещаются заранее посчитанной текстурой света пола и затем смешиваются. Думаю для начала получилось неплохо. Сам…