Oneshot Gems
Jetzt spielen

Für Spieleentwickler

Sorgen Sie dafür, dass die Bewegung von der Zeit abhängt, nicht von der Anzahl der Bilder

Die Deltazeit ist die zwischen Aktualisierungen verstrichene Zeit. Durch Multiplizieren einer Geschwindigkeit mit den verstrichenen Sekunden kann ein Objekt in einer Sekunde eine ähnliche Distanz zurücklegen, unabhängig davon, ob der Browser 45 oder 144 Bilder zeichnet. Der schwierige Teil besteht darin, zu entscheiden, was zu tun ist, wenn die verstrichene Zeit ungewöhnlich groß wird. Wenn ein Tab gesperrt wurde oder eine kostspielige Aufgabe den Hauptthread blockierte, kann das blinde Anwenden der gesamten Lücke zu einem Sprung führen, der mathematisch konsistent, aber unangenehm zu spielen ist.

Auf dieser Seite

Halten Sie die Einheiten im Code sichtbar

Wählen Sie eine Zeiteinheit und verwenden Sie sie konsequent. Wird die Geschwindigkeit in Pixeln pro Sekunde und Delta in Sekunden angegeben, bewegt sich die Position um Geschwindigkeit × Delta weiter. Eine nützliche manuelle Prüfung: Bewegen Sie einen Marker zehn Sekunden lang mit 80 Pixeln pro Sekunde. Er sollte unabhängig von der Zahl der Renderdurchläufe etwa 800 Pixel in der Spielwelt zurücklegen.

Mischen Sie Millisekunden aus performance.now() nicht mit einer Geschwindigkeit pro Sekunde, ohne durch 1.000 zu teilen. Benennen Sie Werte samt Einheit, etwa deltaSeconds oder speedPixelsPerSecond, damit eine spätere Anpassung eine kleine Bewegung nicht unbemerkt vertausendfacht.

Die Auswirkungen einer langen Verzögerung begrenzen

Begrenzen Sie Delta in einem einfachen Actionspiel auf einen bewusst gewählten Höchstwert und nehmen Sie in Kauf, dass die Simulation bei starker Belastung kurz langsamer wird. Für eine Physiksimulation mit reproduzierbaren Schritten sammeln Sie Zeit und schreiten in festen Intervallen voran. Begrenzen Sie die Zahl der Nachholschritte, damit die Wiederherstellung die Seite nicht blockiert. Die Ansätze haben unterschiedliche Kompromisse; wählen Sie passend zum Spielgefühl und den Regeln.

Testen Sie mit einer künstlichen Pause zwischen Aktualisierungen und vergleichen Sie eine geradlinige Bewegung mit einer Kollision am Ende des Wegs. Durchdringt das Objekt ein dünnes Hindernis, können kleinere Teilschritte oder eine Swept-Collision-Prüfung nötig sein. Eine andere Bildrate allein behebt dieses Problem in der Spiellogik nicht.

Fragen zu ⁨Delta Time in Spielen⁩

Macht die Deltazeit die Physik deterministisch?

Nein. Variable Aktualisierungsintervalle können dennoch zu unterschiedlichen Integrationsergebnissen führen. Ein fester Simulationsschritt verbessert die Wiederholbarkeit, obwohl Eingabezeit und Gleitkommadetails immer noch wichtig sind.

Welche Uhr soll die verstrichene Zeit liefern?

Verwenden Sie den Zeitstempel des Animations-Callbacks oder performance.now(); MDN beschreibt beide als hochauflösende Zeitquellen. Verwenden Sie für kurze Frame-Abstände keine Kalenderdaten, denn Änderungen der Systemuhr haben nichts mit der Simulationszeit zu tun.

Weiterlesen

Etwas nicht mehr aktuell? Korrektur melden

Spiel weiter.

Kostenlose Browserspiele, jederzeit bereit. Entdecke etwas, das dir Spaß macht, und finde dein nächstes Lieblingsspiel.

Folge deiner Neugier