Oneshot Gems
Jugar ahora

Para desarrolladores de juegos

Avanza la simulación en pasos de tamaño fijo.

Una devolución de llamada de renderizado puede llegar a intervalos desiguales, pero la física del juego a menudo se comporta de manera más predecible cuando avanza en pasos iguales de simulación. Un paso de tiempo fijo hace que cada actualización tenga la misma duración, mientras que el renderizado puede ocurrir cuando el navegador esté listo para pintar. Esta es una opción de implementación práctica, no una promesa de determinismo perfecto: la llegada de entradas, el comportamiento del punto flotante y las reglas de colisión siguen siendo importantes. Úselo cuando los pasos de simulación estable ayuden a las mecánicas del juego y pruebe cómo responde el bucle después de una pausa prolongada del bucle.

En esta página

Acumule el tiempo transcurrido y ejecute actualizaciones limitadas

En cada devolución de llamada de animación, agregue el tiempo transcurrido a un acumulador. Mientras el acumulador contenga al menos un paso, actualice la física en un intervalo constante, como 1/60 de segundo, y reste ese intervalo. Luego renderice el último estado. Establezca un número máximo de pasos de recuperación por cuadro; de lo contrario, una pausa prolongada puede provocar un gran retraso que consume más tiempo y profundiza el retraso. Decida explícitamente si otra regla de recuperación elimina, limita o maneja el exceso de tiempo.

Mantenga las unidades consistentes. Si la velocidad se mide en unidades del mundo del juego por segundo, multiplíquela por el paso fijo dentro de cada actualización de la simulación. No multiplique la misma velocidad por el tiempo transcurrido completo del cuadro y tampoco ejecute varias actualizaciones fijas, o el movimiento se contará dos veces.

Manejar la entrada y el renderizado en sus propios límites.

Muestree la entrada mantenida para cada paso de la simulación o ponga en cola acciones únicas hasta que un paso las consuma. Si se presiona una tecla entre dos fotogramas, asegúrese de que no se pierda antes de la próxima actualización. El renderizado puede interpolar entre estados físicos, mientras que la colisión y la puntuación utilizan el estado de simulación. MDN describe requestAnimationFrame como una devolución de llamada única programada antes del repintado y recomienda usar su marca de tiempo para calcular el progreso; un acumulador usa esa marca de tiempo para mantener fijas las actualizaciones.

Pruebe los límites del bucle

Compare el mismo movimiento breve y colisión en fotogramas normales, un fotograma lento simulado y una pausa más larga. Verifique que un jugador no atraviese una pared delgada, gane velocidad adicional después de una pausa prolongada del bucle o provoque una colisión varias veces durante la recuperación. Pruebe la pausa y el retorno de pestaña oculta de acuerdo con la regla prevista. Si el bucle de paso fijo hace que la simulación sea estable pero aún así se pierde una colisión a alta velocidad, utilice un método de colisión adecuado al movimiento en lugar de aumentar la frecuencia de renderizado.

Preguntas sobre ⁨física del juego de paso de tiempo fijo⁩

¿Un paso de tiempo fijo garantiza una física determinista?

No. Hace que el intervalo de simulación sea consistente, pero el tiempo de entrada, las matemáticas y el orden de las colisiones aún pueden producir variaciones. Contrólelos por separado para las pruebas que requieren repetición.

¿Por qué limitar las actualizaciones de recuperación tras un bloqueo de fotograma?

Sin límite, ponerse al día puede monopolizar fotogramas posteriores y empeorar el retraso. Elija y pruebe una política de recuperación que se ajuste al juego, incluido si se puede descartar el tiempo simulado.

Más información

¿Has visto algo desactualizado? Notificar una corrección

Sigue jugando.

Juegos de navegador gratis, listos cuando tú quieras. Encuentra uno que te guste y conviértelo en tu nuevo favorito.

Sigue tu curiosidad