Dateiformate, binär oder text?
-
Hi!
Ich bin im Moment am überlegen ob ich meine Dateiformate
(3D-Files, Level, Textur-Shader etc.) nicht auf XML aufbauen soll.Würde das Lesen der Daten (insbesondere von Strings) vereinfachen und
sie wären immer per Editor veränderbar. Ich meine, man schaue sich md3 an.
Da brauch man für die Definition der Animationsframes ne' Extradatei.
Außerdem finde ich es lästig wenn man für ein Modell zwei oder mehr
Files braucht.Ich habe nur Bedenken was die Dateigröße und die Ladezeit engeht.
Besonders die Lade/Parsingzeit ist mir wichtig.
Hat da jemand Erfahrung?
-
meiner meinung nach spielt die dateigröße alleine betrachtet keine rolle, da die kapazitäten der speichermedien immer weiter ansteigen, und ein ende dieses anstiegs noch lange nicht in sicht ist.
ausserdem haben die meisten formate relativ statische größen, so das die absolute größe keine echte rolle spielt ( ich meine damit, das die meisten datenformate nicht ständig anwachsen und überdimensionale größen anehmen, wie z.b. bei der speicherung von daten die von lesegeräten kommen und archiviert werden müssen).
die größe beeinflusst aber lese-/schreibgeschwindigkit sehr. daher ist es wichtig zu wissen für welche zwecke du die formate benötigst. wenn die geschwindigkeit unwichtig ist und das format öffentlich sein sollte, dann ist xml eine gute wahl.
bei spielen würde ich aber sagen, möchte man eher maximale geschwindigkeit und möglichst geheime datenformate, damit es die "möchtegernhacker" möglichst schwer haben die daten zu verändern.
die parsgeschwindigkeit spielt bei heutigen prozessoren wohl keine rolle mehr. es ist viel wichtiger die daten möglichst effizient vom speichermedium zu lesen und auf das speichermedium zu schreiben, und das möglichst in großen blöcken. das erhäht die geschwindigkeit viel mehr, als wenn man das parsen weglassen kann. ich glaube kaum das ein 3GHz proz probleme hat, beim parsen von daten dem ladevorgang nicht hinterherzuhinken.
kleine frage nebenbei:
wieso ist das laden von strings komlizierter als das laden anderer daten?
-
Original erstellt von Kane:
Würde das Lesen der Daten (insbesondere von Strings) vereinfachen
-
Die Game-Engine wird, wenn sie final ist, unter der GPL stehen.
Mit "Möchtegernhackern" habe ich also keine Probleme.Wenn das Parsing nicht so ins gewichtfällt, könnte man doch die
gesamte Datei in den Speicher laden (eine großen Block lesen->schnell) und
dann parsen, oder?
-
Bei meinem Adventure lass ich alle Dateien durch eine selbstentwickelte asymetrische Verschlüsselung laufen. Und mit Speicherplatz/Ladegeschwindigkeit etc hab ich eigentlich keine grossen Probleme
Bei 3D Models kann das aber ganz schnell zum Problem werden. Mich nervt es jedenfalls extrem wenn jedes Level 10 Jahre laden muss.
Bei "SoF2" fand ich das sehr nervtötend.
Beim mittlerweise ja schon etwas älteren "System Shock 2" liegen alle Textur-Daten in riesigen Zip-Archiven herum. Da dauert das Laden dann noch länger
-
Das lange Laden bei SolF2, JK2 und anderen Quake3-basierten Spielen
liegt an den Texturen, nicht den anderen Formaten.
Es werden nämlich hauptsächlich Jpeg geladen, die dann erstmal decodiert werden
müssen.
-
EXTREM schlimm isset bei Postal 2.
-
Und richtig pervers ist es bei Unreal 2
-
ich würde beides möglich machen (xml und binär), xml fürs entwickeln und binär für releases
-
Ich würde es eher so sagen:
XML, um sehr kompatibel zu sein, oder binär, um wirklich alles an Geschwindigkeit rauszuholen.
-
Ich denke, ich nehme erstmal XML.
Werde es mal mit der xml2-Lib. porbieren.
-
Die LibXML ist doch viel zu groß. Eine schnelle kleine ist TinyXML - die benutze ich seit ein paar Tagen, die ist echt gut aufgebaut, und schön klein
-
Danke für den Tipp. Schaut ja echt vielversprechend aus.