Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.10.2011, 17:55

[C++] Erstellung und Nutzung von Gamearchiven

Hallo Community,
ich programmiere noch nicht sehr lange in C++ (ergo Anfänger). Da ich bereits ein Spiel in PHP, Javascript und co erstellt habe, traue ich mich nun an C++.

Mein derzeitiges Problem ist die Erstellung von und das Zugreifen auf Gamearchive. Ich finde z.Z. immer nur Tutorials die erklären wie
man ein Archiv anlegt und komplett entpackt. Leider ist hier auch das Problem, dass ich ja einen Index von diesem Archiv haben muss.

Es kann natürlich sein, dass ich einfach den Wald vor lauter Bäumen nicht sehe, da ich nicht genau weiß wie ich dieses Problem benennen soll.

Gruß,
Neuling Marco :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Dunkler_Phoenix« (29.10.2011, 18:12)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

29.10.2011, 19:48

Naja was hast du denn genau vor und was passiert dabei nicht?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

29.10.2011, 20:54

Hi,
ich hab vor alle Audio- und Bilddateien in ein Archiv verpacken auf das ich dann via C++ zugreifen kann.
Ich bin erst auf zLib, aber da hab ich immer nur Codes gefunden die ALLES entpacken und nicht nur auf einzelne Dateien des Archives.

Mir ist es wichtig, dass ich auf die gepackten Dateien direkt zugreifen kann oder hab ich vielleicht das gesamte Gamesystem falsch verstanden?
Aber dann müsste ja z.B. bei World of Warcraft bei jedem Start alle Dateien in den Tempordner entpackt werden.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

29.10.2011, 21:24

Wenn dir die Umsetzung von Archiven zu kompliziert ist, dann leg die Dateien doch einfach so wie sie sind ab und greif drauf zu.

Aber mit den Codes zum kompletten entpacken hast du doch schon eigentlich alles was brauchst.
Du fängst mit dem Code an und änderst ihn dahingehend ab, dass eben keine Dateien auf die Festplatte geschrieben werden, sondern die gewünschte Datei irgendwo in den Speicher geladen wird.

5

29.10.2011, 21:28

Ah danke, eben dieser Ansatz hat mir gefehlt.
Ich versuch das jetzt mal umzusetzen. Sollte ich Probleme bekommen melde ich mich wieder ;D

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

29.10.2011, 22:28

Besser wäre es nur Teile aus dem Archiv in den Speicher laden zu können. Wäre eher ungut, wenn Games immer erst alles laden müssten, auch wenn sie es gar nicht brauchen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

7

30.10.2011, 11:10

Hi,
ich hab vor alle Audio- und Bilddateien in ein Archiv verpacken auf das ich dann via C++ zugreifen kann.
Ich bin erst auf zLib, aber da hab ich immer nur Codes gefunden die ALLES entpacken und nicht nur auf einzelne Dateien des Archives.

Mir ist es wichtig, dass ich auf die gepackten Dateien direkt zugreifen kann oder hab ich vielleicht das gesamte Gamesystem falsch verstanden?
Aber dann müsste ja z.B. bei World of Warcraft bei jedem Start alle Dateien in den Tempordner entpackt werden.

Die Zlib komprimiert/dekomprimiert immer einen Datenstrom. Entweder du nimmst ein fertiges, unkomprimiertes Archiv und komprimierst es dann
(eher schlecht, du müsstest immer erst das komplette Archiv entpacken) oder du komprimierst die einzelnen Dateien und bastelst daraus dann
ein Archiv.

Willst du evtl. eher so etwas wie http://www.winimage.com/zLibDll/minizip.html? (Grad gegoogled, keine Ahnung ob die Bibliothek hält was sie verspricht!)
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

30.10.2011, 11:45

Willst du evtl. eher so etwas wie http://www.winimage.com/zLibDll/minizip.html? (Grad gegoogled, keine Ahnung ob die Bibliothek hält was sie verspricht!)

Genau diese Library hab ich schon für ein Spiel (Blocks 5) genutzt. Klappt prima, sogar mit verschlüsselten Archiven, damit man nicht ganz so einfach die Daten "klauen" kann.
Ich habe dazu mal ein Tutorial geschrieben, das ich wieder ausgraben und in das neue Wiki (kommt übermorgen!) integrieren werde.

Werbeanzeige