Script
aus RHWiki, der freien Romhacking-Enzyklopädie
Scripte sind sogesehen auch Programmabläufe die meist direktes Einwirken ins Spiel haben und die Steuerung des Spieles sehr einfach designen. So muss z.B. nur eine Funktion aufgerufen werden um eine Figur zu bewegen als über einen Assembler Quellcode. Jedoch muss in dem ROM eine Stelle sein, die die Scripte übersetzt und ausführt.
| Inhaltsverzeichnis |
Vorteile und Nachteile von Scripten
Scripte bringen den großen Vorteil, dass nicht jede Aktion auf jeder Levelkarte in den Quellcode geschrieben werden muss. Es ist so auch für Leveldesigner leicht möglich die Spielabläufe zu verändern, ohne große Programmierkenntnisse haben zu müssen. Außerdem ist es somit möglich das Spiel wesentlich einfacher zu steuern. Statt einen C++ Quellcode schreiben zu müssen, der womöglich erst mehrere Texte zusammensetzt, das Spiel anhält und eine Nachricht anzeigt, ist dies über eine einzelne Zeile möglich.
Nachteile gibt es selbstverständlich auch. Zum Beispiel wird durch den Script-Interpreter das Spiel ein wenig langsamer. Da die Scripte jedoch meist sehr simpel gehalten werden und die CPU mittlerweile schnell genug ist, fällt sowas meistens nicht auf. Ein anderer Nachteil wäre, dass Hacker es wesentlich einfacher haben, den Spielfluss zu beeinflussen. Aber für Hacker ist das ja eher ein Vorteil ;)
Scriptentstehung
Um einen Script zu erstellen wird zu dem Spiel meist noch ein simpler Compiler entwickelt oder es wird einfach ein Baukastensystem in den offiziellen Editor integriert. Dies ist für uns Hacker leider nicht zugänglich, daher müssen wir uns selber darum kümmern. Dieser Compiler erstellt dann aus dem Script vorcompilierte Daten, die später mit in das ROM gespeichert werden. Sobald diese gefunden wurden und verstanden wurden ist es möglich sie zu bearbeiten.
In das Spiel wird von den Entwicklern dann ein Interpreter eingebaut. Dieser Interpreter weiß, wie die vorcompilierten Daten zu verstehen sind und handelt dementsprechend. Es werden also Schritt für Schritt die Befehle ausgeführt.
Beispiel
Hier ist nun mal ein einfaches Beispiel zu sehen wie ein Script in einem Rollenspiel aussehen könnte:
1A 49 43 48 20 47 45 48 45 21 00 3D 02 23 01 10 | .ICH GEHE!.=.#.. 00 12 01 00 FF .. .. .. .. .. .. .. .. .. .. .. | ....ÿ...........
So könnte z.B. ein Script aussehen. Bei dem Aufruf wird dann das erste Byte eingelesen. Das Spiel erkennt 0x1A als Befehl "Zeige Nachricht" an und weiß nun, dass alle nachfolgenden Zeichen bis zu einem 0x00 Byte ein Text ist, den es anzuzeigen gilt. Sobald der Text weggeklickt wurde, erkennt der Interpreter als nächstes ein 0x3D als Befehl, der z.B. für „Bewege Spieler” steht. In Richtung 0x02 (Hoch) wird er 0x23 Felder bewegt und dann in Richtung 0x01 (Links) um 0x10 Felder, danach gibt das 0x00 Byte an, dass die Bewegung nun abgeschlossen ist. Abschließend daran wird ein Teleport (0x12) nach Karte 0x0001 ausgeführt und das Script beendet (0xFF).
Nochmal zusammenfassend:
1A "ICH GEHE!" 00 | Zeige Nachricht "ICH GEHE!" 3D 02-32 01-10 00 | Bewege Spieler 0x32 hoch und dann 0x10 nach links 12 01 00 | Teleportiere nach Karte 0x0001 FF | Script abschließen

