"Super Meat Boy" é um jogo de plataformas difícil lançado recentemente para PC, exigindo controle excepcional e salto perfeito em pixels. O código de física no jogo depende da taxa de quadros, que está bloqueada para 60fps; isso significa que se o seu computador não puder rodar o jogo a toda velocidade, a física ficará louca, causando (entre outras coisas) seu personagem correr mais devagar e cair no chão. Além disso, se o vsync estiver desativado, o jogo corre extremamente rápido.
Os experientes em programação de jogos 2D poderiam ajudar a explicar por que o jogo foi codificado dessa maneira? Não seria um loop físico funcionando a uma taxa constante uma solução melhor? (Na verdade, acho que um loop de física é usado para partes do jogo, já que algumas das entidades continuam a se mover normalmente, independentemente da taxa de quadros. Seu personagem, por outro lado, roda exatamente [fps / 60] o mais rápido.)
O que me incomoda nessa implementação é a perda de abstração entre o mecanismo do jogo e a renderização gráfica, que depende de coisas específicas do sistema, como monitor, placa gráfica e CPU. Se, por qualquer motivo, seu computador não suportar o vsync ou o jogo a exatamente 60fps, ele será quebrado de maneira espetacular. Por que a etapa de renderização influencia de alguma forma os cálculos da física? (Atualmente, a maioria dos jogos atualmente diminui a velocidade do jogo ou ignora os quadros.) Por outro lado, entendo que os criadores de plataformas da velha escola do NES e do SNES dependiam de uma taxa de quadros fixa para grande parte de seu controle e física. Por que isso é possível e seria possível criar um modificador nesse sentido sem a dependência da taxa de quadros? Existe necessariamente uma perda de precisão se você separar a renderização gráfica do restante do mecanismo?
Obrigado e desculpe se a pergunta foi confusa.