Ich habe ein 2D-Spiel in C ++ mit SFML geschrieben. Ich möchte das Spiel so erweiterbar machen, dass Inhalte wie Elemente oder Entitäten einfach hinzugefügt werden können, indem einer Datei oder Datenbank eine Zeile / ein Eintrag / eine Zeile hinzugefügt wird.
Ich suche etwas, das nicht in das Programm kompiliert werden muss, sondern zur Laufzeit gelesen und beschrieben werden kann. Wann ist eine Datenbank sinnvoll?
Antworten:
Verwenden Sie eine Datenbank nur, wenn Sie eine Datenbank benötigen. Das ist:
Wenn die Daten Ihres Spiels eine dieser Bedingungen erfüllen, können Sie von der Verwendung einer Datenbank profitieren. Beachten Sie, dass diese nicht sehr häufig sind und Sie wahrscheinlich keine davon zufriedenstellen. Wenn Sie dies tun, würde ich SQLite oder etwas Ähnliches wählen, um keinen laufenden Server zu benötigen und nur eine Bibliothek zu sein.
Verwenden Sie andernfalls Dateien und laden Sie die Daten beim Start in den Speicher. Wenn Sie möchten, dass das Spiel geändert werden kann, laden Sie diese Daten sowohl aus dem Verzeichnis Ihres Spiels als auch aus den Verzeichnissen der Mods und definieren Sie, wie widersprüchliche Informationen zusammengeführt werden können.
Beachten Sie auch , dass es sowohl für Sie als auch für die Entwickler von Mods von Vorteil sein kann, Dateien zum Lesen der Anfangsdaten und zum Erstellen der Datenbank nur dann zu verwenden, wenn das Spiel geladen wird. Sofern die potenzielle Größe dieser Datenbank nicht sehr groß ist (dh mehr als ein paar Dutzend MB), möchten Sie möglicherweise eine speicherinterne Datenbank verwenden, die in SQLite durch Angabe
:memory:
des Datenbankpfads möglich ist .quelle
SQLite
, auch wenn Ihre Bedürfnisse NICHT "komplex" oder "riesig" sind. Es gibt tatsächlich viele Gründe, warum Sie mit so etwas Kleinem und Eingebettetem in hohem Maße davon profitieren können, wenn Sie eine Datenbank zur Hand haben.Ich mag MongoDB für Spieleentwicklung sehr, es hat eine sehr gute Leistung und es ist sehr flexibel, einfach zu bedienen und json-basiert.
Sie können einfach ein beliebiges Feld in eine Sammlung einfügen, da es sich um NoSQL Arch handelt. So passt es wirklich gut in jede "dynamische" Umgebung wie Spiele.
Geben Sie ihm einen flüchtigen Blick .
Wenn Sie eine Art auf MMO Runden basierendes Strategiespiel entwickeln, sollten Sie wahrscheinlich über CouchDB lesen , es ist eine NoSQL-Datenbank mit einem wirklich guten Versionssystem.
quelle
CastleDB ist eine gute Option, da es sich lediglich um einen Editor handelt, der eine Datenbank anschließend in eine JSON-Datei konvertiert. Ich habe viele Antworten gesehen, die besagten, dass eine Klartextdatei die beste ist, also ist CastleDB wahrscheinlich die beste von beiden Welten.
quelle