Los 'árboles de comportamiento' son una A. YO. técnica utilizada para controlar el comportamiento de los NPC.
Se hicieron populares después de su uso, para los NPC en Halo.
Son un tipo especial de gráfico llamado 'árbol' (como su nombre lo sugiere). Su estructura comienza con una
raíz única y se extiende desde allí, agregando ramas, nodos y finalmente nodos finales.
Hay 3 tipos de nodos.
Compuesto, Decorador y Hoja. Un nodo compuesto es uno que puede tener "1 o más nodos secundarios". Un nodo Decorador
puede tener "solo 1 hijo". Un nodo Hoja es un "nodo al final de una rama"
y corresponde a una acción real en un juego. Un grupo de nodos hoja al final de una rama puede representar una
secuencia de acciones o un conjunto de acciones para seleccionar. Su funcionamiento depende del tipo de nodo compuesto,
de los cuales hay 2 tipos: Secuencias y Selectores. Cuando se procesa, un nodo de secuencia asegurará
que "cada niño sea visitado en orden". Sin embargo, un nodo Seleccionado indica que "solo 1 de sus elementos secundarios necesita
ser visitado" y que ese elemento secundario puede seleccionarse al azar.
Veamos un ejemplo. Imagina que tú (o tu NPC) tienes hambre.
Tienes que tomar una decisión sobre qué comer.
Esto podría mostrarse utilizando un nodo Selector en el que puede seleccionar solo 1 de los elementos secundarios.
No los necesitas a todos.
Entonces, esto es cuando entra en juego un Selector, cuando solo se necesita ejecutar 1 nodo de hoja para realizar
el comportamiento de 'comer'.
Sin embargo, si las acciones de tus PNJs se encontraban en un nivel inferior a este, como en Los Sims, entonces podrías
asociar la ingesta de cada elemento con un proceso bien definido.
En este caso, necesitaría un nodo de secuencia.
Por simplicidad, digamos que tal secuencia incluye: Recopilar ingredientes; Haz pizza; Cocinar pizza y comer
pizza.
Observe que cada nodo hoja corresponde a una acción real.
Es importante que los nodos de hoja se puedan realizar con lógica o con animación porque estas
son las cosas reales que verá que hace el NPC en la pantalla.
También son independientes.
Esto significa que se pueden realizar y luego abandonar la secuencia. Los nodos también pueden representar decisiones que cuando,
en una secuencia, pueden hacer que una secuencia continúe o falle.
En este caso, el árbol de comportamiento se ejecutará completamente solo si '¿Tengo hambre? 'y'
¿Tengo comida? 'está satisfecho, y la decisión de' comer hamburguesas 'o' comer pizza 'será satisfecha.
Los árboles de comportamiento pueden ser tan simples o complejos como sea necesario, incluidas acciones en todos los niveles,
unidas por diferentes nodos compuestos.
Entonces, ¿cómo funciona todo esto en código?
Bueno, cada nodo hoja debe tener un método de coincidencia que se pueda ejecutar.
El árbol de comportamiento en sí es un tipo de lenguaje de secuencias de comandos que se encuentra por encima de su base de código.
Debe escribir un montón de módulos autónomos en un archivo C # que se puede invocar
cuando se ejecuta un nodo hoja.
El método en sí tendrá que informar si ha fallado o no.
Esto le da al nodo hoja un estado de falla o éxito, que se informa nuevamente a la ejecución del árbol
de comportamiento.
En el caso de una secuencia, esto es esencial, ya que si una hoja falla, la secuencia completa falla. En el resto de nuestra investigación sobre los árboles de
comportamiento, haré que sigas junto
con más ejemplos, ya que comenzará a tener más sentido a medida que los uses.
Para esto, utilizaremos el complemento 'Panda BT', disponible gratuitamente, que permite la creación de secuencias de comandos de Behavior Trees en
archivos de texto simples.