Сравнение State Tree и Behavior Tree (эксперимент)
Решил-таки протестировать и сравнить производительность State Tree и Behavior Tree. Что и как влияет на производительность.
Забегая вперед скажу, что подозрения подтвердились: Behavior Tree проигрывает новому инструменту по причине постоянного тика.
РАВНЫЕ УСЛОВИЯ
- Моя собственная система выгрузки / загрузки при которой AI работают независимо от нахождения рядом игрока: без скелетных и статических сеток, без анимационного блюпринта.
В каждом экспериментальном видео я отмечаю персонажей точками на голове - вы можете их заметить вдали - они занимаются патрулированием.
- Идентичные уровни.
- Симуляция в режиме Unlit - чтобы снизить нагрузку видео карты и максимально исключить ее влияние на показатели.
ВВОДНЫЕ ДАННЫЕ:
В левом углу ринга - Behavior Tree.
- 92 персонажа AI на карте
- Behavior Tree из 6 вложенных деревьев:
-- Профессии:
--- Повар (1 персонаж) (не активен)
--- Стражник (89 персонажей)
--- Фермер (1 персонаж) (не активен)
--- Лесоруб (1 персонаж) (не активен)
-- Боевая система (не активен)
-- Система интеракции (не активен)
Не активные Behavior Tree - существуют, но не проходят проверок в декораторе, т.к. у меня "сломан" лесоруб, а повару и фермеру я не дал задач, т.к. для оппонента в правом углу ринга - State Tree не созданы упомянутые профессии.
Т.е. работает только стражник.
А вот главный Behavior:
Видео тестирования (1:30 минуты):
В правом углу ринга - State Tree.
- 97 персонажей AI на карте
- 2 полных State Tree:
--- Стражник (96 персонажей)
--- Фермер (1 персонаж)
Два рабочих State Tree которые я перенес на текущий день. Они разбиты на 4 дочерних State Tree: по 2 на каждую профессию.
Стражник - патрульный
Стражник - охранник
Фермер - пахарь
Фермер - земледелец
Видео тестирования (1:30 минуты):
ВЛИЯНИЕ ТИКА BEHAVIOR TREE НА ПРОИЗВОДИТЕЛЬНОСТЬ
Теперь покажу, что будет, если в реальном времени отключить Behavior Tree e всех персонажей.
Обратите внимание, ФПС проседает вдвое.
Game Unit слева демонстрирует, как тик и задачи Behavior Tree нагружают проект.
ВЫВОДЫ:
Как и ожидалось из заявлений экспертов и Эпиков, State Tree превосходит Behavior Tree по всем показателям.
State Tree более стабилен и не дропает ФПС с такой скоростью, как это делает Behavior Tree. Он в целом не вызывает просадок.
Behavior Tree cразу же "продавливает" фреймрейт за счет огромных тиков и, хоть и снижает нагрузку со временем, он все равно сильнее грузит железо по всем показателям.
Да, в Behavior Tree есть удобный наглядный интерфейс, да есть понятная отладка, но потенциал State Tree и его возможности гораздо выше.
Уже сейчас мы можем управлять переключением состояний из любой ветки в любую, в то время, как Behavior Tree располагает лишь последовательной проверкой веток с целью найти нужную.
Есть множество функциональных задатков: глобальные задачи, параметры, еваулаторы, условные операторы полностью заменяющие декораторы.
Да, у State Tree огромные проблемы с удобством отладки по причине самой сути состояний: они не выполняются последовательно в отличие от Behavir Tree и поэтому едва-ли их можно как-то свободно контролировать.
Да, у State Tree по-прежнему, несмотря на обновления, есть проблемы с задачами и не переходами, есть конфликты, которые не всегда понятные и много чего еще. Но со временем мы к этому привыкнем или Эпики доработают.
behavior tree
gamedev
ue
unreal engine 5
kingdom of isrion
ai
производительность