Una máquina de estados es un mecanismo, real o imaginario, cuyo comportamiento puede entenderse como una sucesión de cambios de estado.
Un estado es el conjunto de propiedades que caracteriza al mecanismo en un momento dado de su historia.
Un ejemplo simple del mundo real es una puerta; tiene dos estados: abierta o cerrada. El cambio de estado, suele llamarse transición, es producido por una causa externa. Por ejemplo, alguien enpuja la puerta.
El ejemplo de la puerta es, obviamente, una simplificación, no es una puerta real, que es mucho más complicada, pero puede ser suficiente para una simulación como, por ejemplo, la de un juego.
En Xitai Editor pueden crearse máquinas de estados bastante más complejas. Se usan en diferentes situaciones. Es la manera de proporcionar interacción y dinámica al juego.
Un juego típico se puede considerar, globalmente, una máquina de estados. Los estados pueden ser las diferentes pantallas por las que va pasando: menú, preferencias, ranking, acción, etc.
Una máquina de estados puede ser asignada a objetos de algunas clases. Por ejemplo a personajes, animaciones, botones, etc.
Los personajes suelen tener máquinas de estados. El fantasma del pacman tiene varios estados: persiguiendo, huyendo, desintegrándose, renaciendo...
Cualquier elemento del interface de usuario puede llevar asociada una máquina de estados. Puede ser para controlar su apariencia u otros cometidos, como, por ejemplo, manejar la música de fondo.
El autor del juego tiene a su disposición una variada gama de objetos para construir máquinas de estados. Estas son las clases fundamentales y su jerarquía:
State, Machine y Trigger pueden usarse directamente, las demás son abstractas y sólo se usan clases derivadas.
En el área central podemos usar la ventana Machine para editar gráficamente una máquina de estados.
Como es habitual en Xitai Editor, las relaciones entre los objetos que componen una máquina se establecen en forma de árbol: Los nodos son hijos de las máquinas. Los disparadores son hijos de los estados. Las condiciones son hijas de los disparadores.
Una condición es un objeto que observa el entorno y produce un resultado binario: verdadero o falso. La transición entre estados se produce cuando alguna de las condiciones hijas del disparador que los une da un resultado verdadero.
Una acción se ejecuta cuando alguna de las condiciones hijas del disparador que le une a algún estado da un resultado verdadero.