Eigene Kill Cam erstellen

15

Ich plane mein eigenes Kill-Cam-System für ein Sandbox-Tool-Set zu erstellen. Nachdem ich über die Mechanik der Kill-Cam selbst nachgedacht habe, bin ich jedoch ziemlich verloren. Ich versuche, die in Call-of-Duty-Spielen üblichen nachzubilden, die aus Sicht des Killers die tatsächliche Mordszene zeigen.

Meine Gedanken:

-Ich kann nicht einfach im Gedächtnis bleiben, wenn Leute andere töten, weil ich nicht wüsste, wann ich den 'Aufnahmevorgang' starten soll. Es ist eine Möglichkeit für mich, genau zu bestimmen, wann jemand jemanden „umbringen“ wird.

- Meine einzige wirkliche Idee ist es, ein vollständiges Duplikat von allem auf die Seite zu legen, das alle Bewegungen aus der ursprünglichen Welt kopiert, jedoch mit einer Verzögerung von 10 Sekunden. Auf diese Weise wären alle Kill-Cams 10 Sekunden lang und die Personenkamera würde nur in die zweite Welt ihres Killers verschoben.

Meine Fragen:

Gibt es dafür bereits einen akzeptierten Weg? Hat jemand gute Ideen für so etwas? Danke, wenn du kannst!

Freesnöw
quelle

Antworten:

10

Speichern Sie die letzten Sekunden der Bewegungsdaten relevanter dynamischer Objekte .

Diese Daten sollten so vollständig sein, dass sie bei Bedarf zur Rekonstruktion einer Killcam-Szene verwendet werden können. Sie sollten jedoch so unvollständig sein, dass Sie es sich leisten können, sie in ausreichend kurzen Intervallen abzurufen und zu speichern.

Beispiele für Dinge, die Sie verfolgen möchten:

  • In welche Richtung sich ein sichtbarer Spieler bewegt / schaut
  • Gibt an, ob der Mörder das Zielfernrohr vergrößert hat

Dinge, die Sie wahrscheinlich optimieren möchten:

  • Daten über Spieler, die der Killer nicht sehen kann
  • Jedermanns tatsächliche Bildschirmausgabe
Anko
quelle
Ihre Antwort enthält ein großes Problem. Normalerweise können Sie nicht vorhersagen, wer als nächstes getötet wird. Wenn Sie also die Daten einiger Spieler optimieren, verlieren Sie möglicherweise die Möglichkeit, einige Kills erneut abzuspielen.
Ali1S232
2
@Gajet Ich denke, in diesem Fall bedeutet er, alle relevanten Objekte auszusondern und nur Daten für diese danach zu speichern. Mit anderen Worten, Sie möchten bereits eine Art Speicher- / Aktualisierungsmechanismus, um die Positionen von allem und seinen Entitäten zu verfolgen, jedoch nur für eine begrenzte Zeit. Angenommen, Sie möchten nur die letzten 10 Sekunden für eine Kill-Cam. Sie benötigen lediglich eine Datenstruktur, die groß genug ist, um die letzten 10 Sekunden zu speichern, und alles, was älter ist, wird am Ende ersetzt, z. B. in einer Warteschlange mit zwei Enden.
ChrisC
Ich habe nur bestätigt, dass Ricers Antwort das ist, was ich meinte. In der Tat: Wenn Sie die Zukunft nicht vorhersagen können, bereiten Sie sich stattdessen darauf vor. :)
Anko
1
Es ist wichtig zu erwähnen, dass Online-Echtzeitspiele den Spielern niemals zeigen, was tatsächlich passiert ist. Das Spiel macht immer Vermutungen darüber, was die Wahrheit sein könnte, aber aufgrund von Latenzen und anderen Netzwerkproblemen werden Spiele erst viel später - wenn überhaupt - herausfinden, was die "objektive Wahrheit" war. Wenn Sie also keine "Kill Cam" -Daten zur Verfügung haben, um den Standpunkt einer anderen Person wiederherzustellen, sollten Sie sich nicht schlecht fühlen, wenn Sie plausible Kill Cam-Daten in Situationen erstellen, in denen Sie sie benötigen.
Trevor Powell
0

Keine Ahnung, wie dies normalerweise implementiert wird, aber Sie können festlegen, dass jede Kugel einen Clip vom Zeitpunkt des Abfeuerns bis zum Auftreffen auf ein Ziel speichert. Wenn die Aufnahme nur mit einem Treffer-Scan erfolgt, können Sie berechnen, ob das Kill-Cam-Footage im selben Zyklus erstellt werden soll, wenn Sie den Treffer-Scan ausführen.

RavensKrag
quelle
0

Sie können die Transformation eines Objekts alle paar Sekunden oder so speichern. Tun Sie dies für alle anwendbaren dynamischen Objekte. Versetzen Sie das Speichern so, dass Sie für jeden Frame nur ein paar Matrizen speichern. Speichern Sie so lange in der Zeit, wie Sie möchten.

Während der Wiedergabe verwenden Sie diese Transformationen tatsächlich in einer Rendering-Engine, um eine Szene zu animieren, und interpolieren bei Bedarf zwischen Transformationen nach Zeit für jedes Bild.

Es handelt sich nicht um ein genaues Duplikat, aber sehr nahe beieinander. Sie können dem Player die Möglichkeit geben, während der Wiedergabe die Kamera zu steuern, damit er auswählen kann, von wo aus die Szene angezeigt werden soll.

Steve H
quelle
Es gibt ein Problem beim Speichern nur von Transformationsmatrizen, nichts anderes! Wenn Sie beispielsweise nur Transformationsmatrizen für Spieler speichern, kann es vorkommen, dass Animationen fehlschlagen. Sie können dann nicht sehen, wie viel Schaden der Feind erlitten hat, bevor er Sie getötet hat, und wann er seine Waffe abgefeuert hat. Es gibt eine lange Liste von Details, die Sie mit Ihrer Methode vermissen und über die Sie sich leicht Gedanken machen können.
Ali1S232
Bitte lesen Sie noch einmal: Sie speichern Transformationen für alle geeigneten dynamischen Objekte, nicht nur Matrizen für Spieler. Es ist auch einfach genug, Gesundheits- oder Trefferpunktdaten und andere Elemente zu speichern. Der Punkt ist, zu viel Daten zu speichern, verbraucht Spielzeitressourcen (schlecht). Sie sparen so wenig wie möglich und lassen Ihre Rendering-Engine so viel wie möglich von dem schweren Heben durch Interpolation während der Wiedergabe tun. Es ist ein Kompromiss, aber was ist das nicht?
Steve H
0

Sie können einige Wiedergabefunktionen in Ihrem Spiel implementieren. Bei Verwendung der Wiederholungsfunktion ist Killcam nur eine Wiederholung, die aus einer bestimmten Spielzeit und aus Sicht eines Spielers abgespielt wird. Später können Sie Wiederholungen speichern und andere Spiele überprüfen lassen, wenn sie fertig sind.

Auch Ihre Idee, dasselbe Spiel mit Eingaben mit einer Verzögerung von 10 Sekunden auszuführen, ist ein guter Ansatz, wenn Ihr Spiel keine hohe Rechenleistung verbraucht.

Ali1S232
quelle
0

Wie wäre es damit...

Nur aufzeichnen, wenn die Möglichkeit besteht, zu töten.

Denken Sie darüber aus der Perspektive eines AIM-BOT nach. Es wird nur zielen / schießen, wenn das Töten möglich ist. Sie sollten also nur aufzeichnen, wenn sich ein Feind in tötbarer / sichtbarer Reichweite befindet.

waterwizard11
quelle
Was ist mit Situationen, in denen durch ein Objekt geschossen wird? So viel Raycasting wird sicherlich mehr CPU-Aufwand verursachen als einige der anderen genannten Ideen. Gute Idee, ich könnte das als Teil einer Lösung betrachten.
Freesnöw
0

Stellen Sie einen Radius um den Player ein. Wenn ein anderer Spieler den Radius eingibt, wird die Bildschirmaufnahme für beide Personen gestartet. Sie warten dann, um zu sehen, ob jemand getötet wird. Wenn ja, dann finden Sie den Killer und nehmen dessen Aufzeichnung auf und spulen die seit dem Kill verstrichene Zeit plus die Länge, die das Video haben soll, zurück und spulen es für denjenigen, der getötet wurde, zurück und spielen es ab. Wenn niemand getötet wird und sich niemand im Umkreis des Charakters befindet, löschen oder stoppen Sie die Aufnahme. Wenn der Mörder in ein Zielfernrohr hineingezoomt ist, werfen Sie einen Strahl dorthin, wohin er zielt, und erstellen Sie einen weiteren Auslöseradius. Wenn sich jemand darin befindet, zeichnet es den Bildschirm desjenigen auf, der sich in dem Radius befindet, in dem der Zielcharakter zielt, und des Charakters, der zielt. Wenn jemand durch das Zielen eines Charakters stirbt, nehmen Sie sich die Zeit, die seit dem Kill vergangen ist, zuzüglich der Länge, die die Kill-Kamera haben soll, und spulen zurück und spielen diese für denjenigen, der getötet wurde. Wenn sie verkleinern, stoppen Sie die Aufnahme. Dies ist ein Konzept, also habe ich es nicht ausprobiert.

Ethan Smith
quelle