AGSModderEin großes Problem unserer Community ist meiner Meinung nach der großflächige Mangel an Englischen Übersetzungen für unsere Episoden und vor allem das sehr viele teils nicht gute aber auch paar der besten Episode derzeit de facto nicht übersetzbar sind, weil der Entwickler fort ist und damit auch die Quellcodes oder der Quellcode geht einfach mal so verloren.
Da habe ich mir mal vorgestellt wie es wäre, wenn es ein Modding Tool für AGS Spiele gäbe, mit dem man Spiele stark bearbeiten könnte. Dieses Problem wollte ich mal angehen.
Ich habe mich in der letzten Zeit viel mit x86 Hex-Coding und Reverse Engineering beschäftigt, mit meinem primären Ziel eine Episode zu verändern sodass sie danach auch noch funktioniert.
Als mein Beispiel habe ich Episode 3: Stubenarrest, mal genommen.
Ich weiß sie gilt nicht als beste Episode, jedoch ist sie sehr kurz, bei chronologie besessene nicht deutschsprechende Spielen ziemlich gefragt und am allerwichtigsten der Quellcode ist verloren.
Ich habe für's Erste genug geschrieben und werde mal meine bisherigen Ergebnisse mit meinem Tool vorstellung um danach noch näher drauf einzugehen.
Also die Übersetzung für das Spiel wäre vom Text her quasi komplett vollendet. Und für einen nicht-Deutsch sprechenden wäre es auch verständlich und auch gut spielbar. Alle Begriffe habe ich versucht so zu bearbeiten, sodass sie natürlich auch noch das gleiche bedeuten um nicht das (verlorene) geistliche Eigentum von verschwundenen Entwickler nicht zu verletzen.
Wie man sehen kann habe ich auch noch die View von den Verben verändert und zu meinem Glück befanden sich die englische Verben noch in dem fertigen Spiel.
Mit quasi komplett habe ich auch das gemeint, was man ziemlich einfach auf diesem Bild erkennen kann. Um es zu erklären: In dem Binärcode von der .exe und der .001 usw. kann man Strings wie sie in den AGS Scripten sich befinden frei verändern. (Strings ist vereinfacht eine Nacheinanderreihung von Zeichen.) Diese befinden sich in gewisse Datenbereiche. Ich kann einen String natürlich verkürzen aber nur so lange verlängern, sodass ich keinen anderen Datenbereich der etwas anderes enthält (Code oder andere Strings) berühre. Daran muss ich noch arbeiten, wie man Datenbereiche in gewissen Bereiche verändern kann. Dazu muss ich finden wo diese zugeordnet werden, was leider sehr kompliziert ist. Solange ich das nicht herausfinde kann eventuell so etwas passieren wie bei der Phrase givewallet. In der .exe ist das Gui Wort Gib folgenderweise angegeben.
Das %s markiert, dass hier ein String eingesetzt werden muss. In den Fall von AGS ein Name von einem Inventargegenstand: Portemonnaie/wallet.
Ein Nullwert besitzt den binären bzw. hexadezimalen Wert 00, so eine leere Information markiert dass folgender String fertig ist. Wäre nach dem Nullwert ein weiterer könnte ich sogar den String um 1 verlängern. Jedoch ist nach dem Nullwert direkt der String von einem nächsten Verben angegeben. Sprich ich darf den String derzeit nicht verlängern. Also wie kann ich diesen übersetzen? Nur so leider:
Da das Leerzeichen weg musste hängt der String des Inventarobjekts %s direkt an dem give: also wird givewallet angezeigt.
Dies ist im Spiel zum Glück nur einmal vorgekommen. Das Spiel ist davon ja auch nicht wirklich beeinträchtigt.
Hier hätte ich noch 2 weitere Eindrücke.
Also das wäre mein bisheriger Stand. Auf dieser Art und Weise kann man jetzt schon spielbare Übersetzungen erstellen.
Da sich aber kaum jemand die Mühe macht, was ich auch nachvollziehen kann, durch Hexadezimal Code sich zu kämpfen, arbeite ich an den AGSModder.
Derzeit kann man mit dem AGSModder ein AGS Spiel einlesen, und dieser gibt euch die komplette Auflistung aller im Spiel vorkommenden Texte. Diese lassen sich dann auch bearbeiten und direkt speichern. Er wird ebenfalls angegeben wie lang maximal eine Phrase sein darf.
Es funktioniert derzeit sogar mehr oder weniger, trotzdem habe ich noch viel zu Tun und auch viele Funktionen geplant welche den AGSModder zu einem wirklichen Modding Tool machen:
- Das modifizieren der maximal Länge eines Strings.
Dies ist auch der Punkt an dem ich auch am härtesten derzeit arbeite, damit solche Sachen wie givewallet ausgeschlossen werden.
- Das modifizieren von Grafiken.
Wenn ich bloß wüsste wo und auf welche Art Grafiken sich in dem Code befinden. Wenn ich das entschlüssele, könnte man einzelne verschiedene Grafiken auch bearbeiten. Dann wären auch Spieletitel und Objekte mit Schrift drauf übersetzbar. Weil erst dann wäre ein Spiel komplett übersetzt. Wann ich es schaffe dieses Feature zu implementieren ist ungewiss, aber ich bin auf jeden Fall noch optimistisch das es irgendwie überhaupt möglich ist.
- Austausch von Musik, Optionen, Variabeln und so weiter...
Natürlich wenn ich die Sachen obendrüber geschafft habe kann ich auch darüber mal grübeln. Derzeit aber absolute Zukunftsmusik!
Sonst wäre der Editor auch auf Linux Systeme ohne Einschränkungen nutzbar.
Natürlich werde ich den weiteren Verlauf meines Projektes hier updaten und zukünftige Alpha Versionen oder gar Github Repos hier reinstellen.
Das war dann auch das "kleine" Überraschungsprojekt welches ich noch für dieses Jahr angekündigt habe.
Um ehrlich zu sein, die Arbeit ist ziemlich komplex und für mich auch zeitaufwendig, daher schließe ich einen komplette Veröffentlichung davon in diesem Jahr aus.
Dennoch will ich euch von diesem Projekt auch erfahren lassen. Der AGS Community werde ich auch mal dieses Projekt präsentieren, aber in diesem frühen Stadium finde ich eine Vorstellung noch nicht passend. (Außerdem bezweifel ich, dass ein Hacking-Tool dort nicht wirklich gut ankommen wird.)
Ich wäre interessiert was ihr von dieser Idee haltet.