Diferencia entre revisiones de «Inteligencia artificial para videojuegos/Toma de decisiones simples»

Contenido eliminado Contenido añadido
Sin resumen de edición
Línea 1:
== Introducción. ==
Normalmente, Inteligencia artificial para videojuegos, es un término que que se suele utilizar para referirse al conjunto de técnicas, sistemas y algoritmos controlados por la máquina, que gobiernan a las criaturas, aliados o enemigos del juego.
 
El sistema de '''toma de decisiones''' suele ser lo más característico de la Inteligencia Artificial de un videojuego, ya que hace de puente entre la lógica de alto nivel y el mundo del juego.
 
== Árboles de decisión. ==
Son modelos de predicción utilizados en diversos ámbitos mediante los cuales, dado un conjunto de datos se fabrican diagramas de construcciones lógicas, muy similares a los sistemas de predicción basados en reglas, que sirven para representar y categorizar una serie de condiciones que ocurren de forma sucesiva, para la resolución de un problema.
 
Línea 17:
Para sofisticar este sistema, es posible usar aprendizaje automático para ampliar el árbol sobre la marcha.
 
== Máquina de estados finitos. ==
Este modelo de predicción surge por la necesidad de las entidades de hacer una acción hasta que sucede algo en el juego. Suelen ser estructuras genéricas, aunque a veces se programan sólo con '''''enumerados''''' y '''''switch'''''.
 
Se utilizan jerarquías para recibir interrupciones aunque la implementación de las transiciones se complica. Para sustituir estas transiciones se suele utilizar árboles de decisión.
 
== ÁrbolIncertidumbre dey comportamiento.utilidad ==
[[Archivo:BT_search_and_grasp.png|miniaturadeimagen|Ejemplo de árbol de comportamento]]
Una de las técnicas que se ha venido utilizando en los últimos años para poder modelar inteligencia artificial en videojuegos, es el '''árbol de comportamiento''' o '''Behavior Trees'''. Ha ido ganando cada vez adeptos a lo largo de los años, a medida que cada vez más desarrolladores encontraran en ella una herramienta superior a las máquinas de estados finitas.
 
El uso de estos sistemas se popularizó con Halo 2 al ser una mezcla de técnicas comprensible para el diseñador.
 
Con estos árboles se puede añadir aleatoriedad a los nodos Selectores y hasta a los de Secuencia, haciendo que el comportamiento sea menos predecible.
 
Otros tipos de nodos podrían ser '''decoradores''', justo sobre una tarea para filtrar y controlar recursos necesarios para su ejecución y '''paralelos''', que suelen definirse como una secuencia que lanza todos los hijos a la vez.
 
Con el nodo '''paralelo,''' surge una necesidad clara de comunicar unas tareas con otras.La manera de hacer esto es desacoplando la comunicación mediante una [[#Arquitectura de pizarra.|pizarra compartida.]]
 
Con una biblioteca de árboles prediseñados (arquetipos) el diseñador les puede instanciar y reutilizar parcial o totalmente, convirtiéndose así en una solución popular, pero limitada ya que dificulta la gestión de las interrupciones externas.
 
== Incertidumbre y utilidad. ==
Millington y Funge proponen lógica difusa, pero reconocen que es mejor razonar con probabilidad como ya hemos estudiado.
 
Línea 45 ⟶ 31:
Si queremos elegir la secuencia de acciones más útil, debemos pasar a planificar. El algoritmo más conocido para ello se conoce como '''GOAP''' (Goal Oriented Action Planning) que se implementa con búsqueda primero en profundidad o con A*.
 
== Sistema basadoBolt en reglas.Unity ==
El '''motor de videojuegos Unity''' dispone de múltiples Assets sobre '''árbolesmáquinas de comportamientoestado finito.''' Uno de los más usados es '''[httphttps://wwwludiq.opsive.comio/assetsbolt/BehaviorDesigner/ Behavior DesignerBolt]'''.
Se usan en videojuegos desde los 90, aunque en títulos muy puntuales.
 
Tienen base de hechos y de reglas, donde varias pueden activarse pero sólo una ejecutarse. Esto se conoce como encadenamiento hacia delante.
 
Estas reglas deben ser muy expresivas para que no salga mejor sustituirlas por otra técnica, esto implica usar algoritmos de unificación como '''Rete'''.
 
Hay dos optimizaciones básicas que a veces requieren estos sistemas:
 
* '''Agrupar reglas''' para que no se activen demasiadas a la vez haciendo ineficiente el algoritmo.
* '''Anotar las causas''' (reglas ejecutadas) de cada hecho añadido o borrado, para poder depurar y justificar mejor el sistema.
 
== Arquitectura de pizarra. ==
Se usa en árboles de comportamiento, y también de base (flexible) para coordinar varios sistemas de toma de decisiones. Cada algoritmo es un "experto" que consulta la pizarra y pide turno. El árbitro cede el control a un experto y el experto modifica hechos de la pizarra. El experto devuelve el control al árbitro.
 
== Guiones ==
A mediados de los 90 casi todos los juegos se programaban '''ad hoc,''' sin inteligencia artificial, mediante guiones.
 
== Ejecución de acciones. ==
Al igual que con la interfaz del Mundo, centralizar las acciones con un gestor hace la IA más flexible y fácil de depurar.
 
Tipos de acciones:
 
* '''Simples''', a menudo agrupando varias actividades.
* '''Interrumpidas''', permiten saltar a otra más importante.
* '''Compuestas''', generalmente resultado de combinar acciones simples tomadas por sistemas simultáneos.
 
* '''Guionizadas,''' no son algoritmos de inteligencia artificial pero son útiles y creíbles. también pueden combinarse con las anteriores.
 
== Behavior Designer en Unity. ==
El '''motor de videojuegos Unity''' dispone de múltiples Assets sobre '''árboles de comportamiento.''' Uno de los más usados es '''[http://www.opsive.com/assets/BehaviorDesigner/ Behavior Designer]'''.
 
Permite crear tareasrealizar propiasprogramación convisual unay poderosacrear '''API,'''máquinas asíde comoestado utilizarcon algunassu yadiagrama construidasy todo.
 
Sería interesante crear una subpágina con más información.
Para más información: [[{{PAGENAME}}/Behavior Designer Unity|Behavior Designer Unity]]
 
== Resumen. ==
 
* El sistema de toma de decisiones más simple y fácil de usar es el árbol de decisión.
Línea 93 ⟶ 50:
* Federico Peinado.
* David Pérez Cogolludo.
* Raúl Serrano Gómez - Apartado Unity
 
[[Categoría:Informática]]