"Super Meat Boy" è un platform difficile che è recentemente uscito per PC, che richiede un controllo eccezionale e un salto perfetto per i pixel. Il codice fisico nel gioco dipende dal framerate, che è bloccato a 60fps; questo significa che se il tuo computer non è in grado di eseguire il gioco alla massima velocità, la fisica diventerà pazza, causando (tra le altre cose) il tuo personaggio a correre più lentamente e cadere nel terreno. Inoltre, se vsync è disattivato, il gioco funziona estremamente velocemente.
Quelli che hanno esperienza con la programmazione di giochi 2D potrebbero spiegare perché il gioco è stato codificato in questo modo? Un circuito fisico che funziona a un ritmo costante non sarebbe una soluzione migliore? (In realtà, penso che un ciclo di fisica sia usato per parti del gioco, poiché alcune entità continuano a muoversi normalmente indipendentemente dal framerate. Il tuo personaggio, invece, corre esattamente [fps / 60] il più velocemente.)
Ciò che mi preoccupa di questa implementazione è la perdita di astrazione tra il motore di gioco e il rendering grafico, che dipende da elementi specifici del sistema come il monitor, la scheda grafica e la CPU. Se, per qualsiasi motivo, il tuo computer non è in grado di gestire vsync o non può eseguire il gioco esattamente a 60 fps, si romperà in modo spettacolare. Perché la fase di rendering dovrebbe in qualche modo influenzare i calcoli della fisica? (La maggior parte dei giochi oggigiorno rallenterebbe il gioco o salterebbe i frame.) D'altra parte, capisco che i platform della vecchia scuola su NES e SNES dipendevano da un framerate fisso per gran parte del loro controllo e fisica. Perché è questo, e sarebbe possibile creare un formulatore in tal senso senza avere la dipendenza framerate? Vi è necessariamente una perdita di precisione se si separa il rendering grafico dal resto del motore?
Grazie e scusa se la domanda era confusa.