Update: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Update ist eine [[Methode]] der Klasse <tt>Game</tt><ref name="Game">http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.aspx MSDN-Artikel zur Klasse Game</ref>. [[XNA]] versucht, diese Methode etwa 60 mal pro Sekunde auzurufen<ref name="GameTiming">http://blogs.msdn.com/shawnhar/archive/2007/07/25/understanding-gametime.aspx Shawn Hargreaves: Understanding GameTime</ref>.
{{Stub}}
 
[[Update]] ist eine [[Methode]] der Klasse <tt>Game</tt><ref name="Game">http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.aspx MSDN-Artikel zur Klasse Game</ref>.
 
Die gesamte Spiellogik und [[Game Mechanic]] sollte ausschließlich über diese [[Methode]] gesteuert und aktualisiert werden. Hier sollte keinerlei Rendering stattfinden, da dafür die [[Draw]] Methode zuständig ist.
 
 
Sofern der [[Fixed Time Step]] ''aktiviert'' ist, wird [[XNA]] versuchen diese [[Methode]] genau 60 mal pro Sekunde aufzurufen (60 [[Frames per Second|Frames pro Sekunde]], FPS). Zeitabhängige Vorgänge, wie beispielsweise die kontinuierliche Drehung eines Objektes mit konstanter Geschwindigkeit, können dann einfach realisiert werden indem man das Objekt in jedem ''Frame'', also jedem Aufruf der [[Update]] Mehtode, um den selben Betrag (hier Grad) dreht.
* Beispiel, Drehung eines Objektes: 1 Grad pro Frame <tt>-></tt> 60 Grad pro Sekunde.
 
 
Wenn der [[Fixed Time Step]] ''ausgeschaltet'' ist wird [[XNA]] die [[Update]] und die [[Draw]] Methode einfach im Wechsel hintereinander so oft wie möglich aufrufen. Das bedeutet dass die Zeit die zwischen zwei Update-Zyklen stark variieren kann (je nach Komplexität des aktuellen Update- oder Draw-Zyklus).
* Beispiel, Drehung eines Objektes bei &nbsp;30 [[FPS]]: 1 Grad pro Frame <tt>-></tt> 30 Grad pro Sekunde.
* Beispiel, Drehung eines Objektes bei 100 [[FPS]]: 1 Grad pro Frame <tt>-></tt> 100 Grad pro Sekunde.
Die Drehgeschwindigkeit könnte hier nun je nach Leistungsfähigkeit der Hardware variieren. Zeitabhängige Vorgänge müssen hier deswegen die Zeit die seit dem letzten [[Update]] vergangen ist berücksichtigen, da die Anzahl an Frames die pro Sekunde ausgeführt werden schwanken kann. Dies kann dadurch realisiert werden dass man Einheiten nicht auf pro Frame, sondern auf pro Millisekunden Basis verwendet. Wie das geht ist im MSDN-Artikel [http://msdn.microsoft.com/en-us/library/bb203878.aspx How To: Make a Game Use a Variable Time Step] beschrieben.


Es wird empfohlen, [[Game Mechanic]] in dieser Methode auszuführen und upzudaten. Man sollte nicht die Methode [[Draw]] verwenden, die zwar auch sehr oft aufgerufen wird, die aber für das Zeichnen reserviert ist.<noinclude>
== Referenzen ==
== Referenzen ==
<references />
<references />
[[Kategorie:XNA]][[Kategorie:Begriffe]]</noinclude>
[[Kategorie:XNA]][[Kategorie:Begriffe]]</noinclude>
[[Kategorie:MS01]]

Version vom 12. April 2011, 18:30 Uhr



Update ist eine Methode der Klasse Game[1].

Die gesamte Spiellogik und Game Mechanic sollte ausschließlich über diese Methode gesteuert und aktualisiert werden. Hier sollte keinerlei Rendering stattfinden, da dafür die Draw Methode zuständig ist.


Sofern der Fixed Time Step aktiviert ist, wird XNA versuchen diese Methode genau 60 mal pro Sekunde aufzurufen (60 Frames pro Sekunde, FPS). Zeitabhängige Vorgänge, wie beispielsweise die kontinuierliche Drehung eines Objektes mit konstanter Geschwindigkeit, können dann einfach realisiert werden indem man das Objekt in jedem Frame, also jedem Aufruf der Update Mehtode, um den selben Betrag (hier Grad) dreht.

  • Beispiel, Drehung eines Objektes: 1 Grad pro Frame -> 60 Grad pro Sekunde.


Wenn der Fixed Time Step ausgeschaltet ist wird XNA die Update und die Draw Methode einfach im Wechsel hintereinander so oft wie möglich aufrufen. Das bedeutet dass die Zeit die zwischen zwei Update-Zyklen stark variieren kann (je nach Komplexität des aktuellen Update- oder Draw-Zyklus).

  • Beispiel, Drehung eines Objektes bei  30 FPS: 1 Grad pro Frame -> 30 Grad pro Sekunde.
  • Beispiel, Drehung eines Objektes bei 100 FPS: 1 Grad pro Frame -> 100 Grad pro Sekunde.

Die Drehgeschwindigkeit könnte hier nun je nach Leistungsfähigkeit der Hardware variieren. Zeitabhängige Vorgänge müssen hier deswegen die Zeit die seit dem letzten Update vergangen ist berücksichtigen, da die Anzahl an Frames die pro Sekunde ausgeführt werden schwanken kann. Dies kann dadurch realisiert werden dass man Einheiten nicht auf pro Frame, sondern auf pro Millisekunden Basis verwendet. Wie das geht ist im MSDN-Artikel How To: Make a Game Use a Variable Time Step beschrieben.

Referenzen