Wie laden grosse Programme/Spiele ihre Strings?
-
Hallo,
große Programme haben ja sehr viele Strings, teilweise in extra Dateien wie "pacman_deDE.dat" ausgelagert. Werden die denn beim Programmstart komplett in den Hauptspeicher gelesen oder ist es üblich die Datei nur zu öffnen und dann irgendwie bei Bedarf über Dateipositionszeiger auf die Strings in der Datei zuzugreifen? Die ganzen .dat Dateien in meinem Spieleverzeichnis summieren sich auf etliche Gigabyte, daher die Frage. Hat also jemand diesbez. Erfahrung wie man das vorbildlich erledigt?
Tschüp
-
Texte brauchen recht wenig Speicher. Ein ganzes Buch passt in 1 MByte. Deswegen werden sie wohl komplett beim Start geladen. Aber die Dateien bei Spielen setzen sich nicht nur aus Texten zusammen, sondern auch aus Bildern, Texturen und Musik. Sie werden wahrscheinlich nur bei Bedarf geladen. Wie diese in den Dateien abgelegt sind und wie auf sie zugegriffen wird, kann sehr unterschiedlich sein.
-
Naja das werden wohl meist nur Container sein und man läd die Daten die man für das aktuelle Level braucht.
-
Die Auslagerung von der du glaub ich sprichst geht eher in Richtung Lokalisierung.
Also Pacman_frFR.dat, Pacman_enUK.dat, Pacman_enUS.dat .....
-
Vorbildlich mit GNU gettext. Das einfachste System mMn.
Oder man macht einfache Datenbanken mit SQLite. Etwas mehr aufwand, aber auch sehr performant.
Kommt aber immer auf das Game an. Ein Rollenspiel braucht da komplexere Lösungen als ein Shooter denke ich, da ja die Daten auch mit Quests verknüpft werden müssen etc.
Weitere Lösung wären XML-Files:<stringtable mission="Free Marvin" id="42"> <string id="SID_MARVIN_ANSWER1"> <de>Ich fühle mich deprimiert!</de> <en>I am feeling depressed!</en> </string> </stringtable>
usw.
Möglichkeiten gibts viele.
rya.