Oneshot Gems
Jetzt spielen

Für Spieleentwickler

Führen Sie die Simulation in Schritten fester Größe fort.

Ein Render-Rückruf kann in ungleichmäßigen Abständen eintreffen, aber die Spielphysik verhält sich oft vorhersehbarer, wenn sie in gleichen Simulationsschritten voranschreitet. Ein fester Zeitschritt sorgt dafür, dass jedes Update dieselbe Dauer benötigt, während das Rendern immer dann erfolgen kann, wenn der Browser zum Malen bereit ist. Dies ist eine praktische Implementierungswahl und kein Versprechen eines perfekten Determinismus: Eingabeankunft, Gleitkommaverhalten und Kollisionsregeln sind immer noch wichtig. Verwenden Sie es, wenn stabile Simulationsschritte Ihrer Mechanik helfen, und testen Sie, wie die Schleife nach einem längeren Frame-Stall reagiert.

Auf dieser Seite

Sammeln Sie die verstrichene Zeit und führen Sie begrenzte Aktualisierungen durch

Fügen Sie bei jedem Animationsrückruf die verstrichene Zeit zu einem Akkumulator hinzu. Während der Akkumulator mindestens einen Schritt enthält, aktualisieren Sie die Physik um ein konstantes Intervall, z. B. 1/60 Sekunde, und subtrahieren Sie dieses Intervall. Rendern Sie dann den neuesten Stand. Legen Sie eine maximale Anzahl von Aufholschritten pro Frame fest. Andernfalls kann eine lange Pause zu einem großen Rückstand führen, der mehr Zeit in Anspruch nimmt und die Verzögerung verschlimmert. Entscheiden Sie explizit, ob überschüssige Zeit gelöscht, begrenzt oder durch eine andere Wiederherstellungsregel behandelt wird.

Halten Sie die Einheiten konsistent. Wenn die Geschwindigkeit in Welteinheiten pro Sekunde gemessen wird, multiplizieren Sie sie mit dem festen Schritt in jeder Simulationsaktualisierung. Multiplizieren Sie nicht dieselbe Geschwindigkeit mit der gesamten verstrichenen Zeit des Frames und führen Sie auch mehrere feste Aktualisierungen durch, da sonst die Bewegung doppelt gezählt wird.

Behandeln Sie Eingabe und Rendering innerhalb Ihrer eigenen Grenzen

Erfassen Sie den gehaltenen Eingabezustand für jeden Simulationsschritt oder stellen Sie einmalige Aktionen in die Warteschlange, bis sie von einem Schritt verbraucht werden. Wenn zwischen zwei Frames ein Tastendruck erfolgt, stellen Sie sicher, dass dieser vor dem nächsten Update nicht verloren geht. Beim Rendern kann zwischen physikalischen Zuständen interpoliert werden, während Kollision und Bewertung den Simulationszustand verwenden. MDN beschreibt requestAnimationFrame als einen einmaligen Rückruf, der vor dem Repaint geplant wird, und empfiehlt, seinen Zeitstempel zur Berechnung des Fortschritts zu verwenden; Ein Akkumulator verwendet diesen Zeitstempel, um Aktualisierungen in festen Intervallen auszuführen.

Testen Sie die Grenzen der Schleife

Vergleichen Sie dieselbe kurze Bewegung und Kollision über normale Frames, einen simulierten langsamen Frame und eine längere Pause. Stellen Sie sicher, dass ein Spieler nicht durch eine dünne Wand tunnelt, nach einem längeren Frame-Stall mehr Geschwindigkeit gewinnt oder beim Aufholen mehrmals eine Kollision auslöst. Testen Sie Pause und Hidden-Tab-Return entsprechend Ihrer beabsichtigten Regel. Wenn die Simulation mit der Schleife mit festem Schritt stabil ist, eine Kollision aber bei hoher Geschwindigkeit dennoch fehlschlägt, verwenden Sie eine für die Bewegung geeignete Kollisionsmethode, anstatt die Renderfrequenz zu erhöhen.

Fragen zu ⁨Feste Zeitschritt-Spielphysik⁩

Garantiert ein fester Zeitschritt eine deterministische Physik?

Nein. Dadurch wird das Simulationsintervall konsistent, aber Eingabezeitpunkt, Mathematik und Kollisionsreihenfolge können dennoch zu Abweichungen führen. Steuern Sie diese separat für Tests, die wiederholt werden müssen.

Warum sollten Nachholaktualisierungen nach einem Frame-Stall begrenzt werden?

Ohne eine Grenze kann das Aufholen spätere Frames monopolisieren und die Verzögerung verschlimmern. Wählen und testen Sie eine Wiederherstellungsrichtlinie, die zum Spiel passt, einschließlich der Frage, ob simulierte Zeit verworfen werden darf.

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