¿Cómo implementar un bucle de juego en banana reactiva?

Esta pregunta es específica para simulaciones de banano reactivo y en tiempo real con un componente físico y visual (por ejemplo, juegos).

De acuerdo a¡Arregla tu paso del tiempo! la forma ideal de configurar un bucle de juego (suponiendo que la física debe ser reproducible), necesita un paso de tiempo fijo entre los cuadros. Después de considerar una serie de complicaciones reales, el autor llega a este bucle de juego:

double t = 0.0;
const double dt = 0.01;

double currentTime = hires_time_in_seconds();
double accumulator = 0.0;

State previous;
State current;

while ( !quit )
{
     double newTime = time();
     double frameTime = newTime - currentTime;
     if ( frameTime > 0.25 )
          frameTime = 0.25;   // note: max frame time to avoid spiral of death
     currentTime = newTime;

     accumulator += frameTime;

     while ( accumulator >= dt )
     {
          previousState = currentState;
          integrate( currentState, t, dt );
          t += dt;
          accumulator -= dt;
     }

     const double alpha = accumulator / dt;

     State state = currentState*alpha + previousState * ( 1.0 - alpha );

     render( state );
}

La sinopsis es que la simulación física siempre se alimenta con el mismo incremento de tiempo (dt) Para la estabilidad numérica. Hacer arreglos para eso debe tener en cuenta que la física y los visuales pueden actualizarse a diferentes frecuencias y que no desea retrasarse demasiado.

Por ejemplo, es posible que desee actualizaciones a una frecuencia de 20 hz, pero una actualización visual con una frecuencia de cuadros de 60 hz. Este bucle hace la interpolación lineal de la física para compensar la diferencia entre las actualizaciones de la física y las actualizaciones gráficas.

Además, cuando la diferencia en el tiempo entre marcos es mucho mayor quedt hay un bucle para manejar el paso de las actualizaciones en trozos dedt. La nota sobre la espiral de la muerte solo se refiere a un caso en el que el cálculo de su física simplemente no puede mantenerse al día con la frecuencia deseada de actualizaciones, por lo que le permite omitir algunas actualizaciones.

Para esta discusión, la parte que más me interesa es organizar para que la llamada al motor de física (la llamada aintegrate) siempre paso pordt. Haceplátano reactivo ¿Permitir al usuario escribir este bucle de estilo? ¿Si es así, cómo? ¿Quizás un ejemplo de simulación de física en tiempo real está en orden (o ya existe)?