Fidoban: Die wundersame Welt der Online-Spiele

Willkommen in der Welt der Online-Spiele! So mancher Besitzer eines Modems hat mit diesen, in beinahe allen Mailboxen der Welt anzutreffenden Spielchen seine Telefonrechnung in astronomische Höhen getrieben. Kennern der Sprache C verhelfen wir zum »Aufstieg« vom Nutzer zum Produzenten solcher Spiele.

Doch halt: Was ist ein Online-Spiel eigentlich? Online-Spiele werden in der Regel mit Hilfe von Modems über die Telefonleitung gespielt. An einem Ende der Leitung hängt die Mailbox, am anderen Ende der heimische Computer, an dem der User verzweifelt versucht, den Highscore seines Vorgängers zu überbieten. Das Interessante an der ganzen Sache ist, daß man direkt mit den anderen Benutzern der Mailbox in Konkurrenz treten kann. Legenden berichten von wilden Schlachten in diversen Mailboxen.

Da sämtliche Daten über das Telefonnetz gelangen, unterliegen Online-Spiele natürlich gewissen Einschränkungen. So ist der Bildschirmaufbau meistens relativ einfach und die Soundqualitäten beschränken sich auf ein trockenes »BEEP«. Maus- oder Joystickbedienung fällt auch aus, die gute alte Tastatur ist wieder gefragt. Bei guten Spielideen stören solche Bremsklötze aber nur wenig.

Das Spiel

Fidoban ist ein Online-Ableger des bekannten Kistenschiebespiels »Sokoban« (siehe Bild). Sie müssen als gestreßter Lagerarbeiter - dargestellt als »@@« - die Kisten »$$« auf die richtigen Plätze »..« bewegen. Das hört sich einfach an, doch gibt es 50 Level mit stetig steigendem Schwierigkeitsgrad. Die Steuerung Ihres »Arbeiters« erfolgt über die Tasten 8, 2, 4 und 6 - am besten über den Ziffernblock zu erreichen. Bei einer guten vt52-Emulation steuern Sie Ihren Helden auch über die Cursortasten.

Mailboxbetreiber, die ihren Mitgliedern Fidoban zugänglich machen wollen, müssen FIDOBAN.TTP mit folgenden Parametern starten: 1. Vorname, 2. Nachname, 3. Spielzeit in Minuten, zum Beispiel »FIDOBAN.TTP Karl Maier 60«. Mit dieser Einstellung prüft Fidoban ständig (über Carrier Detect), ob die Leitung noch steht. Wer ohne Modem direkt von Rechner zu Rechner oder grundsätzlich ohne diese Überprüfung spielen will, kann noch den Parameter »O« an die Kommandozeile anhängen, also »FIDOBAN.TTP Karl Maier 60 O«. Für den, der das Spiel nur auf dem eigenen Rechner starten möchte, existiert noch zusätzlich der Parameter N, also »FIDOBAN.TTP Karl Maier 60 N«.

Die Datei FIDOBAN.SCR (Highscoreliste) und der Ordner SCREENS, in dem sich die 50 Level befinden, müssen im gleichen Verzeichnis wie FIDOBAN.TTP abgelegt sein. Die Level und die Highscoreliste lassen sich mit jedem ASCII-Editor (z.B. 7UP/TEMPUS) editieren. Aber nicht schummeln - wenn der Sysop immer auf Platz eins steht, wird es verdächtig! Während des Spiels zählt Fidoban die übergebene Zeit im Minutentakt herunter, beim Erreichen von Null wird der aktuelle Spielstand gesichert und das Spiel beendet. Sollte die Telefonverbindung gestört oder beendet werden, wird genauso verfahren.

Programmtechnisches

Damit Ihnen die Entwicklung eigener Rollenspiele leichter fällt, ist Fidoban modular aufgebaut: FIDO_MAI.C enthält den Hauptteil mit der Kommandozeilenauswertung und der Hauptschleife, FIDO_GAM.C die Spiel- und Level-Routinen, FIDO_HI.C die Highscoreverwaltung, FIDO_RS.C die Ein- und Ausgabe-Routinen für die serielle Schnittstelle und die vt52-Emulation. Für die Online-Spiel-Programmierung ist natürlich FIDO_RS.C von größtem Interesse.

Die meiste Zeit verbringt ein Online-Spiel damit, auf eine Eingabe des Spielers am anderen Ende der Telefonleitung zu warten. Diese Warterei erledigt in Fidoban die Funktion get_tast(). Da der Betreiber einer Mailbox sehr beleidigt wäre, wenn unser Online-Spiel ewig auf die Eingaben des Users warten würde, muß bei dieser Gelegenheit auch geprüft werden, ob die Zeit des Spielers abgelaufen ist. Damit der User seine Restzeit auch kontrollieren kann, wird diese im Minutentakt angezeigt. Besitzer von Terminalprogrammen mit einer guten vt52-Emulation werden zur Steuerung auch die Cursortasten benutzen wollen. Die Cursor-Escape-Sequenzen (»ESC A« usw.) werden deshalb mit Hilfe der Rekursion abgefangen und in die Tasten 8, 2, 4 und 6 übersetzt. Natürlich kann der Mailboxbetreiber (zum Ärger des Spielers) auch in das Spiel eingreifen. Die Tasten der Konsole werden genau wie die Eingaben über die RS232-Schnittstelle behandelt.

Sollte der Spieler nun vor lauter Ärger einfach die Verbindung trennen, muß auch dieser Fall bemerkt werden. Über die Leitung »Carrier Detect« meldet das Modem dem Mailboxrechner, ob eine Verbindung besteht. Die Funktion carrier_detect() testet über den MFP (Adresse 0xFFFA01, Bit 1) die Leitung für den Standard-RS232-Port. Wer einen TT oder MEGA STE sein eigen nennt und Fidoban über einen anderen RS232-Port spielen möchte, muß diese Funktion entweder umschreiben oder mit dem Kommandozeilenparameter »O« deaktivieren. Auch in diesem Fall bemerkt der Computer das Trennen der Leitung, nur eben nicht ganz so flink. Alle anderen Funktionen greifen nur über das Betriebssystem auf die serielle Schnittstelle zu und haben mit der Umleitung auf einen anderen Port keine Probleme.

Damit der Spieler nicht »blind schieben« muß, erfolgt die Ausgabe natürlich auch über die Telefonleitung. Hierfür ist rs_out() zuständig. Die Ausgabe erfolgt zeichenweise. Bei jedem neuen Zeichen testet das Programm, ob der Empfänger noch aufnahmebereit ist. Hat sich dessen Computer beziehungsweise dessen Modem »aufgehängt« und verweigert die Annahme länger als 30 Sekunden, beendet Fidoban mit einer Fehlermeldung (TIME_OUT) seine Aktivität.

Da in den seltensten Fällen die Zeichen nur einzeln ausgegeben werden, steht die Funktion out_string() zur Verfügung. Sie gibt einen String gleichzeitig auf der seriellen Schnittstelle und der Konsole aus. So kann der Mailboxbetreiber die Vorgänge immer im Auge behalten. In Fidoban bestehen die Spielfiguren aus einem String mit zwei gleichen Zeichen. Um solche Miniatur-Zeichenketten schneller auszugeben, existiert die Funktion char_out(). Sie befördert ein ihr übergebenens Zeichen doppelt auf die RS-232-Schnittstelle und Konsole.

Die Funktion inversO schaltet auf die inverse Darstellung um und wieder zurück. Damit auch Besitzer von MS-DOS-Rechnern in den »Genuß« unseres Spiels kommen, berücksichtigt Fidoban die Möglichkeiten der verwendeten vt52-Emulation. Auch die Funktion clsf) zum Löschen des Bildschirmes muß auf diesen »Umstand« achten, da beinahe kein Terminalprogramm unter MS-DOS diese Atari-vt52-Funktion unterstützt.

Sie haben nun ein kleines Gerüst für die Programmierung von Online-Spielen an der Hand. Ich hoffe, Sie machen davon regen Gebrauch. Nach bisher unbestätigten Gerüchten zeichnet die Post Programmierer von besonders guten Online-Spielen, die die Telefonkosten in die Höhe treiben, mit dem goldenen Posthörnchen aus. (ah)

Kisten durch die Telefonleitung schleppen: »Fidoban«

Richard Kurz
Aus: TOS 11 / 1992, Seite 58

Links

Copyright-Bestimmungen: siehe Über diese Seite