In der folgenden Baumstruktur kann jeder angemeldete Spieler Daten für aktuelle und abgeschlossene Level, Quests pro Level, NPCs pro Quest und mehrere Aufgaben pro NPC haben ... Ich versuche den besten Weg herauszufinden Speichere die aktuellen und vervollständigten Daten pro Spieler.
Ich habe die Frage schon einmal gestellt, wenn auch mit zu vielen Details. Es wurde gebeten, dass ich die Frage verallgemeinere ... Wenn Sie mehr Kontext wünschen, sehen Sie hier:
RPG - Speichern von Spielerdaten für eine semi-komplexe Baumstruktur
Einige Informationen über meine RPG-Struktur:
NPC-Dialog- und Task-Dialog-Daten werden in einem js-Objekt in einer npc_dialog_1.js
-Datei in der folgenden Struktur gespeichert:
Ich speichere jedes dialog
-Objekt in einer separaten npc_dialog_n.js
-Datei pro Karte, die ich mit requireJS
abrufe. Dies reduziert Unordnung in einer einzelnen npc_dialog Datei.
NPCs pro Quest können jedoch in beliebiger Reihenfolge gestartet werden. Dabei wird versucht, eine GTA-ähnliche Questwarteschlange nachzuahmen, da das Spiel einer allgemeinen linearen Progression folgt, jedoch für jede Quest, mit der Sie sprechen können mehrere NPCs und starten, pausieren und setzen die Aufgaben des NPCs jederzeit fort.
Da der Spieler zu einem bestimmten Zeitpunkt Aufgaben für jeden NPC starten, pausieren und fortsetzen kann, versuche ich herauszufinden, wie die aktuellen und vollständigen Daten pro Spieler am besten gespeichert werden können.
mfirdaus empfahl die folgende DB-Tabelle mit M: M-Beziehung b / t user & amp; npc ... doch das würde sich schnell summieren, da jeder Spieler mehrere NPCs pro Quest haben kann, und mehrere Aufgaben pro NPC gestartet werden können ... Irgendwelcher Weg um dieses Setup herum?
Mein aktuelles Datenbankschema :
Danke
Angenommen, Sie haben dieses Array:
%Vor% Sie können zwei Optionen zum Speichern dieses Arrays in der Datenbank haben.
mit PHP json_encode () :
%Vor%Aussagen // Array, wenn codiert: {"quest1": 100, "quest2": 100, "quest3": 100}
Verwenden Sie json_decode, um es nach dem Abrufen des Werts aus der Datenbank zurück in das Array zu konvertieren.
mit PHP serialize () :
%Vor% für weitere Informationen welche Funktion Sie verwenden möchten:
Bevorzugte Methode zum Speichern von PHP-Arrays (json_encode vs serialize)
obwohl ich json immer noch empfehlen kann, da es besser skalierbar ist.
Ich nehme an, dass es unabhängig vom gespeicherten Quest- / Aufgabenbaum ausreicht, den Fortschritt des Spiels zu speichern. Speichere einfach currentLevel, currentQuest und die Anzahl der Aufgaben für jeden NPC der Quest, wie du bereits erwähnt hast. Abhängig davon, wie du es gespeichert hast, würde ich ein Array oder Objekt haben, das die aktuelle Quest speichert. Für Benutzer 1 würde es etwa wie
aussehen %Vor%Je nach Arbeitsablauf können Sie eine JSON-Zeichenfolge von einem Array oder Objekt erstellen, indem Sie
ausführen %Vor%Was Sie in der Datenbank speichern können. Sie können den Wert dann entweder in Javascript oder PHP (abhängig von Ihrem Workflow) mit
wiederherstellen %Vor%Die Datenbank würde ungefähr so aussehen wie diese sqlfiddle Ссылка
Tags und Links javascript php mysql storage