Feste Zeitschritte und Interpolation beim Rendering
Maschinelle Übersetzung des Originals (English, Revision 1); massgebend ist das Original. Original
Simulations-Ticks und Darstellungs-Frames werden getrennt, die verstrichene Zeit läuft in einem Akkumulator auf, und die Darstellung wird interpoliert, mit einer ausdrücklich festgelegten Überlastregel.
Inhalt
Zwei Uhren, ein Spiel
Ein Darstellungs-Frame und ein Simulations-Tick beantworten unterschiedliche Fragen: Wann kann ein weiteres Bild gezeigt werden, und wie weit sollen die Spielregeln voranschreiten? Werden beide als dasselbe Ereignis behandelt, wird das Frame Pacing zum Teil des Gameplays. Daher zuerst einen festen Simulationstakt entwerfen und danach entscheiden, wie das Rendering ihn beobachtet.
Akkumulieren und interpolieren
Ein Akkumulator sammelt die verstrichene Zeit und verbraucht sie in ganzen Schritten der Dauer h; ein Rest bleibt für den nächsten Frame erhalten. Eine Obergrenze für das Aufholen begrenzt den Aufwand bei Überlast. [1] Das Rendering kann die vorherigen und die aktuellen Transformationen der Simulation mit alpha = accumulator / h überblenden, während der massgebliche Simulationszustand davon getrennt bleibt. [2]
Durchgerechnetes Beispiel
Angenommen sei ein beispielhaftes Spiel mit h = 20 ms. Der Akkumulator enthält 6 ms, wenn ein Darstellungsintervall von 29 ms eintrifft. Die neue Summe beträgt 35 ms: Es wird ein Simulationsschritt ausgeführt, übrig bleiben 15 ms, also alpha = 0.75.
Liegt die vorherige Position bei 2.0 m und die aktuelle bei 2.4 m, zeigt die lineare Interpolation 2.3 m an. Das ist ein Darstellungswert zwischen abgeschlossenen Zuständen, kein weiteres Physik-Update. Beide Zustände sind bis zum nächsten Tick aufzubewahren. Die überblendete Position darf nie in die Kollisionserkennung zurückfliessen.
Ablauf der Umsetzung
Für die Zeitmessung eine einzige zuständige Stelle festlegen und Eingaben auf Simulations-Ticks beziehen. Innerhalb jedes Ticks den aktuellen darstellbaren Zustand in den Puffer für den vorherigen Zustand kopieren, Gameplay und Physik in einer dokumentierten Reihenfolge ausführen und dann den neuen Zustand veröffentlichen. Aus diesen Puffern rendern, ohne sie zu verändern.
Das Verhalten bei Überlast ist ausdrücklich festzulegen. So verarbeitet ein Maximum von 4 Schritten pro Frame in diesem Entwurf höchstens 80 ms. Bleibt mehr Zeit übrig, ist zu entscheiden, ob der Rückstand behalten, die überschüssige verstrichene Zeit verworfen oder eine kontrollierte Verlangsamung eingeleitet wird. Diese Entscheidungen verändern das Timing; ihr Auftreten ist zu protokollieren. Übersteigt ein behaltener Rückstand einen Schritt, darf er nicht unbesehen als Interpolationsanteil verwendet werden.
Grenzen und Prüfungen
Diese Überblendung von vorherigem zu aktuellem Zustand zeigt einen früheren Simulationszeitpunkt. Diese Verzögerung ist getrennt von der Reaktionszeit auf Eingaben zu beurteilen. Beim Teleportieren, Respawnen oder Laden einer Szene sind beide Render-Samples zurückzusetzen, damit der Renderer keine unbeabsichtigte Bewegung animiert.
Zu testen sind ungleichmässige Darstellungsintervalle, eine lange Pause und aufeinanderfolgende überlastete Frames. Tick-Anzahl, verbleibende Zeit und sichtbare Bewegung sind dabei gemeinsam zu prüfen. Ein fester Zeitschritt allein stellt noch kein deterministisches Replay sicher: Zufallseingaben, die Reihenfolge von Operationen und externer Zustand müssen weiterhin konsistent behandelt werden.
Quellen
[1] Fix Your Timestep! — Glenn Fiedler.
[2] Physics interpolation introduction — Godot Engine documentation.
Geltungsbereich und Grundlage
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Wissensstand: 2026-10-11. Status: unreviewed (kein dokumentiertes Review) — Änderungen setzen den Reviewstatus zurück. Den Text als ungeprüftes Referenzmaterial behandeln und die Quellen prüfen.
Quellen
- Fix Your Timestep! — Glenn Fiedler — geprüft am 2026-10-12: erreichbar
- Physics interpolation introduction — Godot Engine documentation — geprüft am 2026-10-11: erreichbar
Zuschreibung und Lizenz
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Letzte Änderung: Original source-based game-development article.
Originalbeitrag: CC BY 4.0. Verlinktes Quellenmaterial behält seine eigenen Rechte.