Framerate-unabhängige Spiellogik

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[unmarkierte Version][unmarkierte Version]
K (Links)
(Vorteile)
Zeile 108: Zeile 108:
 
Mit festen Zeitschritten ist außerdem immer gewährleistet, dass <code>SpielzustandAktualisieren(0.1)</code> dieselbe Wirkung hat wie ein zweifacher Aufruf von <code>SpielzustandAktualisieren(0.05)</code>, da letztendlich bei beiden Varianten gleich viele elementare Zeitschritte ausgeführt werden.
 
Mit festen Zeitschritten ist außerdem immer gewährleistet, dass <code>SpielzustandAktualisieren(0.1)</code> dieselbe Wirkung hat wie ein zweifacher Aufruf von <code>SpielzustandAktualisieren(0.05)</code>, da letztendlich bei beiden Varianten gleich viele elementare Zeitschritte ausgeführt werden.
  
Aus diesen Vorteilen ergibt sich eine relativ einfache Möglichkeit zur Realisierung einer ''Replay- oder Demo-Funktion'' in einem Spiel. Dazu müssen bei der Aufnahme alle Benutzereingaben (Tastendruck, Mausbewegung usw.) zusammen mit einem Zeitstempel (der logischen Frame-Nummer) abgespeichert und beim Abspielen zum entsprechenden Zeitpunkt wieder in das Spiel eingespeist werden. Vorausgesetzt, dass die Benutzereingabe das einzige maßgeblich beeinflussende Kriterium für den Ablauf des Spiels darstellt, wird die Aufnahme beim Wiederabspielen genau so aussehen wie das Original. Eventuell vorhandene Zufallsgeneratoren sollten dazu natürlich mit dem gleichen Startwert initialisiert werden. Diese Art der Implementierung ist wesentlich unkomplizierter als beispielsweise das Abspeichern der Objektzustände zu jedem Zeitpunkt. Hier gilt es jedoch zu beachten, dass Berechnungen mit Gleitkommazahlen oft verschiedene Ergebnisse produzieren, abhängig vom Prozessor, dem Compiler und seinen Optimierungseinstellungen<ref>[http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/ ''Floating Point Determinism'']. Glenn Fiedler. gafferongames.com. 24. Februar 2010.</ref>.
+
Aus diesen Vorteilen ergibt sich eine relativ einfache Möglichkeit zur Realisierung einer ''Replay- oder Demo-Funktion'' in einem Spiel. Dazu müssen bei der Aufnahme alle Benutzereingaben (Tastendruck, Mausbewegung usw.) zusammen mit einem Zeitstempel (der logischen Frame-Nummer) abgespeichert und beim Abspielen zum entsprechenden Zeitpunkt wieder in das Spiel eingespeist werden. Vorausgesetzt, dass die Benutzereingabe das einzige maßgeblich beeinflussende Kriterium für den Ablauf des Spiels darstellt, wird die Aufnahme beim Wiederabspielen genau so aussehen wie das Original. Eventuell vorhandene Zufallsgeneratoren sollten dazu natürlich mit dem gleichen Startwert initialisiert werden. Diese Art der Implementierung ist wesentlich unkomplizierter als beispielsweise das Abspeichern der Objektzustände zu jedem Zeitpunkt. Hier gilt es jedoch zu beachten, dass Berechnungen mit Gleitkommazahlen oft verschiedene Ergebnisse produzieren, abhängig vom Prozessor, dem Compiler und seinen Optimierungseinstellungen<ref>[http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/ ''Floating Point Determinism'']. Glenn Fiedler. gafferongames.com – Glenn Fiedler's Game Development Articles and Tutorials. 24. Februar 2010.</ref>.
  
 
==== Nachteile ====
 
==== Nachteile ====

Version vom 10. November 2011, 14:52 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge