mardi 31 mars 2015
Input/Output Tilemap effizient speichern als Textdatei
Posted on 04:08 by verona
Hallo, liebe Java-Menschen! :)
Wie speichert man die Tilemap, das Level eines tile-based Games, effizient?
Das Level in meinem Spiel besteht aus drei Arrays:
- byte[][] blocks,
- byte[][] backgrounds und
- short[][] lights (Beleuchtungswerte von 0 - 255).
Der naive Ansatz war, Savedateien nach folgendem Muster zu erstellen. (Jede Zeile entspricht einer Reihe.)
Muster:
[Block-ID],[Background-ID],[Light-Value]_[Block-ID],[Background-ID],[Light-Value]_ usw.
[Block-ID],[Background-ID],[Light-Value]_[Block-ID],[Background-ID],[Light-Value]_ usw.
Beispiel:
0,1,255_0,1,255_4,2,100_4,2,100
10,5,0_8,1,50_9,5,0_12,5,200
Das ist vom Umfang her natürlich riesig, da jeder Wert als eigentlicher Zahlwert gespeichert wird. Es dauert so natürlich auch Ewigkeiten, Millionen von Tiles in die Textdateien auszugeben.
An einem Versuch, die byte- und short-Werte als chars zu speichern, bin ich gescheitert; es konnten nie die richtigen, vorigen Werte wieder herausgelesen werden. Womöglich lag das an non-printable Characters?
Welche Möglichkeiten der datenverlust-freien Kompression gibt es für solche Form von Levels stattdessen?
Wie speichert man die Tilemap, das Level eines tile-based Games, effizient?
Das Level in meinem Spiel besteht aus drei Arrays:
- byte[][] blocks,
- byte[][] backgrounds und
- short[][] lights (Beleuchtungswerte von 0 - 255).
Der naive Ansatz war, Savedateien nach folgendem Muster zu erstellen. (Jede Zeile entspricht einer Reihe.)
Muster:
[Block-ID],[Background-ID],[Light-Value]_[Block-ID],[Background-ID],[Light-Value]_ usw.
[Block-ID],[Background-ID],[Light-Value]_[Block-ID],[Background-ID],[Light-Value]_ usw.
Beispiel:
0,1,255_0,1,255_4,2,100_4,2,100
10,5,0_8,1,50_9,5,0_12,5,200
Das ist vom Umfang her natürlich riesig, da jeder Wert als eigentlicher Zahlwert gespeichert wird. Es dauert so natürlich auch Ewigkeiten, Millionen von Tiles in die Textdateien auszugeben.
An einem Versuch, die byte- und short-Werte als chars zu speichern, bin ich gescheitert; es konnten nie die richtigen, vorigen Werte wieder herausgelesen werden. Womöglich lag das an non-printable Characters?
Welche Möglichkeiten der datenverlust-freien Kompression gibt es für solche Form von Levels stattdessen?
Input/Output Tilemap effizient speichern als Textdatei
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire