Ich versuche herauszufinden, wie ich ein Save / Load-System für mein Spiel in C ++ schreiben kann. Ab sofort mache ich alles mit binären Flags. Hat jemand eine Ahnung, wie es anders geht? Es macht mir nichts aus, Binärdateien zu verwenden, aber ich möchte meine Optionen kennen. Ich möchte auch etwas, bei dem es einfach ist, den Status eines Ereignisses auf Vollständigkeit oder Unvollständigkeit zu prüfen, um über bestimmte Dinge zu entscheiden (ein Großteil des Gegenstandssystems in diesem Spiel hängt davon ab, was der Spieler getan hat oder nicht getan hat im Laufe des Spiels).
17
Antworten:
Serialisierung ist der richtige Weg, und bei der Statusprüfung kann die Deserialisierungsmethode logisch sein.
quelle
Ich habe den DOOM-Quellcode ein bisschen studiert. Ich sage dir, wie es dort gemacht wird.
D_DoomMain enthält alle Funktionen zum Öffnen, Speichern und Laden sowie eine Reihe anderer Dinge. Wie es am Anfang der Datei steht,
Grundsätzlich ist die gesamte Datei
M_CheckParm
von Anfang bis Ende voller s. Daraus besteht die D_DoomLoop. Es ist eine massive Schleife (etwa 1000-2000 Zeilen lang).Da ist deine Frage 'Wie kann ich schreiben?' Ich werde nur ein paar Code-Teile einfügen, die sich auf gamesaves beziehen, von D_DoomMain:
Hier sind die Anweisungen, wo das Zeug verwendet wird, ganz am Ende der Schleife.
Hier ist die Funktion, die auf die Zeichenfolgen zugreift, die im gesamten Code verteilt sind:
Sie haben auch eine Datei mit dem Namen p_savegame.c, in der alle benutzerbezogenen Daten gespeichert werden (welche Waffen Sie haben, wo Sie sich in welchem Level befinden usw.).
Und schließlich haben Sie die Datei, die Spieledaten in ein Spielszenario lädt, das wohl komplexeste von allen, weil es auch alles andere lädt. Diese Datei heißt p_setup.c und befindet sich im selben Verzeichnis.
Es hat für mich gut geklappt,
cat
diese alle in einen Textpuffer undpipe
diesen Textsendmail
an meine eigene E-Mail-Adresse zu senden. Auf diese Weise kann ich es in ungeraden Momenten des Tages durchlesen und 'find' verwenden, wenn ich nach Dingen wie 'Wie lädt DOOM ein Spiel?' Suchen möchte. Der Code ist gut kommentiert.quelle
Sie können die Klasse oder die Daten in eine flache Datei serialisieren und sie dann beim Laden zurücklesen.
quelle
I + 1: Der Vorschlag, XML / JSON zum Strukturieren der gespeicherten Spiele zu verwenden. Auf diese Weise sind Sie sehr darauf vorbereitet, die gespeicherten Daten "cloudbasiert" zu machen. Oder zumindest haben Sie eine Struktur, die Sie für zukünftige Projekte verwenden können, die das Web betreffen könnten. Solange die Dateien nicht auf eine Weise gespeichert werden, die zu einfach zu lesen ist, sollten sie Ihnen eine Menge Vorteile bringen. Wie Metriken! Hurra
quelle