Как перевести визуальные новеллы на YU-RIS на английский
RuneTranslate переводит визуальные новеллы YU-RIS (raiL-soft) на английский и 30+ языков — читая пакеты .ypf и скомпилированные скрипты YSTB на чистом TypeScript, восстанавливая XOR-ключ каждого скрипта и экспортируя переведённые скрипты россыпью. Best-effort.
RuneTranslate читает ещё один движок, который долго был стеной для фан-переводчиков: YU-RIS, Windows-скриптовый движок от raiL-soft, стоящий за сотнями додзин- и коммерческих японских визуальных новелл. Если вы когда-нибудь открывали папку игры YU-RIS, находили каталог pac/, полный архивов .ypf, и ysbin.ypf, внутри которого ничего не читается, и сдавались — это тот самый движок. RuneTranslate определяет его, открывает эти пакеты на чистом TypeScript, читает диалоги из скомпилированных скриптов и экспортирует переведённую копию, которую игра загружает сама.
Сначала честная часть: поддержка YU-RIS свеженабрана и ещё не проверена на многих реальных играх. Поэтому если вы указываете RuneTranslate на игру YU-RIS, а он не определяет, не открывает или экспортирует то, что игра не загружает, пожалуйста, скажите нам — подробнее в конце.
Что такое движок YU-RIS на самом деле
YU-RIS (иногда пишется ゆーりす) — японский скриптовый движок визуальных новелл от raiL-soft. Готовая игра — это Windows-.exe плюс набор пакетных архивов .ypf — обычно в папке pac/ — хранящих арт, звук и скрипты. Сценарий скомпилирован в бинарный формат под названием YSTB, хранящийся как файлы .ybn внутри ysbin.ypf (по внутренним путям вроде ysbin/yst00000.ybn). Именно эта комбинация «скомпилированный сценарий внутри упакованного архива» держала большой бэк-каталог движка вне досягаемости для обычных инструментов машинного перевода.
Почему игры YU-RIS было так трудно переводить
По сравнению с движком на исходниках вроде Ren’Py, YU-RIS прячет свой текст за несколькими слоями:
- Всё живёт внутри пакетов `.ypf`. Скрипты не россыпью — они упакованы в собственный контейнер YU-RIS с обфусцированными именами файлов и записями, сжатыми zlib. Без ридера для этого формата редактировать нечего.
- Сценарий скомпилирован, а не текст.
.ybn— это бинарный контейнерYSTB, разбитый на четыре секции (поток инструкций, таблица дескрипторов аргументов, таблица строк, номера строк). Японский живёт в таблице строк, на которую ссылаются дескрипторы. - Скрипты зашифрованы XOR. Четыре секции каждого
YSTBзаскремблированы 4-байтовым ключом, который варьируется от игры к игре. Его нужно восстановить, прежде чем любой текст станет читаемым. - Не каждая строка — диалог. Таблица строк также хранит имена переменных, пути к ресурсам и операнды выражений, с которыми скрипт сравнивает — переведи один, и логика тихо ломается.
Итог: даже свободно читающий должен распаковать проприетарный архив, разобрать скомпилированный бинарник, восстановить ключ XOR, затем отличить диалог от внутренних строк движка — прежде чем будет переведена хоть одна строка. Это та работа, что RuneTranslate делает за вас.
Что RuneTranslate делает сейчас
RuneTranslate обрабатывает весь конвейер на чистом TypeScript — никаких внешних инструментов, никакого Python-сайдкара, ничего устанавливать не надо:
- Читает пакеты `.ypf` напрямую. Он открывает архивы внутри себя, распаковывает записи и восстанавливает обфусцированные имена файлов — без GARbro. Уже распаковали игру сами? Россыпная папка
ysbin/со скриптами.ybnтоже определяется. - Парсит скомпилированные скрипты `YSTB` и взламывает шифрование. Он восстанавливает 4-байтовый XOR-ключ каждого скрипта автоматически из таблицы дескрипторов аргументов, декодирует таблицу строк Shift-JIS и перечисляет каждую японскую строку, сгруппированную по файлу скрипта.
- Отличает диалог от механики. Имена переменных, пути к ресурсам и операнды выражений выводятся, но исключены по умолчанию как красные строки для опционального включения, поэтому вы никогда не переведёте строку, с которой сравнивает логика сюжета.
- Сохраняет инлайн-управляющие коды. Обратно-слэшевые коды (перевод строки, цвет, руби) и теги в скобках маскируются за числовыми плейсхолдерами, прежде чем провайдер их увидит, затем восстанавливаются точно.
- Экспортирует без переупаковки. Он пересобирает каждый переведённый скрипт — патча смещения таблицы строк, чтобы более длинный или короткий перевод поместился, и заново применяя XOR-ключ — затем записывает
.ybnроссыпью по его оригинальному пути в архиве. YU-RIS предпочитает россыпной файл упакованной копии, поэтому игра просто читает ваш перевод — то же россыпное переопределение файлов, что в наших потоках Kirikiri и Artemis.
Японский → английский — золотая середина, но вы можете нацелиться на 30+ языков.
Что вам нужно
- RuneTranslate для Windows — бесплатно; каждый движок и провайдер разблокирован (бесплатный тариф ограничен по скорости, не по функциям).
- Папка игры YU-RIS — каталог с
yu-ris.exeигры и её пакетами.ypf(обычно вpac/, со скриптами вysbin.ypf). - Целевой язык — английский, испанский, французский, немецкий, китайский и 30+ других.
- Один провайдер. Бесплатный Google Translate работает из коробки; у DeepL есть бесплатный тариф; OpenAI, Anthropic, локальная модель и любой OpenAI-совместимый API — со своим ключом. Игры YU-RIS насыщены диалогами, поэтому LLM или DeepL читаются лучше всего.
Шаг 1: Откройте папку игры
Запустите RuneTranslate, нажмите New project и укажите его на каталог игры YU-RIS. Определение запускается автоматически — когда оно видит пакет .ypf (или россыпную папку ysbin/ со скриптами .ybn), оно распознаёт проект как YU-RIS. Ваша оригинальная папка игры никогда не изменяется.
Шаг 2: Как читаются скрипты
RuneTranslate открывает пакеты .ypf, вытаскивает скомпилированные скрипты YSTB из ysbin.ypf, восстанавливает XOR-ключ каждого скрипта и декодирует таблицу строк Shift-JIS — перечисляя каждую японскую строку в редакторе, сгруппированную по файлу. Внутренние строки движка (имена переменных, пути к ресурсам, операнды выражений) показываются, но исключены по умолчанию, а инлайн-управляющие коды маскируются за числовыми плейсхолдерами, чтобы провайдер их никогда не искажал.
Шаг 3: Переведите
Выберите провайдера и запустите. LLM (OpenAI / Anthropic) лучше всего для голоса персонажа и тона, DeepL быстр и чист для повествования, а бесплатный Google Translate годится для коротких строк меню и вариантов выбора. Внесите ваш состав в глоссарий заранее, чтобы имена отображались одинаково — см. Глоссарий 101. Когда закончите, необязательный проход AI-доработчика перечитывает каждую строку в контексте и подтягивает жёсткие, буквальные формулировки, которые MT склонен оставлять.
Шаг 4: Экспортируйте готовую к запуску копию
Нажмите Export. RuneTranslate записывает переведённую копию игры с каждым пересобранным .ybn, положенным россыпью по его оригинальному пути в архиве, наряду с нетронутыми пакетами .ypf. Переупаковки нет — YU-RIS загружает россыпные скрипты в предпочтение к упакованным оригиналам, поэтому игра просто читает ваши переводы. Запустите её — и она играется на вашем целевом языке.
Известные ограничения
- Строки YU-RIS — это Shift-JIS (cp932). Английский и другие цели, представимые в cp932, экспортируются чисто. Цели вне cp932 — расширенная кириллица, корейский, традиционный китайский — требуют хака шрифта/кодировки игры, который пока не автоматизирован.
- Россыпное переопределение файлов — ожидаемый путь загрузки и работает на большинстве игр YU-RIS, потому что движок предпочитает россыпной скрипт упакованной копии. На редком тайтле, который этого не соблюдает, экспорт может потребовать корректировки — ровно то поведение на реальных играх, что мы всё ещё подтверждаем.
- Текст, запечённый в графический арт — заставка или кнопка меню, нарисованные как растр — это пиксели, а не скриптовый текст. Для этого см. перевод текста на изображениях.
- Точный вариант архива и скрипта может отличаться между релизами. Всегда проверяйте на вашей конкретной копии.
Это совсем новое — расскажите нам, что ломается
Стоит повторить: поддержка YU-RIS — свежее дополнение и ещё не протестирована на многих реальных играх. Ридер .ypf, парсер YSTB и восстановление ключа построены и покрыты юнит-тестами, но у движка годы вариаций от студии к студии, которые мы не все видели. Поэтому если вы указываете RuneTranslate на игру YU-RIS, а он не определяет, не открывает архивы, ничего не извлекает или экспортирует то, что игра не загружает, пожалуйста, сообщите об этом в наш Discord — название игры и то, как она упакована, помогают нам укрепить это быстрее всего.
Скачайте RuneTranslate, укажите его на ту ВН на YU-RIS, которую вы хотели прочитать, и попробуйте. Про другой архивный движок ВН читайте дальше разбор Artemis.
Готовы попробовать RuneTranslate?
Бесплатный тариф открывает все движки и всех провайдеров перевода. Supporter ($3/mo) открывает полную скорость.
Скачать для Windows
