T. A. G. Text-Adventure-Generator und T.A.M. Text-Adventure-Maschine History der Entwicklung von Version 2.0 18.01.2000 Die Version 2.0 wird als beta veröffentlicht. Neuerungen gegenüber der Version 1.0 sind: * Einführung von Objekt- und Raumklassen zum besseren Handhaben von Objekten und Räumen. * Ausführungsblöcke bei den Objekten und Räumen, um Ereignisse nicht im Befehl programmieren zu müssen, sondern sie in der Objekt- bzw. Raumdefinition abfangen zu können. * Die Befehle benutzen nicht mehr die Objekte A, D, M usw., die die grammatikalische Funktion des Objekts im Satz kennzeich- neten (Akk., Dativ, Mittelobjekt usw.). Der Satzbau wird durch eine neue Syntax-Angabe definiert, aus der der Fall eines Objekts hervorgeht. Außerdem können so weitere Bedingungen zu den Objekten definiert werden, um dem Parser das Leben leichter zu machen. * Textbefehle in eckigen Klammern erlauben eine flexible und im Quelltext gut lesbare Ausgabe des Texts. * Erweiterung der Standard-Attribute * Definition von mehreren Feldern möglich, die bis zu drei Dimensionen haben können. Überarbeitete Handhabung der Feldpositionen. * Strengere Trennung von Raum-, Objekt-, Richtungs- und Befehlsvariablen. Zusätzlich können Objekte bis zu acht Variablen besitzen. * Verbesserte Schleifen und vereinfachte Wenn-dann-Syntax * String-Variablen, auf denen statische Texte gespeichert werden können. * Routinen zum Eingreifen in den Parser. Möglichkeit, Objekte mehrfach zu definieren. Pluralnamen zu Objekten. Der Parser versteht Rückbezüge ("Welchen Ball? den roten oder den blauen? - den blauen"), unterscheidet zwischen Vokabular mit verschiedenem Geschlecht (der/das Schild oder der/die Ritter) und erlaubt Imperative für verschiedene (grammatische) Personen (Schlag(e), Schlagen Sie, Schlagt) * Listenoption, um Objekte einer Klasse bei Aufzählungen zusammenzufassen. Das Format der Liste ist mit der Flagge #liste veränderbar. Listennamen erlauben eine sprachlich schönere Auzählung bei Gruppierungen. Für Behälter, Ablagen und Personen gibt es Textblöcke, um das eintönige "In der Kiste siehst Du einen Apfel." aufzulockern. 27.03.2000 * Korrektur des Laden/Speichern-Dialogs, bei dem andere als der momentane Arbeitspfad nicht berücksichtigt wurden. 10.04.2000 * Korrektur der Objektvariablen: Sie werden jetzt in Ausführungsblöcken erkannt, bevor sie beim Objekt definiert wurden und werden beim Neustart zurück auf ihren Anfangswert gesetzt. * Korrektur der Konstanten: Sie wurden nicht richtig erkannt und konnten nicht in Textbefehlen ausgegeben werden. * Korrektur der Log-Datei. Es wurden bei Objektklassen und bei Dekos oft "Eulen und Meerkatzen", d.h. unverständlicher ASCII-Wirrwarr ausgegeben. * Korrektur der Zeitangabe in der Statuszeile. (War Min:Std statt Std:Min) * Dinge konnten in geschlossene Behälter gelegt werden -- ist repariert. * Die Texteingabe wurde durch Angabe von Plus-Zeichen durcheinandergebracht, da + intern benutzt wird, um anzudeuten, daß im Text noch weitere Zeilen folgen. 17.04.2000 * Möglichkeit, Ausführungsblöcke anstelle von Beschreibungs- texten bei Räumen und Objekten (Besch, Text, Erst, Darin...) anzugeben, um eine variable Textausgebe ohne den Umweg einer explizit definierten Aktion oder einer NachAusf zu ermöglichen. * Langer Speicherpuffer für Worte, um unschöne Ausgaben wie "Ich kenne "Geburtstagsk" nicht" zu vermeiden. * Korrektur von AttrHin und AttrWeg für Raumattribute. * Korrektur der Verwendung von "ich" und "du" in wörtlicher Rede. Einführung von "sich (selbst)": Frage Annette über sich selbst. 19.04.2000 * Implementierung der Funktion Auswahl * Verbesserung des Verbparsers für Verben auf -ern und -eln. * Ausführungsblöcke anstelle von Namen (Räume und Objekte) 21.05.2000 * Korrektur im Parser für die TAG-Syntax: Zeilen, die nur ein Zeichen enthalten, wurden als leere Zeile interpretiert. 15.08.2000 * Nach längerer Pause werden die Textbefehle [char ] und [] (Feld als String à la Turbo Pascal) eingeführt. 21.08.2000 * Ein großer Bug wird behoben: Wurde lege x in y vorher abge- brochen, so lag Gegenstand x nachher am Boden. * Gewonnen bricht das Spiel jetzt sofort ab, vorher wurden Dämon-Aktionen noch durchgeführt. 27.08.2000 * Beseitigung eines Bugs beim Erweitern von Befehlsvokabular: Die Vokabeln wurden immer dem letzten Befehl zugefügt, nicht dem zu erweiternden TAG-Befehl. 28.08.2000 * Beim Umleiten auf nehmen und hinlegen wird nun auch die Sonderbehandlung für alles und einen vorzeitigen Abbruch berücksichtigt. * Ein Bug beim Abspeichern der Felddaten in jedem Zug für die Undo-Option und für Spielstände wurde behoben. Dadurch waren auch die Strings durcheinandergeraten. * Die Manuskriptausgabe benutzt nun auch für den eingegebenen Befehl den ISO-Zeichensatz. Mit der Option -c kann der MS-DOS-Zeichensatz für Manuskripte ausgewählt werden. 07.09.2000 * Einige kleinere Fehler sind repariert worden: Es gab Probleme bei "damit" und Synonymen, bei denen zwei Worte durch ein ersetzt wurde. 25.09.2000 * Die Aktion SichtUndRw kann nun auch für (Allg)-Objekte ein- gesetzt werden: Es werden zunächst die sichtbaren, dann alle Objekte überprüft. So kann man die Objektauswahl steuern. * Ein kleinerer Bug im Textpuffer wurde beseitigt. 26.09.2000 * Die Nichterfüllung der Ortsklausel hat den Befehl nicht immer abgebrochen. * Bug in "steigen auf", es wurde nicht richtig umgelenkt. * Objekte, die mit ObjInRw in reichweite geholt wurden, waren nicht automatisch in Sicht. (Reichweite ist ein Sonderfall von Sicht.) 27.09.2000 * Ein weiterer Bug in der Sichtbarkeit ist behoben. (Objekte konnten aus der Dunkelheit nicht in Sicht geholt werden.) * Die Variable bSitz, die zwar im Handbuch erwähnt war, wird erst jetzt für TAG implementiert. 03.10.2000 * Alleinstehender Dativ, der ohne Artikel eingegeben wird, wird nun erkannt. (Wie bei "Danke Frau Müller") 04.10.2000 * Bei gestorben und gewonnen wird die Punktezahl nun mit dem Befehl #punkte angezeigt, um Änderungen vornehmen zu können. Es wird eine Flagge #gestorben eingeführt, die normal 0 ist, 1 beim Tod und 2 beim Sieg des Spielers. * Das Parser-Routine zum automatischen Finden benutzt bei Personen nicht mehr den Spieler. * Die Parser-Routine, die nach fehlenden Objekten fragt, sagt bei Objekten, die mit Personen-Attribut definiert wurden jetzt die Form " wem/wen", z.B. "Mit wem willst du reden?" anstatt "Womit willst du reden?" * Ein weiterer Bug im Parser: "den" wurde nur als männlicher Artikel im Akkusativ, nicht aber als Plural-Artikel im Dativ erkannt. * Ein Schönheitsfehler: Beim Fortsetzungszeichen [...] wurde die Leiste nicht beibehalten. * Fehler in der vorgegebenen gehen-Routine in TAM: Türen, die nirgendwohin führen, versperrten den Weg, wenn in einer Richtung kein Ausgang definiert war ("Du kannst nicht in diese Richtung gehen"). 07.10.2000 * Ein Bug, der in der Überprüfung der Anwesenheit von Objekten zu einer Endlos-Rekursion führen konnte, ist gefixt. * Feste Gegenstände werden im Invantar nicht mehr angezeigt und können auch nicht mehr abgelegt werden. (Standardantwort 78 neu eingefügt.) * Eine Standardantwort für "Nimm mich" ist unter der Nummer 71 eingefügt worden. 08.10.2000 * Variable Minutentakt eingefügt. Nach jedem Zug wird die Zeit um Minutentakt Minuten hochgezählt. Ist Minutentakt Null, bleibt die Zeit stehen. (Früher war ein Zug immer eine Minute.) * Züge und Zeit werden nun nach allen Ausführungen hochgezählt. Dann ist der Zug in der Abfrage immer der, der auch in der Statuszeile steht, der erste Zug ist Zug Nr. Null. (Vorher wurden Züge zwischen Ausführung und den Aktionen, die in jedem Zug ausgeführt wurden, hochgezählt, was inkosistent war.) * Der Postparser wird nun auch für Meta-Befehle aufgerufen. Alles ab VorAusf wird aber nach wie vor nicht berücksichtigt, wenn es sich um einen Steuerbefehl handelt. * Die Aktion "PostMortem" erlaubt es nun, benutzerdefinierte Regeln nach dem Ableben des Abenteurers und nach dem erfolg- reichen Beenden des Spiels zu schaffen. Diese Aktion hängt eng mit der Flagge #gestorben zusammen. * Die Aktionen * und die globale Nachausführung werden nun erstmals dirakt nach dem Anfangstext ausgegeben. Die Variable Züge ist dann -1. So wird alles aktualisiert. * Die Anweisung "Programmende" bewirkt ein sofortiges Beenden von TAM. Dies ist eigens für PostMortem eingebaut worden. * Bei "Lege alles hin" werden nun keine Dekos und feste Gegenstände des Spielers berücksichtigt. * Unsinnige Sätze nach Undo werden jetzt hoffentlich vermieden. * Die Meldung "x ist nicht auf/in y" wird nun beim herausnehmen vermieden, wenn y kein Behälter/Ablage ist. Die Bedingung x in y wird sowieso vom Parser geprüft. 09.10.2000 * Der Nachparser wird nun korrekt abgerufen. * Ein Bug beim Speichern von Variablen für Objekte wurde behoben. * Korrektur bei der Erkennung von adjektivierten Substantiven ("der Blinde"). 10.10.2000 * Die korrekte Umlauterkennung für Auswahl wird implementiert. 17.10.2000 * Bug bei der Groß-/Kleinschreibung der Befehlsvariablen. * Der "Kuchen"-Bug wurde repariert, d.h. der Code wurde wiederhergestellt. "Den" wird jetzt allerdings nicht mehr als Plural-Dativ erkannt. * Die Variable aBef konnte nicht richtig belegt werden. 18.10.2000 * Ein Bug wurde behoben, der manchmal die TAM zum Absturz brachte, wenn es Objekte ohne Substantive gab. * Bei Befehlen, die aus dem Namen heraus aufgerufen werden, kann sich auf das jeweilige Objekt mit selbst bezogen werden. * Die Textbefehle [adj ], [vor ] und [subst ] sind eingeführt worden. Sie schreiben die erste definierte Vokabel des jeweiligen Typs, wenn sie existiert. (Das ist praktisch für Objektklassen: Name '[adj selbst]^ Knopf') * Zur Abkürzung von MutterObj Obj1 Obj2 wurden die folgenden Notationen eingeführt: xObj.Mutterobj, xObj.StammObj und xObj.Stammraum, die direkt als Räume angesprochen werden können. * Ein Bug in der Textausgabe bei der Interpretation der Objekte in Textbefehlen ist nun gefixt. * Die Ausführung für Objektnamen funktioniert endlich, wie sie sollte: Das grammatikalische Geschlecht wird nun richtig angepasst, auch wenn die Aktion für den Namen vorher noch nie aufgerufen wurde. * Mit [#advkennung] kann nun die Kennung des Adventures ausgegeben werden. 21.10.2000 * Es können nun bis zu acht lokale Variablen in Ausführungs- blöcken angegeben werden, auch innerhalb von Schleifen und Jenach-Anweisungen. Die Variablen können alle gängigen Typen besitzen. Syntax: lokale {} {}, wie z.B: lokale Objvar xObj oder lokal x y z (Default ist Flagge). * Ein Bug in TAG, der beim Erweitern von Befehlen zum Hängen führen konnte, ist behoben. * Das Menü zur Auswahl von Dateien erlaubt es nun, auf andere Laufwerke zu springen. Allerdings wird dabei nicht überprüft, ob dies Laufwerk vorhanden ist, wenn es ein Diskettenlaufwerk (A oder B) ist. Vorhandene Laufwerke werden erkannt, aber das muß noch auf mehreren Systemen getestet werden. * Falscher Einzug im ersten Absatz nach der Eingabe, wenn links ein Rand gesetzt wurde (-l). 23.10.2000 * Die Statuszeile kann jetzt über mehrere Zeilen gehen. Der String Statuszeile kann Umbrüche [x] enthalten. Die Flagge #leiste gibt die Anzahl der Zeilen an. 28.10.2000 * Ein Bug im Verbparser ist gefixt, nun kann der Verbparser mit einem Fehler abgebrochen werden. 12.11.2000 * Ein Bug bei der Feldreferenzierung mit lokalen Variablen ist in der TAM gefixt. * Außerdem geb es Probleme beim Definieren von Variablen aus Feldern ("Feld.x"). 19.11.2000 * Einzubindende Dateien konnten nur zwölf Zeichen enthalten. Nun können mit #DAT ganze Pfade angegeben werden. 23.11.2000 * Ein Bug, der die Änderungen von SichtUndRw nicht wieder rückgängig gemacht hat, wenn die Eingabe mit einem Fehler des Parsers abgebrochen hatte, ist gefixt. 27.11.2000 * Die spieldateien können jetzt auch ander Endungen als .tag haben. das sollte zwar schon immer so sein, aber es gab einen Fehler beim Überprüfen, der evtl. einen Laufzeitfehler erzeugt hat. 01.12.2000 * Der Bug vom 18.10.2000, der die TAM zum Absturz bringen konnte, wenn es Objekte ohne Substantive gab, wurde damals nicht überall gefixt. Jetzt funktioniert es. 20.12.2000 * Die Notation [Zust ] funktionierte nicht, wohl aber [.Zust]. Jetzt klappt's auf beide Arten. 11.01.2001 * TAG hat es ins neue Millennium geschafft. * Wenn Gestorben im Nachausführungsblock aufgerufen wurde, kam es zu eigenartigen Ergebnissen. das ist (hoffentlich) gefixt. * Die Antworten beim Besteigen, sich Setzen usw. werden nun auf den Puffer geschrieben. Offene Punkte * Dokumentation der neuen Features. (In Angriff genommen.) Vorgesehen * Untersuchung eines Zitats, eingeleitet mit der Anweisung Zitatanalyse. * Eventuell Modularisierung mit der Möglichkeit, fertige Module zu erzeugen und dazuzulinken. Dies ist aber absichtlich der letzte Punkt in der Liste ;-)