"Super Meat Boy" ist ein schwieriger Plattformer, der vor kurzem für den PC herausgekommen ist und außergewöhnliche Kontrolle und pixelgenaues Springen erfordert. Der Physikcode im Spiel hängt von der Bildrate ab, die auf 60 fps festgelegt ist. Dies bedeutet, dass, wenn Ihr Computer das Spiel nicht mit voller Geschwindigkeit ausführen kann, die Physik verrückt wird, was (unter anderem) dazu führt, dass Ihr Charakter langsamer rennt und durch den Boden fällt. Außerdem läuft das Spiel extrem schnell, wenn vsync ausgeschaltet ist.
Können diejenigen, die Erfahrung mit 2D-Spielprogrammierung haben, erklären, warum das Spiel auf diese Weise codiert wurde? Wäre eine Physikschleife mit konstanter Geschwindigkeit nicht eine bessere Lösung? (Eigentlich denke ich, dass für Teile des Spiels eine Physikschleife verwendet wird, da sich einige der Einheiten unabhängig von der Bildrate normal weiterbewegen. Ihr Charakter hingegen läuft genau [fps / 60] so schnell.)
Was mich an dieser Implementierung stört, ist der Verlust der Abstraktion zwischen der Spiel-Engine und dem Grafik-Rendering, der von systemspezifischen Dingen wie dem Monitor, der Grafikkarte und der CPU abhängt. Wenn Ihr Computer aus irgendeinem Grund nicht mit vsync umgehen kann oder das Spiel nicht mit genau 60 fps ausführen kann, wird es spektakulär kaputt gehen. Warum sollte der Rendering-Schritt die physikalischen Berechnungen in irgendeiner Weise beeinflussen? (Die meisten Spiele würden heutzutage entweder das Spiel verlangsamen oder Frames überspringen.) Andererseits verstehe ich, dass Plattformer der alten Schule auf dem NES und SNES für einen Großteil ihrer Steuerung und Physik von einer festen Bildrate abhängig waren. Warum ist das so und wäre es möglich, einen Benutzer in diesem Sinne zu erstellen, ohne die Abhängigkeit von der Framerate zu haben? Gibt es notwendigerweise einen Präzisionsverlust, wenn Sie das Grafik-Rendering vom Rest der Engine trennen?
Vielen Dank und sorry, wenn die Frage verwirrend war.