Поддерживаемый движок · Unity
Большая доля современных японских инди- и додзин-игр — RPG, визуальных новелл и симуляторов — выходит на Unity. RuneTranslate переводит текст, который эти игры выносят наружу: полезные нагрузки TextAsset (JSON / CSV / TSV / текстовые блобы сценариев) и строковые поля MonoBehaviour, упакованные внутри .assets, файлов уровней и AssetBundles (включая игры с единственным бандлом data.unity3d), плюс россыпные файлы скриптов под StreamingAssets. Встроенная среда UnityPy читает и записывает бинарные ресурсы, всё в рабочем пространстве проекта, так что исходная игра остаётся нетронутой. Текст MonoBehaviour обрабатывается на сборках Mono и IL2CPP — на Mono деревья типов берутся из Managed/*.dll игры, а на IL2CPP RuneTranslate реконструирует их из GameAssembly.dll + global-metadata.dat (best-effort; нужны разбираемые метаданные). Он также расшифровывает Addressable-бандлы, зашифрованные AES-CTR, и внедряет не-латинский резервный шрифт для CJK и других письменностей. За рамками: строковые литералы, вкомпилированные в код игры (Assembly-CSharp.dll). Проверьте на реальной игре перед распространением.
Скрипты ВН/RPG на Unity обычно вынесены как таблицы JSON или CSV, поэтому имена персонажей и повторяющиеся термины появляются сотни раз в множестве TextAsset. Провайдеры будут перефразировать их непоследовательно от пакета к пакету. Внесите в глоссарий протагониста, группу, повторяющихся NPC, названия мест и любой характерный термин навыка или системы заранее, чтобы каждый файл TextAsset и StreamingAssets отображал их одинаково. Глоссарий: основы →
Укажите RuneTranslate на каталог игры (тот, что содержит папку <Name>_Data). Определение движка ищет globalgamemanagers / data.unity3d / resources.assets. Встроенная среда UnityPy используется автоматически — отдельная установка Python не нужна.
RuneTranslate сканирует сериализованные файлы на строки TextAsset и MonoBehaviour на исходном языке (по умолчанию японский; можно задать любой поддерживаемый исходный язык для проекта), плюс россыпные файлы скриптов под StreamingAssets. Структурированные полезные нагрузки (JSON / KAG / HTML) нарезаются на отдельные переводимые строки, так что структура файла проходит круговой обход нетронутой.
DeepL — сильный вариант по умолчанию для повествовательных диалогов; OpenAI GPT-4o или Anthropic Claude лучше справляются со стилизованной речью и звукоподражаниями. Бесплатный Google Translate или локальная модель (Ollama / LM Studio) покрывают строки меню и названия предметов. Маршрутизация провайдеров может отправлять короткие строки в дешёвую полосу.
При экспорте RuneTranslate копирует игру и записывает переведённые строки обратно в файлы ресурсов и скрипты StreamingAssets на месте. Переведённая сборка работает как оригинал — без ручной возни с ресурсами.