RPG Maker MV против MZ: что меняется для переводчиков
Оба движка используют почти одинаковую поверхность перевода, но параметры плагинов, управляющие коды и структура папки с данными в MZ отличаются. Практические заметки для переводчиков, переходящих между проектами MV и MZ.
С точки зрения переводчика RPG Maker MV и MZ — это на 90% один и тот же движок. Оба хранят диалоги, варианты выбора, предметы, навыки и термины в формате JSON. Оба используют одни и те же коды команд событий (401 — диалог, 102 — выбор, 320/324/325 — прокручиваемый текст). Оба поддерживают одни и те же управляющие коды (\C[1], \N[2], \V[3] и т. д.). Оставшиеся 10% — структура папок, формат параметров плагинов, горстка новых кодов событий — как раз и сбивают переводчиков с толку при переходе с одного на другой. Эта статья — краткий справочник.
Структура папок: самое заметное различие
- MV хранит файлы данных в
www/data/*.json. Рядом лежат игровые ресурсы, плагины и упакованная с Node среда выполнения. - MZ отказывается от обёртки
www/и хранит данные напрямую вdata/*.json. Среда выполнения тоже легче (по умолчанию без обёртки Node; MZ поставляется как статическое веб-приложение в стиле NW.js).
Для RuneTranslate это незаметно — определение движка проверяет оба пути и выбирает тот, что существует. Но если вы делаете что-то вручную — копируете перевод между играми, проверяете файл во внешнем редакторе — помните о префиксе.
Диалоги, варианты выбора, прокручиваемый текст: идентичны
Структура команд событий одинакова в обоих движках, а значит, и поверхность перевода идентична:
401— строка диалога в команде «Показать текст».405— строки продолжения той же команды «Показать текст» (когда текст занимает несколько окон отображения).102— текст варианта выбора.320,324,325— блоки прокручиваемого текста (используются для титров, сцен-монологов).
RuneTranslate разбирает все пять одинаково в MV и MZ. Различается только то, какой код обычно встречается: скрипты MZ чаще используют блок прокручиваемого текста в шаблонах по умолчанию, но это предпочтение автора, а не различие движков.
Перенос строк на 46 символах
И MV, и MZ переносят строки диалога по краю окна сообщения. Стандартное окно сообщения вмещает примерно 46 однобайтовых символов в строку при размере шрифта по умолчанию; более длинные строки переносятся в следующее видимое окно. RuneTranslate автоматически переносит диалоги на 46 символах при экспорте в обоих движках, чтобы переведённые строки не выходили за пределы окна реплики.
Оговорка: если в игре используется нестандартный шрифт — шире или уже, — перенос может потребовать корректировки. Пока что это глобальная константа в адаптере RPG Maker; если вы наткнётесь на игру, где это выглядит неправильно, обходной путь — вручную укоротить длинные строки в редакторе перед экспортом.
Строки параметров плагинов: где MZ расходится
Оба движка хранят конфигурацию плагинов в js/plugins.js (MV) или js/plugins.js (MZ — тот же путь, только без префикса www/). Структура формата одинакова: JS-файл, объявляющий блок PluginManager.parameters для каждого плагина. Оба движка хранят видимые строки прямо внутри этого блока.
Разница в том, какие плагины поставляются по умолчанию и как они объявляют свои параметры. Стандартные плагины MZ в стиле Yanfly чаще используют структурированные вложенные схемы параметров, что может порождать строки в кодировке JSON внутри другой строки в кодировке JSON. RuneTranslate справляется с обычной глубиной вложенности, но если плагин использует нестандартную кодировку (например, JSON, обёрнутый в Base64), строки этого плагина, возможно, придётся переводить вручную.
Практический совет: если вы видите в проекте строки вроде {"text":"こん..."} — это внутренний блок в кодировке JSON, который плагин разбирает во время выполнения. Японский текст никуда не делся, он просто обёрнут. Используйте поиск и замену в редакторе для выборочной проверки после перевода.
Управляющие коды: идентичны, никогда не давайте им потеряться
Оба движка поддерживают одно и то же семейство управляющих кодов:
\C[n]— меняет цвет текста на индексnиз палитры.\N[n]— выводит имя актёраn.\V[n]— выводит значение игровой переменнойn.\.,\|,\^— модификаторы паузы / ожидания.
Они обязаны пережить перевод дословно. Если провайдер отбросит или испортит \N[1], игра выведет мусор из обратных слешей вместо имени игрока. RuneTranslate маскирует каждый управляющий код непрозрачным плейсхолдером перед отправкой провайдеру, а затем точно восстанавливает их — и если какой-то плейсхолдер не удаётся восстановить, единица помечается как неудачная, чтобы остался исходный японский.
Практические советы по рабочему процессу
- Не редактируйте файлы JSON вручную. Для ручных правок используйте встроенный редактор RuneTranslate. Редактор отслеживает, какие единицы вы отредактировали, поэтому повторный запуск переводчика сохраняет вашу работу.
- Переводите параметры плагинов в последнюю очередь. Большинство строк плагинов — это текст конфигурации или интерфейса, который не требует значительной ручной правки. Сначала прогоните диалоги, вручную исправьте нужные строки, а затем обработайте плагины отдельным проходом с дешёвым провайдером.
- Сохраняйте сейвы между повторными переводами. Проигрыватели движка загружают сейвы по индексу строки данных, а не по строке текста. Пока вы не меняете порядок событий, игроки могут сохранять свои файлы сохранений после повторного перевода на английский.
Полное руководство по RPG Maker см. на странице движка RPG Maker. Чтобы сравнить провайдеров перевода для игр на RPG Maker, см. Лучшие провайдеры для перевода японских игр.
Готовы попробовать RuneTranslate?
Бесплатный тариф открывает все движки и всех провайдеров перевода. Supporter ($3/mo) открывает полную скорость.
Скачать для Windows