Está en la página 1de 2

Maquina de Estados [Videogame Dev 101]

Ricardo Illescas Febrero 2012

Introduccion
Las maquinas de estados se denen como un conjunto de estados que sirve de intermediario en esta relacion de entradas y salidas, haciendo que el historial de senales de entrada determine, para cada instante, un estado para la maquina, de forma tal que la salida depende unicamente del estado y las entradas actuales.

Figure 1: Panchita:The Zombie Slayer Concept

Funcionamiento
Para que me serviria en un videojuego? Simple, tenemos la necesidad de controlar diferentes estados del juego, por ejemplo al iniciar tiene que cargar la introduccion, luego el menu principal, controlar la generacion de niveles y cutscenes. 1

Supongamos que nuestro juego se divide de la siguiente forma: - Introduccion - Stage 1 - Stage 2 - Cutscene - Stage n nuestra maquina en pseudocodigo:

//revisamos que estado seria funcionr evisare stado(archivoestado) if(nivel.tipo==escenario) funcionc argare scenario(estado); if(nivel.tipo==escena) funcionc argare scena(estado);

Uso
al nalizar cada mapa, se llamara nuevamente a la statemachine para que esta busque que es lo que sigue en el nivel. Esto servira para llevar un orden y poder mandarle al juego en que estado nos encontramos y hacia donde debemos seguir, muy util al tener juegos multiniveles con cutscenes y cosas mas complejas.

Otra sintaxis
Podriamos chequear el estado de nuestra maquina de la siguiente manera: GameState state; protected override void Update(GameTime gameTime) switch (state) case GameState.Initialize: // do loading stu break; case GameState.AttractMode: // play demo break; case GameState.Playing: // respond to player input break; case GameState.LostLife: // maybe explode ship break; case GameState.LevelOver: // load new level break; case GameState.GameOver: // allow player to continue break;

Conclusion
Controlar el estado de las situaciones del juego viene a ser algo primordial en juegos multinivel. (?)

//analizamos el estado actual cada escenario podra estar guardado ya sea un archivo xml, json o lo que nosotros querramos, estos escenarios guardaran datos como sprites, enemigos, tiles, punto de inicio, punto meta, etc, etc. Sera nuestro trabajo analizarlos al cargarlos.

Sintaxis archivo de entrada


supongamos nuestro archivo de esta manera: mapa1 Nivel: escenario, nombre: ciudad1 resources: url:/ubicacion/de/sprites/ Nivel: escenario2, nombre: subterraneo resources: url:/ubicacion/de/sprites/

Pseudocodigo State Machine


Nuestra maquina de estados funcionaria chequeando que es lo siguiente en el archivo de entrada, y realizando la accion que siga. state=0; funcionr evisare stado(nivel.obtenerHijoEn(state)); state++;

También podría gustarte