Unterstützte Engine · YU-RIS
YU-RIS (von raiL-soft) ist eine langlaufende Windows-Skripting-Engine hinter Hunderten von Doujin- und kommerziellen japanischen Visual Novels. Ihre Ressourcen liegen in .ypf-Paketarchiven, und das Szenario ist in YSTB-Skripte kompiliert (die .ybn-Dateien in ysbin.ypf, an internen Pfaden wie ysbin/yst00000.ybn). RuneTranslate liest die .ypf-Pakete in reinem TypeScript — kein GARbro oder externe Tools — dekomprimiert Einträge und stellt den Dateinamen-Schlüssel jedes Archivs wieder her, und parst dann die kompilierten YSTB-Skripte: Es teilt die vier Abschnitte (Instruktionen, Argument-Deskriptoren, String-Werte, Zeilennummern) und stellt den 4-Byte-XOR-Schlüssel des Skripts automatisch aus der Deskriptor-Tabelle wieder her, sodass sich verschlüsselte Skripte ohne Schlüsselsuche öffnen. Von dort zieht es die japanischen Dialoge aus der String-Tabelle und listet jede Zeile im Editor auf, während es die Befehls-Operanden, Variablennamen und Asset-Pfade der Engine standardmäßig ausgeschlossen lässt, sodass du nie etwas übersetzt, gegen das die Skript-Logik vergleicht. Beim Export baut es die String-Tabelle neu auf — patcht jeden Offset, sodass längere oder kürzere Übersetzungen passen — wendet denselben XOR-Schlüssel erneut an und schreibt die übersetzte .ybn lose an ihren Archiv-Pfad. Weil die YU-RIS-Laufzeit eine lose Datei auf der Festplatte demselben Pfad in einer .ypf vorzieht, lädt das Spiel einfach deine Übersetzung — es gibt kein Neu-Packen. Diese Engine wird noch an echten Spielen geprüft, teste also den exportierten Build, bevor du weiterverteilst.
Visual Novels stützen sich auf eine feste Besetzung und wiederkehrende Terminologie über Tausende von Zeilen, und maschinelle Übersetzung wird den Namen einer Heldin über drei Kapitel hinweg auf drei verschiedene Arten schreiben. Trage deine Charaktere, Ortsnamen und wiederkehrenden Begriffe vorab ins Glossar ein, damit jede Dialogzeile sie identisch rendert. Glossar-Grundlagen →
Wähle in RuneTranslate das Spielverzeichnis — den Ordner mit der yu-ris.exe des Spiels und seinen .ypf-Paketen (meist in einem pac/-Unterordner, mit den Skripten in ysbin.ypf). Wenn du das Spiel bereits mit GARbro entpackt hast, wird auch ein loser ysbin/-Ordner mit .ybn-Skripten erkannt. Die Engine-Erkennung erkennt das YU-RIS-Layout automatisch; dein Originalordner wird nie verändert.
RuneTranslate öffnet die .ypf-Pakete in reinem TypeScript, dekomprimiert die Einträge und parst die kompilierten YSTB-Skripte darin. Es stellt den 4-Byte-XOR-Schlüssel jedes Skripts automatisch aus der Argument-Deskriptor-Tabelle wieder her — keine Schlüsselsuche — dekodiert die Shift-JIS-String-Tabelle und listet jede japanische Zeile im Editor auf, gruppiert nach Skriptdatei. Engine-Befehls-Operanden, Variablennamen und Asset-Pfade werden angezeigt, aber standardmäßig ausgeschlossen, sodass die Story-Logik intakt bleibt.
Diese Spiele sind dialoglastig und tonempfindlich, daher liest sich ein LLM (OpenAI GPT-4o / Anthropic Claude) oder DeepL meist am besten; das kostenlose Google Translate oder ein lokales Modell (Ollama / LM Studio) deckt kurze Menü-Strings und Auswahlmenüs ab, und du kannst den OpenAI-kompatiblen Anbieter auf OpenRouter oder NanoGPT richten. Ein optionaler zweiter KI-Refiner-Durchlauf strafft die wörtliche Formulierung.
YU-RIS-Nachrichtentext fädelt Backslash-Steuercodes (Zeilenumbruch, Farbe, Ruby) und geklammerte Tags durch die Dialoge. RuneTranslate friert jeden einzelnen davon als numerischen Platzhalter während der Übersetzung ein und stellt sie beim Herausschreiben wieder her, sodass die übersetzte Zeile dieselbe Formatierung und dasselbe Timing wie das Original behält.
Beim Export kopiert RuneTranslate das Spiel und baut jedes übersetzte YSTB-Skript neu auf — patcht die String-Tabellen-Offsets, sodass eine Übersetzung beliebiger Länge passt, und wendet denselben XOR-Schlüssel erneut an — schreibt es dann lose an seinen originalen Archiv-Pfad (z. B. ysbin/yst00000.ybn). Die YU-RIS-Laufzeit zieht eine lose Datei demselben Pfad in einer .ypf vor, sodass das Spiel einfach deine Übersetzung ohne Neu-Packen liest. Starte die exportierte Kopie, und sie läuft in deiner Sprache.