Diseñar la Inteligencia Artificial y Máquinas de Estado

Estos días no hubo ningún post ya que el principal redactor de este blog (Miguel) estaba de vacaciones. Pero ya volvemos a la carga, ¡y más fuerte que nunca! ya que apenas queda tiempo para terminar este TFM y además presentar el proyecto a los premios PlayStation.

Hoy os vamos a comentar un poco sobre la Inteligencia Artficial. Por ser un juego de estrategia por turnos, la Inteligencia Artificial (que a partir de ahora llamaremos IA para abreviar) es uno de los puntos más importantes, ya que jugarás contra la máquina, no contra otras personas, y si no es lo suficientemente variada y divertida, el juego se puede hacer demasiado fácil y aburrido.

Ahora bien, cuanto más compleja sea la IA que se quiere desarrollar, más horas de programación conlleva, y además es más probable que luego falle en algún momento inoportuno. Pero por suerte, hay maneras de crear comportamientos complicados sin comernos mucho el tarro. La opción que hemos elegido se llama “Máquina de Estados”.

Una Máquina de Estados es un conjunto de “instrucciones” por las cuales la IA se puede guiar, con unas transiciones que podemos definir para que sepa cuándo hacer unas cosas u otras. Por ejemplo, este es el esquema inicial de la Máquina de Estados de nuestro guardia:

IMG-20150528-WA0003
Diseño esquemático de la máquina de estados sobre pizarra

Cómo se puede ver, tenemos 5 estados: Vigilante, Atacando, Curación, Persecución y Oculto. En cada uno de estos estados la IA realizará las acciones que le programemos.

Las flechas entre los estados representan los “triggers” o condiciones que se han de cumplir para que el Guardia pase de un estado a otro, de manera que si está en estado “Vigilante” y descubre a un enemigo y lo tiene cerca, pasará al estado “Atacante”. Para representar además el estado inicial, tenemos la flecha que viene de fuera, en nuestro caso, el estado de “Vigilante” será con el que se inicialice el NPC.

Por supuesto, esto se puede complicar todavía más si en cada estado, a su vez, metemos otra Máquina de Estado, de manera que cuando esté en “Atacante”, la IA puede realizar varias acciones según lo que tenga a su alrededor, creando una red de Máquinas de Estados que, sino tenemos cuidado, se nos puede ir de madre.

Como veis, la Máquina de Estados de antes, está hecha en una pizarra. Para diseñarla sólo necesitáis algo sobre lo que escribir (lápiz, papel, esas cosas xD), para las primeras máquinas que hagáis, procurad no pasar de 4-5 estados, ya que se crean demasiadas conexiones y a la hora de programarlo luego se vuelve demasiado complejo, aquí el lema de “divide y vencerás” de la programación también se aplica.

De todas formas, si queréis hacer una Máquina de Estados en el ordenador, hay programas como el XMIND con el que se pueden hacer esquemas y gráficos muy rápidamente y con todo lujo de detalles. El programa además es gratuito y su uso veréis que es muy intuitivo.

Y con esto se acabó por hoy. Ya sabéis que cualquier comentario nos lo podéis hacer llegar por Twitter a @ProjectDinamita, por Facebook a Dynamite Project o por esta misma página 🙂

¡Un saludo y hasta la próxima!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s