Wie erstelle ich eine Ghost Replay-Funktion in einem Spiel?

19

Wenn Sie in einem Konsolenrennspiel eine persönliche Bestzeit erzielen, haben Sie die Möglichkeit, gegen Ihren Geist anzutreten.

Wie kann diese Funktion für ein Gelegenheitsspiel für einen Spieler erstellt werden?

claude keller
quelle
2
+1 Interessante Frage für jemanden, der nur ein Anfänger in der Spieleentwicklung ist (ich). =)
Will Marcouiller
Wenn Sie uns sagen würden, um welche Art von Spiel es sich handelt, könnten wir Ihnen genauer helfen.
AttackingHobo

Antworten:

10

Geisterbilder werden normalerweise durch Anzeigen einer Wiederholung eines vorherigen Versuchs erstellt. Diese Wiedergabe wird mit einer nicht kollidierbaren Version des Spielerautos gerendert, so dass Sie sie nicht beeinflussen können. Da Rennspiele sowieso oft eine Wiederholungsfunktion haben, ist diese Art von kostenlos.

Hier ist ein guter Ausgangspunkt für die Erstellung eines Wiedergabesystems: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

Auch hier gibt es eine Reihe von Fragen zu diesem Thema:

wkerslake
quelle
+1 Hab gerade mit deiner Antwort etwas Neues gelernt, danke! =)
Will Marcouiller
1

Es hängt von der Technologie ab, mit der Sie arbeiten. Daher können wir den besten Weg nicht wirklich diskutieren, da er sich von einer Technologie zu einer anderen ändern könnte. Die grobe Idee wäre meiner Meinung nach die folgende:

  1. Verwenden Sie einen zugrunde liegenden Datenspeicher, um Ihre Daten zu sichern (XML, Cookies, Datenbank, CSV usw.).
  2. Bearbeiten Sie Ihren Datenzugriff auf diesen zugrunde liegenden Datenspeicher.
  3. Sie müssen Informationen über die beste Punktzahl eines Spielers aufbewahren, daher ist eine Kennung erforderlich (E-Mail, Eingabename usw.).
  4. Ordnen Sie diese beste Punktzahl auf die eine oder andere Weise dem Bezeichner zu.

Kurz gesagt, unter der Annahme, dass eine Datenbank verwendet wird, könnten wir zwei Tabellen haben:

  1. Benutzer- / Spielerdaten (Kennung, E-Mail usw.);
  2. Beste Anzeigetafel-Informationsdaten.

Anschließend können Sie die Benutzerinformationen zusammen mit einem individuellen Anzeiger speichern, der, falls gewünscht, eine Datums- und Zeitregistrierung darüber enthält, wann diese Punktzahl erreicht wurde.

Ich hoffe das hilft und dass ich die Frage richtig verstanden habe. Ansonsten sag es bitte, damit ich meine Antwort entsprechend bearbeiten kann.

Will Marcouiller
quelle
3
Ich denke, er ist wahrscheinlich auf der Suche nach einem Aufnahme- / Wiedergabemechanismus, um dies zu erreichen. Eine deterministische Spielumgebung, die Verfolgung von Ereignissen, die Dinge verändern (z. B. Eingaben von Spielern) und dergleichen sind normalerweise die empfohlenen Methoden, um dies zu tun.
James
Vielen Dank für Ihre Eingabe James! Dies sind Dinge, die ich nicht kenne, obwohl meine Antwort auch ein einfacher Ansatz ist, demütig. Ich bin jedoch interessiert, mehr über das Thema zu erfahren. Oh und, +1 für deinen Kommentar, das lehrt mich, dass es andere machbare Ansätze gibt. =) Danke! =)
Will Marcouiller
Es tut mir wirklich leid für diesen Trottel. Ich lerne immer noch die Grundlagen, dank beidem für deine Informationen. Ich kann nicht wirklich mit richtigem Wissen antworten, weil ich keine besitze. Was ich erreichen möchte, ist jedes Mal, wenn ich versuche, meinen persönlichen Highscore zu übertreffen, der auf dem Bildschirm einen Geist (eine Wiederholung) dessen
anzeigt,
@Wollen Sie ihm Informationen darüber geben, was für ein Multiplayer-Setup getan werden könnte, wenn er die Antwort auf seine Frage zu einem Einzelspielerspiel gefunden hat? Seine Frage ist, wie man den Geist überhaupt erschafft.
AttackingHobo
@ AttackingHobo: Danke, dass du es mir erzählt hast. Ich habe tatsächlich aus James Kommentar über die Aufnahme herausgefunden, dann habe ich die Antwort von wkerslake gelesen und verstehe jetzt besser, was vom OP verlangt wird. Abgesehen davon haben Sie Recht, wenn Sie sagen, dass mein vorgeschlagenes Setup eher in einem Multiplayer-Setup verwendet wird. Hey, ich lerne immer noch hier und danke, dass du es erlaubt hast, besser zu werden! Spieleentwicklung ist immer noch ein neuer Trick für mich, obwohl ich ein erfahrener Entwickler bin. =) Danke für deinen Kommentar AttackingHobo! =)
Will Marcouiller
1

Es ist nicht einfach, diese Frage zu beantworten, ohne weitere Informationen zu Ihrem Spiel zu haben. Die Antwort von wkerslake funktioniert, solange das aktuelle Durchspielen mit dem Ghost den Determinismus der aufgezeichneten Ghost-Daten nicht beeinflussen kann. Wenn es sich bei den aufgezeichneten Daten um ein Einzelauto-Zeitfahren in einer statischen Umgebung handelt, sollten Sie mit dieser Technik in Ordnung sein.

In vielen Spielen mit Geister-Wiedergabe, wie zum Beispiel Super Meat Boy, kann die Position des Spielers den Status des Levels und der KI ändern. Es ist klar, dass der Geist die Welt und die KI nicht beeinflusst. Daher ist es möglicherweise besser, nur Positions- und Animationsänderungen (und alles andere, was sichtbar ist) für jeden Frame des Haupt-Players aufzuzeichnen. Rendern Sie während der Wiedergabe einfach den Geist an der aktuellen Position und im Animationsbild, ohne dass er in der Welt ist. Auf diese Weise können Sie einen Ghost abspielen, ohne dass der aktuelle Player darauf Einfluss hat.

Lathentar
quelle