Ich mache einen 2D-Plattformer, bei dem der Spieler einen Knopf drücken und das Level neu starten kann. Nur sein vorheriger Charakter wird das Level zur gleichen Zeit ausführen, als ob er in der Zeit zurückreist.
Ich weiß, dass andere Spiele dies bereits getan haben, und ich habe mir überlegt, den Spielcharakter dazu zu bringen, eine Reihe von Aktionen auszuführen (Leerlauf, Springen, Gehen nach links usw.) und dann Änderungen in diesen Aktionen zu erkennen und sich anzumelden eine Liste zusammen mit der Spielzeit. Wenn ich also den Charakter brauche, um das Level selbstständig erneut auszuführen, kann ich einfach die Liste durchgehen und seine Aktionen zum richtigen Zeitpunkt ändern.
Ist das der beste Weg, es zu tun? Hat jemand irgendwelche Erfahrungen damit?
Vielen Dank.
quelle
Antworten:
BEARBEITEN:
Bitte lesen Sie die Antwort von @ Bluescrn auf diese Frage. Er geht eher auf Schwächen bei der Wiedergabe von Steuerelementen als auf Bewegungsvektoren oder Positionen ein.
- -
Du bist auf dem richtigen Weg. Hier ist der Ansatz, den ich verwenden würde:
Controller
Erstellen Sie eine Controller-Klasse, die Tastatureingaben empfängt und an Ihren Charakter weitergibt. Lassen Sie jedoch auch einen Controller genau aufzeichnen, wann die wichtigen Tasten (z. B. Pfeile, Sprünge usw.) gedrückt wurden und wann sie losgelassen wurden. Es würde diese Art von Informationen speichern:
Ein Controller verfügt über zwei Modi:
Figuren
Wenn Ihr Character-Objekt erstellt wird, erstellt es einen neuen Controller für sich. Der Charakter kann sich jederzeit in einem von zwei Modi befinden:
Ebenen
Ein frisch begonnenes Level
Wenn Sie das Level starten, erstellen Sie einen einzelnen Charakter. Jetzt beginnt das Level und der Spieler macht sein Ding.
Wenn die Zeit zurückgesetzt wird
Wenn das Level zurückgesetzt wird, machen Sie drei Dinge:
Dann beginnt das Level und der Spieler macht sein Ding.
quelle
Wenn Sie aufgezeichnete Eingaben wiedergeben, berücksichtigen Sie die Auswirkungen von sich bewegenden / zerstörbaren / interaktiven Objekten auf der Welt, die sich bei der Wiedergabe der Aktionen möglicherweise verschoben oder geändert haben
Außerdem funktioniert die Wiedergabe von Eingaben nicht genau, wenn Ihr Spiel einen variablen Zeitschritt verwendet. Vielleicht möchten Sie ein Spiel-Update mit festem Zeitschritt (mit Interpolation für das Rendern mit variabler Framerate) in Betracht ziehen?
quelle
Es gibt viele Themen, die sich mit Spielaufzeichnungs- / Wiedergabesystemen usw. befassen, die wahrscheinlich der Grundstein für Ihre früheren Durchläufe sein sollten.
Hier ist eines: So entwerfen Sie ein Wiedergabesystem
quelle
Das Aufzeichnen der Tastatureingabe ist in Ihrem Fall möglicherweise nicht so nützlich. Sie können jedoch einen Spline mit einer Zeitleiste generieren. Sie können sogar die Zeit zurückspulen, wenn Sie mit den Kräften, die Sie anwenden müssen, schwierig sind
quelle