Análisis PrácticoUn análisis práctico de las FSM en el dominio de los juegos de acción en primera persona (FPS) La intención de esta
sección es usar un juego de ordenador para ilustrar los trabajos
conceptuales de una FSM basada en una práctica aunque
teórica implementación. No intentaré proveer ideas
exactas
de como el juego de ordenador funciona o si quiera demasiadas
especificaciones (código) de la implementación del juego.
Las FSMs discutidas en esta sección han sido implementadas,
verificadas y lanzadas en código en producción,
ofreciendo un
ejemplo del mundo real en el dominio de los juegos de acción en
primera persona [8]
[9]. Esta sección ofrecerá dos ejemplos de máquinas de estados finitos del juego FPS creado por id Software [6] llamado Quake. La otra razón para tomar esta decisión ha sido que en el momento en que fue comercializado, era un juego de última generación y su código fue licenciado por otras compañías que produjeron juegos tan populares como Unreal y Half-Life, aumentando así el éxito del producto original. Vamos a empezar con el análisis
de algo sencillo. Veremos como incluso estudiando los estados de un
proyectil simple como un misil podemos aprender mucho sobre la
naturaleza de las FSMs. No digo que sea ningún experto en el
código de Quake (esta es mi primera excursión por
él), así que perdonad me si mi interpretación
basada en el código no es completamente exacta. Un misil en Quake es un proyectil
disparado por el arma Lanzadora de Misiles que puede ser poseída
y
operada por un jugador humano. Figura 2.1: Representación de la transición de estados de un proyectil misil de Quake.
En lugar de restringirme a mi mismo y
de paso confundir al lector usando una notación formal como las
mencionadas en la primera sección de este documento, la
máquina de estados finitos ha sido representando usando un
acercamiento muy similar al de un Diagrama de Transiciones de Estado.
Las cajas azules son los estados, las naranjas los disparadores y las
flechas las transiciones de estado. La cajas negras muestran el punto
de entrada y de salida del sistema. El diagrama muestra el ciclo de vida
completo del misil en el juego. Es interesante darse cuenta que el
proyectil aparece como producto de una acción de otra FSM,
concretamente la del "lanzador de misiles" desde su acción
"disparar". Cuando la instancia del misil muere se elimina del
juego y deja de existir. Esta presentación es una
implementación subjetiva del código. Otra
representación válida podría romper el "estado
tocado" más profundamente en los estados de tocada y
explosión. Personalmente veo la explosión como una
acción o efecto realizado por el objeto misil en su estado
tocado. Otra nota interesante es que cuando el
proyectil está en estado tocado, uno de sus efecto es intentar
dañar a todo aquello que esté a tocar. Si ha conseguido
dañar otra entidad en el mundo del juego, la acción de
dañar se convertirá en la entrada que activará
algún cambio de estado en la entidad afectada. Quake hace uso extensivo de FSMs como
mecanismos de control que gobiernan las entidades que existen en el
mundo del juego. Esto se realiza así gracias a un interesante framework que está
estrechamente relacionado en la manera que la FSM funciona en el juego.
Para ver más información sobre el framework, por favor,
mira la sección tres. Vamos a mirar una FSM algo más
avanzada de Quake. Un Shambler es una entidad monstruo grande y malo
del componente single player (un jugador) de Quake. Su misión en
la vida es
matar jugadores, una vez que los ha localizado. Figura 2.2: Transición de estados representando el monstruo Shambler de Quake.
Como el misil, esta entidad tiene un
estado inicial (estado engendrado), y el sistema finaliza cuando la
entidad muera (estado muerto). Solo existen cuatro estados principales,
pero el Shambler es un buen ejemplo que ilustra la capacidad de tener
una jerarquía de sub-estados. Aunque los sub-estados de este
ejemplo pueden ser considerados como acciones del "estado atacando",
también son sub-estados ya que el monstruo solo puede realizar
uno (o estar en uno) de ellos por cada ejecución del estado
atacando. Cuando en el estado atacando la
instancia de Shambler toma una decisión basada en la
evaluación de las entradas para realizar un ataque de estilo
tumulto (cercano) o misil (larga distancia). Al seleccionar un ataque
de estilo tumulto (estado atacando tumulto), las entradas se
continúan evaluando con un número al azar para
seleccionar el tipo de ataque tumulto (aplastar con los dos brazos,
aplastar con el brazo izquierdo o abrazar con el brazo derecho). El uso de un número aleatorio en
la selección del sub-estado del ataque tumulto añade un
nivel de impredecibilidad a la selección. Cada nivel en la
jerarquía puede ser considerado como una sub-máquina de
estados finitos de una entidad monstruo mayor, y en este caso la
sub-FSM del estado ataque estilo tumulto puede ser clasificado como
no-determinista. Es importante comprender el uso de FSM
en capas o jerarquía, porque cuando se usan, como se hace en el
monstruo Shambler, permiten comportamientos mucho más complejos.
Esta técnica es usada con mucha frecuencia en Quake por todas
las entidades del mundo del juego. Por ello mucho se ha hecho una
abstracción de mucho código para ser usado
fácilmente en diferentes lugares o acciones como movimiento o
evaluación de visibilidad. He simplificado este ejemplo para que
resulte más legible. Un ejemplo de ello está en los
activadores que causan la transición de estados. Cuando ocurre
una transición de estado de "estado ataque" a "estado inactivo"
el activador ha sido simplificado como "perdido objetivo". Es cierto
que la transición ocurre por el hecho de perder la entidad
objetivo, pero un objetivo puede ser perdido por el Shambler de
diferentes maneras que se evalúan en diferentes puntos del
código, incluyendo un time-out
de otra entidad. Otro punto clave referente a este
ejemplo es el uso de objetivos como principal motivador para la FSM.
Esta técnica no ha sido discutida, aunque es un ejemplo del
poder y flexibilidad de una FSM como técnica de control. Existe
una jerarquía de máquinas de estados finitos, la FSM de
más alto nivel se guía por el deseo de la entidad de
localizar su objetivo y atacarlo. El objetivo es usualmente un jugador
humano pero incluso puede ser un monstruo del mundo del juego. Debe
tenerse en cuenta que mientras el monstruo está en el estado
inactivo, mientras está simplemente vagando sigue buscando
objetivos. Quake no provee la mejor experiencia
single player imaginable, pero fue y sigue siendo un juego divertido
y adictivo, ambos atributos claves para el éxito de un juego. Es
un buen ejemplo y una buena herramienta de aprendizaje que puede
enseñar la capacidad tanto de máquinas de estados finitos
muy simples como de FSM más complejas construidas con una
jerarquía de FSM y motivadas por objetivos, como el monstruo
Shambler. Visitar Artificial Intelligence Depot. |




