Ich möchte mal das Beispiel mit dem Reh aufgreifen und ein wenig aufzeigen, welche technische Entwicklung die Mudlib durch hat.
Am Anfang gab es die bereits erwähnten Grammatikfunktionen:
Der(taeter) + " trifft " + den(opfer) + " an " + dem(koerperstelle) + "."
Jetzt kann man sich vorstellen, daß das nicht der lesbarste Code wird. Für eine normale Kampfzeile muß ich bereits drei Meldungen erzeugen:
Der(taeter) + " trifft " + den( opfer ) + " an " + dem(koerperstelle) + "." "Du triffst " + den(opfer) + " an " + dem(koerperstelle) + "." Der(taeter) + " trifft Dich an " + dem(koerperstelle) + "."
Sowas mag ich immer sehr. Ohne Syntax-Highlighting bin ich bei sowas sofort verloren. Es gibt Codestellen, wo man ganze Bildschirmseiten voll mit solchen Meldungsblöcken hat
Dabei gibt es so schöne Methoden, um Code und Daten (die Meldung) zu trennen. Ganz simpel z.B. mit
msg = "%s trifft %s an %s."; sprintf( msg, Der(taeter), den(opfer), dem(koerperstelle) );
Das halte ich für tausendmal lesbarer als obigen Dreck.
In der Mudlib hat man diesen Ansatz weiterverfolgt. Man kann die Grammatikfunktionen direkt in den Text schreiben und zur Laufzeit wird dann daraus die eigentliche Meldung gebaut:
"$Der('taeter) trifft $den('opfer) an $dem('koerperstelle)."
Na das sieht doch schon besser aus. Leider müssen wir immer noch drei Meldungen einzeln bauen:
"$Der('taeter) trifft $den('opfer) an $dem('koerperstelle)."
"Du triffst $den('opfer) an $dem('koerperstelle)."
"$Der('taeter) trifft Dich an $dem('koerperstelle)."
Zum Glück gibts dafür seit kurzem aber auch eine Lösung:
verb = "treffen";
msg = "$Du_der() $machst_macht('arg1) $den_dich('arg2) $prep(an,'arg3)."
taeter -> message_room( msg, verb, opfer, koerperstelle );
Das generiert mir automatisch alle drei verschiedenen Meldungen für Täter, Opfer und alle anderen Person im Raum. Perfekt!
Hier sind wir also wieder an dem Punkt, wo wirklich alles automatisch geht, egal wie die Datenlage ist. Und der Code sieht auch noch aufgeräumt und übersichtlich aus! Was will man mehr? Also ich find das mal so richtig Klasse! Hat ja auch nur 20 Jahre gedauert