Pull to refresh

Comments 4

Давно работаю с ИИ в Анриале. По правде сказать, инструмент Behavior Tree какой-то слишком неудобный и бесполезный, хотя и не выглядит таковым на первой взгляд. Ещё и дерево выполняется последовательно и, как правило, каждый кадр с проверками…
Несколько раз пытался все же попробовать его, мол вдруг я не прав и на самом деле инструмент хороший, но сколько раз не пытался на нем писать хоть немного сложный ИИ, выходило либо костыльно, неудобно и в некоторых местах вообще без возможности что-либо реализовать. И это несмотря на то, что с инструментом хорошо знаком.

Уже два года пишу все ИИ либо на плюсах, либо на блупринтах, о BT даже не думаю, так как разработал свой паттерн. Удобный, гибкий, расширяемый.

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

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

Возможно я не правильно понял, но вычитал это на форуме анрила
Performance Improvements: Since the code doesn’t have to iterate through the entire tree every tick, performance is much better! Conceptually, instead of constantly asking “Are we there yet?”, we can just rest until we’re prodded and told “We’re there!”



Ссылку вставить не получается, но думаю можно будет найти саму ветку форума в поиске по её названию «Implementation Differences of UE4 Behavior Trees vs „Standard“ Behavior Trees».
А можно использовать скрипты для управления ИИ? Например Lua, как в сталкере. Если кто не знает, то значительная часть схем для ИИ написаны на Lua. Хотя это может показаться и не слишком оптимальным решением, т.к. Lua имеет не слишком высокое быстродействие, сотни раз медленней С++.
Sign up to leave a comment.

Articles