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.
Offset | Byte | Beschreibung |
0 | 3 | 'UMF' Kennung (universal map file) |
3 | 1 | Bit 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)
|
4 | 4 | CRC32-Checksumme |
8 | 20 | SHA1-Fingerprint (nur PROversion) |
28 | 2 | Anzahl Blöcke |
30 | 2 | Anzahl Layerobjekte |
32 | 2 | Anzahl Bildobjekte |
34 | 2 | Anzahl geom. Objekte |
36 | 2 | Anzahl Tilesets |
38 | 2 | Anzahl Animationen |
40 | 2 | Anzahl Basisdaten |
42 | 2 | Anzahl Datenlayer |
44 | 2 | Anzahl Metadaten |
46 | 2 | Anzahl Variablenblöcke (ab v1.4) |
48 | 2 | Anzahl Standard Datenwerte (ab v1.4) |
50 | 14 | *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!
Offset | Byte | Beschreibung |
0 | 4 | Größe Block 1 |
4 | 4 | Größe Block 2 |
... | 4 | Größe Block n |
|
Tileset |
Tileset-Definitionen stehen direkt hinter Table. Diese können nur Animation-Definitionen enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 100 |
1 | 1 | Maskierung R |
2 | 1 | Maskierung G |
3 | 1 | Maskierung B |
4 | 2 | Framebreite |
6 | 2 | Framehöhe |
8 | 2 | Y-Korrektur |
10 | 2 | Anzahl Animationen |
12 | 2 | Anzahl Frames |
14 | 12 | Grafikdatei |
|
| Gesamtlänge 26 Byte |
|
Animation |
Animation-Definition kann nur hinter einem Tileset stehen.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 101 |
1 | 2 | Frameanzahl (ab 1) |
3 | 2 | Startframe (ab 1) |
5 | 1 | Modus (1=Pause, 2=Vorwärts, 3=Rückwärts) |
6 | 1 | Standard Datenwert (ab v1.2) |
7 | 4 | *reserviert* (Millisekunden im Programm) |
11 | 2 | *reserviert* (Aktuelle Framenr im Programm) |
... | 2 | Animation Frame |
... | 2 | Animation 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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 105 |
1 | 2 | Frameanzahl |
3 | 1 | *reserviert* |
4 | x | Standardwerte 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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 0 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Grafikdatei |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Kartenbreite |
28 | 4 | Kartenhöhe |
32 | 1 | Füllmodus (0=Ohne, 1=Farbe, 2=Bild, 3=Bild maskiert) |
33 | 1 | Füllfarbe R |
34 | 1 | Füllfarbe G |
35 | 1 | Füllfarbe B |
|
| Gesamtlänge 36 Byte |
|
Layer (Rechteckig) |
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 1 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Layerbreite |
28 | 4 | Layerhöhe |
32 | 2 | Tilesetnummer |
34 | 1 | Maskiert (0=nein, 1=ja) |
35 | 1 | Layerwiederholung (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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 2 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Layerbreite |
28 | 4 | Layerhöhe |
32 | 2 | Tilesetnummer |
|
| Gesamtlänge 34 Byte |
|
Layer (Isometrisch 2) |
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 3 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Layerbreite |
28 | 4 | Layerhöhe |
32 | 2 | Tilesetnummer |
34 | 1 | Tile Shift (0=nein, 1=ja) |
|
| Gesamtlänge 35 Byte |
|
Layer (Hexagonal 1) |
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 4 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Layerbreite |
28 | 4 | Layerhöhe |
32 | 2 | Tilesetnummer |
34 | 1 | Tile Shift (0=nein, 1=ja) |
|
| Gesamtlänge 35 Byte |
|
Layer (Hexagonal 2) |
Layerobjekt kann Basisdaten, Metadaten oder Datenlayer enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 5 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Layerbreite |
28 | 4 | Layerhöhe |
32 | 2 | Tilesetnummer |
34 | 1 | Tile 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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 6 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 2 | Layernummer |
|
| 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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 102 |
1 | 1 | Datentiefe (4, 8, 12 oder 16) |
2 | 4 | Datenlänge in Byte |
6 | 2 | *reserviert* |
8 | x | Daten... |
... |
|
|
|
| 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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 103 |
1 | 1 | Datentiefe (1, 2, 4 oder 8) |
2 | 4 | Datenlänge in Byte |
6 | 2 | *reserviert* |
8 | x | Daten... |
... |
|
|
|
| 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).
Offset | Byte | Beschreibung |
0 | 1 | Konstante 104 |
1 | 1 | Datenformat (0=BINÄR, 1=ASCII) |
2 | 4 | Datenlänge in Byte |
6 | 2 | *reserviert* |
8 | x | Daten... |
... |
|
|
|
| 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).
Offset | Byte | Beschreibung |
0 | 1 | Konstante 106 |
1 | 1 | *reserviert* |
2 | 2 | Variablenanzahl |
4 | 4 | Datenlänge in Byte |
8 | x | Daten (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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 7 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 2 | Tilesetnummer |
26 | 2 | Animationsnummer/Tilenummer |
28 | 2 | Animationsstartframe |
30 | 1 | Animationsmodus (0=Std, 1=Pause, 2=Vorwärts, 3=Rückwärts) |
31 | 1 | Maskiert (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.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 8 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Justage X |
15 | 1 | Justage Y |
16 | 4 | Tileposition X |
20 | 4 | Tileposition Y |
24 | 2 | Tilesetnummer |
26 | 2 | Animationsnummer/Tilenummer |
28 | 2 | Animationsstartframe |
30 | 1 | Animationsmodus (0=Std, 1=Pause, 2=Vorwärts, 3=Rückwärts) |
31 | 1 | Maskiert (0=nein, 1=ja) |
32 | 2 | Layernummer |
|
| Gesamtlänge 34 Byte |
|
Objekt (Punkt) |
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 9 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
|
| Gesamtlänge 24 Byte |
|
Objekt (Linie) |
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 10 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Startposition X |
20 | 4 | Startposition Y |
24 | 4 | Endposition X |
28 | 4 | Endposition Y |
|
| Gesamtlänge 32 Byte |
|
Objekt (Rechteck) |
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 11 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Breite |
28 | 4 | Höhe |
|
| Gesamtlänge 32 Byte |
|
Objekt (Oval) |
Enthält keine Basisdaten oder Datenlayer! Kann aber Metadaten enthalten.
Offset | Byte | Beschreibung |
0 | 1 | Konstante 12 |
1 | 1 | Sichtbar (0=nein, 1=ja) |
2 | 12 | Name |
14 | 1 | Parallax X |
15 | 1 | Parallax Y |
16 | 4 | Position X |
20 | 4 | Position Y |
24 | 4 | Radius X |
28 | 4 | Radius Y |
|
| Gesamtlänge 32 Byte |
|