mOrs hat geschrieben:
Dass Street Fighter - und übrigens auch, soweit ich weiß, JEDES andere Fight Game - mit 60FPS laufen soll und muss, liegt daran, dass man im Grunde die einzelnen Frames als "Runden" sehen könnte. Wer eine Aktion (einen leichten Schlag) in Runde 1 startet, ist damit in Runde 3 fertig. Darauf basiert im Grunde ein Großteil des Schlagabtauschs in Fight Games.
Auf dieser Grundlage wird alles gebalanced und ausgelegt. Klar kann man das rein theoretisch mit 120FPS laufen lassen. Dann wäre eine Aktion, die man in Runde 1 startet in Runde 1,5 beendet.
Richtig, aber trotzdem falsch, denn genau da liegt der Denkfehler.
Die grafische Anzeige, also die FPS und die Gameticks gehören sich entkoppelt. Man legt dabei z.B. 1/60 Sekunde als Gametick fest in diesem Intervall wertet man Eingaben und deren Resultate aus UNABHÄNGIG von der Grafikausgabe.
Ein Punch dauert dann ab Start, also Knopfdruck 3 Gameticks, also 3/60 Sekunden.
Optimal ist natürlich, wenn AUCH die Bildausgabe 60fps bringt, dann fällt ein Gametick "zufällig" auch genau mit einem Frame zusammen.
Wenn das aber entkoppelt läuft, dann dauert der Punch auch mit 20fps 3/60 Sekunden, in dem Fall also 2 Frames. Ein anderer Spieler lässt das Spiel mit 120fps laufen, der Punch dauert aber trotzdem 3/60 Sekunden, nur sieht dieser Spieler in der gleichen Zeit halt 6 Frames.
Das hat dann auch zusätzlich den Vorteil, dass man die Gameticks z.B. auf einem eigenen Kern laufen lassen kann und alles grafische (was nicht die GPU selbst macht) z.B. auf einem anderen. Das hat auch den Vorteil, dass man die 60 Gameticks pro Sekunde zuverlässiger halten kann, weil die dafür verantwortliche Recheneinheit nicht mit zig anderen Sachen belästigt wird.
Unfair ist das insofern, dass der mit der höheren Framerate eine Aktion ein paar Millisekunden früher sehen kann und damit im Vorteil ist, falls er so schnell reagieren kann. Deswegen würde man natürlich trotzdem anstreben, das die Grafikausgabe bei 60fps stabil bleibt und ggf. trotzdem die Framerate begrenzen. Technisch muss man das aber nicht, und wenn man es doch muss, dann ist das Spiel schlecht implementiert.
Ist schon ewig her, aber wenn ich mich richtig erinnere, laufen die idTech-Engines schon seit geraumer Zeit mit 120 Gameticks pro Sekunde, völlig unabhängig von der Framerate. Deswegen hat selbst Quake 1 schon keine Probleme, wenn es jetzt auf aktueller Hardware mit 800fps läuft.
mOrs hat geschrieben:
Die FPS müssen in einem solchen Spiel festgelegt sein, sonst bringt man, wie gerade ausgeführt, alles durcheinander.
Aus fairnessgründen sollte die Framerate stabil und bei allen gleich sein. Aus technischer Sicht gibt es keinen Grund dafür, wenn die Engine eben richtig entkoppelt ist. Ist sie das nicht, ist das im Prinzip pfusch.