RoadHog: Kompilieren

Hier geht es darum, was der RoadHog-Compiler mit den ganzen Daten anfängt, wenn man sie fertig zusammengetragen hat.

Den Compiler aufrufen

So ruft man den Compiler auf:
java org.remote.roadhog.Compiler [option]... [file]...
wobei option folgendes sein kann:

und file sind beliebige XML-Dateien mit Eingabedaten. Auch hier ist sicherzustellen, daß Karten und Knoten definiert sind, bevor die Kanten und Reisen geladen werden, die sich auf sie beziehen.

Was der Compiler erzeugt

Der Compiler kann unter Umständen eine Riesenmenge von Daten erzeugen und dafür ewig brauchen. Wenn ich meine Schottland-Seiten kompilieren lasse, erstellt der Compiler mehr als 32.000 Dateien (insgesamt über 600 MB) und braucht dafür gute zehn Stunden.

Es folgt eine Liste von allen Ausgabedateien, die der Compiler produziert (Dateinamen sind relativ zum mit -d angegebenen Pfad).

Dateiname(n) Inhalt Bemerkung
maps/<mid>/<siz>/
    <r>x<c>.gif
Die Kartenabschnitte. <mid> ist die Karten-ID, <siz> der Größencode (normalerweise einer der Buchstaben t, s, m, l, h für tiny, small, medium, large, huge), <r> und <c> sind die Zeile und Spalte.
Außer beim -f liest der Compiler das Original-Kartenbild nur dann ein und skaliert es, wenn mindestens einer dieser Kartenabschnitte neu erzeugt werden muß.
nicht -x
maps/<mid>/<siz>/
    <r>x<c>
    +<x>+<y>.gif
Die gleichen Kartenabschnitte, aber mit eingezeichneten roten Punkten.<x> und <y> sind die Pixelkoordinaten des Punktes relativ zum Kartenursprung. Wenn ein Punkt aufgrund seiner Fläche zwei oder sogar vier Kartensegmente bedeckt, werden zwei oder vier Dateien mit gleichen Werten für x und y erzeugt.
Für jedes Foto in jeder Reise, die bearbeitet wird, wird eine solche Date erzeugt, es sei denn, mehrere Fotos fallen auf den gleichen Punkt zusammen.
nicht -x
img/<jid>/<siz>/<n>.jpg Die Fotos in jeder Reise. <jid> ist die Identifikation des Journey-Objektes, <siz> der Größencode und <n> die mit Nullen aufgefüllte Folgennummer des Fotos. nicht -x;
nicht -m
ctrl/<jid>/<siz>/
    control.txt
Steuerdateien für das CGI-Skript. <jid> ist die Identifikation des Journey-Objektes, <siz> der Größencode. Diese kleinen Textdateien geben an, welche Bilder zu einer Reise gehören und welche Anschlußmöglichkeiten es am Ende gibt; anderenfalls müßte das CGI-Skript die XML-Dateien einlesen, was zuviel Zeit kosten würde. nicht -x
ctrl/location.txt
ctrl/places.txt
Indexdateien, die vom Such-CGI benutzt werden, um nach Koordinaten oder Ortsnamen zu suchen. nicht -x
nicht -m
places/<vid>.html
places/<vid><n>.jpg
Die "Ortsdateien" mit Details über einen Knoten. Sie werden nur für Knoten erzeugt, die ein <description>-Tag haben. <vid> ist die Vertex-Id; die JPG-Bilder werden erzeugt, wenn der Knoten zusätzlich <illustration>-Tags hat. <n> ist dann die laufende Nummer der Illustration.
Die HTML-Seiten werden mit einem eingebauten Layout erzeugt - der Quelltext muß geändert werden, wenn man ein eigenes Layout will.
nicht -m
places/showcase.html
places/showcase<n>.jpg
Die Schaufenster-Seite mit den dazugehörigen Bildern. Die Daten werden aus den <showcaseitem>-Objekten unter der Eingabe geholt; ich habe das hier nicht weiter beschrieben, aber so ein Objekt ist im wesentlichen ein bißchen Text mit einem oder mehreren Bildern und einem Verweis auf eine Reise.
Die HTML-Seite wird mit einem eingebauten Layout erzeugt - der Quelltext muß geändert werden, wenn man ein eigenes Layout will.
nicht -m
journeys.html Die Liste aller Reisesegmente (sortiert nach Vertex-Namen).
Die Seite wird mit einem eingebauten Layout erzeugt - der Quelltext muß geändert werden, wenn man ein eigenes Layout will.
nicht -m
index.html
img/index1.gif
img/index2.gif
Die Indexseite, die sicherlich im Stil und Inhalt verändert werden muß, und die beiden Bilder dafür. Die Bilder müssen noch mit einem externen Programm gemittelt werden (z.B. convert index1.gif index2.gif -average index.gif), um die klickbare Karte für die Indexseite zu erzeugen. Diese Bilder werden nur erstellt, wenn ich unter den Eingabedaten eine Karte mit der ID "minimap" befindet, und dort wird dann das Quell-Kartenbild hergeholt. nicht -m

Wenn man den Compiler nicht im "force"-Modus (-f) betreibt, erzeugt er nur die Dateien neu, die noch nicht existieren. Das gilt aber bloß für die eher rechenintensiven Dateien; die Dateien im "ctrl"-Verzeichnis und die HTML-Dateien werden in jedem Fall neu erzeugt. Der Compiler erzeugt auch alle benötigten Verzeichnisse.

Größen-Codes

Sowohl die Kartenausschnitte als auch die Bilder werden in verschieden Größenklassen erzeugt. Welche das sind, Quelltext des Compilers festgelegt; man kann es aber leicht ändern. Solange man sich noch im Experimentierstadium befindet, kann es zum Beispiel sinnvoll sein, immer nur die "tiny"-Klasse ausrechnen zu lassen, weil es schneller geht.

Zurück zum Index


  Frederik Ramm, 2001-05-26