seeseekey.net - Invictus Deus Ex Machina

Vor kurzer Zeit stand ich vor dem Problem, dass eine Taste auf der Tastatur eines MacBook nicht mehr funktionierte. Nun tippt es sich ohne das komplette Alphabet bekanntermaßen etwas schwierig. Wenn die Taste nicht mehr repariert werden kann, muss eine andere Lösung in Erwägung gezogen werden.

Die Einstellungen in Karabiner-Elements

Das Werkzeug der Wahl ist hierbei Karabiner bzw. Karabiner-Elements. Nach der Installation des Tools, kann, unter Zuhilfenahme von Karabiner-Elements, das Mapping der Tasten verändert werden. Als Ausweichtaste bietet sich die Caps Lock-Taste an. Diese verfügt im Normalfall über keinerlei sinnvolle Funktionalität. Der Quelltext der beiden Karabiner-Versionen ist auf GitHub zu finden. Lizenziert sind die Werkzeuge als Public Domain und damit für jedermann frei verfügbar.

Heute gibt es wieder eine neue Folge des seeseekey.net Podcasts und Matthias ist wieder mit von der Partie. Das Thema diesmal: OpenStreetMap – die freie Weltkarte.

Dabei geht es unter anderem um die Geschichte von OpenStreetMap, der Möglichkeit des Beitragens und deren Besonderheiten, sowie die Nutzung und Lizenzierung von OpenStreetMap-Daten. Der Podcast kann über den entsprechenden Feed abonniert werden.

Dank der Bing Luftbilder kann man in OpenStreetMap mittlerweile auch Orte mappen zu denen man keinen Zugang hat. Leider haben die Bing Luftbilder einige Nachteile. Sie sind relativ alt und relativ schlecht aufgelöst. Aus diesem Grund liste ich einfach mal meine Wunschorte auf, welche Mapper vor Ort verbessern könnten 🙂

Lychen (53.208 / 13.32):

 

Naugarten (53.312 / 13.685):

 

Arendsee, Parmen, Raakow & Weggun (53.34 / 13.613):

 

Ich würde mich freuen, wenn sich jemand dieser Ortschaften annehmen könnte 🙂

Auf der Website http://www.mapeditor.org gibt es einen freien Tilebasierten Mapeditor names Tiled. Der Editor wurde in Java geschrieben und wird unter anderem von Projekten wie The Mana World (http://www.themanaworld.org) benutzt.

Das Standardformat dieses Editores ist TMX. Dabei handelt es sich um eine XML Datei in der die Daten kodiert sind. Vor einiger Zeit war ich damit beschäftigt einen Reader für das Format zu schreiben. Leider ist die Dokumentation des Formates sehr lückenhaft, aber dank einiger tatkräftiger Hilfe auf der Mailingliste war der Reader nach einer Weile dann doch fertig. Doch nun zum TMX Format. Eine TMX Datei könnte z.B. so aussehen: ow-testmap.tmx

Als erstes kommt der map Tag in dem alle anderen tags untergeordnet sind. Der erste Tag von Interesse ist dann der tileset Tag. In diesem Tag stehen der Name des Tilesets, die FirstGID (dazu später mehr), die Breite und Höhe der Tiles sowie das Quellbild des Tilesets.

Nachdem die Tilesets definiert sind beginnen auch schon die Layer Definitionen. Eine Karte kann aus mehreren Layern bestehen z.B. einem Kollisionlayer. Im Layer Tag stehen der Name, die Breite und Höhe des Layers. Darunter folgt bei komprimierten Karten (die Standardeinstellung von Tiled) der Tag data mit dem Attribut encoding. In unserem Beispiel ist die Kodierung Base64 und die Kompression gzip. Um an die Daten des Layers zu kommen muss man den von den Data Tags eingeschlossen String nehmen und mittels Base64 decodieren. Anschließend erhält man ein Byte Array. Dieses Byte Array muss dann noch mittels des gzip Algorithmus dekomprimiert werden. Bei dieser Aktion kommt am Ende auch wieder ein Byte Array heraus.

In diesem Byte Array stehen dann die Tilenummern drin und zwar in Form von 4 Byte Integers (Little Endian). Hat man z.B. eine 2×2 Karte so würden die Tiles in folgender Reihenfolge kommen: 0,0 – 0,1 – 1,0 – 1,1.

Nun stellt sich nur noch die Frage wie man diese Tilenummern interpretiert. Und dabei kommt jetzt die FirstGID des Tileset zum tragen. Nehmen wir an das wir die Tilenummer 270 auslesen. Um nun zu ermitteln zu welchem Tileset die Nummer gehört prüfen wir in welches Tileset in diesem Bereich liegt und stellen fest das das Tileset desert2 genau in diesem Bereich liegt. Dann rechnet man noch Tilesetnummer – FirstGID und schon hat man die Tilesetnummer und das Tileset (in diesem Fall 11). Nun wissen wir das das Tile das elfte Tile im Tileset desert2 ist.