Diese Seite dreht sich um folgende Themen:
Was ist iMaze?; Die neuen Features: Zählweisen, Wandverhalten, Wandaussehen, Spieleraussehen, Labyrinth-Konverter; Anmerkungen; Patch-Quellcode: Tcl-Frontend für den Server: Unterstützte Systeme.

Was ist iMaze?

iMaze ist ein Multiplayer-Game, das im Rahmen eines Softwarepraktikums an der TU-Clausthal entstanden ist. Dort kann auch eine ausführliche Dokumentation des Spiels eingesehen werden, deshalb erspare ich mir an dieser Stelle Details. Nur soviel: Die Spieler (Kugeln) bewegen sich durch ein Labyrinth und müssen sich gegenseitig abschießen.
Die einzelnen Spieler sind dabei mit einem gemeinsamen Server verbunden, der die Spielumgebung (das Labyrinth) bereitstellt.

Ein paar 'Tips & Trix' zu iMaze sowie spielbereite Server verrät Lothar Christoffels in seiner Spielhölle (im Keller - Licht anmachen nicht vergessen!)

Die neuen Features

Zählweisen

Die erste Veränderung, die mein erbitterter iMaze-Gegner Dirk Pioreck ins Rollen brachte, war eine neue Zählweise: Getroffene Spieler bekamen einen Punkt abgezogen. Kurze Zeit später führte er auch noch den Team-Modus ein. Nachdem er mit diesen von ihm durchgeführten Patches mein Interesse an weiteren Modifikationen geweckt hatte, begann auch ich, an der Wertung herumzubasteln:
Es existieren jetzt drei verschiedene Zählweisen, von denen eine beim Start des Servers über Parameter ausgewählt werden kann:
Standard
Die normale, altbewährte Methode: jeder getroffene Gegner bringt einen Punkt
Adaptiv
Die ausgleichende Methode, durch die schwächere Spieler leichter mithalten können: Jeder getroffene Gegner bringt 1/10 seiner Punkte (und noch einen weiteren) ein, jeder eigene Abschuss kostet 1/10 der eigenen Punkte
Team
Jeweils der 1.,3.,5... und 2.,4.,6... in das Spiel gekommene Spieler spielen zusammen. Punkte gibt es nur für Abschüsse von Spielern des gegnerischen Teams.
Die ursprünglich von Dirk eingeführte Zählweise habe ich nicht übernommen, da sich bei ihr die Punktestände nicht allzuweit von 0 entfernten, wenn wir beide gegeneinander angetreten sind. Das erschien mir nicht besonders motivierend...

Wandverhalten

Nachdem die computergenerierten Labyrinthe den Anforderungen unseres Kampfstils nicht mehr genügten, beschäftigten wir uns mit dem Entwurf eigener Labyrinthe. Zu diesem Zweck entwickelte ich den Konverter 'MazeConvert' (dazu später mehr). Gleichzeitig entdeckten wir, dass viele Möglichkeiten durch die bisherigen (von 'genlab' generierten) Labyrinthe gar nicht ausgenutzt wurden. Es war gar nicht nötig, viel an der Handhabung der Wände zu verändern: Nur wenige durch den Einsatz von 'MazeConvert' möglich gewordenen Wandkombinationen wurden vom iMaze-Server beanstandet, aber selbst diese wurden trotzdem korrekt verarbeitet.

Jetzt können beliebige Kombinationen aus den folgenden Optionen für die Vorder- und Rückseite jeder Wand getrennt anstandslos verwendet werden:

schusssicher/schussdurchlässig
die Wand ist von dieser Seite für Schüsse eine unüberwindbare Barriere bzw. durchlässig.
passierbar/unpassierbar
Spieler können die Wand von dieser Seite durchqueren bzw. nicht durchqueren.
transparent/opak
die Wand ist von dieser Seite durchsichtig bzw. undurchsichtig.
Es ergeben sich daraus für jede Wandseite 8 verschiedene Kombinationsmöglichkeiten:

transparent schussdurchlässigpassierbar
1. nichts jajaja
2. Vorhang neinjaja
3. Schutzschild janeinja
4. Tür neinneinja
5. Lichtvorhang jajanein
6. Zaun neinjanein
7. Fenster janeinnein
8. Wand neinneinnein

Außerdem hat sich das Verhalten von Türen (insbesondere von Einbahn-Türen) geändert: Solange ein Spieler in einer Tür steht (und sie daher geöffnet ist), können sowohl Spieler als auch Schüsse in beiden Richtungen diese passieren. Man kann sich dadurch nicht mehr so leicht in einer halbdurchlässigen Tür verheddern. Außerdem kann es so eventuell im Team-Modus zu interessanten Manövern kommen, wenn ein Spieler seinem Teamkollegen die nur einseitig durchlässige Tür öffnet, um ihn durchzulassen (z.B. auf der Flucht vor einem Gegner).

Wandaussehen

Durchsichtige Wände waren auch in der ungepatchten Version möglich. Allerdings waren diese automatisch vollkommen unsichtbar. In der gepatchten Version werden Fenster durch die Diagonalen des Fensters und einen Rahmen markiert, Schutzschilde nur durch den Rahmen und Lichtvorhänge (ich weiß, der Name ist etwas seltsam, aber mir ist kein besserer eingefallen) nur durch die Diagonalen.

Screenshot1
Die Abbildung zeigt an der rechten Seite die 'verglasten' Außenwände eines Labyrinthes.
Besonders interessant sind durchsichtige Wände natürlich, wenn ohne Map gespielt wird, da dann der Vorteil der Transparenz am deutlichsten spürbar ist. Insbesondere Wände, die von einer Seite durchsichtig aber schuss- und spielerundurchlässig sind und von der anderen zwar undurchsichtig aber nicht schusssicher, haben dann ihren Reiz. Jede Wandseite hat dann ihren ganz eigenen Vorteil zu bieten: Auf der einen kann man sich einen Überblick über die Situation auf der anderen Seite verschaffen, auf der anderen ist man dagegen vor Schüssen geschützt und kann (mit etwas Glück) einen Spion auf der anderen Seite treffen...
Derartige 'Fenster' machen natürlich nur wenig Sinn, wenn man mit der Karte spielt und sowieso weiss, was sich auf der anderen Seite tut. Aus diesem Grund spiele ich eigentlich immer ohne Map. Meiner Meinung nach erhöht das auch die Spannung in 'altbewährten' Labyrinthen, wenn man nicht weiss, welche Gefahr hinter der nächsten Ecke lauert.

Spieleraussehen

Die Spieler können unter bestimmten Umständen transparent werden und so einen leichten Vorteil durch geringere Auffälligkeit erlangen:
Auftauchen im Labyrinth
nach dem Absetzen des Spielers im Labyrinth bleibt er eine gewisse Zeit durchsichtig, damit er nicht sofort zur Zielscheibe wird, bevor er selbst sich überhaupt orientieren konnte.
Abschuss eines transparenten Spielers
schiesst man einen transparenten Spieler ab, so übernimmt man für eine gewisse Zeit die Transparenz
'Schlechtester Spieler'
wenn kein anderer Spieler transparent ist, wird der letzte Spieler in der Score-Liste durchsichtig. Dadurch erlangt dieser einen Vorteil gegenüber den anderen und kann leichter aufholen, andererseits ist so sichergestellt, dass immer ein transparenter Spieler abgeschossen werden kann
Wie lange die Spieler transparent bleiben, kann für jeden dieser Punkte einzeln durch Aufrufparameter des Servers bestimmt werden.

Screenshot2
Der Screenshot zeigt einen transparenten Spieler. Durch ihn hindurch erkennt man im Hintergrund, dass der grüne Spieler durch ein Fenster schiesst - von seiner Seite ist dort eine undurchsichtige Wand, die jedoch schussdurchlässig ist, während es sich vom Betrachter aus um eine durchsichtige, aber schusssichere Wand handelt; auf diese Weise hat jede Wandseite ihre Vor- und Nachteile...

Der Labyrinth-Konverter

Der Konverter dient dazu, Labyrinthe, die in einem leicht editierbaren ASCII-Format eingegeben wurden, in das imaze-Binärformat zu wandeln (und umgekehrt). Das ASCII-Format definiert ausschließlich die Art der Wand (einer der acht oben bereits aufgezählten Typen), die Farben der Wände werden vom Converter automatisch aufgrund der Art der Wand vergeben.

Die folgende Gegenüberstellung von ASCII-Format und dem sich daraus ergebenden Labyrinth (als Screenshot der iMaze-map) zeigt die Definition des bereits im vorigen Abschnitt verwendeten Labyrinthes; auf der Karte sind auch die Positionen der drei Spieler des entsprechenden Screenshots zu erkennen.

ASCII-FormatiMaze-map
: ## ## ## ## ## ## ## ## ## ##
:#  .  .  X  .  .  X  .  .  .  #
:#  .  .  X  .  .  X  .  .  .  #
: .. FW ##.WF .. FW WF ## X# ..
:#  #  .  .  #  #  .  #  .  F  #
:#  X  .  .  #  #  .  #  .  W  #
: .. OO .. .. .. .. .. .. .. ..
:#  #  .  O  O  #  #  .  #  #  #
:#  #  .  O  W  #  #  .  #  #  #
: .. .. OO .. .. .. .. ## .. XX
:#  F  O  .  #  .  #  .  .  W  #
:#  W  O  .  #  .  #  .  .  F  #
: XX .. .. OO .. ## ## WO ## ..
:#  W  .  .  #  .  .  .  .  .  #
:#  F  .  .  #  .  .  .  .  .  #
: .. ## ## .. .. .. .. ## ## ..
:#  .  .  .  .  .  #  .  .  F  #
:#  .  .  .  .  .  #  .  .  W  #
: .. ## OW ## ## .. WW .. WW XX
:#  F  .  .  .  .  #  .  .  W  #
:#  W  .  .  .  .  #  .  .  F  #
: XX .. .. .. .. .. .. WW .. ..
:#  #  .  .  .  #  W  W  .  #  #
:#  #  .  .  .  #  O  W  .  #  #
: .. .. .. .. .. .. .. .. .. ..
:#  W  .  .  .  #  #  .  W  X  #
:#  F  .  .  .  #  #  .  W  #  #
: .. #X ## FW WF .. FW ## WF ..
:#  .  .  .  X  .  .  X  .  .  #
:#  .  .  .  X  .  .  X  .  .  #
: ## ## ## ## ## ## ## ## ## ##
Screenshot3

Anmerkungen

Neue Clients und Ninjas können problemlos mit alten Servern zusammenarbeiten. Alte Clients können ebenfalls mit neuen Servern verbunden werden, allerdings werden dann eventuell vorhandene transparente Wände nicht dargestellt, wodurch alte Clients große Nachteile gegenüber neuen Clients haben. Alte Ninjas können zwar mit neuen Servern verbunden werden, sind dann aber vollkommen dämlich.

Server

Der Server übermittelt nun nicht mehr nur die reinen Farbdaten der Wände, sondern auch ihre Schusssicherheit und Passierbarkeit. Dies ist nötig, damit die Clients korrekt mit den durchsichtigen Wänden umgehen können.

Clients

Die Clients empfangen nun die Schusssicherheit und Passierbarkeit und stellen transparente Wände entsprechend mit Diagonalen und/oder Rahmen dar.

Ninjas

Die Ninjas mussten auf die Benutzung durchsichtiger Wände angepasst werden, damit sie sich nicht an jedem Fenster verhaken. Dafür müssen sie allerdings vom Server die Passierbarkeitsdaten geliefert bekommen.

Gib's mir!

* * * Wichtiger Hinweis * * *

Damit es nicht zu Verwechslungen mit eventuell/wahrscheinlich später folgenden offiziellen Versionen von iMaze kommt, habe ich die gepatchte Version ixMaze 1.4 genannt (die Quellen werden in das Verzeichnis 'ixmaze-1.4' ausgepackt). Ich bitte darum, diese Namensänderung nicht wieder rückgängig zu machen.

Die gesamten ixMaze-Quellfiles (168K) inklusive man-Pages und Labyrinthen können als gegzipptes TAR-File von hier geladen werden.

Frontend für den ixMaze-Server

Auch an der Universität Münster gibt es Menschen, die ixMaze spielen. Einer von denen hat ein grafisches Frontend für den Server geschrieben, welches auch Leuten, die mit der Kommandozeile auf Kriegsfuß stehen, das einfache Starten des Servers ermöglicht. Das Tcl-Skript von Karl-Heinz Krämer steht hier zum Download bereit. An dieser Stelle möchte ich mich bei ihm ebenfalls für den Hinweis auf einen Fehler in der Parameterauswertung des Servers bedanken. Die korrigierte Version werde ich demnächst (zusammen mit seinem Skript) als neues Paket ins Netz stellen.

Unterstützte Systeme

Das Spiel sollte auf folgenden Systemen laufen (korrekt müsste hier von 'rollen' gesprochen werden, da Kugeln ohne Beine erhebliche Schwierigkeiten mit dem, was gemeinhin als 'Laufen' bezeichnet wird, haben werden. Vielen Dank für den entsprechenden Hinweis an Stefan Waschk) können: Schwierigkeiten könnte eventuell der Converter MazeConvert machen, den ich in C++ programmiert habe. Eventuell muss hier ein anderer Compiler eingetragen werden. Es kann ebenfalls nötig sein, die iostream-library zu MazeConvert hinzuzulinken.