Paso 10: Programa estructura - bucle de juego
La parte más importante de cada juego, el bucle de juego de la sincronización, debe ser Inmaculada en muchos de los mayores sistemas y arquitecturas. La Atari 2600, por ejemplo, había 76 ciclos del procesador para hacer todo la lógica del juego, que incluye sonido así. Los procesadores de hoy en día son mucho más rápidos, y el tiempo es sólo una consideración real por empujar la dotación de hardware de gráficos.A los efectos de esta discusión, cada iteración del bucle juego corresponde al dibujo de un solo cuadro y es programado para ejecutar en aproximadamente 30 fotogramas por segundo. El bucle de juego debe manejar todo, cada iteración, pero mantenerse dentro de los límites de la televisión o VSYNC del monitor. El VSYNC es el más largo período de tiempo que el monitor o televisión es inactivo y no en el proceso de rediseño de la pantalla. Tratando de escribir en la memoria de video mientras que el monitor o televisión intenta leer llevará a contingencias de hardware pantalla lagrimeo y otras anomalías gráficas.
¿Qué es lo primero que el bucle de juego deben manejar? Supongamos, por un momento, que todas las construcciones de juego se dividen en la lógica del juego y el motor de gráficos. Poniendo el código de gráficos primero, y después de manejar, dicen, jugador de entrada, surge un problema. El problema surge de la fase de inicialización. Esencialmente, el motor gráfico habrá computado el primer fotograma antes de que comience realmente el lazo y luego dibujar el primer fotograma durante la primera iteración del bucle de juego. Ahora, se calcula la lógica del juego, pero el marco actual en el circuito es desynced con el cálculo hecho con la lógica del juego.
Por lo tanto, la lógica del juego debe ordenarse primero, pero deja unas construcciones a pedido. Supongamos que se tomó la decisión arbitraria que la detección de colisión debe tratarse primero. Entonces, lógicamente, la entrada del jugador es manejada en algún momento después de en el bucle. Esencialmente, la colisión se calcula, y entonces el jugador consigue moverse. Una contradicción puede ser encontrado en por lo menos un caso, pero Supongamos que py + h = by + 1, y el jugador es frenéticamente tratando de mover hacia abajo para compensar. Por la definición del detector de colisiones, colisión no sucede en este caso. Movimiento del jugador fue en vano, a pesar de que sería el aspecto del motor de gráficos que debe han devuelto la pelota. Tomando la contradicción más, la bola entonces incluso parecería que cruza con la pala, si el jugador a moverse hacia abajo. Esto sería una situación frustrante para el jugador. Por lo tanto, la entrada debería tratarse en algún momento antes de la detección de colisiones.
La AI se cae en una situación similar que el anterior. Si detección de colisiones se maneja antes de la IA se mueve, que conduce al mismo problema. Por lo tanto, la detección de la colisión debe ocurrir después de la AI y el jugador de entrada. No importa el orden con respecto a la AI y el reproductor de entrada; el movimiento de uno es independiente del otro.
Pero, ¿Cuándo se debe mover la bola? Tenga en cuenta que los gráficos se actualizan. por lo tanto, la ubicación de la bola actualmente mostrada por la televisión o el monitor es la última iteración. Si el programa era utilizar esta posición para detectar colisiones, entonces se presenta el mismo problema. Por lo tanto, la ubicación de la bola debe actualizarse primero.
La orden final es:
1. movimiento de la bola
2. el jugador entrada
3. AI
4. detección de colisiones a
5. actualización de la pantalla de juego
Con alguna motivación detrás de cómo funciona el juego, vamos a empezar a trabajar con algo de código.