Поддерживаемый движок · Ren'Py
Ren'Py — доминирующий движок визуальных новелл на Python, используемый для всего от инди-кинетических новелл до долгоиграющих взрослых ВН. RuneTranslate переводит его в трёх режимах: проекты на исходниках (game/**/*.rpy), только-скомпилированные релизы (.rpyc, декомпилируются встроенным сайдкаром unrpyc) и только-упакованные релизы (.rpa, распаковываются встроенным сайдкаром rpatool с автоматическим определением ключа обфускации). Он извлекает строки say / narration / menu плюс строки интерфейса _() / __() / _p(). При экспорте диалоги и меню применяются во время выполнения: сгенерированный .rpy сопоставляет по содержимому каждую исходную строку (config.say_menu_text_filter) с картой game/rt_translations.json и принудительно задаёт язык игры вашим переводом — сознательно не через нативные блоки tl/ на основе id Ren'Py, чьи id не всегда удаётся воспроизвести. Только строки интерфейса _() записываются как настоящий блок game/tl/translated/translation.rpy. Для не-латинских целей RuneTranslate встраивает шрифт с поддержкой CJK / тайского / арабского и направляет шрифты игры через config.font_replacement_map, чтобы переведённый текст никогда не отображался квадратиками. Ничего не переупаковывается — дополнительные файлы .rpy и JSON ложатся в game/ рядом с оригиналом. Сочетайте с глоссарием тарифа Supporter, чтобы закрепить имена персонажей и характерные термины на протяжении длинных ВН.
ВН на Ren'Py живут и умирают по голосу персонажа — и героиня, которую называют 'Alice' / 'Aris' / 'Arisu' в трёх сценах, быстро разрушит погружение читателя. Закрепите каждое имя персонажа, варианты прозвища протагониста, названия мест и любую выдуманную терминологию мира с помощью глоссария. Маска не зависит от провайдера, поэтому на DeepL для бюджетного прогона или на Claude для насыщенных диалогами основных глав ваша терминология остаётся идентичной. Глоссарий: основы →
Укажите RuneTranslate на папку с исполняемым файлом игры. Определение движка автоматически классифицирует проект как на исходниках (.rpy присутствует), скомпилированный (только .rpyc) или упакованный (только .rpa). Встроенные сайдкары unrpyc и rpatool запускаются автоматически — установка Python не нужна.
Выберите целевой язык (один из 30+ поддерживаемых) и провайдера. Anthropic Claude и OpenAI GPT-4o сильнее всех на диалогах Ren'Py, потому что сохраняют тон, регистр и звукоподражания лучше статистического MT. DeepL — надёжный второй вариант для длинного описательного повествования.
RuneTranslate извлекает каждую переводимую строку (диалоги, текст выбора, подписи экранов, строки интерфейса) и группирует их в пакеты. Специфичные для Ren'Py теги ([[player_name]], {color=#fff}…{/color}, {b}…{/b}) маскируются при переводе, чтобы LLM трактовал их как непрозрачные плейсхолдеры, затем восстанавливаются дословно.
RuneTranslate кладёт несколько небольших файлов в game/: карту rt_translations.json и сгенерированный .rpy, который сопоставляет по содержимому каждую исходную строку во время выполнения (config.say_menu_text_filter) и принудительно задаёт язык вашим переводом, так что диалоги и меню отображаются переведёнными без переупаковки .rpa. Строки интерфейса _() уходят в game/tl/translated/translation.rpy, а шрифт CJK / не-латиница встраивается, когда цель этого требует. Повторный запуск переводчика сохраняет ваши отредактированные вручную строки.