RuneTranslate теперь переводит визуальные новеллы на движке Artemis
RuneTranslate теперь переводит визуальные новеллы на Artemis Engine — движке на основе Lua от iMel/Mikage, на котором построено около 730 релизов на VNDB — на английский и более чем 30 языков. Он читает архивы .pfs движка на чистом TypeScript, включая XOR-шифрование PF8 с ключом на основе SHA-1, извлекает диалоги, имена персонажей и варианты выбора из скриптов .ast (таблицы Lua) и .txt, сохраняет инлайновые команды ruby/таблички имени/цвета и экспортирует переведённые скрипты россыпью, чтобы игра загружала их без переупаковки. Добавлено недавно и пока не проверено на многих реальных играх — сообщайте о любой игре, которая не открывается.
RuneTranslate теперь читает движок, который до сих пор оставался почти неприступным для фанатов-переводчиков: Artemis Engine, фреймворк визуальных новелл на основе Lua, на котором построены сотни японских релизов. Если вы когда-нибудь открывали папку игры на Artemis, находили кучу архивов .pfs и ничего читаемого, а потом сдавались — это тот самый движок. Теперь RuneTranslate распознаёт его, открывает эти архивы на чистом TypeScript (вместе с шифрованием), читает диалоги, имена персонажей и варианты выбора из его скриптов и экспортирует переведённую копию, которую игра загружает сама. Это новейший движок, который поддерживает RuneTranslate.
Это совершенно новый движок, и начнём с честного: поддержка Artemis только что создана и ещё не проверена на многих реальных играх. Поэтому прежде всего — если вы укажете RuneTranslate на игру Artemis, а он её не распознает, не откроет или экспортирует то, что игра не загружает, пожалуйста, сообщите нам. Подробнее о том, как это сделать, — в конце.
Что такое Artemis Engine на самом деле
Artemis — это коммерческий японский движок визуальных новелл, разработанный iMel Inc. (студия, также известная по Mikage). Там, где более старые движки вроде Kirikiri или NScripter используют собственный предметно-ориентированный язык сценариев, Artemis построен вокруг Lua — его сценарные скрипты по сути представляют собой таблицы данных Lua, — что делает его гибким для разработчиков, но на практике становится стеной для любого, кто пытается перевести готовую игру извне. На нём построено около 730 релизов на VNDB, так что это далеко не нишевый курьёз; это целый бэк-каталог, который инструменты машинного перевода исторически обходили стороной.
На диске игра на Artemis — это .exe для Windows плюс один или несколько ресурсных архивов .pfs, в которых хранятся скрипты, графика и звук. Скрипты внутри — в основном файлы .ast (сценарные скрипты в виде таблиц Lua) и файлы .txt (более простой построчный формат). RuneTranslate работает напрямую с этими архивами и скриптами, поэтому он охватывает игру независимо от того, поставила ли студия сценарии в виде .ast или .txt.
Почему игры на Artemis так трудно переводить
По сравнению с движком, работающим от исходников, вроде Ren'Py, Artemis прячет свой текст за несколькими слоями. Несколько конкретных из них держали его вне досягаемости как для ручных переводчиков, так и для наивных инструментов:
- Всё лежит внутри архивов `.pfs`. Скрипты не разбросаны по диску — они упакованы в собственный контейнерный формат Artemis
.pfs(вы увидите вариантыPF8,PF6и устаревшийPF2). Без читателя для этого формата попросту нечего редактировать. - Новейшие архивы зашифрованы. Текущий формат
PF8не просто упаковывает файлы, он шифрует их содержимое: каждая запись подвергается XOR с ключом, выведенным из хешаSHA-1собственного индекса архива. Нельзя просто вырезать байты — нужно воспроизвести вывод ключа движка, чтобы получить читаемый скрипт обратно. - Скрипты — это данные Lua, а не простой текст. Сценарий
.ast— это таблица Lua: диалоги, имена говорящих и варианты выбора представляют собой вложенные поля внутри структурированных таблиц, перемешанные с командами движка. В природе встречаются две раскладки таблиц (более старая v1 и более новая v2), и переводчику нужно понимать обе, чтобы вытащить собственно произносимые реплики, не искалечив окружающую их структуру. - Инлайновые команды движка вплетены в диалог. Аннотации ruby/фуригана, таблички имени, смены цвета и ожидания клика записываются инлайн вместе с текстом. Поиск-и-замена, который их не распознаёт, переведёт и токены команд, и игра сломается.
Итог: даже переводчику, свободно читающему по-японски, сначала приходится распаковать проприетарный зашифрованный контейнер, затем вручную разобрать таблицы Lua, затем аккуратно обойти инлайновую разметку — и всё это до того, как будет переведена хоть одна строка. Именно эту работу RuneTranslate теперь делает за вас.
Что RuneTranslate делает теперь
RuneTranslate относится к Artemis как к полноценному движку и обрабатывает весь конвейер на чистом TypeScript — никаких внешних инструментов, никакого Python-сайдкара, ничего устанавливать не нужно:
- Читает архивы `.pfs` напрямую. Он открывает форматы архивов
PF8,PF6и устаревшийPF2собственными средствами, включая XOR-шифрование PF8 с ключом на основе `SHA-1` — воспроизводя вывод ключа движка, чтобы содержимое скрипта выходило читаемым. - Извлекает диалоги, имена и варианты выбора. Он разбирает читаемые сценарные скрипты
.ast(таблицы Lua) — как более старую раскладку v1, так и более новую v2 — скрипты.txt(построчные), А ТАКЖЕ скомпилированные бинарные сценарии `ASB`, которые на деле поставляют многие игры (определяются по сигнатуре, даже когда переименованы в произвольное расширение вроде.iet), и перечисляет в редакторе каждую переводимую строку: произносимый диалог, имена персонажей на табличках имени и ветвящиеся варианты выбора. - Сохраняет команды движка. Инлайновая разметка — ruby/фуригана, таблички имени, цвет, ожидания клика — и переносы строк маскируются числовыми плейсхолдерами, прежде чем что-либо попадёт к провайдеру перевода, а затем в точности восстанавливаются на выходе. Текст переводится; инструкции движка — нет.
- Экспортирует без переупаковки. Artemis предпочитает скрипт россыпью на диске тому же файлу, упакованному внутри
.pfs, поэтому при экспорте RuneTranslate записывает переведённые скрипты.ast/.txtроссыпью, по их исходным путям в архиве, рядом с игрой. Никакой переупаковки нет — игра просто читает ваши переводы вместо упакованных оригиналов. (Это тот же подход с переопределением через отдельные файлы, что и в нашем процессе патча Kirikiri.)
Японский → английский — оптимальный вариант, но вы можете нацелиться на любой из более чем 30 языков — испанский, французский, немецкий, португальский, русский, китайский, итальянский, турецкий, вьетнамский и другие.
Что вам понадобится
- RuneTranslate для Windows — бесплатно; все движки и провайдеры разблокированы (бесплатный уровень ограничен по скорости, а не по функциям).
- Папка игры Artemis. Это каталог, содержащий
.exeигры и её архивы.pfs(скрипты и ресурсы упакованы внутри них). - Целевой язык — английский, испанский, французский, немецкий, португальский, русский, китайский, итальянский, турецкий, вьетнамский и ещё более 20.
- Один провайдер перевода. Бесплатный Google Translate работает из коробки; у DeepL есть бесплатный уровень; OpenAI, Anthropic, локальная модель (Ollama / LM Studio) и любой OpenAI-совместимый API — со своим ключом. Игры на Artemis насыщены диалогами и чувствительны к тону, поэтому LLM (OpenAI / Anthropic) или DeepL обычно читаются лучше всего.
Шаг 1: откройте папку игры
Запустите RuneTranslate, нажмите Новый проект и укажите на каталог игры Artemis. Определение движка выполняется автоматически — увидев архивы .pfs движка, он распознаёт проект как Artemis. Ваша исходная папка игры никогда не изменяется.
Шаг 2: как читаются скрипты
RuneTranslate открывает архивы .pfs и извлекает из них скрипты за вас, попутно расшифровывая и разбирая:
- Зашифрованные архивы `PF8` — расшифровываются собственными средствами по схеме XOR с ключом на основе
SHA-1, так что вам никогда не приходится запускать отдельный распаковщик. - Незашифрованные `PF6` / устаревшие `PF2` архивы — читаются напрямую.
- Скрипты `.ast` и `.txt` — разбираются на диалоги, имена и варианты выбора и перечисляются в редакторе с группировкой по файлам.
Инлайновые команды движка и переносы строк маскируются числовыми плейсхолдерами, прежде чем что-либо попадёт к провайдеру, а затем восстанавливаются на выходе — так что аннотации ruby, таблички имени и теги цвета переживают весь путь туда и обратно нетронутыми.
Шаг 3: переведите
Выберите провайдера и запустите. Для визуальной новеллы LLM (OpenAI / Anthropic) лучше всего передаёт голос и тон персонажей, DeepL быстр и аккуратен в повествовании, а бесплатный Google Translate годится для коротких строк меню и вариантов выбора. Заранее составьте глоссарий состава персонажей и повторяющихся терминов, чтобы имена отображались одинаково во всей игре — см. Глоссарий 101. Когда закончите, необязательный проход с ИИ-редактором заново перечитывает каждую строку в контексте и подтягивает скованные, буквальные формулировки, которые машинный перевод обычно оставляет после себя.
Шаг 4: экспортируйте готовую к запуску копию
Нажмите Экспорт. RuneTranslate записывает переведённую копию игры с переведёнными скриптами .ast / .txt, размещёнными россыпью по их исходным путям, рядом с нетронутыми архивами .pfs. Никакой переупаковки — Artemis загружает отдельные скрипты в приоритете над упакованными оригиналами, так что игра просто читает ваши переводы. Запустите её — и она играется на вашем целевом языке.
Известные ограничения
- Скомпилированные сценарии `.asb` читаются — многие игры на Artemis поставляют сценарий в виде скомпилированного бинарного AST (форма, которая начинается с маркера
ASB) вместо читаемого.ast/.txt, и некоторые переименовывают расширение (в одной протестированной нами игре используется.iet). RuneTranslate определяет это по сигнатуре, а не по расширению, и переводит его на месте. Когда игра хранит имена говорящих в графике или в виде имён команд, а не как текст внутри скрипта, эти имена берутся из потока перевода текста на изображениях, а не из скрипта — если имя осталось на японском, обычно причина в этом. - Переопределение через отдельные файлы — ожидаемый путь загрузки, и на большинстве игр Artemis оно работает, потому что движок предпочитает отдельный скрипт упакованной копии. На редком тайтле, который этого не соблюдает, экспорт может потребовать доработки — это ровно тот тип поведения на реальных играх, который мы всё ещё подтверждаем.
- Текст, запечённый в графике — экран заставки или кнопка меню, нарисованные как растр, — это пиксели, а не текст скрипта, поэтому извлекатель скриптов до него не дотянется. Для этого см. перевод текста на изображениях.
- Точный вариант архива и скрипта может различаться от релиза к релизу. Всегда проверяйте на своей конкретной копии.
Это совсем новое — расскажите, что ломается
Стоит повторить прямо: поддержка Artemis — это свежее добавление, и она ещё не тестировалась на многих реальных играх. Читатель .pfs, шифрование и парсеры .ast / .txt построены и покрыты модульными тестами, но у движка годы вариаций от студии к студии, которые мы видели не все. Поэтому, если вы укажете RuneTranslate на игру Artemis, а он её не распознает, не откроет архивы, ничего не извлечёт или экспортирует то, что игра не загружает, пожалуйста, сообщите об этом в нашем Discord — название игры и то, как она упакована (какой вариант .pfs, .ast против .txt против .asb), — именно это помогает нам укрепить поддержку быстрее всего.
Скачайте RuneTranslate, укажите его на ту самую визуальную новеллу на Artemis, которую вы давно хотели прочитать, и попробуйте. Чтобы посмотреть, как мы справляемся с другим архивным движком VN, прочитайте далее руководство по Kirikiri.
Готовы попробовать RuneTranslate?
Бесплатный тариф открывает все движки и всех провайдеров перевода. Supporter ($3/mo) открывает полную скорость.
Скачать для Windows