Un behaviour tree è un albero gerarchico di nodi ed edge (quindi in struttura Parent-Child-Leaves).
Solo le foglie definiscono lo stato attuale, mentre i child verificano soltanto delle condizioni.

A differenza di una macchina a stati finiti o di altri sistemi utilizzati per la programmazione dell’intelligenza artificiale, un albero del comportamento è un albero di nodi gerarchici che controllano il flusso del processo decisionale di un’entità di intelligenza artificiale. Alle estensioni dell’albero, le foglie, sono i comandi effettivi che controllano l’entità IA, e a formare i rami ci sono vari tipi di nodi di utilità che controllano la camminata dell’IA lungo gli alberi per raggiungere le sequenze di comandi più adatte alla situazione.

Gli alberi possono essere estremamente profondi, con nodi che chiamano sottoalberi che svolgono funzioni particolari, consentendo allo sviluppatore di creare librerie di comportamenti che possono essere concatenati insieme per fornire un comportamento dell’IA molto convincente. Lo sviluppo è altamente iterabile, in cui è possibile iniziare formando un comportamento di base, quindi creare nuovi rami per gestire metodi alternativi per raggiungere gli obiettivi, con rami ordinati in base alla loro desiderabilità, consentendo all’IA di avere tattiche di ripiego nel caso in cui un particolare comportamento fallisca. È qui che brillano davvero.

Gamedeveloper

I nodi di composizione possono essere di tipo:

  • selector se rispondono alla domanda lungo quale child devo proseguire? (comportamento logico OR)
  • sequence se realizzano un flusso di esecuzione di tutti i child uno dopo l’altro, da sinistra verso destra (comportamento logico AND)
  • parallel se esegue più flussi di azioni in parallelo.

Esistono anche dei nodi decorator che modificano leggermente il comportamento delle azioni eseguite, come:

  • repeat per ripetere azioni
  • not per negare una condizione