Framerate-unabhängige Spiellogik

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[unmarkierte Version][unmarkierte Version]
(Weblinks)
K (Nachteile)
Zeile 114: Zeile 114:
 
Bei einer einfachen Implementierung stellt die Logikrate eine obere Schranke für die Bildwiederholrate dar. Ein Spiel, das 30 Logik-Schritte pro Sekunde durchführt, kann auch nur 30 sinnvolle Bilder pro Sekunde anzeigen, da es "dazwischen" keine neuen Spielzustände gibt. Dies kann jedoch mit einigem Aufwand umgangen werden, indem einzig für die Grafikdarstellung zwischen den letzten beiden berechneten Spielzuständen interpoliert wird (wodurch allerdings eine kleine Verzögerung entsteht)<ref>[http://gafferongames.com/game-physics/fix-your-timestep/ ''Fix Your Timestep!'']. Glenn Fiedler. gafferongames.com – Glenn Fiedler's Game Development Articles and Tutorials. 2. September 2006.</ref>.
 
Bei einer einfachen Implementierung stellt die Logikrate eine obere Schranke für die Bildwiederholrate dar. Ein Spiel, das 30 Logik-Schritte pro Sekunde durchführt, kann auch nur 30 sinnvolle Bilder pro Sekunde anzeigen, da es "dazwischen" keine neuen Spielzustände gibt. Dies kann jedoch mit einigem Aufwand umgangen werden, indem einzig für die Grafikdarstellung zwischen den letzten beiden berechneten Spielzuständen interpoliert wird (wodurch allerdings eine kleine Verzögerung entsteht)<ref>[http://gafferongames.com/game-physics/fix-your-timestep/ ''Fix Your Timestep!'']. Glenn Fiedler. gafferongames.com – Glenn Fiedler's Game Development Articles and Tutorials. 2. September 2006.</ref>.
  
Die Methode fester Zeitschritte erfordert, dass der Rechner prinzipiell in der Lage ist, die angeforderte Anzahl von Logik-Schritten zu berechnen. Mit anderen Worten: Das Spiel muss die Zeit auf dem Zeitkonto schneller abarbeiten als sie angesammelt wird. Ansonsten steigt der Wert auf dem Zeitkonto kontinuierlich an, und jeder Aufruf von <tt>SpielzustandAktualisieren</tt> dauert länger als der vorherige, bis das Spiel völlig unspielbar wird. Diesen Fall gilt es zu erkennen. Steigt das Zeitkonto dauerhaft an, so ist davon auszugehen, dass der Rechner für die gewählte Logikrate zu langsam ist. Die Logikrate kann jedoch nicht zur Laufzeit geändert werden, da der Vorteil fester Zeitschritte gerade darin besteht, sich auf eben diese verlassen zu können. In diesem Fall könnte dem Spieler eine Warnung angezeigt werden, oder der Detailgrad einiger rechenintensiver Effekte könnte automatisch reduziert werden. Um einen weiteren Anstieg des Zeitkontos zu verhindern, kann das gesamte Spiel verlangsamt werden, indem <tt>Δt</tt> vor dem Aufsummieren mit einem Verlangsamungsfaktor multipliziert wird.
+
Die Methode fester Zeitschritte erfordert, dass der Rechner prinzipiell in der Lage ist, die angeforderte Anzahl von Logik-Schritten zu berechnen. Mit anderen Worten: Das Spiel muss die Zeit auf dem Zeitkonto schneller abarbeiten als sie angesammelt wird. Ansonsten steigt der Wert auf dem Zeitkonto kontinuierlich an, und jeder Aufruf von <tt>SpielzustandAktualisieren</tt> dauert länger als der vorherige, bis das Spiel völlig unspielbar wird. Diesen Fall gilt es zu erkennen. Steigt das Zeitkonto dauerhaft an, so ist davon auszugehen, dass der Rechner für die gewählte Logikrate zu langsam ist. Die Logikrate kann jedoch nicht zur Laufzeit geändert werden, da der Vorteil fester Zeitschritte gerade darin besteht, sich auf eben diese verlassen zu können. In diesem Fall könnte dem Spieler eine Warnung angezeigt werden, oder der Detailgrad einiger rechenintensiver Effekte könnte automatisch reduziert werden. Um einen weiteren Anstieg des Zeitkontos zu verhindern, kann das gesamte Spiel verlangsamt werden, indem <tt>Δt</tt> vor dem Aufsummieren mit einem Verlangsamungsfaktor multipliziert wird. Alternativ kann eine obere Grenze für das Zeitkonto festgelegt werden.
  
 
Diese beiden Probleme erfordern eine vorsichtige Auswahl der Logikrate. Ist sie zu gering, so läuft das Spiel (ohne Interpolation) optisch nicht flüssig. Ist sie zu hoch, steigt die Gefahr, dass ein Rechner die geforderte Anzahl von Aktualisierungen pro Sekunde nicht bewältigen kann.
 
Diese beiden Probleme erfordern eine vorsichtige Auswahl der Logikrate. Ist sie zu gering, so läuft das Spiel (ohne Interpolation) optisch nicht flüssig. Ist sie zu hoch, steigt die Gefahr, dass ein Rechner die geforderte Anzahl von Aktualisierungen pro Sekunde nicht bewältigen kann.

Version vom 10. November 2011, 15:08 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge