Nai schrieb:
Bei dieser Vorgehensweise ist jedoch problematisch, dass die Simulationsgenauigkeit im Endeffekt von der Geschwindigkeit des Computers abhängig ist[..]Deshalb bevorzuge ich persönlich Mainloops wo DT konstant ist
Eben, deshalb eben der Ausgleich über einen Korrekturterm wie z.b. El_Sheepy es beschrieben hat. Damit ist das kein Problem und das Spiel kann auch mit 2 oder 9999 FPS laufen, die Spielgeschwindigkeit bleibt gleich. Eine erzwungene konstante Schleifenlaufzeit mag zwei bei hoher Laufrate Sinn machen, aber sobald es zu lange dauert, macht sichs auch bemerkbar.
Das mit der beschleunigten Bewegung sehe ich nicht als Problem, physikalisch ist daran ja nichts falsch. Hatte da noch nie Probleme damit. Natürlich gibt es auch einen Fehler, der dadurch entsteht, dass die Korrektur immer nur den vorherigen Frame ausgleicht, das tritt aber auch schon bei linearen Bewegungen auf. Aber da im seltensten Fall überhaupt eine höhere Ordnung als 2 auftritt, sollte sich da nichts fortpflanzen, vorallem wenn man bedenkt, in welcher zeitlichen Größenordnung wir uns eigentlich befinden. Als Spieler unspürbar, und selbst für Netzwerksynchronität sollte, wenn nicht gerade über einen längeren Zeitraum die FPS sehr stark fluktuiert, das völlig ausreichend sein.
Aber ich kann man hier auch vorstellen, dass man durch Multithreading hier eleganter und genauer arbeiten könnte, aber wie schon erwähnt, up-to-date bin ich da leider nicht. Aber führt wohl hier auch zu weit
yii schrieb:
Das ist zwar richtig, aber nicht relevant für Fighting Games wie Killer Instinct, Mortal Kombat, Street Fighter etc.Die laufen seit jeher mit 60fps, und daran gebundenen Animationen.
Danke für die Erklärung, mit dem Genre bin ich nicht vertraut. Das mit den Animationen macht Sinn - dann sollte aber auch die Korrektur kein hoher Aufwand sein. Dann müssen nur die Darstellungsfunktionen zeitabhängig korrigiert werden, denn "nicht revelant" ist es auch hier nicht. Das ursprüngliche Prinzip bleibt ja das gleiche, es wird dann nur der Framezähler der Animationen pro Schleifendurchlauf um den Wert 1 erhöht anstatt z.B. einer Translation eines Objektes. Hier könnte man einen analogen Ansatz nehmen und die Korrektur auf den Zähler draufsatteln und für den Frame zur Darstellung einfach die Nachkommastellen abschneiden. So wäre ich zumindest mal ganz naiv vorgegangen.
Aber da ich mal vermute, dass diese Art von Spielen nicht so anspruchsvoll sind, dass sie jemals in den < 60 FPS Bereich kommen, tut es wohl wirklich auch ein einfacher FPS Lock. Wobei ich ich mir dann aber die Frage stelle, wie man sowas veröffentlichen kann, ohne dass dies beim testen auffällt.