¡He estado lidiando con algunos problemas de fluctuación de velocidad de fotogramas con mi juego últimamente, y parece que la mejor solución sería la sugerida por Glenn Fiedler (Gaffer en juegos) en el clásico Fix Your Timestep! artículo.
Ahora, ya estoy usando un intervalo de tiempo fijo para mi actualización. El problema es que no estoy haciendo la interpolación sugerida para renderizar. El resultado es que obtengo marcos duplicados u omitidos si mi velocidad de renderizado no coincide con mi velocidad de actualización. Estos pueden ser visualmente notables.
Por lo tanto, me gustaría agregar interpolación a mi juego, y estoy interesado en saber cómo otros han estructurado sus datos y códigos para respaldar esto.
Obviamente tendré que almacenar (¿dónde? / ¿Cómo?) Dos copias de la información del estado del juego relevante para mi renderizador, para que pueda interpolarse entre ellas.
Además, este parece ser un buen lugar para agregar subprocesos. Me imagino que un hilo de actualización podría funcionar en un tercera copia del estado del juego, dejando las otras dos copias como de solo lectura para el hilo de renderizado. (¿Es esta una buena idea?)
Parece que tener dos o tres versiones del estado del juego podría introducir rendimiento y, hasta ahora más importante, de confiabilidad y productividad del desarrollador, en comparación con tener una sola versión. Así que estoy particularmente interesado en métodos para mitigar esos problemas.
De particular interés, creo, es el problema de cómo manejar agregar y eliminar objetos del estado del juego.
Finalmente, parece que algún estado no es directamente necesario para renderizar, o sería demasiado difícil rastrear diferentes versiones de (por ejemplo: un motor de física de terceros que almacena un solo estado), por lo que me interesaría saber cómo las personas han manejado ese tipo de datos dentro de dicho sistema.