Seite 1 von 1
Resourcen-Datei für Spiele unter PureBasic
Verfasst: 29.07.2008 02:40
von KatSeiko
Ich sehe immer wieder bei anderen Spielen, dass sie Ressourcen-Dateien verwenden, in denen alle Grafiken zusammengefasst werden. Wie funktioniert das unter PureBasic? (Ich habe noch keine Dokumentation hierzu gefunden...)
Was ich meine, ist dieses: Aktuell sind meine Grafiken in einem Ordner namens GFX und meine Sounds in einem Ordner namens SND... Ich würde nun zu gern all diese Daten alle in eine einzelne Datei packen...
So als Beispiel: Guildwars besteht aus genau zwei Dateien. Einer GW.exe und einer GW.dat. letztere enthält alles, was das Spiel ausmacht (Module, Grafiken, Sounds, Meshes, ...).
Re: Resourcen-Datei für Spiele unter PureBasic
Verfasst: 29.07.2008 07:57
von Danilo
KatSeiko hat geschrieben:Was ich meine, ist dieses: Aktuell sind meine Grafiken in einem Ordner namens GFX und meine Sounds in einem Ordner namens SND... Ich würde nun zu gern all diese Daten alle in eine einzelne Datei packen...
Direkt in die EXE kann es mit IncludeBinary in einer DataSection.
Und dann mit CatchSound/CatchImage/CatchSprite usw. aus dem Speicher laden.
KatSeiko hat geschrieben:So als Beispiel: Guildwars besteht aus genau zwei Dateien. Einer GW.exe und einer GW.dat. letztere enthält alles, was das Spiel ausmacht (Module, Grafiken, Sounds, Meshes, ...).
Dafür wären die Packer-Befehle ideal, siehe Hilfe. Du packst also alle
Einzeldateien nacheinander in Deine .dat, und zur Laufzeit lädst/entpackst
Du die Daten dann in den Speicher.
Verfasst: 29.07.2008 08:07
von KatSeiko
Kann ich dazu bitte ein Beispiel bekommen? (Ich bin erst ein paar Tage an PureBasic überhaupt dran, hab mich gleich nach dem Kauf registriert...)
Verfasst: 29.07.2008 08:24
von Danilo
KatSeiko hat geschrieben:Kann ich dazu bitte ein Beispiel bekommen? (Ich bin erst ein paar Tage an PureBasic überhaupt dran
Zum packen/entpacken stehen direkt Beispiele in der Hilfe bei
CreatePack() und
OpenPack().
Bei
IncludeBinary funktioniert es ungefähr so:
Code: Alles auswählen
; screen oeffnen...
If Not CatchSprite(1,?Player1)
; Fehler ausgeben : End
Endif
If Not CatchSprite(2,?Player2)
; Fehler ausgeben : End
Endif
If Not CatchSound(1,?Sound1)
; Fehler ausgeben : End
Endif
; GameLoop...
End
DataSection
Player1: IncludeBinary "GFX\player1.bmp"
Player2: IncludeBinary "GFX\player2.bmp"
Sound1: IncludeBinary "SND\schuss.wav"
EndDataSection