[ t e x t f i r e . d e - Startseite ]

Sitemap
Druckversion


Werkstatt

MUD-Programmierung

LPC heißt die am meisten verbreitete Sprache für MUDs. Sie ist objektorientiert, an C angelehnt und sieht deshalb Inform ähnlich. Jedoch nicht sehr.

Herz eines MUDs ist der Driver, der die Anfragen der Benutzer bearbeitet und das Spiel verwaltet. Einzelne Räume, Gegenstände und die Spieler sind Objekte, genau wie in Inform. Der Driver kann jedoch nicht die komplette Spielwelt auf einmal laden, denn bei Tausenden von Spielern und Räumen würde der Speicher schnell knapp werden. In LPC wird deshalb jedes Objekt, also sein Code, in einer eigenen Datei abgelegt, welche bei Bedarf geladen wird. Ein Raum wird beipielsweise geladen, wenn er betreten wird, ein Schwert erst, wenn man es kauft. In regelmäßigen Abständen löscht der Driver nicht mehr benötigte Objekte aus seinem Speicher. Außerdem kann ein Objekt von einem anderen erben, ganz nach der klassischen objektorientierten Theorie, nur dass die Objekte die Dateien selbst sind. Ein Beispiel:

//Einfacher Raum
inherit "std/room";

#include <properties.h>

void create()
{
  ::create();

  SetProp( P_LIGHT, 1 );
  SetProp( P_INT_SHORT, "Abstellkammer" );
  SetProp( P_INT_LONG, "Du befindest dich in einer "
    "duesteren Abstellkammer. Nur ein Regal an der "
    "Wand faellt dir auf.";
  SetProp(P_INDOORS,1);
  AddDetail( "regal",
    "Das Regal ist voellig verstaubt und dazu noch "
    "leer.\n" );
  AddExit("osten","d/haus/ersterstock/gang");
}

Hier wird ein einfacher Raum, eine Abstellkammer, erstellt, die mittels der inherit-Anweisung die Eigenschaften des Standardraumobjekts room erbt, das im Verzeichnis std liegt. Die create-Methode wird bei der Erschaffung des Objekts aufgerufen und setzt mittels SetProp die individuellen Eigenschaften des Raums, wie den Namen, die Lichtquelle, ein Detail (das Regal) oder einen Ausgang. Letzterer verweist wieder auf ein Objekt, nämlich gang, so dass der Spieler beim Verlassen der Kammer das Laden dieses Objekts auslöst und dorthin verfrachtet wird.

Ein Schwert würde seine Grundeigenschaften von std/weapon erben und Eigenschaften wie die Stärke oder das einzusetzende Talent des Spielers haben. Da es natürlich viele Schwerter im MUD geben kann, werden Objekte beim Erstellen »geklont«, so dass bei Bedarf mehrere Instanzen eines Objekts im Spiel exisitieren. Damit lassen sich die meisten Dinge im MUD relativ einfach erstellen.

Befehle müssen auch an Objekte gehängt werden, weshalb es häufiger im MUD zur Situation kommen kann, dass man in einem Raum klettern kann, im nächsten der Befehl nicht einmal verstanden wird. Viele Grundbefehle sind dem Spielerobjekt oder einem unsichtbarem Seelenobjekt mitgegeben. Befehle bekommen im Objekt ihre eigenen Funktionen, die beim Eingeben eines Befehls ausgeführt werden.

Leider ist LPC nicht besonders einheitlich und das obige Beispiel würde nur in bestimmten MUDs funktionieren. Denn wie Inform ist LPC die Programmiersprache, während eine Programmbibliothek die eigentlichen Werkzeuge für die interaktive Erfahrung liefert. Für LPC gibt es eine Vielzahl von Libraries, jedes MUD hat seine eigene und die Befehlsätze unterscheiden sich oft erheblich. Der Ausgang des obigen Beispiels, aus EPACRIS entnommen, würde in UNITopia query_one_exit("osten") -> "d/haus/ersterstock/gang" lauten.

Wer bei einem MUD mitprogrammieren will, kann sich an die Wizards oder Engel des Spiels wenden, die in der Regel gerne neue Mithelfer nehmen. Zum Testen (oder zum Entwickeln eines eigenen MUDs) eignen sich die HomeMUD-Versionen von UNItopia oder EPACRIS sehr gut.

Links:

06.12.2001, Max Kalus

 
[nach oben]