Ich habe folgendes gelesen: Wie man ein Wiedergabesystem entwirft Aber es beantwortet meine Frage nicht wirklich.
Mein Spiel wurde mit der Client "Ansicht" des Spiels als separates Programm vom Server "Modell" und "Controller" erstellt. (ein bisschen wie ein MMO oder ein Multiplayer-Spiel, das auf diese Weise gebaut wurde). Die Serverseite ist immer die "Wahrheit" des Spiels. Sie akzeptiert nur Aktionsanforderungen als Eingabe von den Clients und gibt Ereignisse und Nachrichten zum "aktuellen Status" aus.
Das Spielmodell und die Spielregeln sind vollständig deterministisch mit einem festen "Tick" -Updatezyklus, sodass ich auf der Serverseite sowohl die an die Clientansichten gesendeten Ereignisse als auch die Aktionsanforderungen aufzeichnen kann. Beide sind einer bestimmten Zyklusnummer zugeordnet.
Die Frage ist: In diesem Fall sollte ich zum Einrichten eines Wiedergabesystems die Eingabe oder Benutzeraktionsanforderungen (wie dort vorgeschlagen) oder die Ereignisse verwenden?
Es scheint mir, dass beide genau die gleiche Ausgabe geben würden. Die einzigen Unterschiede, die ich sehen kann, sind:
- Ereignisse geben die tatsächliche Ausgabe aus, während Aktionsanforderungen verarbeitet werden müssen, um Ereignisse zu geben.
- Bei Aktionsanforderungen sind möglicherweise weit weniger Daten aufzuzeichnen.
Gibt es noch andere Dinge zu beachten?
Beides funktioniert, obwohl einige Dinge zu beachten sind.
Denken Sie zunächst daran, dass Sie Zeitinformationen aufzeichnen müssen. Bei Spielen mit jeder variablen Bildrate kann dies besonders schwierig sein. Sie müssen sicherstellen, dass Ihre Wiedergabedaten genau die gleichen Zeitinformationen liefern können, die das Spiel ursprünglich für die Simulation verwendet hat.
Sie müssen auch Änderungen am Spielverhalten berücksichtigen. Wenn Sie Eingaben aufzeichnen und dann einen Teil der Verarbeitung von Eingaben, der Auflösung der Physik usw. optimieren , wird Ihre Aufzeichnung ungültig. Selbst wenn Sie Spielereignisse aufzeichnen, bleiben Sie stecken, wenn sich ein Teil der Interpretation dieser Ereignisse ändert.
Wenn Sie nur Wiedergaben wünschen, ist es ein guter Ansatz, eine bestimmte Liste von Positionen und Rotationen für die Spielerentität zusammen mit Zeitinformationen aufzuzeichnen. Deaktivieren Sie so viel Physik und andere Spiellogik wie möglich, während Sie die Wiedergabe ausführen. Wie einfach oder machbar dies ist, hängt davon ab, wie viele andere Objekte Sie synchronisieren müssen.
quelle