GAME LOOP

El jefe: - "Ponerlo todo limpio y claro, porque hay que mejorar muchas cosas. Además se incorpora un nuevo equipo. Se encargará de la inteligencia artificial de los fantasmas y de ponerle las cosas más difíciles al jugador o jugadora a medida que transcurren los niveles".

BORRA, MUEVE Y PINTA

Es momento de reflexionar y entender la arquitectura del Juego Arcade.
EngineZX al que me refiero muchas veces, es muchas cosas, "motor gráfico" es una de ellas.
El "GAME LOOP" básico de los juegos de acción es borra, mueve y pinta. Una de las cosas que hacía con 15 años en el ZX Spectrum era escribir en mis programas BASIC lo siguiente:

110 PRINT AT X, Y; " ": REM borra
120 IF INKEY$ = "P" THEN LET X = X + 1: REM mueve nave espacial
...
210 PRINT AT X, Y; "➤": REM pinta nave espacial
...

"Era igualmente excitante comprobar si funcionaba tu juego aún con las limitaciones del BASIC".
 
Mas tarde se incorporaron las rutinas gráficas en código máquina que hacían el movimiento más rápido y suave. Se sumaron las rutinas de Control de entrada (teclado o joystick), gestor de mapas, gestor de pantallas, Scrolling, etc.
MPAGD es un herramienta potente que no es capricho de la casualidad. Es fruto del estudio de los patrones y prácticas en la programación de video-juegos desde siempre.

Ahora nuestro programa en BASIC se reduce al siguiente:

10 CLEAR VAL "24063": CLS: LOAD "" CODE: RANDOMIZE USR VAL "24064"

Del resto se encarga el programa en código máquina que se construye a partir del editor MPAGD.

EVENTS

En nuestro recorrido hasta ahora hemos estado en lugares diferentes del código del juego.
Saltando aquí y allá, sin saber cómo. Esto centra el foco de nuestra atención en problemas sencillos, en momentos concretos (por ejemplo EVENT COLLECT BLOCK).
Pero ¿Cómo está estructurado el Juego? EngineZX nos deja escribir un SCRIPT en los EVENTOS que ocurren en este orden:

1 - Intro/Menu
2 - Game Initialisation
3 - Restart Screen
4 - Initialise sprite
5 - Main Loop 1
6 - Sprite Types
7 - Main Loop 2

GAME LOOP

El bucle se repite sin fin desde el evento 5 al 7.
Antes de volver al 5 realiza las siguientes comprobaciones: 
Si hay que cambiar la pantalla, si se ha muerto el personaje o si ha acabado el juego. Dependiendo de los casos vuelve al evento 3.

EVENTOS ARCADE

Estos "eventos" que se muestran a continuación se disparan cuando usamos dos mecanismos clásicos JUMP y GETBLOCKS.

- Fell to far
- Collected block

Por último las comprobaciones finales del "GAME LOOP" nos pueden llevar a estos otros momentos en el juego mediante los comandos KILL y ENDGAME.

- Kill Player
- Lost Game
- Completed Game
- New hight score

Este es el esquema de flujo de programa, te será útil cuando tengas que decidir dónde colocar tu código:

En la imagen: Diagrama principal. El conector (A) nos lleva a las comprobaciones finales.
En la imagen: KILL, RESTART y NEXTLEVEL colocan al Player en la posición RESPAWN que hemos preconfigurado en el editor para cada pantalla.
Otra opción que nos ofrece EngineZX es recorrer libremente el mapa del juego mediante SCREEN, SCREENLEFT, SCREENRIGHT, SCREENUP Y SCREENDOWN. Estas opciones sólo recolocan los enemigos, no afectan al jugador.

REVISION

Estamos en la sala de reuniones, ahora los equipos están al tanto de la arquitectura del juego.
Jefe: -"Tengo este expediente con todas las especificaciones del nuevo equipo. Pasaron meses ajustando y refinando las rutinas de los fantasmas".

"El equipo de Itawani creó la ilusión de encontrar caminos complejos mediante el uso de una lógica muy simple y muy poco código".

El dossier de Pac-Man
Por Jamey Pittman



Comentarios

Entradas populares de este blog

El laberinto