Daedalus ist die Skriptsprache die in Gothic verwendet wird, um die Welt mit Leben zu füllen.
Diese Dokumentation soll einen kurzen Überblick über die bei Gothic verwendeten Skripte liefern, mit Augenmerk auf die Gothic-MOD-Erstellung. Die Grundfunktionalitäten werden kurz erläutert und auf Besonderheiten der Skriptsprache hingewiesen. Diese Dokumentation soll allerdings nicht den kompletten Umfang und alle Möglichkeiten der Skriptsprache umfassen, sondern den Einstieg erleichtern und auf einige Kniffe hinweisen. Viele Kleinigkeiten, die hier nicht erklärt werden, sind in den veröffentlichten Skripten aus dem „Gothic-MOD-Kit“ ersichtlich. Siehe auch die Dokumentation zur Syntax der Skriptsprache
Die Skriptsprache in Gothic hat diverse Aufgaben. Die wichtigsten sind:
Die einzelnen Skriptfiles besitzen die Endung „.d“ (D-File). Dies sind normale Textfiles und enthalten den Skriptsource, der dann von einem Parser übersetzt wird und als File mit der Endung „.DAT“ im compilierten Format auf der Festplatte gespeichert wird. Welche Skriptfiles übersetzt werden sollen, teilt man Gothic in einem File mit der Endung „.SRC“ mit. Dies ist wiederum ein normales Textfile, in dem die zu parsenden Files aufgelistet werden. Hier sind Unterverzeichnisse und Wildcards erlaubt. Auch die Reihenfolge der dort angegebenen Files kann wichtig werden, da einige Symbole vor anderen definiert werden müssen. Als erstes sollten immer die Klassendefinitionen und globalen Konstanten geparst werden, da die meisten anderen Skriptfiles darauf Bezug nehmen.
Die Skriptsprache benutzt sogenannte „Klassen“, die festlegen, welche Eigenschaften der Spielobjekte in den Skripten abfragbar oder veränderbar sind.
Solche Klassen beginnen mit dem Schlüsselwort CLASS und dürfen nicht verändert werden. Sie bilden die Schnittstelle zwischen dem Skript und dem eigentlichen Programm (Gothic) und müssen deshalb exakt übereinstimmen. Sollten trotzdem die Variablentypen oder die Reihenfolge der Variablen verändert werden, wird sich Gothic unverhersehbar verhalten oder im schlimmsten Fall abstürzen, da Gothic die benötigten Werte an die falsche Stelle schreibt…
Die einzelnen Klassen sind im „content\_intern“-Order im File „classes.d“ zu finden. Dort findet Ihr auch eine kurze Beschreibung der einzelnen Variablen (na ja, zumindest bei einigen).
Wichtige Klassen sind:
Klassen sind natürlich wertlos ohne die Instanzen der jeweiligen Klassen. Instanzen sind im Spiel vorkommende Objekte dieser Klasse, z.B. ist ein NSC im Spiel eine Instanz der Klasse „C_NPC“.
Instanzen werden mit den Schlüsselwort INSTANCE eingeleitet. Hier werden dann die Eigenschaften des Objektes festgelegt, indem die einzelnen Variablen, die in der Klasse festgelegt wurden, mit Werten initialisiert werden. Jedes D-File im Ordner „story/npc/“ initialisiert auf diese Weise einen im Spiel vorkommenden NSC.
Die Gothic Skriptsprache besitzt einige Einschränkungen und Besonderheiten, die besonders für programmiererfahrene Nutzer interessant sein dürften:
Arrays können nicht als Funktionensparameter übergeben werden.
Die „Externals“ oder auch „BuildIn“ - Funktionen liefern Funktionalitäten, die nur schwer im Skript zu implementieren wären. Hier liefert Gothic einen Satz von Funktionen, die aus der Skriptsprache heraus aufgerufen werden können. Eine vollständige Liste dieser Funktionen mit einer kurzen Beschreibung befindet sich hier.