A melhor resposta é: depende .
Você não precisa limitar nem um
Atualizações : se suas atualizações não estiverem vinculadas a um limite superior, a lógica do jogo deve depender de um tempo delta , para evitar a execução do jogo mais rápido ou mais devagar, dependendo da máquina em que está sendo executado. Essa é uma abordagem muito comum usada por muitos jogos, mas não é a única.
Renderização : Se a renderização não estiver vinculada a um limite superior, o buffer de estrutura poderá ser apresentado em um estado incompleto ou incorreto, causando artefatos rasgantes . É por isso que muitos jogos empregam sincronização vertical (v-sync)
Você pode limitar ambos
Atualizações : alguns jogos usam timestados fixos para alguns ou todos os seus sistemas de jogo. Essa abordagem funciona exatamente como você descreveu. O número de atualizações por segundo é limitado a um limite superior para garantir que as coisas não se movam muito rapidamente em uma máquina de primeira linha. Isso elimina a necessidade de tempo delta. Alguns aplicativos são melhores com timestados fixos, outros com tempo delta. A escolha de qual abordagem dependerá inteiramente do que exatamente você está tentando alcançar. O livro online GameProgrammingPatterns possui um capítulo dedicado aos loops de jogos que abordam as duas arquiteturas.
Renderização : os quadros por segundo devem ser definidos como um limite superior para evitar o problema de laceração mencionado anteriormente; no entanto, seu aplicativo não deve tentar fazer isso manualmente com algum bloqueio da CPU. Em vez disso, ative o v-sync e deixe o hardware subjacente sincronizar com a taxa de atualização do monitor. Ao fazer isso, seu jogo será compatível com futuros monitores que podem operar com uma frequência muito maior do que os atuais 60Hz comuns. Também vale a pena notar que muitos jogadores, em particular aqueles que fazem benchmarking, ainda preferem rodar sem v-sync para permitir a maior taxa de quadros possível. Portanto, é sensato permitir ativar ou desativar o recurso durante o tempo de execução.
O que você não deve limitar
Se o seu jogo usar uma abordagem baseada em pesquisas para entrada do usuário, por exemplo: chama uma getInput()
espécie de para atualizar os estados do controlador durante a etapa de atualização, então isso é melhor, se não limitado. Ou, se limitado, defina um limite superior muito alto. Quanto mais você consultar a entrada do usuário e agir sobre ela, mais responsivo e suave o jogo "sentirá". Os chamados jogos de 60Hz que ouvimos hoje em dia não estão atualizando a IA e todos os estados do mundo nesse ritmo, alguns nem sequer são tão rápidos, mas consultam a entrada do controlador pelo menos 60 vezes por segundo e atualizam o avatar do jogador de acordo. Concedido que isso é realmente relevante apenas para jogos de ação rápidos.