RPG - Speichern von Spielerdaten

8

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:

  • Levels, Quests pro Level und Aufgaben pro NPC werden in chronologischer Reihenfolge abgeschlossen.
  • NPC-Dialog- und Task-Dialog-Daten werden in einem js-Objekt in einer npc_dialog_1.js -Datei in der folgenden Struktur gespeichert:

    %Vor%

    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

    
Growler 11.05.2014, 23:54
quelle

2 Antworten

2

Auswahl der richtigen Methode

Angenommen, Sie haben dieses Array:

%Vor%

Sie können zwei Optionen zum Speichern dieses Arrays in der Datenbank haben.

  1. 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.

  2. 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.

Strukturierung Ihrer Arrays

%Vor%     
Viscocent 12.05.2014, 06:50
quelle
1

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 Ссылка

    
mfirdaus 12.05.2014 06:44
quelle

Tags und Links