Ich habe in letzter Zeit einige Probleme mit Bildfrequenz-Jitter bei meinem Spiel behoben, und es scheint, dass die beste Lösung die von Glenn Fiedler (Gaffer on Games) im klassischen Fix Your Timestep! Artikel.
Jetzt - ich benutze bereits einen festen Zeitschritt für mein Update. Das Problem ist, dass ich nicht die vorgeschlagene Interpolation für das Rendern mache. Das Ergebnis ist, dass ich doppelte oder übersprungene Frames bekomme, wenn meine Renderrate nicht mit meiner Aktualisierungsrate übereinstimmt. Diese können optisch auffällig sein.
Deshalb möchte ich meinem Spiel Interpolation hinzufügen - und ich bin gespannt, wie andere ihre Daten und ihren Code strukturiert haben, um dies zu unterstützen.
Natürlich muss ich (wo? / Wie?) Zwei Kopien der Spielstatusinformationen speichern, die für meinen Renderer relevant sind, damit er zwischen ihnen interpolieren kann.
Außerdem scheint dies ein guter Ort zu sein, um Threading hinzuzufügen. Ich stelle mir vor, dass ein Update-Thread auf einer dritten Kopie des Spielstatus funktionieren könnte und die anderen beiden Kopien für den Render-Thread schreibgeschützt bleiben. (Ist das eine gute Idee?)
Es scheint, dass zwei oder drei Versionen des Spielzustands Probleme mit der Leistung und - was noch wichtiger ist - mit der Zuverlässigkeit und der Entwicklerproduktivität hervorrufen könnten , verglichen mit nur einer einzigen Version. Ich interessiere mich daher besonders für Methoden zur Minderung dieser Probleme.
Von besonderer Bedeutung ist meines Erachtens das Problem, wie das Hinzufügen und Entfernen von Objekten aus dem Spielstatus gehandhabt wird.
Schließlich scheint es, dass ein Status entweder nicht direkt für das Rendern benötigt wird oder dass es zu schwierig ist, verschiedene Versionen zu verfolgen (z. B. eine Physik-Engine eines Drittanbieters, die einen einzelnen Status speichert). Daher wäre ich interessiert zu wissen, wie Menschen haben diese Art von Daten in einem solchen System gehandhabt.