Kurse für Tuxracer 1.1 erstellen
Übersetzung des Artikels "Creating Courses (for version 1.1)" von Arthur J. Yarwood.
Der Originalartikel befand sich auf der Seite http://tuxracer.fubaby.com (unter "Articles"). Leider ist diese Seite nicht mehr erreichbar. Infolgedessen können die Download-Links ebenfalls nicht verwendet werden.
Der Artikel ist insofern noch interessant, als er die Probleme beim Einbinden von eigenen Kursen in Tuxracer 1.1 verdeutlicht.
Es gibt eine Reihe von Unterschieden zwischen den Kursformaten von Version 0.61 und Version 1.1. Vieles war notwendig, um die großartigen neuen Möglichkeiten in der Vollversion zu eröffnen. Hier ist eine kurze Übersicht über die Dinge, die uns "Kursmacher" berühren:
- Die .rgb-Bilder sind nun durch .png-Bilder ersetzt worden. Wesentlich bekannter und komprimierter.
- Die Datei tree.rgb gibt es nicht mehr. Sie wurde ersetzt durch items.tcl, worin alle Bäume und andere Objekte unter Benutzung von 3D-Koordinaten aufgelistet sind.
- In 3D-Koordinaten definierte Objekte können nun überall auf dem Kurs platziert werden. Flaggen und Bäume werden durch einfache geometrische Angaben beschrieben.
- Es gibt nun wesentlich mehr Terraintypen.>
- Die Startposition von Tux wird nun in course.tcl definiert.
- Neue Kurse werden nicht mehr automatisch gefunden und geladen :(
Es ist der letzte Punkt, der das größte Kopfzerbrechen bereitet.
Komm, Tux, spiel meinen Kurs ...
Wenn Sie sich in der Ordnerstruktur umschauen, werden Sie schnell feststellen, dass die Datei courses/course_idx.tcl alle Kurse des Spiels auflistet und angibt, zu welchen Cups sie gehören. Es ist möglich, einen eigenen Kurs dieser Liste hinzuzufügen, aber das gerät sehr schnell zu einem Albtraum.
Um diese Schwierigkeiten zu vermeiden, habe ich ein kleines Tcl-Skript geschrieben, dass nach neuen Kursen sucht. Sie können es hier herunterladen:
- contrib_course_idx.tcl
Kopieren Sie das Skript in den Ordner tuxracer/courses. Es bezieht sich auf eine spezielle Ordnerstruktur, worin die neuen Kurse gefunden werden:
tuxracer/courses/contrib/your_name/your_course
Außerdem benötigt Ihr Kurs eine besondere Tcl-Datei, die alle Informationen über den Kurs enthält. Ich habe sie text.tcl genannt, und sie liegt parallel zur Datei course.tcl, worauf sie sich bezieht.
Diese Datei enthält neben der oben genannten Contrib-Ordnerstruktur einen Basiskurs, den Sie als Ausgangspunkt benutzen können. Kopieren Sie die Datei in den Ordner tuxracer/courses und packen Sie sie aus.
- contrib.tar.bz2
Schließlich muss noch die course_idx.tcl bearbeitet werden, so dass das neue Skript aufgerufen wird. Öffnen Sie diese Datei mit Ihrem Lieblingseditor und suchen sie den folgenden Code-Abschnitt (etwa bei Zeile 150). Dann fügen Sie die gelb gedruckten Zeilen ein:
... lappend open_course_list [ list\< course "swiss/swiss3" -name [ gs swiss3 ] \ description [ gs swiss3_desc ] \ par_time 100.0 ] lappend open_course_list [ list\ course "swiss/swiss2" -name [ gs swiss2 ] \ description [ gs swiss2_desc ] \
par_time 100.0 ] source "contrib_course_idx.tcl" tux_open_courses [concat $open_course_list $contrib_course_list ] tux_load_texture herring_run_icon common/herringrunicon.png 0 tux_load_texture cup_icon common/cupicon.png 0 tux_events [ list \ contrib_cups \ list \ name [ gs solo_challenge ] -icon herring_run_icon -cups [ list \ [ list \ -name [ gs beginner_cup ] -icon cup_icon -races [ list \ [ list \ -course beginner/beginner1 \ -name [ gs beginner1 ] \ -description [ gs beginner1_desc ] \ ...
Hier finden Sie eine Kopie der fertig editierten Datei. Sichern Sie Ihre Originalversion und ersetzen Sie sie durch diese Kopie:
- course_idx.tcl
Erläuterung zu Text.tcl
Diese Datei, komplett neu von mir entwickelt, arbeitet so:
Als erstes definiert sie den Titel und die Beschreibung des Kurses für verschiedene Sprachen. Ich mogelte und benutzte Babelfish für die Übersetzung.
### First define all the titles and descriptions in various languages. ### set tr_ls(english,arthur_template) "Template Course" set tr_ls(english,arthur_template_desc) \ "Just a basic template course, thats a good starting point"
set tr_ls(french,arthur_template) "Cours De Calibre" set tr_ls(french,arthur_template_desc) \ "Juste un cours de base de calibre, thats par bon point de d�part "
set tr_ls(german,arthur_template) "Schablone Kurs" set tr_ls(german,arthur_template_desc) \ "Gerade ein grundlegender Schablone Kurs, thats ein guten Ausgangspunkt"
set tr_ls(italian,arthur_template) "Corso Della Mascherina" set tr_ls(italian,arthur_template_desc) \ "Appena un corso di base della mascherina, thats un buon punto di partenza"
set tr_ls(spanish,arthur_template) "Curso De la Plantilla" set tr_ls(spanish,arthur_template_desc) \ "Apenas un curso b�sico de la plantilla, thats al buen punto de partida"
Die Variablennamen in gelb werden Sie ändern wollen. Sie sollen einheitlich für das gesamte Spiel sein. Ich bezeichnete sie vorläufig mit meinem eigenen Namen. Ändern Sie ebenfalls jene für die anderen Sprachen.
Die eigentlichen Informationen befinden sich in languages.tcl; da wir nicht jedesmal, wenn wir einen neuen Kurs hinzufügen, die Spracheinstellungen bearbeiten möchten, habe ich sie nach hierhin verschoben.
Als nächstes wird der Kurs einem Array contrib_course_list hinzugefügt, das als eines von zwei Arrays erscheint, worin das Spiel die Kurse speichert.
### Now to add the course the contrib list of courses. ### lappend contrib_course_list [ list\ course "contrib/your_name/template" -name [ gs arthur_template ] \ description [ gs arthur_template_desc ] \ par_time 100.0 < ]
Hinweis
- Der Teil arthur_template bezieht sich auf den einheitlichen Variablennamen, den wir oben definiert haben. Dasselbe gilt für arthur_template_desc.
- die Eintragung -course (in rot) ist der Ordnername für den Kurs.
Der nächste Abschnitt trägt den Kurs in einen Cup ein. Ich habe den Default-Cup 'contrib cup' eingerichtet (schauen Sie in die contrib_course.idx.tcl), dem alle selbsterstellten Kurse hinzugefügt werden. Wenn das nicht geschieht, sehen Sie zwar Ihren Kurs im Menü, aber Sie können ihn nicht spielen.
### now to add course to cup. ### lappend contrib_races [ list \ course "contrib/your_name/template" \ name [ gs arthur_template ] \ description [ gs arthur_template_desc ] \ herring { 16 24 25 } \ time { 75 58 53.5 } \ par_time 75.0 \ score { 0 0 0 } \ mirrored no -conditions sunny \ windy no -snowing no
]
Wie Sie sehen, werden ähnliche Informationen benötigt wie im Abschnitt darüber. Darüber hinaus gibt es eine Fülle anderer Details, die danach verlangen, eingestellt zu werden. Die drei Angaben für Heringe und Zeiten sind, wie ich annehme, die vollständigen Angaben für die Schwierigkeitseinstellungen.
Erläuterung zu Course.tcl
Hier ist vieles beim Alten geblieben; die Kursgröße wird definiert (in Pixeln), ferner der Neigungswinkel, die Skalierung und die Startposition.
Es gibt noch die Möglichkeit, den Kursnamen anzugeben, aber die Eintragung scheint nicht mehr benutzt zu werden. Um den Titel und die Beschreibung anzugeben, greifen Sie auf die oben beschriebene text.tcl zurück.
Terrain.png
Diese Datei wird genau so benutzt wie bisher, allerdings gibt es viele Farben mehr, mit denen die verschiedenen Terraintypen gekennzeichnet werden. Hier ist eine Liste, die ich zusammengestellt habe, indem ich die Datei courses/commen/terrain.tcl ausgewertet habe.
Sonne, Nebel, Sonnenuntergang
Es ist möglich, die Umgebung Ihres Kurses einzustellen, indem Sie die Dateien sunny_light.tcl, sunset_light.tcl und foggy_light.tcl editieren. Diese befinden sich im Verzeichnis oberhalb Ihres Kursverzeichnisses, damit mehrere Kurse darauf zugreifen können. Wenn Sie die heruntergeladene Kursvorlage verwenden, werden Sie die Dateien im Ordner courses/your_name/ finden.
In der von mir erstellten Kursvorlage wird ganz einfach auf die Dateien des Cups 'Beginner' zurückgegriffen und somit dort eingestellte Umgebung übernommen. Wenn Sie was ändern möchten, schlage ich ich vor, die entsprechenden Dateien von den anderen Kursen zu übernehmen und zu bearbeiten.
Sechs Texturen sind erforderlich, um die Umgebung zu gestalten. Sie bilden einen Würfel rund um Tux, das, was Sie am Horizont sehen. Prüfen Sie, welche Umgebungen von anderen Kursen besser zu Ihrem eigenen passen.
In jeder der *_light.tcl-Dateien können Sie die Lichtquelle festlegen, ihre Farbe, Stärke und Position. Ebenso können Sie Nebeleigenschaften und verschiedene Farben beeinflussen. Auch hierbei werfen Sie einen Blick in andere Kurse.