Перевод и Kirikiri. Часть 1.

В последние годы было выпущено достаточно много японских новелл на движке Kirikiri. Некоторые из них были переведены, поскольку движок достаточно неплохо относится к попыткам локализации.

А вот статей о том, как сделать перевод новеллы на этом движке я почти не встречал, потому мы со Chtobi пораскинули мозгами и решили написать этот маленький гайд.

Статьи будут касаться только той части движка, которая подлежит переводу. Полный разбор по косточкам я делать не собираюсь. Кроме того, сведения ниже актуальны только для старых версий движка(об этом потом), с новыми может быть все иначе.

Немного о движке.

Игра на движке Kirikiri обычно хранит почти все интересующие нас данные в архивах .xp3 . В разных играх названия архивов могут быть разными, но иногда они совпадают с написанными ниже:

bg.xp – фоновые изображения.

char.xp3 – специально закодированные изображения спрайтов персонажей.

data.xp3 – изображения меню, файлы разметки, изображения игровых событий, настройки…

scenario.xp3 – файлы сценария.

sound.xp3 – звуки спецэффектов.

video.xp3 – видеофайлы, заставки.

voice.xp3 – озвучка персонажей.

Желательно проверить каждый архив, но как правило, требующие перевода файлы находятся в scenario.xp3, data.xp3 и bg.xp3 .

Что внутри?

Внутри архивов могут быть следующие файлы:

.bmp – фоны, изображения игровых событий, надписи в меню… (Движок поддерживает только несжатые bmp)

.jpg – фоновые изображения, иногда и остальная графика.

.png – спрайты героев, элементы оформления, надписи в меню… (Есть поддержка прозрачности и альфа-канала)

.tlg – формат изображений Kirikiri, может быть преобразован в png.

.mpg , .mpeg , .wmv – видеофайлы.

.ogg , .wav – озвучка, музыка.

.tjs – текстовые файлы TJS скриптов, которыми определяется работа движка.

.ks – непосредственно файлы сценария.

.csv – текстовые файлы, со значениями, разделенными запятыми. Могут содержать текст пунктов меню и других надписей.

Под перевод в первую очередь попадают .ks и .tjs файлы, на них стоит остановиться по подробнее.

Сценарий.

По-умолчанию, .ks файлы сценария закодированы в кодировке Shift-JIS. Но движок также понимает и кодировку UCS-2LE (UTF-16LE).

Помимо непосредственно текста, выводимого на экран, в файле сценария есть служебные команды(макросы).

На 100% команды из одной игры не соответствуют командам из другой, но они выполняют приблизительно те же функции.

Символы |* обозначают, что при сохранении, игра начнется с этого места. Это своеобразный savepoint. Их расположение лучше не менять.

Символы [r] – начало новой строки.

Символы [l] – ожидание клика пользователя.

Символы [p2] – ожидание клика пользователя, а затем очистка экрана с текстом.

; — точка с запятой. Комментарий. Строка, в начале которой стоит точка с запятой, движком не обрабатывается.

Вместе с основным текстом переводу подлежат еще и имена героев, которые часто выводятся в рамках над основной панелью. Вариантов может быть много, имена могут обозначаться как:

[stName]Робогорничная[endName]

или

[setname name=Казуки]

или

@name chara="Почтальон Печкин"

По смыслу можно легко догадаться, какой макрос отвечает за вывод имен. Более подробно макросы, используемые игрой, описаны в файле macro.ks .

Если новелла не кинетическая и предполагает выбор вариантов, в тексте будет что-то вроде таких строк:

@select target1="*s002b" text1="Впустить Печкина" target2=«*s002c» text2="Прогнать Печкина"

Разветвление обозначено метками *s002b и *s002c далее в тексте. Если ветки имеют общее продолжение, скорее всего в конце будет стоять:

@jump target="*s002d"

То есть команда автоматического перехода на метку *s002d.

В конце файла сценария может находиться строчка:

@jump storage=«title.ks»

или

[jump storage=scene08.ks target=*090]

То есть переход к указанному в кавычках файлу и(во втором случае) к указанной метке в этом файле.

Файлы настройки.

От файлов .ks отличаются синтаксисом. Помимо прочего, строки с комментариями отмечаются двойным слэшэм (//), а не точкой с запятой. Мы еще вернемся к ним при подробном разборе.

Теперь давайте попробуем перевести что-нибудь.

Начинаем перевод.

Итак, приступим. Вдоволь налюбовавшись на героев любимой визуалки, отбросив сладкую истому после счастливой концовки, вы вознамерились перевести какую-нибудь игру.

Для примера возьмем переведенную Tsundere na imouto.

Проверяем версию движка.

В папке с установленной игрой вы видите что-то вроде этого:

illust1

Ищем исполнимый файл игры и смотрим его свойства.

preferencies

Если в графе «Описание» есть надпись вроде TVP(KIRIKIRI) 2 core, то читаем дальше. Если нет – игра не использует движок Kirikiri и написанное ниже нам вряд ли поможет.

Вскрытие архивов xp3.

К сожалению, стопроцентного способа вскрыть эти архивы на данный момент нет, но попытаться в любом случае стоит.

Для вскрытия можно использовать программу AE Tools (http://wks.arai-kibou.ru/ae.php?p=dl) или утилиты от insani для распаковки из командной строки(http://tlwiki.org/images/a/af/Xp3tools-20060708.zip).

Запускаем распаковку:

unpackxp3-extract data.xp3 data

То есть, распаковываем data.xp3 в подпапку data, которая находится в папке с архивом.

Полученный результат:

unpackedfiles

Здесь нас интересуют файлы сценария, которые находятся в подпапке scenario.

Собственно сами файлы могут называться scene00.ks, scene01.ks, scenario… Кстати, в архивах иногда лежит мусор вроде черновых версий, поэтому желательно не ошибиться и выбрать правильный файл.

Если вы не нашли нужных .xp3 файлов, возможно они склеены вместе с исполнимым .exe Отделите их с помощью утилиты KiriKiri/KAG3 Embedded EXE Splitter & Merger(ссылка есть во второй части статьи), а полученный архив распакуйте любым удобным способом.

Обычно файлы в архивах имеют названия, набранные латиницей, но зачастую японские разработчики считают, что их творения будут запускать только в Японии и используют в именах японские символы. Поэтому если какой-то файл содержит знаки вопроса или кракозябы и не желает открываться, возможно стоит еще раз распаковать архив, загрузившись с японскими языковыми настройками.

Что делать, если вы так и не смогли распаковать .xp3 файлы?

Видимо, вам не повезло и вы взялись за новеллу, где файлы дополнительно зашифрованы. Это бывает если игру делала «серьезная» фирма. Например у Fate/Stay Night архивы открываются только утилитами заточенными под эту игру. То же самое можно сказать про игры сделанные на последней версии движка KirikiriZ (Nekopara).

Тогда вам придется искать, не сподобился ли кто сделать утилиту для конкретно вашей игры или попросить кого-нибудь написать ее. В крайнем случае, сделать это самим. Ж)

Мацуо Басё в переложении Толстого.

Вот все файлы сценария, которые потребуется перевести.

scripts

Вы уже готовы ожесточенно без перерыва переводить неизвестные закорючки на родной язык? Приступайте, но…

  • Как было сказано выше, файлы сценария закодированы в кодировке Shift-JIS. Если вы хотите, чтобы русский текст отображался нормально, измените кодировку файла на UCS-2LE (UTF-16LE).
  • Не стоит удалять исходный японский текст, полностью заменяя его своим переводом. Оригинал вам еще понадобится для вычитки и проверки. Удобнее будет просто закомментировать строку с японской фразой, поставив перед ней символ ; (точка с запятой)
  • Аккуратнее правьте макросы. Незакрытая квадратная скобка в строках типа [setname name=Казуки] может вызвать ошибку в игре.

А посмотреть?

После перевода, даже частичного, вам, конечно, захочется посмотреть, как выглядит игра с новым, переведенным текстом. Архив собирается обратно теми же утилитами, которыми вы его распаковывали. Можно отправить готовый вариант в тот же архив, где были раньше файлы оригинала, но тогда придется переупаковывать массу ненужной информации, не входящей в ваш перевод.

Более выгодный способ – создать отдельный файл patch.xp3 , в который поместить все что вы наизменяли и напереводили, а потом закинуть его в папку с игрой.

Существуют несколько вариантов размещения файлов в архиве patch. Иногда игра подразумевает, что структура каталогов будет сохранена, т.е. если в оригинальном .xp3 файлы находились в папке \scenario , то и в patch.xp3 они должны находиться в той же папке.

В случае с Tsundere na imouto, движок считает, что все файлы в patch.xp3 должны находиться только в корне архива. Для вашей игры это придется определить самим.

Кстати, если в папке игры по недоразумению уже есть файл patch.xp3 , можно смело создать patch2.xp3 , patch3.xp3 …

С помощью консольных утилит запаковку выполняем командой:

xp3-repack F:\Work\other\tundere\crack\patch patch.xp3

После названия запаковщика идет путь до папки, куда вы скопировали все переведенные файлы(F:\Work\other\tundere\crack\patch) и имя получаемого патча(patch.xp3) .

Итак, вы довольный, уверенный в собственных силах, запускаете игру, чтобы увидеть первые плоды своих трудов и…

В следующей части речь пойдет о том, какие еще опасности ждут на пути перевода.

Перевод и Kirikiri. Часть 1.: 36 комментариев

  1. Знаете, эм… Не всегда выходит так прекрасно вскрыть архивы. Программы просто тупят и ничего не понимают обычно. Мда.

    Нравится

  2. Хм, вроде всё получается, распаковывается, собирается. Но когда запускаю уже правленную версию, меню я не трогал, оно работает, но в тот момент, когда должен появиться русский текст, просто черный экран и ничего не происходит.

    Нравится

    1. у меня почти такая же проблема как у Galok_119 03.01.2016 в 01:17
      только в русской локали, в японской локали нет ошибок. запускаю новую игру появляется черный фон, хотя, на месте него должны быть картинки из папки(bgimage) в остальном текст нормально печатается и другие картинки всплывают. иногда на месте фона появляется картинка из папки (image) и потом не пропадает, так же из этой папки не включаются картинки меньше фона в 5 раз.

      Нравится

  3. По поводу KiriKiri/KAG3 Embedded EXE Splitter & Merger.
    А можно поподробней, как для чайника — каков формат вводимой строки (команды), как осуществить ввод, если Enter закрывает окно.

    Нравится

    1. Если нужна распаковка, делаем как указано в хелпе программы.
      Запускаем cmd.exe , далее пишем :
      kiri_sm.exe -e executable.exe

      Вместо executable.exe имя вашего экзешника.

      Получаем на выходе: embedded.exe (экзешник с вырезанным xp3) и archive.xp3 (сам архив)

      Нравится

      1. Э-ээ… Почти… А можно ещё подробней…?
        Как она (прога) его найдёт (ехешник-то). Надо путь как-то прописать.
        Видимо как и выше в случае с другими консольными программами, я верно понял?. Пардон, что туплю — не приходилось пользоваться. Пробелы в строках имеют значение?

        Нравится

      2. Вобщем я нифига не понял. Ввожу строку, как описано. И что дальше? Нажав ввод (Press Enter to quit), закрываем прогу и ничего не происходит, не нажав, тупо смотрим на экран.
        Собсно я разобрал, то, что хотел — банально просто, однако получилось. Но что толку. Здесь же прельщало прежде всего то, что и собрать можно. Брал отсюда, http://wks.arai-kibou.ru

        Нравится

        1. Ну, сборка делается почти точно так же.
          По шагам:
          1. Копируем экзешник игры и xp3 архив, которые надо склеить, в папку с kiri_sm.exe
          2. Запускаем cmd.exe
          3. Переходим в папку с kiri_sm.exe
          4. Пишем следующее:
          kiri_sm.exe -m executable.exe archive.xp3 embedded.exe

          Вместо executable.exe должно быть имя экзешника для склейки, вместо archive.exe имя архива. embedded.exe это имя файла, который получится в результате.
          5. Нажимаем Enter.

          Готово.)

          Нравится

      3. Блин… Значит, исходник должен быть в папке с прогой? А об этом нигде…
        Впрочем, этот вариант первое, что пришло мне в голову и я опробовал его почти сразу. Увы не прокатило. Жаль.
        Ресурсы вынул (кстат, использовал Universal Extractor), а собрать в .ЕХЕ обратно не выйдет — имена файлов закодированы, а декодер в ехе-шнике. Ну и на том СПС.
        Ну лан, но есть ещё пробла. Ты как, готов, если буду бомбить вопросами, хотя он пока один? Думаю не стоит засорять страницу многословной перепиской. Мой адрес в этом посте настоящий.

        Нравится

  4. И ещё, а ваши игры после локализации открываются всё так же под Аплокалью, Нтлееи
    или уже как обычно?

    Нравится

    1. Tsundere na imouto была специально доработана, чтобы запускаться под русской локалью. Хотя на некоторых системах бывают сбои.

      Нравится

  5. Песат, стрёмно, что открыть ты сумел, а сохранить нет.
    Открыл, изменил, «Сохранить» — и всё.
    Открыл, изменил, «Сохранить как…» — тут иначе, можешь выбрать(изменить) расширение.
    Можно в Ворде, Блокноте, текстовых редакторах и т.д. Просто функционал Notepadа шире, он удобнее, да и заточен под написание скриптов и html.

    Нравится

  6. У меня файл ks не открывается, пробовала менят кодировку, не выходит(
    А ещё, как можно графические файлы извлечь из архивов? Они в другом формате — tlg.

    Нравится

      1. Новелла Mahoutsukai no Yoru. Перевода полного нет, вот и решила а взяться за неё. Может к ней тоже как и к Fate нужна особая утилита?
        А как пользоваться вашей tlg2png… Ну, сама разберусь.

        Нравится

  7. блин, хороший движок, жалко, что слишком специфичный и информации о нём мало. Очень заинтересовала e-mote технология, узнал вроде, что новелки с оной на этом движке пишутся, а анимация в emofuri(e-mote studio) делается. Японский шоль учить начать)

    Нравится

    1. Ну, как сказать. Относительно хороший. Windows only, хотя под Вайном работает без проблем. Emofuri там в виде плагина, который еще и платный.

      Нравится

  8. «Поэтому если какой-то файл содержит знаки вопроса или кракозябы и не желает открываться, возможно стоит еще раз распаковать архив, загрузившись с японскими языковыми настройками.»
    Как загрузиться языковыми настройками? :с

    Нравится

    1. То есть, загрузиться с японским языком в качестве языка для программ, не поддерживающих юникод. (С японской локалью).

      Нравится

      1. Аа, ну толку всё равно мало, кракозябры остаются.
        Вариант что неправильно распаковывается скрипты, уже несколькими пробовал.

        Нравится

  9. Вопрос: во время распаковки хр3 выдает такую ошибку
    Expected «#01» at position 0x17 but saw «#80».
    Traceback (most recent call last):
    File «xp3-extract.py», line 104, in ?
    assert (indexoffset+compsize+17 == filesize)
    AssertionError
    в чём может быть проблема?

    Нравится

  10. Добрый день! В статье Вы упомянули, что tlg файл может быть преобразован в png (или tga). Не могли бы Вы, пожалуйста, подробнее рассказать как это сделать и какие программы необходимо для этого использовать?

    Нравится

Оставьте комментарий