Mantenha as unidades visíveis no código
Escolha uma unidade de tempo e use-a de forma consistente. Se a velocidade estiver em pixels por segundo e o delta em segundos, a posição avança por velocidade × delta. Um teste manual útil é mover por dez segundos um marcador configurado para 80 pixels por segundo: ele deve percorrer cerca de 800 pixels no mundo, independentemente da quantidade de renderizações.
Não misture os milissegundos de performance.now() com uma velocidade por segundo sem dividir por 1.000. Nomeie os valores com suas unidades, como deltaSeconds ou speedPixelsPerSecond, para que um ajuste posterior não multiplique silenciosamente um movimento por mil.
Limite o efeito de uma pausa prolongada
Em um jogo de ação simples, limite delta a um máximo escolhido de propósito e aceite que a simulação fique brevemente mais lenta sob carga intensa. Em uma simulação de física que precisa de passos repetíveis, acumule o tempo e avance em incrementos fixos; limite o número de atualizações de recuperação para que esse processo não monopolize a página. Cada abordagem tem vantagens e custos: escolha de acordo com a sensação e as regras do jogo.
Teste com uma pausa artificial entre as atualizações e compare um movimento em linha reta com uma colisão no fim do percurso. Se o objeto atravessar um obstáculo fino, talvez sejam necessários subpassos menores ou um teste de colisão por varredura. Mudar apenas a taxa de renderização não resolverá esse problema nas regras do jogo.
Perguntas sobre delta time em jogos
O tempo delta torna a física determinística?
Não. Intervalos de atualização variáveis ainda podem produzir resultados de integração diferentes. Uma etapa de simulação fixa melhora a repetibilidade, embora o tempo de entrada e os detalhes de ponto flutuante ainda sejam importantes.
Qual relógio deve fornecer o tempo decorrido?
Use o carimbo de data/hora do callback de animação ou performance.now(); a MDN descreve ambos como fontes de tempo de alta resolução. Não use datas do relógio civil para intervalos curtos entre quadros, pois ajustes no relógio do sistema não têm relação com o tempo da simulação.
Leitura complementar
Viu alguma informação desatualizada? Informar uma correção