Ordem do step
Passo fixo
Seção intitulada “Passo fixo”A Brasa roda a lógica do jogo em passos fixos de 1/60 de segundo, independentes da velocidade do computador. Se um quadro demorar, ela roda mais passos para alcançar (no máximo 5 por quadro). Por isso velocidades em “pixels por passo” e temporizadores em “passos” se comportam igual em qualquer máquina.
Dentro de um passo
Seção intitulada “Dentro de um passo”Para todas as instâncias, nesta ordem:
- Temporizadores: os
after/everyvencidos são executados. onUpdatede cada instância, na ordem em que foram criadas.- Movimento: gravidade e atrito ajustam a velocidade,
hspeed/vspeedmovem a instância (a menos quemoveAndStopjá tenha andado neste passo) e a animação avança. - Colisões: os
onCollidede quem está encostado. - Destruições: as instâncias com
destroy()saem, e oonDestroydelas é chamado. - Novas instâncias: as criadas durante o passo entram na lista. O
onSpawndelas já rodou na hora dospawn, mas o primeiroonUpdatesó acontece no passo seguinte. - Câmera: a câmera da room anda um passo atrás do alvo, com a suavização e a zona morta. Como ela anda no passo fixo, a suavização é igual em qualquer monitor, de 60 Hz ou de 144 Hz.
Depois dos passos, o quadro é desenhado: todas as instâncias visíveis rodam onRender (as camadas de trás primeiro) e, por cima de tudo, onRenderGui. A posição da câmera é arredondada para um pixel inteiro na hora de desenhar, para o personagem e o cenário trocarem de pixel juntos.
Consequências práticas
Seção intitulada “Consequências práticas”- Uma posição mudada no
onUpdatejá vale para as colisões do mesmo passo. destroy()não remove na hora: a instância termina o passo e sai no fim dele. UseisDestroyed()para não agir duas vezes.goToerestartacontecem no fim do quadro, depois do passo atual terminar.
