Não, a taxa de quadros não deve afetar a velocidade - a jogabilidade depende inteiramente do desempenho do vídeo, o que é desastroso (mesmo que você limite a velocidade, você não pode controlar as pessoas cujos sistemas rodam o jogo a meia velocidade).
Você está enfrentando esse problema porque fez algo errado: suas rotinas de atualização / renderização são executadas uma após a outra o mais rápido possível, com a atualização de objetos por chamada (assim, quando a velocidade da chamada diverge, a deles também).
Uma abordagem baseada no tempo
A maneira correta de fazer isso é atualizar os objetos por segundo .
Considere um exemplo, por exemplo: No momento, ele provavelmente sabe quanto precisa se mover por quadro. Você precisa transformar isso em quanto ele se move por segundo . Como você faz isso não é realmente muito complicado.
Primeiro, seu marcador será atualizado mais de uma vez por segundo, portanto, precisamos atualizá-lo a cada poucos milissegundos. Cada vez que você atualiza seu mecanismo de física, um certo número de milissegundos se passou desde a última atualização: isso é chamado de tempo delta , normalmente dt para abreviar. O dt é determinado antes de atualizar todos os objetos e, em seguida, todos os objetos são atualizados usando o mesmo dt para manter a sincronização. O dt geralmente é passado como argumento para cada objeto em sua chamada de atualização.
Na física de etapas fixas, o dt é um número fixo, enquanto na física de etapas variáveis, o dt varia dependendo da quantidade real de tempo desde a última atualização (daí os nomes).
Isso nos leva de volta à sua bala. Foi dito para atualizar com um dt de 16 milissegundos, para um mecanismo de física atualizado 60 vezes por segundo: se a bala se mover 12 metros por segundo, você a moverá (16.0/1000.0) * 12.0
nesta atualização.