Dateiformat
Das binäre Dateiformat ist sehr kompakt. Es ist nach Baukasten-Prinzip aufgebaut und kann recht schnell und einfach geladen werden. Header und Table sind feste Bestandteile. Danach folgen Objektdaten. Optional können auch Subdaten enthalten sein - diese werden dem letzten Objekt zugeordnet. Die Länge der Datei muss durch 4 teilbar sein.



Hinweis: Objekt ist entweder ein Layer, Bildobjekt, geom. Objekt oder Tileset. Tileset steht grundsätzlich sofort hinter Table. Danach folgt Hintergrund-Objekt und erst dann der Rest.


Header
Header enthält Hauptinformationen der Karte. Hier wird z.B. die Anzahl der Objekte gespeichert. Header ist immer unverschlüsselt. CRC32-Checksumme wird erst ab Offset [8] berechnet. SHA1-Fingerprint speichert Passwort-Hashwert.

OffsetByteBeschreibung
03'UMF' Kennung (universal map file)
31Bit 0-5 = Dateiformatversion
1=Version 1.0-1.1
2=Version 1.2-1.3
3=Version 1.4+

Bit 6 = Erstellt mit PROversion (0=nein, 1=ja)
Bit 7 = Verschlüsselt (0=nein, 1=ja)
44CRC32-Checksumme
820SHA1-Fingerprint (nur PROversion)
282Anzahl Blöcke
302Anzahl Layerobjekte
322Anzahl Bildobjekte
342Anzahl geom. Objekte
362Anzahl Tilesets
382Anzahl Animationen
402Anzahl Basisdaten
422Anzahl Datenlayer
442Anzahl Metadaten
462Anzahl Variablenblöcke (ab v1.4)
482Anzahl Standard Datenwerte (ab v1.4)
5014*reserviert*


Gesamtlänge 64 Byte


Table
Map-Datei besteht aus einzelnen Blöcken. Ein Block kann z.B. Objektdaten, Basisdaten, Metadaten, Datenlayer usw. enthalten. Dabei belegt ein Block bestimmte Anzahl an Bytes. In Table stehen alle diese Größen untereinander. Wenn sich das Dateiformat in Zukunft etwas ändern sollte (z.B. weil ein ganz neues Objekt eingebaut wurde), wäre das trotzdem kein Problem die Datei auch mit dem alten Code zu laden!

OffsetByteBeschreibung
04Größe Block 1
44Größe Block 2
...4Größe Block n


Tileset
Tileset-Definitionen stehen direkt hinter Table. Diese können nur Animation-Definitionen enthalten.

OffsetByteBeschreibung
01Konstante 100
11Maskierung R
21Maskierung G
31Maskierung B
42Framebreite
62Framehöhe
82Y-Korrektur
102Anzahl Animationen
122Anzahl Frames
1412Grafikdatei


Gesamtlänge 26 Byte


Animation
Animation-Definition kann nur hinter einem Tileset stehen.

OffsetByteBeschreibung
01Konstante 101
12Frameanzahl (ab 1)
32Startframe (ab 1)
51Modus (1=Pause, 2=Vorwärts, 3=Rückwärts)
61Standard Datenwert (ab v1.2)
74*reserviert* (Millisekunden im Programm)
112*reserviert* (Aktuelle Framenr im Programm)
...2Animation Frame
...2Animation Zeit
...



Gesamtlänge 13+x Byte


Standard Datenwerte (ab v1.2)
Diese Tabelle enthält Standardwerte die jedem Tile zugewiesen werden können. Kann nur hinter einem Tileset stehen.

OffsetByteBeschreibung
01Konstante 105
12Frameanzahl
31*reserviert*
4xStandardwerte 1 Byte pro Frame


Gesamtlänge 4+x Byte


Hintergrund
Hintergrundobjekt ist bei jeder Karte vorhanden und wird nach Tileset-Definitionen gespeichert. Kann Metadaten enthalten. Füllfarbe kann auch als Maskierfarbe interpretiert werden, wenn ein Bild maskiert dargestellt wird.

OffsetByteBeschreibung
01Konstante 0
11Sichtbar (0=nein, 1=ja)
212Grafikdatei
141Parallax X
151Parallax Y
164Position X
204Position Y
244Kartenbreite
284Kartenhöhe
321Füllmodus (0=Ohne, 1=Farbe, 2=Bild, 3=Bild maskiert)
331Füllfarbe R
341Füllfarbe G
351Füllfarbe B


Gesamtlänge 36 Byte


Layer (Rechteckig)
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.

OffsetByteBeschreibung
01Konstante 1
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Layerbreite
284Layerhöhe
322Tilesetnummer
341Maskiert (0=nein, 1=ja)
351Layerwiederholung (0=nein, 1=ja) ab v1.4


Gesamtlänge 35 Byte (bis v1.3)
Gesamtlänge 36 Byte (ab v1.4)


Layer (Isometrisch 1)
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.

OffsetByteBeschreibung
01Konstante 2
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Layerbreite
284Layerhöhe
322Tilesetnummer


Gesamtlänge 34 Byte


Layer (Isometrisch 2)
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.

OffsetByteBeschreibung
01Konstante 3
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Layerbreite
284Layerhöhe
322Tilesetnummer
341Tile Shift (0=nein, 1=ja)


Gesamtlänge 35 Byte


Layer (Hexagonal 1)
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.

OffsetByteBeschreibung
01Konstante 4
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Layerbreite
284Layerhöhe
322Tilesetnummer
341Tile Shift (0=nein, 1=ja)


Gesamtlänge 35 Byte


Layer (Hexagonal 2)
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.

OffsetByteBeschreibung
01Konstante 5
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Layerbreite
284Layerhöhe
322Tilesetnummer
341Tile Shift (0=nein, 1=ja)


Gesamtlänge 35 Byte


Layer (Klon)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten. Jeder Layer bekommt eine eigene Nummer. Der erste Layer begint mit 1 - alle anderen bekommen fortlaufende Nummer.

OffsetByteBeschreibung
01Konstante 6
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
242Layernummer


Gesamtlänge 26 Byte


Basisdaten
Diese Daten enthalten die Hauptinformationen zu einem Layer. Nach diesen Werten wird ein Layer dann gezeichnet. Kann nur hinter Layer-Objekten stehen (ausser Klonlayer). Datenaufbau siehe hier.

OffsetByteBeschreibung
01Konstante 102
11Datentiefe (4, 8, 12 oder 16)
24Datenlänge in Byte
62*reserviert*
8xDaten...
...



Gesamtlänge 8+x Byte


Datenlayer
Datenlayer enthält unsichtbare Informationen zu einem Layer. Jedes Tile kann einen Wert besitzen. Kann nur hinter Layer-Objekten stehen (ausser Klonlayer). Datenaufbau siehe hier.

OffsetByteBeschreibung
01Konstante 103
11Datentiefe (1, 2, 4 oder 8)
24Datenlänge in Byte
62*reserviert*
8xDaten...
...



Gesamtlänge 8+x Byte


Metadaten
Metadaten sind unsichtbare Informationen die zu einem Objekt zugewiesen werden können. Kann hinter jedem Objekt stehen (ausser Tileset).

OffsetByteBeschreibung
01Konstante 104
11Datenformat (0=BINÄR, 1=ASCII)
24Datenlänge in Byte
62*reserviert*
8xDaten...
...



Gesamtlänge 8+x Byte


Variablen (ab v1.4)
Variablen sind unsichtbare Informationen die zu einem Objekt zugewiesen werden können. Kann hinter jedem Objekt stehen (ausser Tileset).

OffsetByteBeschreibung
01Konstante 106
11*reserviert*
22Variablenanzahl
44Datenlänge in Byte
8xDaten (Aufbau):
1) Stringlänge A für Name (1 byte)
2) Stringlänge B für Wert (1 byte)
3) Stringname mit Länge A
4) Stringwert mit Länge B
...



Gesamtlänge 8+x Byte


Objekt (Bild)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.

OffsetByteBeschreibung
01Konstante 7
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
242Tilesetnummer
262Animationsnummer/Tilenummer
282Animationsstartframe
301Animationsmodus (0=Std, 1=Pause, 2=Vorwärts, 3=Rückwärts)
311Maskiert (0=nein, 1=ja)


Gesamtlänge 32 Byte


Objekt (Block)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten. Jeder Layer bekommt eine eigene Nummer. Der erste Layer begint mit 1 - alle anderen bekommen fortlaufende Nummer.

OffsetByteBeschreibung
01Konstante 8
11Sichtbar (0=nein, 1=ja)
212Name
141Justage X
151Justage Y
164Tileposition X
204Tileposition Y
242Tilesetnummer
262Animationsnummer/Tilenummer
282Animationsstartframe
301Animationsmodus (0=Std, 1=Pause, 2=Vorwärts, 3=Rückwärts)
311Maskiert (0=nein, 1=ja)
322Layernummer


Gesamtlänge 34 Byte


Objekt (Punkt)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.

OffsetByteBeschreibung
01Konstante 9
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y


Gesamtlänge 24 Byte


Objekt (Linie)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.

OffsetByteBeschreibung
01Konstante 10
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Startposition X
204Startposition Y
244Endposition X
284Endposition Y


Gesamtlänge 32 Byte


Objekt (Rechteck)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.

OffsetByteBeschreibung
01Konstante 11
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Breite
284Höhe


Gesamtlänge 32 Byte


Objekt (Oval)
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.

OffsetByteBeschreibung
01Konstante 12
11Sichtbar (0=nein, 1=ja)
212Name
141Parallax X
151Parallax Y
164Position X
204Position Y
244Radius X
284Radius Y


Gesamtlänge 32 Byte