# Avance a simulação em etapas de tamanho fixo.

> Separe as atualizações físicas da renderização com uma etapa fixa de simulação, trabalho de atualização limitado e testes para travamentos e colisões.

- URL: https://oneshotgems.ai/pt-BR/topics/fixed-timestep-game-physics
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

Um retorno de chamada de renderização pode chegar em intervalos irregulares, mas a física do jogo geralmente se comporta de maneira mais previsível quando avança em etapas iguais de simulação. Um timestep fixo faz com que cada atualização tenha a mesma duração, enquanto a renderização pode acontecer sempre que o navegador estiver pronto para pintar. Esta é uma escolha prática de implementação, não uma promessa de determinismo perfeito: chegada de entrada, comportamento de ponto flutuante e regras de colisão ainda são importantes. Use-o quando etapas de simulação estáveis ​​ajudarem sua mecânica e teste como o loop responde após um travamento do loop.

## Acumule o tempo decorrido e execute atualizações locais

Em cada retorno de chamada de animação, adicione o tempo decorrido a um acumulador. Embora o acumulador contenha pelo menos uma etapa, atualize a física em um intervalo constante, como 1/60 de segundo, e subtraia esse intervalo. Em seguida, renderize o estado mais recente. Defina um número máximo de etapas de atualização por quadro; caso contrário, uma pausa longa pode causar um grande atraso que consome mais tempo e aprofunda o atraso. Decida explicitamente se o tempo excedente será eliminado, limitado ou tratado por outra regra de recuperação.

Mantenha as unidades consistentes. Se a velocidade for medida em unidades do mundo do jogo por segundo, multiplique-a pelo passo fixo dentro de cada atualização da simulação. Não multiplique a mesma velocidade pelo tempo total decorrido do quadro e também execute várias atualizações fixas, ou o movimento será contado duas vezes.

## Lide com entrada e renderização em seus próprios limites

Amostre a entrada mantida em cada etapa da simulação ou enfileira ações únicas até que uma etapa as consuma. Se ocorrer um pressionamento de tecla entre dois quadros, certifique-se de que não seja perdido antes da próxima atualização. A renderização pode interpolar entre estados físicos, enquanto a colisão e a pontuação usam o estado de simulação. O MDN descreve requestAnimationFrame como um retorno de chamada único agendado antes da repintura e aconselha o uso de seu carimbo de data/hora para calcular o progresso; um acumulador usa esse carimbo de data/hora para manter as atualizações fixas.

## Teste os limites do loop

Compare o mesmo movimento curto e colisão em quadros comuns, um quadro lento simulado e uma pausa mais longa. Verifique se um jogador não atravessa uma parede fina, ganha velocidade extra após um travamento do quadro ou provoca uma colisão várias vezes durante a recuperação. Teste a pausa e o retorno da guia oculta de acordo com a regra pretendida. Se o loop de passo fixo tornar a simulação estável, mas uma colisão ainda falhar em alta velocidade, use um método de colisão adequado ao movimento em vez de aumentar a frequência de renderização.

## Perguntas

**Um intervalo de tempo fixo garante física determinística?** Não. Isso torna o intervalo de simulação consistente, mas o tempo de entrada, a matemática e a ordem de colisão ainda podem produzir variação. Controle-os separadamente para testes que exigem repetição.

**Por que limitar as atualizações de atualização após uma paralisação de quadros?** Sem limites, a atualização pode monopolizar os frames posteriores e piorar o atraso. Escolha e teste uma política de recuperação adequada ao jogo, incluindo se o tempo simulado pode ser descartado.

## Siga sua curiosidade

- [Use delta time sem movimentos bruscos](https://oneshotgems.ai/pt-BR/topics/delta-time-in-games): Aplique o tempo decorrido ao movimento do jogo, escolha uma política de recuperação segura e teste o movimento em diferentes taxas de atualização e após paralisações.
- [Escolha verificações de colisão para um jogo pequeno](https://oneshotgems.ai/pt-BR/topics/game-collision-detection): Escolha uma representação de colisão adequada ao seu jogo, reduza verificações de pares desnecessárias e diagnostique objetos que passam por obstáculos.

## Leitura complementar

- [Solicitação MDNAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/fixed-timestep-game-physics
