Поддерживаемый движок · YU-RIS
YU-RIS (от raiL-soft) — давно существующий скриптовый движок для Windows, стоящий за сотнями додзинси- и коммерческих японских визуальных новелл. Его ресурсы живут в архивах-пакетах .ypf, а сценарий скомпилирован в скрипты YSTB (файлы .ybn внутри ysbin.ypf, по внутренним путям вроде ysbin/yst00000.ybn). RuneTranslate читает пакеты .ypf на чистом TypeScript — без GARbro или внешних инструментов — распаковывая записи и восстанавливая ключ имён файлов каждого архива, затем разбирает скомпилированные скрипты YSTB: он разделяет четыре секции (инструкции, дескрипторы аргументов, строковые значения, номера строк) и автоматически восстанавливает 4-байтовый XOR-ключ скрипта из таблицы дескрипторов, так что зашифрованные скрипты открываются без охоты за ключом. Оттуда он вытаскивает японские диалоги из строковой таблицы и перечисляет каждую строку в редакторе, оставляя командные операнды движка, имена переменных и пути к ассетам исключёнными по умолчанию, чтобы вы никогда не переводили то, с чем логика скрипта сравнивает. При экспорте он перестраивает строковую таблицу — исправляя каждое смещение, чтобы более длинные или короткие переводы помещались — заново применяет тот же XOR-ключ и записывает переведённый .ybn распакованным по его пути в архиве. Поскольку среда выполнения YU-RIS читает распакованный файл на диске предпочтительнее того же пути, упакованного в .ypf, игра просто загружает ваш перевод — переупаковки нет. Этот движок ещё проверяется на реальных играх, поэтому протестируйте экспортированную сборку перед распространением.
Визуальные новеллы опираются на фиксированный состав и повторяющуюся терминологию на тысячах строк, и машинный перевод напишет имя героини тремя разными способами в трёх главах. Занесите в глоссарий ваших персонажей, географические названия и повторяющиеся термины заранее, чтобы каждая реплика диалога отображала их идентично. Глоссарий: основы →
Укажите RuneTranslate каталог игры — папку с yu-ris.exe игры и её пакетами .ypf (обычно во вложенной папке pac/, со скриптами в ysbin.ypf). Если вы уже распаковали игру с помощью GARbro, распакованная папка ysbin/ со скриптами .ybn тоже обнаруживается. Определение движка автоматически распознаёт структуру YU-RIS; ваша оригинальная папка никогда не изменяется.
RuneTranslate открывает пакеты .ypf на чистом TypeScript, распаковывает записи и разбирает скомпилированные скрипты YSTB внутри. Он автоматически восстанавливает 4-байтовый XOR-ключ каждого скрипта из таблицы дескрипторов аргументов — без охоты за ключом — декодирует строковую таблицу Shift-JIS и перечисляет каждую японскую строку в редакторе, сгруппированную по файлам скриптов. Командные операнды движка, имена переменных и пути к ассетам показываются, но исключены по умолчанию, чтобы логика сюжета оставалась целой.
Эти игры насыщены диалогами и чувствительны к тону, поэтому LLM (OpenAI GPT-4o / Anthropic Claude) или DeepL обычно читаются лучше всего; бесплатный Google Translate или локальная модель (Ollama / LM Studio) покрывают короткие строки меню и выборы, а OpenAI-совместимого провайдера можно направить на OpenRouter или NanoGPT. Опциональный второй проход AI-редактора подтягивает буквальные формулировки.
Текст сообщений YU-RIS пронизывает диалоги обратными управляющими кодами (перенос строки, цвет, ruby) и тегами в скобках. RuneTranslate замораживает каждый из них как числовые заполнители во время перевода и восстанавливает их на выходе, так что переведённая строка сохраняет то же форматирование и ритм, что и оригинал.
При экспорте RuneTranslate копирует игру и перестраивает каждый переведённый скрипт YSTB — исправляя смещения строковой таблицы, чтобы перевод любой длины поместился, и заново применяя тот же XOR-ключ — затем записывает его распакованным по его оригинальному пути в архиве (например, ysbin/yst00000.ybn). Среда выполнения YU-RIS предпочитает распакованный файл тому же пути, упакованному в .ypf, так что игра просто читает ваш перевод без переупаковки. Запустите экспортированную копию, и она играется на вашем языке.