Autor Thema: AGSModder | Episode 3 in Englisch  (Gelesen 6604 mal)

Kinkilla

  • volljähriger Tentakel
  • *****
  • Beiträge: 845
  • Geschlecht: Männlich
  • Nicht zu verwechseln mit einem Chinchilla!
    • Profil anzeigen
AGSModder | Episode 3 in Englisch
« am: 28. November 2019, 18:59:26 »
AGSModder

Ein 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.
  • G
  • i
  • b
  • Leerzeichen
  • %
  • s
  • Nullwert
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:
  • g
  • i
  • v
  • e
  • %
  • s
  • Nullwert
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.
« Letzte Änderung: 28. November 2019, 20:00:44 von Kinkilla »

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 743
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #1 am: 29. November 2019, 14:47:46 »
Also ich finds gut.  :)

Finde es erstaunlich, dass du dich versuchst, die Episoden mit einem Hexeditor zu bearbeiten um sie dadurch aufwerten zu können. Hut ab!
Und dann entwickelst du auch noch ein Tool, dass einem die ganze Arbeit abnehmen kann, einfach klasse.  ;D

Na gut, kleine Episoden wie Epi3 hätte man wahrscheinlich auch mit weniger Aufwand komplett neu entwickeln können (80% sind ja sowie das Starterpack). Aber wenn du Spaß beim Hex-Hacking hast, warum auch nicht.

Sehe ich das richtig, dass du die Übersetzung hier direkt in den Spieldaten vornimmst, es also anstatt der üblichen Übersetzungsdatei eine komplett neue Version in bspw. Englisch ensteht?

Kinkilla

  • volljähriger Tentakel
  • *****
  • Beiträge: 845
  • Geschlecht: Männlich
  • Nicht zu verwechseln mit einem Chinchilla!
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #2 am: 29. November 2019, 16:25:42 »
Na gut, kleine Episoden wie Epi3 hätte man wahrscheinlich auch mit weniger Aufwand komplett neu entwickeln können (80% sind ja sowie das Starterpack). Aber wenn du Spaß beim Hex-Hacking hast, warum auch nicht.
Das war auch meine ursprüngliche Überlegung. Es würde auch im Prinzip funktionieren.
Ich stell mir eher die Möglichkeit vor Maniac Mansion Begins oder Helden des Tages mal zu übersetzen, weil diese neu aufzulegen wäre eine riesen Arbeit. Dass man kleine Bernard Starterpack  Episoden auch sehr schnell übersetzten kann ich, ist dann eher ein netter Zusatz.
Sehe ich das richtig, dass du die Übersetzung hier direkt in den Spieldaten vornimmst, es also anstatt der üblichen Übersetzungsdatei eine komplett neue Version in bspw. Englisch ensteht?
Das siehst du richtig. Man müsste dann eben eine Episode doppelt zum Download anbieten. Ist nicht sehr schön, aber erfüllt seinen Zweck.
Das Problem mit der Übersetzungsdatei ist folgendes:
Es gibt die .trs und .tra Datei. Die trs Datei befindet sich im Quellcode Ordner beim Entwickler, welche dann zum Übersetzter geschickt wird und dann auch wirklich nur lesbaren Text enthält. Kann man also auch z.B.: mit dem Texteditor bearbeiten. Wenn der Entwickler diese zurückbekommt und das Spiel kompiliert, enthält der Spieleordner lediglich eine tra. Man bemerkt dass die tra um ein vielfaches kleiner als die trs ist, weil die tra nur mehr aus Binärcode besteht und keine frei erkernnbare Texte.
Für die Zukunft könnte ich mir auch vorstellen das man auch solche bearbeiten kann, aber das steht auch noch in den Sternen.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2323
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: AGSModder | Episode 3 in Englisch
« Antwort #3 am: 01. Dezember 2019, 18:49:33 »
Was für Tools hast du fürs Reverse Engineering verwendet? Ich hatte mir letztens einen Vortrag über r2 angehört, aber zu dem Zeitpunkt war ich definitiv nicht mehr aufnahmefähig.


Folge mir auf X und itch.io

Kinkilla

  • volljähriger Tentakel
  • *****
  • Beiträge: 845
  • Geschlecht: Männlich
  • Nicht zu verwechseln mit einem Chinchilla!
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #4 am: 01. Dezember 2019, 19:30:55 »
r2 verwende ich und ist auch ein gutes Analyse Tool, jedoch habe ich mit einem AGS Spiel sehr viele "invalid" Werte bekommen. Muss da wohl noch mit den Experimentelle Features rumspielen oder oft auf andere Tools zurückgreifen.
Sonst fürs Reverse Engineering verwende ich verschiedenste Tools wie: einen nackten Hex-Editor (logischerweise), IDA (sehr empfehlenswerter und mächtiger Disassembler), Dependency Walker (der liest dir Zusammenhänge zwischen verschiedene ausführbare Windows Dateien z.B.: .exe<-->.dll) und einen API Monitor (der zeigt an wo ein laufendes Programm derzeit zugreift.) Letztere beiden sind vor allem in ausschließlich in Windows ausführbare Programme sehr nützlich.
Wenn man weiß wie solche Tools funktionieren und man damit etwas rumspielen kann ist schön und gut, aber ich persönlich habe die Erfahrung gemacht, dass es sehr sinnvoll sein kann sich erstmal in die x86 architecture einzulesen.

KhrisMUC

  • Mod
  • volljähriger Tentakel
  • **
  • Beiträge: 989
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #5 am: 01. Dezember 2019, 21:00:32 »
Cooles Projekt!
Ideal wäre es natürlich, wenn man aus dem kompilierten Spiel eine translation source rauslassen und die dann nach Übersetzung zur Sprachdatei kompilieren könnte. Die Starterpacks sind ja eh schon so aufgebaut, dass man das GUI damit gleich mitübersetzen kann.

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2371
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: AGSModder | Episode 3 in Englisch
« Antwort #6 am: 02. Dezember 2019, 20:45:25 »
Super Projekt, allerdings auch sehr arbeitsintensiv wie man sieht, Hut ab!  :D

rulaman

  • Mod
  • Teenie Tentakel
  • **
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #7 am: 05. Dezember 2019, 18:36:58 »
Hi zusammen,
ich habe die letzten Tage den Thread mit Interesse verfolgt.

Da bereits jemand Code veröffentlich hat, um Resourcen zu extrahieren, habe ich das vor einiger Zeit in C# umgeschrieben.
Dort ist Code, um auch die Strings zu extrahieren.

Ich habe daher ein Tool geschrieben, das dies macht. Es erzeugt eine trs-Datei die mit dem zweiten Tool kompiliert werden kann.
Es gibt bei ein paar der Spiele (welche mit dem MMMLauncher herunter geladen werden können. Die muss ich mir noch anschauen. Und die SpielID bei Money Mansion ist auch 0.


Anleitung:

csharp-agstools.exe starten.
Die Exe-Datei in die Source file Text-Box ziehen.
Den Ausgabe-Pfad in die Destination Text-Box ziehen.
Auf "Extract now" klicken.

Die extrahierte trs-Datei übersetze. (z.B. mit agslinguist) [Hier im Forum zu finden.]

agslrelease.ese starten
Die trs-Datei mit der Übersetzung in die Text-Box ziehen und auf Compile drücken.

Über winsetup.exe die übersetzte Datei einstellen und Testen.

Am Besten ist es, wenn man zuerst das GUI übersetzt und mit der Teilübersetzten Datei testet.

https://www.file-upload.net/download-13811018/agstools-pre.zip.html

Ich hoffe, es hilft dir weiter.


Grüße
Rulaman

PS: Bereits übersetzte tra-Dateien lassen sich auch decompilieren. Das beherrscht agslrelease auch schon. Allerdings nur über die Kommandozeile. (mit -help aufrufen um die Hilfe zu erhalten.)
Dort stehen allerdings nur bereits übersetzte Texte. Wenn also die tra-Datei unvollständig ist, ist es auch die neue. Allerdings kann man die trs-Datei um die nicht übersetzen Texte, wenn man sie im Spiel sieht und exakt abschreibt ergänzen.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

DanVzare

  • Tentakelschleim
  • *
  • Beiträge: 1
    • Profil anzeigen
    • E-Mail
Re: AGSModder | Episode 3 in Englisch
« Antwort #8 am: 05. Dezember 2019, 20:09:25 »
Sorry for using English in what is otherwise a German forum. But I don't know German, and I'm highly interested in seeing the old episodes translated.

When I saw this thread, and that it was recent, I had to point you guys to this: https://vk.com/topic-17976818_29383366
It's a Russian forum thread (I think) full of tools to decompile and recompile AGS games. Most notably, how to translate them.

The tool rulaman linked to, doesn't extract all of the text.
But this does: https://vk.com/doc294914230_441965788?hash=925a6ae7b3ad517884&dl=9aecfdb208653aec4a
It also comes with everything needed to compile it into a TRA file.
Unfortunately, it doesn't extract all of the characters. It misses a lot of the hyphenated characters.

It would be nice if there was a tool that reinserts those characters, perhaps by looking through each word to see if it's potentially missing a hyphenated character. But that would probably be more complicated than it sounds.

Kinkilla

  • volljähriger Tentakel
  • *****
  • Beiträge: 845
  • Geschlecht: Männlich
  • Nicht zu verwechseln mit einem Chinchilla!
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #9 am: 05. Dezember 2019, 21:45:00 »
Because of the interest of non-german speaking members I will write in English now.

So that's a lot of tools you both provided me.
rulaman: At the first look this tool looks very promising. I can create and compile a translation file, this makes my work for my tool a lot of easier.
However I briefly tested it by changing the string give%s to give %s and the game, it didn't crash, but the strings shown are empty and the game freezes.
I think it can produce a .tra, what is already amazing, but with the limitation that it can't extend a string. So we need to figure out how the AGS Compiler writes the different string lengh inside the .tra.

Thank you very much for sharing DanVzare!
I already looked for a tool like this and didn't find anything. Well I guess because I didn't dig deep enough to find a russion forum with a tool. ;D
I have to admit that I haven't tried this tool completely yet. Tomorrow I will check this tool(s) further.
But from what I've seen now, it looks quite impressive. I love the fact that you can recreate a semi-complete source file for the ags editor. Well some sprites are missing and there's not a global script anymore, but for my research/development for a sprite extracting and manipulating feature it helps a lot.

With the existence of tools like that I feel more confident, that a tool like that is practicable.

Rayman

  • Dott-MMM-Entwickler
  • Midlife Crisis Tentakel
  • **
  • Beiträge: 1580
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #10 am: 06. Dezember 2019, 08:33:42 »
Danke für den Thread!
Damals hatte ich mal versucht die russische Übersetzung von Episode 1 in die original Episode zu integrieren, leider ohne Erfolg.

Ich findem es schade, dass die meisten Autoren nicht mehr aktiv sind, sonst hätten sie ihre Source-Daten freigegeben.

rulaman

  • Mod
  • Teenie Tentakel
  • **
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #11 am: 09. Dezember 2019, 19:06:02 »
Hi kinkilla,

The test with the Give %s string is curious. I mean the misfunction.
Which game did you test?
I didn't have any problem with this test. I did the same, because the gui is always on.

Greetings
Rulaman
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

rulaman

  • Mod
  • Teenie Tentakel
  • **
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #12 am: 14. Dezember 2019, 14:56:28 »
I found the problem (the missing strings) and work on a fix.
Please be patient.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

rulaman

  • Mod
  • Teenie Tentakel
  • **
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #13 am: 21. Dezember 2019, 11:15:04 »
So, I hope I found all pieces.

Tested with Epi 4

https://www.file-upload.net/download-13828204/agstools-pre2.zip.html

Have a nive day and happy holidays.

Rulaman

PS: The problem that some episodes having problems is still open.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

Rayman

  • Dott-MMM-Entwickler
  • Midlife Crisis Tentakel
  • **
  • Beiträge: 1580
    • Profil anzeigen
Re: AGSModder | Episode 3 in Englisch
« Antwort #14 am: 14. Juni 2020, 21:19:36 »
Habt ihr mal was von AGSUtils gehört?
Link hier: https://github.com/rofl0r/agsutils

Glaubt ihr, dass man damit auch alte Episoden bearbeiten könnte?