# Inteligencia artificial para videojuegos/Herramientas de autoría
## Introducción

Las herramientas de autor son aplicaciones informáticas con elementos pre-programados para desarollar software interactivo. Se pueden definir las herramientas de autoría como un software de carácter multimedia que permite al usuario combinar documentos digitales, inámeges, sonidos, videos y actividades interactivas, para crear objetos de aprendizaje -conocidos como O.A- que pueden insertarse en entornos virtuales de apredizaje.
Permite a una persona que no necesariamente tenga conocimiento de la programación, por ejemplo un diseñador, crear un software con elementos de programación. Dichos elementos existen, pero están "escondidos" en una interfaz gráfica con nodos, botones, y demás recursos por lo que el individuo no necesita saber cómo programar, o de qué forma está hecho internamente.
Una herramienta de autoría normalmente incluye un "idioma de autoría", que es un lenguaje de programación creado (o extendido) con funcionalidad para una herramienta de autoria concreta. Es decir, un programa puede estar programado en c++ pero tener una serie de reglas externas al lenguaje que se deben tener en cuenta a la hora de usar la herramienta. Por ejemplo, en el orden de interpretación de los comandos.

## Movimiento

Un uso muy común en videojuegos de las herramientas de autoría es el preprocesado el entorno, para facilitar los comportamientos de direccionamiento de los NPCs.
Es común que los NPCs se queden atascados en las paredes, por lo que se tiende a simplificar la geometría del entorno a primitivas básicas, o se puede reducir la cantidad de "suelo transitable" cortándolo justo lo que mide el radio de la colisión del personaje, para luego moverlo sólo con el punto de su centro.

## Planificación de rutas

Este tipo de herramientas editan los nodos del grafo, modificando su punto/región correspondiente, las conexiones y los costes de estas según un esquema de división determinado.
Los grafos de baldosas se representan con una rejilla uniforme, con lo que es fácil tener generadores automáticos ya que cada baldosa tiene las mismas dimensiones y características y el proceso de generación de una misma baldosa es trivial.
La teselación de Dirichlet sólo requiere que el diseñador marque los puntos característicos, pero siempre se necesitará visualizar las regines generadas automáticamente y se hace necesario el poder corregirlas una vez generadas.
Los puntos de visibilidadse pueden validar automáticamente proyectando rayos (raycasting), pero se asume que ocupan el centro de regiones que pueden editarse libremente lo que supone que sea mucho más complejo. Además, que exista visibilidad entre dos puntos no necesariamente implica que se pueda navegar entre ellos.
Las mallas de navegación, o "NavMesh", hoy día sólo necesitan poder identificar el suelo, la superficie por la que se va a mover el cuerpo, y lo demás es automático. Se descompone dicha superficie en triangulos y se usa un potente análisis geométrico para determinar la navegación. Por lo general, si no es por análisis geométrico se hallan los puntos usando minería de datos.

## Toma de decisiones

Hasta hace poco, no había herramientas específicas de toma de decisiones en el campo de la IA sino que estaba todo guionizado acorde a un plan previo creado por el diseñador. Ahora es posible darle una etiqueta a los objetos del entorno, con el fin de agruparlos bajo un mismo atributo que sea más sencillo de entender para la IA, y es posible determinar las acciones posibles que tiene. El personaje puede utilizar toda esa información para decidir sus siguientes movimientos y acciones.
Para hacer una planificación, es necesario además representar los objetivos del personaje, añadir prerrequisitos y efectos a las acciones. Idealmente el personaje tendrá en cuenta los efectos, además de su objetivo, para saber cual es la decisión más inteligente, y sabrá si puede o no hacerla en base a los prerequisitos que debe cumplir.

## Tácticas y estrategias

Se usan las mismas herramientas que para la planificación de rutas convencional, ya que a pesar de que existen sistemas tácticos automáticos necesitan de supervisión y ajuste de los diseñadores. En este caso es la minería de datos el enfoque más prometedor para generar toda la información táctica.
Lo bueno de la minería de datos es que los personajes hacen toda clase de acciones como saltar, o cubrirse, y este sistema tan sólo registra su uso para luego sacar información cuando lo necesites. Es especialmente útil para hallar las mejores conexiones entre los puntos del grafo.
Estos personajes los puede manejar un jugador humano o una IA con "merodear" como comportamiento de direccionamiento, aunque en cualquier caso cada pocos minutos se les hace reaparecer en un punto aleatorii del entorno.

## Cadena de herramientas

El motor de IA normalmente trae toda una cadena completa de herramientas, y de muchos tipos.
Los editores orientados a datos son editores en los que normalmente está todo integrado en el inspector de objetos. Los entornos de guionizado permiten definir comportamientos para un guión preestablecido de forma textual o visual, mientras que los editores de diagramas permiten crear máquinas de estado y árboles de comportamiento para que el comportamiento de la unidad sea planificado en función del entorno y de los objetivos puntuales.
Existen depuradores, gráficos o en consola, incluidos en todas las herramientas anteriormente mencionadas ya que los medios de depuración del lenguaje no sirven. Recordemos que estas herramientas existen para aislar el código del usuario, por lo que este no tiene por qué saber depurar código y es necesario que la herramienta incluya un medio para que el usuario entienda qué está pasando exactamente.
Adicionalmente, pueden incluir plugins para herramientas de tercero, como las de modelado y animación 3D.

## Parcicipantes

* Daniel Quintero Bernal