Spiel Ressourcen verschlüsselt laden

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Firstdeathmaker

Betreff: Spiel Ressourcen verschlüsselt laden

BeitragMo, Okt 20, 2008 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab mal ne Frage: Wie kann ich meine Mediadaten am besten verschlüsselt einbinden, sodass z.B. Bilder nicht im Klartext in einem Unterordner stehen, sondern am besten alle als ein dickes Paket irgendwo stehen. Es würde mir reichen wenn jmd mir sagen könnte wie man Bilder aus einem Stream laden kann. Ich meine in vielen Spielen gibt es doch auch so .dat Dateien in welchen der Spielinhalt verschlüsselt als Paket vorliegt, oder?

Hinweis: Incbin kommt für mich nicht in Frage, da ich schon jetzt etwa 50mb habe, und da noch mehr als 50 mb dazukommen. Dadurch würde die Exe ziemlich groß werden, wodurch das laden des Spiels irsinnig lange dauern würde.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Suco-X

Betreff: .....

BeitragMo, Okt 20, 2008 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Lade die Datei doch einfach in den Speicher (LoadBank oder sonstiges) und entschlüssel sie. Die Bilder kannst du dann aus dieser Entschlüsselten Bank laden ohne sie zwischenspeichern zu müssen.
Einfach LoadImage/Sound/Font(DeinBank/Stream/Speicherblock).
Dieser Möglichkeit hatte BlitzBasic auf jedenfall noch nicht.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Firstdeathmaker

BeitragMo, Okt 20, 2008 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Oha, habs hinbekommen, danke!

Code: [AUSKLAPPEN]
SuperStrict

Include "TCrypt.bmx"

CryptImage("bg.png" , "crypted.png")

CryptImage("crypted.png" , "crypted2.png")

Local img:TImage = loadImage3("crypted.png")

Graphics 800 , 600 , 0
Cls
DrawImage  img, 0 , 0
Flip
WaitKey()
End




Function loadImage3:TImage(path:String)
   Local crypt:TCrypt = New TXorCrypt
   crypt.setKey("1001")
   Local inbank:TBank = LoadBank(path)
   Local in:TStream = CreateBankStream(inbank)
   Local outbank:TBank = CreateBank()
   Local out:TStream = CreateBankStream(outbank)
   crypt.decipher(in , out)
   Return LoadImage(outbank)
End Function


Function CryptImage(path:String , outPath:String)
   Local crypt:TCrypt = New TXorCrypt
   crypt.setKey("1001")
   
   Local inbank:TBank = LoadBank(path)
   Local in:TStream = CreateBankStream(inbank)
   Local outbank:TBank = CreateBank()
   Local out:TStream = CreateBankStream(outbank)
   crypt.cipher(in , out)
   SaveBank(outbank,outPath)
End Function










Rem
   Easy Cryptography module by Christian Gei�ler (c) 2008
   about: delivers easy to use encryption and decryption classes for bmax.

End Rem


Rem
   bbdoc: Interface for encryption / decryption types
End Rem

Type TCrypt Abstract
   
   Rem
      bbdoc: ciphers a stream into another with the specified KEY
      also: setKey()
   End Rem
   Method cipher(in:TStream , out:TStream) Abstract
      
   Rem
      bbdoc: deciphers a stream into another with the specified KEY
      also: setKey()
   End Rem
   Method decipher(in:TStream , out:TStream) Abstract
      
   Rem
      bbdoc: sets the key for this encryption type
   End Rem
   Method setKey(key:String) Abstract

End Type



Rem
   bbdoc: Weak encryption type, uses XOR to encrypt files.
End Rem

Type TXorCrypt Extends TCrypt Final
   Field key:Int
   
   Method cipher(in:TStream , out:TStream)
      If in=Null Or out = Null Return
      While Not Eof(in)
         WriteInt(out,(ReadInt(in) ~ Self.key))
      Wend
   End Method
      

   Method decipher(in:TStream , out:TStream)
      If in = Null Or out = Null Return
      Self.cipher(in,out)
   End Method
      

   Method setKey(key:String)
      Self.key = Int(key)
   End Method
End Type



www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

klepto2

BeitragMo, Okt 20, 2008 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ kannst du auch meinen Packer verwenden, der zipped zusätzlich benutzt eine XOR verschlüsselung und Passwort support.

https://www.blitzforum.de/showcase/73/
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Firstdeathmaker

BeitragMo, Okt 20, 2008 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, dein modul ist genau das was ich gebraucht hätte... ist nur leider schon zu spät, da mein Program schon sehr weit fortgeschritten ist und ich ein eigenes Kryptographie Modul geschrieben habe. Xor ist mir da ein wenig zu unsicher, weshalb ich mich für Aes entschieden habe. Aber ansonsten ist dein Modul schon sehr praktisch, vor allem schön einfach gehalten!
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group