
A la hora de desarrollar un video juego y si no contamos con un API como XNA nos toparíamos, como ya lo he dicho antes, con varios problemas que hay que resolver, uno de ellos es el bucle principal del juego que aunque no es mayor de los problemas con el que nos enfrentaremos al realizar un juego si sería algo latoso estructurar la lógica para que el juego corra como es debido. Para entender mejor de lo que estoy hablando pensemos primeramente en un programa estructurado clásico.

Este diagrama muestra en programa muy sencillo pero que nos servirá muy bien de ejemplo.
En un programa estructurado como el del diagrama, el programa realiza una sería de instrucciones definidas por el usuario y al momento de solicitar un dato se detiene y no hace nada mas que esperar la entrada de datos, al recibir los datos pasa a la siguiente instrucción y aunque tenga condiciones y bucles que modifican el flujo del programa podemos decir que es lineal.
Un videojuego, por su lado, tiene una estructura diferente, la estructura básica esta dividida en bloques y aunque cada bloque puede estar dividido en varias partes podemos decir que principalmente tiene un módulo de carga de datos, un módulo de principal con un bucle infinito y un bloque de descarga de datos o de liberación de memoria.
El siguiente diagrama muestra un ejemplo del bucle principal de un juego.

Básicamente el bucle principal del juego consiste en una actualización a través del tiempo en la que se realizan varias acciones, por ejemplo, se checa si se presionó algún botón y de ser así verifica que sea un botón válido de acuerdo a las condiciones que nosotros hayamos definido. Una vez que pasó por la verificación de botonazos calcula la posición de los elementos que tienen una acción independiente a cualquier entrada del control como por ejemplo algún efecto visual que tenga nuestro escenario. Ya que tenemos la información de todos nuestros elementos que aparecerán, se procede a desplegar en pantalla todos nuestra escena armada.
Este ciclo contiene generalmente mas verificaciones y se detiene hasta que se realiza una acción predefinida por nosotros que pone fin al juego, como por ejemplo, que se hay presionado la tecla ESC o algún botón en el control.
Ahora ya puedes consultar el post Análisis del código Inicial donde verás estos conceptos a nivel de código para un proyecto en C# y XNA.
No olvides dejar tus comentarios, nos vemos en el siguiente post.
Piroshi
Tags: video juegos