Ich hab mir das Map Format mal angeschaut. Ist noch ein wenig "unschön" gelöst, wie man es auch an der Dateigröße merkt. Damit meine ich vorallem die 500er Map.. die knapp 1MB groß ist. 100 Maps == 100MB? Ich weiß das wäre eher der worst-case, aber schau dir als gutes Beispiel mal das Tiled .tmx (eigentlich .xml) Format an. Tiled Map Editor. Dort wird zlib Kompression + base64-encoding verwendet. Anstatt also:
im klartext zu speichern könntest du folgendes machenZitat
Um die Map zu erhalten dann sowas wie:Zitat
Zip die Map mal, dann siehst du wieviel du in etwa verschwendest. 994kb werden auf ca. 6kb komprimiert.Zitat
Falls du aus irgendeinen Grund nicht darauf verzichten willst, würde ich trotzdem einige Dinge überdenken. Sowas wie:
Jeder char im xml Bezeichner ist mal fünfhundert = 500 Byte Verschwendung. Auch das Attributte "Tiles" ist unnötig. Den Tile IDs String kann man auch als value speichern. Also eher sowas wieZitat
Bei AnimationDatabase.xml ist es ähnlich.Zitat
Anstatt jedesmal ein neuen Tag für die Framezeit zu beginnen könntest du ein int array mit [index] = frametime Wertepaaren verwenden. Außerdem könntest du default-werte einführen. Werte wie posX="0" posY="0" scale="100" rotation="0" opacity="100" braucht man nicht zu speichern, wenn es sie als default gibt. Daraus wird dann sowas wie:Zitat
Die Frame zeiten werden dann mit frame_times[sprite.t] ausgelesen.Zitat
Na ja, das viel mir so auf. Hab mir aber auch nicht alles angeschaut.