Orden del step
Paso fijo
Sección titulada «Paso fijo»Brasa ejecuta la lógica del juego en pasos fijos de 1/60 de segundo, independientes de la velocidad de la computadora. Si un cuadro tarda, ejecuta más pasos para alcanzar (como máximo 5 por cuadro). Por eso las velocidades en “píxeles por paso” y los temporizadores en “pasos” se comportan igual en cualquier máquina.
Dentro de un paso
Sección titulada «Dentro de un paso»Para todas las instancias, en este orden:
- Temporizadores: se ejecutan los
after/everyvencidos. onUpdatede cada instancia, en el orden en que fueron creadas.- Movimiento: la gravedad y la fricción ajustan la velocidad,
hspeed/vspeedmueven la instancia (a menos quemoveAndStopya haya avanzado en este paso) y la animación avanza. - Colisiones: los
onCollidede quienes se están tocando. - Destrucciones: las instancias con
destroy()salen, y se llama a suonDestroy. - Nuevas instancias: las creadas durante el paso entran en la lista. Su
onSpawnya se ejecutó en el momento delspawn, pero el primeronUpdatesolo ocurre en el paso siguiente. - Cámara: la cámara de la room avanza un paso detrás del objetivo, con el suavizado y la zona muerta. Como avanza en el paso fijo, el suavizado es igual en cualquier monitor, de 60 Hz o de 144 Hz.
Después de los pasos, se dibuja el cuadro: todas las instancias visibles ejecutan onRender (las capas de atrás primero) y, por encima de todo, onRenderGui. La posición de la cámara se redondea a un píxel entero al dibujar, para que el personaje y el escenario cambien de píxel juntos.
Consecuencias prácticas
Sección titulada «Consecuencias prácticas»- Una posición cambiada en el
onUpdateya vale para las colisiones del mismo paso. destroy()no elimina al momento: la instancia termina el paso y sale al final. UsaisDestroyed()para no actuar dos veces.goToyrestartocurren al final del cuadro, después de que termina el paso actual.
