Pular para o conteúdo
Baixar

Ordem do step

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.

Para todas as instâncias, nesta ordem:

  1. Temporizadores: os after/every vencidos são executados.
  2. onUpdate de cada instância, na ordem em que foram criadas.
  3. Movimento: gravidade e atrito ajustam a velocidade, hspeed/vspeed movem a instância (a menos que moveAndStop já tenha andado neste passo) e a animação avança.
  4. Colisões: os onCollide de quem está encostado.
  5. Destruições: as instâncias com destroy() saem, e o onDestroy delas é chamado.
  6. Novas instâncias: as criadas durante o passo entram na lista. O onSpawn delas já rodou na hora do spawn, mas o primeiro onUpdate só acontece no passo seguinte.
  7. 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.

  • Uma posição mudada no onUpdate já 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. Use isDestroyed() para não agir duas vezes.
  • goTo e restart acontecem no fim do quadro, depois do passo atual terminar.