1 Einführung

1.1 Die Grundidee
MonkeyScript ist eine Programmiersprache, die in Amiblitz3 integriert ist. Sie ermöglich es, Scripte innerhalb eines Amiblitz3 Programms auszuführen. Die Hauptanwendung liegt dabei im Steuern von Gegnern in Computer Spielen, aber natürlich ist jede Art von Anwendung denkbar.
Die Syntax lehnt sich an Amiblitz3 an, schlägt teilweise aber auch in Richtig C. Sie wird in diesem Dokument genau beschrieben.
Die Sprache selbst besitzt recht wenig Funktionen. Die eigentliche Funktionalität entsteht beim Anbinden an das Hauptprogram, welches das Script ausführt.
Ein MonkeyScript wird beim Starten in eine Liste gesetzt. Innerhalb des Aufrufs der Amiblitz Funktion msr_Do{} werden alle Script in dieser Liste solange ausgeführt, bis sie jeweils entweder terminieren oder signalisieren, dass die Berechnung für einen Frame (Tick im Spiel) abgeschlossen ist. Im nächsten Frame (vielmehr beim nächsten Aufruf von msr_Do{}) wird die Ausführung fortgesetzt. Ist kein Script in der Liste, kehrt ein Aufruf von msr_Do{} sofort mit dem Rückgabewert False zurück.

Die Anbindung sieht im Wesentlichen so aus (Amiblitz3 Code):
msr_RunFile{filename,"Test",0,args} ; setze das Script in the Task-Liste
...

.GameLoop

While msr_Do{} ; solange es etwas zu tun gibt...
Select msr_GetEvent{} ; ein Script meldet sich...
Case ... ; tue, was zu tun ist!

End Select
Wend

... mache andere Dinge in diesem Frame

Goto GameLoop ; nächster Frame


Es ist nun möglich, von einem Script kurzzeitig in das Hauptprogram zu springen, dort etwas zu berechnen und das Ergebnis zurückuzugeben. In diesem Fall gibt msr_Do{} den Wert True zurück. Wenn alle Scripte warten oder beendet sind, gibt msr_Do{} False zurück und die Abarbeitung der Script kann bis zum nächsten Frame ruhen.
Es ist auch möglich, CallBack Funktionen einzusetzen, sodass die Scriptverarbeitung nicht unterbrochen wird, was i.A. performanter ist.
Dem MonkeyScript SDK liegt ein Tool bei namens "msh". Es macht nichts anderes als ein angegebenes MonkeyScript auszuführen und unterbrechende Events in die Console auszugeben. In einer echten Anwendung wäre msh die ausführbare Datei des Spiels/Programms. 1.2 Das Konzept


Die monkeyrun.exe muss gestartet werden. Sie interpretiert die Skript Files, indem sie sich on-the fly an den Kompiler wendet, der aus jeder Skript File eine entsprechende .bin File macht und speichert. Die .bin Files können nun von der monkeyrun.exe ausgeführt werden. Es gibt zwei Versionen von der monkeyrun.exe: die normale Version und die Debug-Version. Die normale Version läuft Fullscreen und nutzt den Kompiler nicht mehr, sondern ließt direkt die .bin Files um die Geschwindigkeit zu optimieren. Hier müssen jedoch alle .bin Files vorliegen. Diese werden entweder mit dem Kompiler "per Hand" kompiliert oder werden mit der Debug-Version in in Echtzeit erstellt, wobei ältere Versionen der .bin Files automatisch überschrieben werden. Die Debug-Version lässt desweitern das ganz Adventure in einem Fenster laufen und ermöglich Kontrolle über das Geschehen, während die normale monkeyrun.exe keine Eingriffsmöglichkeiten bietet und nur für eine End Version gedacht ist.

1.3 Die Verzeichnisstruktur eines Adventures

scripts (dir)
bins objects (dir)
images (dir)
sounds (dir)
locations (dir)
monkeyrun.exe (Interpreter)
monkeyrun_debug.exe (Interpreter im Window modus zum debuggen)
monkeyprefs.exe (Voreinstellungs Programm für Screenmode, Audiomode usw.)
.config (Konfigurationsdatei der monkeyprefs.exe)
compiler.exe (Compiler für die Monkeyscript Files

1.4 Dateitypen


1.5 Konventionen in dieser Dokumentation