Enfoque: mayor tasa de simulación
Su sincronización para su interfaz de usuario debe estar desacoplada de su ciclo de juego real, al igual que su representación. Digamos, por ejemplo, que su mundo corre a una velocidad 4x. Digamos que a tu velocidad básica (1x), tu juego ejecuta 30 actualizaciones por segundo.
Entonces tendría algo como lo siguiente, cuando esté en modo de avance rápido:
- World logic ejecuta 4 actualizaciones para cada actualización de la interfaz de usuario y el procesador. Esto significa que necesita ejecutar 120 actualizaciones por segundo. Por lo tanto, su modelo mundial (datos) se actualiza a este ritmo.
- El procesador y la lógica de la interfaz de usuario continúan sondeando o hacen lo que sea a 30 actualizaciones por segundo.
En otras palabras, el juego en su conjunto no funciona más rápido. La parte de simulación es.
Puedes deducir dos cosas de esto:
Debes mantener la lógica de tu juego lo suficientemente simple como para poder ejecutarla cuatro veces más rápido en tu plataforma objetivo, O necesitas introducir métodos para extrapolar varios aspectos de la jugabilidad más rápidamente; sin embargo, esto puede resultar en un modelo que es diferente de lo que hubiera sido si simplemente hubiera utilizado una simulación de ritmo más rápido. Por lo tanto, la compensación sería el costo de procesamiento por precisión. Ver enfoque 2, más abajo.
Es la separación de preocupaciones lo que le permite acelerar fácilmente su simulación mundial, siendo esa separación modelo, vista y controlador ( MVC ). Si sus datos mundiales (M), la lógica de procesamiento (V) y la lógica del juego (C) están todos mezclados, realmente no podrá hacer esto, al menos no sin una migraña masiva.
Enfoque: extrapolación basada en deltas de tiempo
Como se mencionó anteriormente, deberá calcular el movimiento en función de lo lejos que habría viajado algo en un momento dado. Sin embargo, esto supone que la física de su juego es inherentemente más realista en su simulación, lo cual puede no ser el caso. Este es un tema bastante más amplio y considerablemente más complejo. Tendrá que hacer más preguntas sobre si desea saber. Básicamente, harás algunos cálculos para hacer las cosas bien. Tendrá que lidiar con la interpenetración en colisiones y una serie de otros problemas que no abordaré aquí.
Para concluir
Esto te da el esquema general. Tu elección de idioma es tuya, presumiblemente sabes cómo hacerlo en Unity o no. El tiempo en cualquier idioma requiere que comprenda los entresijos en detalle, sugiero comenzar con los artículos de Gaffer y consultar los documentos de la API de Unity.