Meine Wunschorte in OpenStreetMap

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 :)

Das TMX Format

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.

Mapping für Urban Terror

Heute wollte ich es einmal wagen und meine erste eigene Map für Urban Terror machen. Der erst Schritt dazu waren die Weiten des Internets. Nach einiger Zeit hat man dann an Informationen alles zusammen. Die meisten Infos kamen dabei von http://forums.urbanterror.net/index.php/topic,9766.0.html.

Vorbereitung:
Zu allererst sollte man sich einige Dateien besorgen:
– Urban Terror Shaderlist (http://teamterrorwtf.com/bludshot/urtmapping/shaderlist.zip)
– Urban Terror Entity Definition (http://teamterrorwtf.com/bludshot/urtmapping/urbanterrordef.zip)
– GtkRadiant (http://zerowing.idsoftware.com/files/radiant/GtkRadiant-1.5.0.msi)
– Mapcompiler (http://teamterrorwtf.com/bludshot/urtmapping/q3map_2.5.16_win32_x86.zip)
– Compiler Frontend (http://teamterrorwtf.com/bludshot/urtmapping/q3map2toolz_setup.exe)

Schritt 1:
Für das Mapping sollte man sich nach Möglichkeit eine Kopie des Urban Terror Orders anlegen und mit diesem arbeiten. Dadurch wird verhindert das man sich seine Spielversion „zukleistert“. Bei mir heißt diese Kopie „UrbanTerrorDev“ und liegt dann im Verzeichnis „C:\Spiele\UrbanTerrorDev“. Noch eine Sache zu dieser Kopie: Es ist besser gleich eine frische Installation in dieses Verzeichnis zu kopieren so hat man bei der Entwicklung nicht irgendwelche 3rd Party Maps in dem Ordner rumzuliegen, was unter anderem die Übersicht erhöht.

Schritt 2:
Im Urban Terror Verzeichnis findet sich ein Ordner mit dem Namen „q3ut4“. In diesem Ordner wiederum liegen zwei Dateien (zpak000.pk3, zpak000_assets.pk3). Bei pk3 Dateien handelt es sich um Archive. Diese Archive sollen entpackt werden. Erkennt das Entpackprogramm der Wahl diese Dateien nicht, so sollte man einfach nich die Endung „.zip“ heranhängen und schon dürfte sich das ganze problemlos entpacken lassen. Ein empfehlenswertes (und freies) Programm für diese Aufgabe ist 7zip (http://www.7-zip.org/). Die Dateien sollten in das gleiche Verzeichnis entpackt werden, in welchem Sie liegen. Es dürften dann Ordner wie „botfiles“, „gfx“, „music“, „scripts“ etc. in dem Ordner liegen. Falls wir die Dateinamen der pk3 Dateien um eine „.zip“ Erweiterung ergänzt haben so entfernen wir diese nun wieder.

Schritt 3:
Im nächsten Schritt heißt es Aufräumen. Dazu löschen wir einfach den gesamten Inhalt des Verzeichnisses „maps“ im „q3ut4“ Ordner. Schließlich wollen wir ja Ordnung halten :)

Schritt 4:
Falls wir die heruntergeladenen Zip Dateien noch nicht entpackt haben so tun wir dies nun. Danach kopieren wir die Dateien „shaderlist.txt“ und „urbanterror.def“ in den „scripts“ Ordner.

Schritt 5:
Als nächstes wird der Mapeditor GtkRadiant installiert. Nachdem wir ihn installiert haben starten wir ihn. Beim ersten Start erscheinen die „Global Preferences“. Dort wird unter anderem gefragt für welches Spiel wir mappen wollen. Dort geben wir „Quake III Arena“ an. Dann nehmen wir noch das Häkchen bei „Show Global Preferences“ weg damit dieser Dialog nur dieses eine Mal erscheint. Nachdem wir den Dialog mit Okay bestätigt haben werden wir nach dem Engine Pfad gefragt. In meinem Fall wäre dieser Pfad „C:\Spiele\UrbanTerrorDev“. Das ganze wird dann wieder mit Okay bestätigt.

Über File -> Project Settings kommen wir in die Projekteinstellungen. Als Mod wählen wir hier „Custom Quake III modification“ und tragen bei „fs_game“ die Zeichenfolge „q3ut4“ ein.

Schritt 6:
Im nächsten Schritt wird der Inhalt der „q3map_2.5.16_win32_x86.zip“ In den UrbanTerror Ordner entpackt, also bei mir in den „C:\Spiele\UrbanTerrorDev“ Ordner. Danach sollen die Q3map2Toolz (das Compiler Frontend) installiert werden. Nachdem wir es installiert haben starten wir das „Configuration Tool“.

Folgende Einstellungen sollen vorgenommen werden:
– Games / Long name of the game: Urban Terror
– Games / Short name of the game: urt
– Games / Base Folder: q3ut4
– Games / Name of the game exe: ioUrbanTerror.exe

Nachdem wir diese Einstellungen vorgenommen haben, klicken wir auf „Add“ und schließen das „Configuration Tool“ indem wir auf „Close“ drücken. Anschließend starten wir die „Q3Map2Toolz“. Auch hier müssen noch einige Einstellungen vorgenommen werden.

Bei Game wählen wir „Urban Terror“ aus. Bei dem „Path to ioUrbanTerror.exe“ geben wir in diesem Beispiel die Datei „C:\Spiele\UrbanTerrorDev\ioUrbanTerror.exe“ an. Bei „Path to q3map“ geben wir den Pfad „C:\Spiele\UrbanTerrorDev\q3map2.exe“ an. Jetzt fehlt nur noch der Pfad zur „bspc.exe“ Dieser lautet „C:\Programme\GtkRadiant 1.5.0\bspc.exe“. Danach klicken wir auf Okay. Die Hinweismeldung die dann erscheint klicken wir weg. Das sich darauf öffnende Fenster schließen wir.

Schritt 7:
Nun kann mit dem GtkRadiant die erste Karte erstellt werden. Hilfreich dabei sind sicherlich folgende Links:
http://qworkshop3.planetquake.gamespy.com/tutorials/
http://quake3world.com/editing/

Sehr empfehlenswert:
http://forums.urbanterror.net/index.php?PHPSESSID=6024271f46e040fc09f4904fc8aaf5c2&/topic,757.0.html

Für den ersten Raum eignet sich besonders dieses Tutorial: http://qworkshop3.planetquake.gamespy.com/tutorials/firstroom/index.html.

Nachdem ihr die Map erstellt habt, speichert die Map z.B. unter dem Namen „test.map“ und schließt GtkRadiant.

Schritt 8:
Jetzt muss die Map kompiliert werden. Dazu öffnen wir die „Q3Map2Toolz“ und klicken auf die Map welche wir kompilieren wollen. Bei „Build options“ wählen wir „BSP Vis -fast Light“ aus. Jetzt müsst ihr nur noch auf den „Build“ Button drücken und schon wird die Map compiliert.

Schritt 9:
Als letzer Schritt wenn die Map fertig ist muss das ganze noch zusammengepackt werden. Werden nur UrbanTerror Texturen benutzt, was bei unser einfachen Testmap der Fall sein sollte so ist das zusammenpacken ganz einfach. Folgende Schritte sind vonnöten:

– geht in das Verzeichnis „C:\Spiele\UrbanTerrorDev\q3ut4“
– dort packt ihr das Verzeichnis „maps“ zu einer Zip (es liegt ja nur diese eine Map drin)
– danach ersetzt ihr die Erweiterung „.zip“ durch „.pk3“ und benennt die Datei um so das sie „test.pk3“ heißt.

Diese Datei könnt ihr jetzt in den „q3ut4“ Unterordner von Urban Terror packen und dann könnt ihr die Karte endlich testen. Ich hoffe dieser Leitfaden ist einigermaßen hilfreich.