Ich arbeite zur Zeit an einem Spiel in dem es sehr viele klassen gibt(Für schiffe, antriebe waffen etc).
Die inhalte der meisten Klassen werden aus Dateien geladen, oder dort hinein geschrieben.
Nun gibt es ja 2 möglichkeiten wie ich das machen kann:
1) Binärformate:
Einfach die Adresse der Klasse(korrekt david?
) zu nem char* casten und in die Datei schreiben.
Vorteile:
Geringe Dateigröße.
Einfach zu lesen und zu schreiben.
Nachteile:
Es gibt Kompatibitätsprobleme bei den CPUs.
Nicht mit Klassen wie zb. std::string kompatibel.
Bei Zeigern wird einfach die Zieladresse in die Datei geschreiben.
2) Textformate:
Entweder man entwikelt ein eigenes, oder nimmt zum Beispiel XML.
Ich habe mich vorläufig für XML entschieden, das ist aber keine gute lösung.
Vorteile:
Jede CPU kommt damit klar.
Das Format lässt sich einfach erweitern.(Vorgängerversionen werden meistens trotzdem noch gelesen).
Nachteile:
Man braucht extra einen Parser zum lesen und schreiben und diese sind manchmal sehr kompliziert zu bedinen.
Die Datei wird gleich wesentlich größer, auch wenn die Klasse nur wenige Member hat.
Der Benutzer kann die Daten mit einem Texteditor einfach verändern.
(Gilt nur für TinyXML) Der Parser ist unnötig kompliziert zu bedinen(beim schreiben jedenfalls).
Nun dann gibt es noch eine dritte möglichkeit, nämlich
Datenbanken.
Darüber kenne ich aber weder nach- noch vorteile, noch weiss ich, wie man sowas benutzt(ausser im php).
Ich will mal kurz zusammenfassen, welche vor- und nachteile mir wichtig sind, und welche eher nebensächlich:
Wichtig
Einfach zu lesen und zu schreiben
Keine kompatiblitätsprobleme bei den CPUs
Sollte kompatibel mit klassen wie std:.string sein, und auch mit zeigern
Erweiterungsfähig(dazu sag ich gleich noch was)
Der Benutzer soll die daten nicht ohne weiteres verändern können
Der parser(falls denn einer erforderlich ist) sollte einfach zu bedienen sein.
Nebensächlich
Dateigröße
Fragen
1) Wie kann ich nun ein solches Dateiformat entwikeln, oder ein vorhandenes benutzen, welches meine zwecke erfüllt?
2) Kennt jemand gute tutorials, anleitungen, bücher etc, die dieses thema zu genüge behandlen?
3) Sind Datenbanken sinnvoll und welche nutze ich am besten und wie?
Zur erweiterungsfähigkeit des formats:
Das spiel wird niemals fertig sein, da ich es ständig erweitern werde.
Jeder kann vorschläge machen, was rein soll, aber bitte erst nach der ersten version ;-)
PS: Wenn sich der thread interessant entwikelt, könnte man ihn doch in die FAQ aufnehmen oder was meinen die Mods?
Socke