Hallo zusammen,
Ich wollte mal so Fragen, wie ihr ein System z.b. bei Spielen zum "packen" von Texturen, 3D-Modele, Bilder usw. am besten aufbauen würdet.
Ich habe es bei meinem kleinen Spiel so gemacht, dass ich immer eine Datei für jeweils Texturen usw.
gemacht habe, die ich in folgender Struktur aufgebaut habe:
1. Dateiname (natürlich mit Länge)
2. Data mit der
zlib Unit gepackt (Größen ungepackt/gepackt mitgespeichert, wegen entpacken)
Und so alle z.b. Textur-Dateien in eine Art Texture-
Package gepackt.
Beim Auslesen lege ich mir eine Liste an, mit den Dateinamen, wo die gepacketen Daten anfangen (Pos des Streams nach dem Dateinamen auslesen) danach überspringe ich den "Data-Block" in der Datei und gehe zum nächsten Dateinamen über.
So dass ich, wenn ich die Datei brauche, eine Funktion hab, die z.b. das Bild in einen MemoryStream entpackt, mit der jeweiligen Klasse lese und den Stream wieder freigebe.
Soweit wie ich gerade mache.
Mir ist aber auch eine andere Idee gekommen, z.b. alle Daten in eine Art MemoryStream-Liste zuentpacken beim Start. Um das eigentliche Lesen in die Klasse zubeschleunigen. Was den Nachteil hat, dass alles im Speicher liegt. (Die "Leseklassen" gebe ich ja frei, aber die Klasse zum "darstellen" liegt im Speicher, dass ist ja klar.)
Bei einem Spiel habe ich gesehen, das sie 2 Dateien haben, eine Art Inhaltsverzeichnis und eine Datei mit den gepackten Daten. Was haltet ihr davon?
Mich interessiert es wegen der Optimierung und wie es für den User besser wäre.
Mehr "arbeit" beim Start oder zur "Laufzeit" des Programms/Spieles.
Oder wenn gleich, wie macht man sowas am besten?
Backups soll man ja nicht machen können
.
Möglich sein muss:
- Dass man die enthaltenen Dateien patchen kann, d.h. überschreiben, hinzufügen usw.
- Data wie Bilder müssen gepackt sein, wegen Platz und da ich nicht will, dass man sie verändert kann ohne weiteres.
- Dateinamen müssen dabei sein natürlich
(Oder wäre eine Art ID besser?)
Wie würdet ihr das Lesen machen?
Oder würdet ihr die "Datei-Packages" ganz anders aufbauen?
Oder wirklich alles in eine Datei und beim Lesen dan sortieren?
Ihr könnt euch eine oder mehr Fragen/Überlegungen aussuchen und eure Meinung dazusagen
Hoffe ich Frage nicht zuviel auf einmal
Gruß
NickelM