Traxi

traxi-level3-modell-nah

TRAXI ist im Wintersemester 07/08 als Belegarbeit im Kurs Computergrafik bei Prof. Thomas Jung zusammen mit Sebastian Müller und Peter Schmidt entstanden. Ziel war es innerhalb der drei Monaten ein interaktives 3D-Spiel zu entwickeln mit Hilfe von OpenGL.

Im darauf folgenden Sommersemester hat ein neues Team, diesmal bestehend aus Michael Witt, André Stüker und wieder Sebastian Müller und mir, im Rahmen des Kurses "Verteilte Systeme" am Projekt weitergearbeitet. Dabei wurde TRAXI 2.0 um einen Multiplayermodus erweitert, auf Basis von TCP-Sockets mittels der SDL_Net Library.

Das Spiel

Das Spielprinzip von TRAXI ist an den Geschicklichkeitsspielklassiker Space Taxi angelehnt. Es geht darum möglichst schnell durch ein labyrinthartiges Level zu kommen, ohne dabei anzustoßen und, besonders wichtig, ohne dabei aus Treibstoffmangel abzustürzen. Demzufolge muss gut kalkuliert werden, welche Bonus- und Treibstoffitems man einsammelt. Auch die Steuerung ist "spacig": Man kann sich nur mit den Düsen am Heck abstoßen und muss das "TRAXI" vorher in die gewünschte Richtung drehen.

Bei der 3D-Grafik orientiert sich das Spiel am Tron-Setting, d.h. die Levels sind blockartig aufgebaut und ungefähr so texturiert, wie man sich im Science-Fiction Wahn der 80er Jahre halt das geheimnisvolle Innere eines Computers gedacht hat. Wir durften uns dafür an den freien und feinen Texturen des Open-Source-Projekts GLtron bedienen, vielen Dank in diese Richtung.

Multiplayer-Modus

multiplayer-traxi

In TRAXI 2.0 wurde ein erstmals ein Multiplayer-Modus eingeführt. Das bedeutet, man kann sich jetzt im Netzwerk und sogar im Internet nervenaufreibende TRAXI-Rennen liefern!

Damit das Spiel im Multiplayermodus etwas rasanter wird, liegt der Fokus dort mehr auf Rennspiel, statt Geschicklichkeitsspiel. Ziel ist es, vor allen anderen heil auf der Zielplattform zu landen. Man geht jetzt nicht mehr bei jeder Kollision in einer Explosion auf, sondern kann diversen Schaden vertragen.

Es sind 2 Multiplayermodi vorgesehen: Ein Custom Server Spiel, bei dem ein Spieler einfach selbst den Spielehost, also den Server startet und andere sich mit ihm verbinden und ein Dedicated Server Spiel, bei dem man sich auf einem im Internet oder Netzwerk laufendem Server verbinden kann. Die erste Variante ist die beste, um mal schnell ein paar Runden übers Netz zu zocken. Über "Multiplayer > Spiel erstellen" wählt man sich seine "Playlist" von Levels aus, die nacheinander gespielt werden sollen und startet das Spiel. Ein Mitspieler kann nun übers Netzwerk beitreten, indem er die IP des Spielhosts bei "Spiel beitreten" eintippt und das Spiel auswählt. Sobald alle Spieler ein "Bereit" signalisiert haben, startet das Spiel.

Download

Screenshots

traxi-level1-kollision traxi-level1-pause traxi-level1 traxi-level2-kollision traxi-level2-kollision2 traxi-level3-modell-nah traxi-level3-modell-nah2 traxi-level3-sterne traxi-level4 traxi-level5-oben traxi-level5-tunnel traxi-mainmenu

Technisches

Das Spiel ist in objektorientiertem C++ geschrieben und verwendet für grundlegende Aufgaben die SDL Library. Als Fundament wurde ein Framework genommen, das im Rahmen des Buches C++ für Spieleprogrammierer von Heika Kalista für 2D-Spiele entstanden ist und stark erweitert wurde, so dass es auch für unsere 3D-Anwendung brauchbar war. Des weiteren half 3D-Spieleprogrammierung von David Scherfgen.

Für TRAXI 2.0 haben wir die SDL_Net Erweiterung für den Multiplayer-Modus benutzt. Es wurde ein eigenes Kommunikationsprotokoll entwickelt, das auf TCP-Sockets basiert.

Seit TRAXI 2.0 läuft das Spiel auch unter Linux (getestet mit Ubuntu Hardy und Fedora 9) und unter Mac OSX (dank an Michael Witt!). Allerdings stehen noch keine Binärpakete zur Verfügung, so dass man sich das ganze selbst kompilieren muss, was aber mit einem einfachen "make" in der Konsole getan ist. Es werden noch ein paar Libraries und Pakete benötigt. Informationen dazu stehen in der INSTALL Datei.

Dem Quellcode-Paket liegt eine Doxygen-generierte API-Doku bei.

Levels selber erstellen

Bis jetzt ist der Umfang an Levels noch recht überschaubar, aber ich würde mich freuen wenn jemand noch mehr erstellt. Man muss nicht Programmieren können um Levels für TRAXI erstellen zu können. Unter Data/Levels/ befinden sich alle Leveldateien die in einem einfachen Text-Format strukturiert sind, welche am Anfang von taxi1.txt erklärt wird. Empfehlenswert beim Leveldesign ist, das Spiel im Debug-Modus selbst zu kompilieren, denn damit kann man folgende Tasten benutzen, die einem das Erstellen stark erleichert und man nicht ständig gegen die eigenen fiesen Wände kracht:

  • T - Testmodus einschalten mit leichterer Steuerung
  • F5 - Level aus Datei nachladen (damit kann man quasi gleichzeitig an einer Leveldatei arbeiten und durchs Level fliegen)
  • F10 - Koordinatensystem-Achsen und Kollisionspunkte anzeigen lassen

Übrigens lassen sich auch die Modells austauschen. Dafür muss man nur die entsprechenden OBJ, MTL und PNG Dateien durch eigene im Data Ordner austauschen. 3D Modelling Software wie Blender kann OBJ-Dateien exportieren.

Bekannte Fehler

  • Wechsel zwischen Fenster- und Vollbildmodus fehlerhaft (3D-Elemente werden nicht mehr oder total falsch gezeichnet)
  • Schlechte Performance bei großen Levels

Ideen für die Zukunft

  • Sound!
  • Eingebauter Leveleditor mit mehr Leveloptionen wie Beleuchtung, bewegliche Objekte, animierte Texturen
  • Kompass in Richtung Ziel
  • ...

Seite zuletzt bearbeitet am 16.04.2010 18:44 Uhr