Сайт Anivisual.net закрыт

Он продолжит функционировать в виде архива. Новые материалы добавлять нельзя.

Технические аспекты русификации игр на движках: codeX RScript

Технические аспекты русификации игр на движках: codeX RScript

Сия часть данной серии статей коснётся более значимого движка, чем в прошлый раз, на котором написано, вероятно, много больше игр, притом их в целом можно назвать более значимыми.
Многие игры на нём обладают своеобразным сюжетом, литературностью, интересным слогом. Между тем, русифицированы на нём только три из игр на сим движке, притом как минимум одну решили портировать на Ren'Py из-за того, что не осилили техчасть (сразу в двух проектах перевода одной новеллы, что в немалой степени и сподвигло меня написать про, казалось бы, разобранный и простой движок). Дополнено: оказывается, порт сделали ещё MangaGamer-овцы.

Также известен как: Liar Soft Engine; Liar-soft Engine; LiarSoft Engine; raiL-soft Engine.

Игры, кои точно на сим движке:
(На подчёркнутых велись тесты для написания данной статьи).
(Зачёркнутые русифицированы).

- Принцесса порчи: Эвтаназия;
- Лес;
- Инганок ярчайшего пламени: Как прекрасны люди;
- Валюсия, сияющая белизной: Как прекрасны надежды;
- Родственные души на крыше;
- Хирагумо-тян: Моногатари о "Низший одолевает высшего" эпохи Сэнгоку;
- Гактаун жёлтых молний: Как блестящи храбрецы;
- Огромный лабиринт и огромная гора проблем: Великие грани Бездны;
- Альфа-найтхоук;
- Судовой журнал Альбатроса.

Игры, которые теоретически также должны быть на сим движке:
- Все игры от Liar-soft (кроме Странных сказок Адабаны, что на Silky Engine);
- Все игры от raiL-soft;
- Некоторые другие игры, сделанные при сотрудничестве.

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

Важно: все методы для работы с движком написаны для оригинального движка, эталонными версиями которого являются оригинальные (японские) версии шести подчёркнутых ранее игр.

Классификация.

Игр на данном движке довольно много, и движок имел некоторое развитие на протяжении десятилетий его использования, но структурно оно несущественно. В контексте русификации изменениями версий можно в немалой степени пренебречь. Тем не менее, из-за одного аспекта всё же будут выделены две вариации движка:
- codeX RScript от Liar-soft;
- codeX RScript от raiL-soft.
У второго для русификации желательно проведение ещё одного небольшого технического мероприятия, про которое наверняка догадывается всякий, кто хоть раз имел дело с играми от raiL-soft.

Что содержит?

Эталонная игра на codeX RScript содержит:
.exe-шник самой игры с названием, зависящим от конкретной игры.
Папка "mov".
* Содержит видео в формате ".mpg".
Папка "save".
* Содержит сохранения.
vorbis.acm. Аудиокодек, который трогать не следует. Встречался везде, кроме, как не странно, новеллы Хирагумо-тян: Моногатари о "Низший одолевает высшего" эпохи Сэнгоку.
Несколько .xfl-архивов:
bgm.xfl:
* Содержит фоновую музыку в формате .wav. Данная фоновая музыка как правило называется "Track0X.wav".
grpe.xfl:
* Содержит картинки сцен в формате .wcg. Как правило их названия состоят из четырёх цифр.
grpo.xfl:
* Содержит самые общие технические картинки в формате .wcg. Как правило их названия состоят из четырёх цифр.
* В редких случаях (встретилось лишь в следующих новеллах: Хирагумо-тян: Моногатари о "Низший одолевает высшего" эпохи Сэнгоку; Огромный лабиринт и огромная гора проблем: Великие грани Бездны) может содержать также файл "_CATALOG.VIX", являющийся по сути каталогом регистрации изображений.
grpo_*.xfl, где вместо * разные последовательности символов.
* Содержат более или менее технические картинки .wcg, характерные для отдельных игр.
* В некоторых случаях также "_CATALOG.VIX".
grps.xfl:
* Содержит технические картинки .wcg, обычно связанные с сохранениями (и главами).
* Содержит холстовики .lwg.
* Файлы-маски формата .msk (судя по всему, не используются в новелле Хирагумо-тян).
* Как не странно, .psd (встречался только в новелле Хирагумо-тян).
grpt#.xfl, где вместо # любая цифра:
* Содержит реплики, не выводящиеся в основных диалогах. Например, мысли и слова, отображающиеся как бы на самой картинке как бы в виде комикса.
* Редкий зверь. Встречался лишь в новелле Хирагумо-тян: Моногатари о "Низший одолевает высшего" эпохи Сэнгоку.
scr.xfl:
* Содержит скрипты в форме .gsc.
voice.xfl при наличии озвучки:
* Содержит озвучку в формате .wav.
wav.xfl:
* Содержит, вероятно, звуковые эффекты в формате .wav.
grpp.xfl:
* Может содержать спрайты в формате .wcg.
* Редкий зверь, встречался только в новелле Принцесса порчи: Эвтаназия.

Как работать с архивами?

Архивы здесь есть .xfl-файлы. Они практически не меняются в разных версиях движка, притом не раз были разобраны, так что проблем с ними быть не должно совсем.

Есть ряд способов извлекать и запаковывать сии архивы, но наиболее элементарный и, вероятно, удобный из всех: использовать GARbro.

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

Как работать с картинками?

В данном движке имеются разные форматы картинок. Основным форматом является .wcg. Данный формат практически не менялся в разных версиях движка, притом не раз был разобран, так что проблем с ним быть не должно совсем.

Есть ряд способов конвертировать его в стандартный формат и конвертировать из стандартного в .wcg обратно. Наиболее элементарным является использование конверсии мультимедиа в GARbro (ПКМ на файл или выделенную их группу вне архивов -> Конверсия мультимедиа).

С картинками .psd можно вполне работать с помощью Adobe Photoshop.

.msk могут быть конвертированы в стандартный формат с помощью GARbro. Редактировать не рекомендуется, да и не требуется.

Пример замены графики кнопок меню в оригинальном Инганоке:


Как работать с холстами?

Файлы-холсты здесь есть .lwg. Они содержат картинки .wcg + дополнительную информацию (их позиции). Работа с ними проста, но её лучше описать подробнее.

Инструкция по работе с .lwg-холстами:
0. Скачать и извлечь готовый релиз (не master; метод для master рассмотрен не будет) RaiLTools. Желательно версию 1.1, для которой и пишется данная инструкция.
1. Перетащить нужный файл .lwg на "railiar.exe" для его извлечения в ту же директорию.
2. При необходимости менять положения картинок на холсте требуется редактировать файл ".meta.xml". Флаги менять крайне не рекомендуется. Удалять данный файл из папки не следует.
3. Редактируйте требуемые .wcg-картинки (см. прошлый раздел).
4. Переместите из той же директории, где находится та папка, старый файл .lwg, либо удалите его.
5. Перетащите папку с изменёнными картинками и изменёнными положениями (при необходимости) на "railiar.exe". В той же директории, где находится и папка с .wcg и .meta.xml, у вас появится новый изменённый .lwg-файл.

Как работать со скриптами на базовом уровне?

Скрипты в данном движке есть .gsc. Они практически не менялись от игры к игре. Более того, скрипты нешифрованные.
Ранее существовали лишь дамперы строк данного типа скрипта, однако для ведения полноценного перевода их недостаточно. Посему аз лично разработал средство для их полноценной компиляции/декомпиляции:
gscScriptCompAndDecompiler. Можете использовать последний релиз, в нём вам не потребуется запускать для работы Python Shell.
Впрочем, проблемы с ним возможны, посему при них пишите на почту [email protected].

У него имеется простенький графический интерфейс:


Ни в коем случае не запускайте на японской локали!!!

Краткая инструкция по использованию:
1. Переместить скрипт или файл с декомпилированным содержимым в директорию средства.
2. Включить средство.
3. Ввести в поля ввода средства название скрипта название скрипта или файла с декомпилированным содержимым.
4. Нажмите "ОПРЕДЕЛИТЬ" или "DEFINE".
5. Нажмите на требуемую команду.
6. Просмотрите статус выполнения внизу.

Более подробно читайте на странице средства github или во встроенных в само средство командах помощи, что вызывается по нажатию на соответственные кнопки.

Пример вывода кириллицы на русской (про локали в самом конце) локали без каких-либо мероприятий на примере Принцессы порчи:


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

Для переноса на новую строку можно как ставить "^n", так и использовать пробелы, что не рекомендуется.

Демонстрация переноса текста на новые строки на Хирагумо-тяне.


Также возможно некоторое дополнительное форматирование текста. Для жирного текста используйте "^b", для курсивного "^i". Для отступа с новой строки используйте "^m". Для надстрочного текста (изначально фуриганы) используйте
Код
"[*]"
, где вместо "*" текст. Отметить границу слов фуриганы можно, например, с помощью "|". Работа надстрочного текста корректная не гарантируется во всех версиях движка.

Смена шрифта игры, и кириллица в игре.

В большинстве игр на данном движке (кроме наиболее ранних, например Принцессы порчи) возможна смена шрифта в настройках. Для того, чтобы шрифт корректно "ложился" под игру, требуется, чтобы костыльный шрифт был основан на японских шрифтах. Допустим, на основе MS ゴシック {MS ゴシック} или MS 明朝 {MS 明朝}. Добавлять кириллические глифы требуется в полуширинные слоты. Более того, требуется использовать моноширинный шрифт.

Это возможно делать либо в полуширинную кану (позволяет поддерживать латиницу), либо в латиницу (не поддерживает латиницу и ряд символов).
Первый метод работает лишь с самыми ранними представителями движка codeX RScripter, у коих нет смены шрифта в настройках. В частности, с Принцессой порчи.
По всех остальных случаях (например, в Инганоке) надо делать шрифт на основе латиницы и проставлять шрифт в настройках. Например, подойдёт TLateCodeX.


Демонстрация проблем, которые возникнут при попытке сделать завязку более старых представителей движка на костыльный шрифт, основанный на полноширинной кане:
Как надо:

Как выйдет:


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

Подробная инструкция с примером костыльного шрифта, основанный на методе замены глифов полуширинной каны, а именно TBGoth (остальные мои костыльные шрифта на новеллах сего движка корректно работать отказываются):
1. Собственно, либо создать костыльный шрифт и установить его, либо установить существующий (например, TBGoth). Отныне корректная работа игры будет требовать установленного костыльного шрифта.
2. С помощью HEX-редактора (подойдёт, например, MadEdit) открыть .exe-файл самой игры. В случае Принцессы порчи "KhimeDL.exe" (или примерно так).
3. Найти там все строки стоящих на данный момент шрифтов. В случае Принцессы порчи их две (как правило в .exe-шниках игр на движке можно встретить в основном эти две): "MS ゴシック" (82 6C 82 72 20 83 53 83 56 83 62 83 4E) и "MS 明朝" (82 6C 82 72 20 96 BE 82 A9).
4. Их необходимо заменить на строку (крайне желательно, чтобы она была меньше строк исходных шрифтов, иначе придётся переписывать смещения) названия костыльного шрифта, допустим "TBGoth", притом так, чтобы байты, оставшиеся от старой строки, были обнулены. Например, в случае "TBGoth" исходные HEX-строки должны превращаться в: "54 42 47 6F 74 68 00 00 00 00 00 00" и "54 42 47 6F 74 68 00 00 00" соответственно.
Покажем на примере одной из строк, а именно "MS ゴシック" (82 6C 82 72 20 83 53 83 56 83 62 83 4E):
До:

После:

5. Провести преобразование строк скрипта (для соответствия нужным глифам) в соответствии с костыльным шрифтом (в случае TBGoth с помощью TesterFontConv). То есть вместо обычной кириллицы подставить символы, глифы в костыльном шрифте которых были заменены на соответствующие им глифы полуширинной кириллицы.
6. Вставить текст в игру.
Пример из Принцессы порчи:


Как добавлять новые сообщения в скриптах?

С помощью ранее существовавших средств данное действо было бы выполнить невозможно, а вручную трудоёмко, особенно в скриптах игр в последних версиях движка. К счастью, аз разработал специальное средство для компиляции и декомпиляции скриптов .gsc, что на сие способно:
gscScriptCompAndDecompiler. Можете использовать последний релиз, в нём вам не потребуется запускать для работы Python Shell.
Впрочем, проблемы с ним возможны, посему при них пишите на почту [email protected].

Базовая работа со скриптами .gsc уже была рассмотрена в разделе "Как работать со скриптами на базовом уровне?", посему перейдём прямо к переносу сообщений. Стоит заметить, что с играми от raiL-soft всё хитрее; работа с ними будет показана в конце данного раздела.
Метод для игр от Liar-soft:
1. Найдите сообщение, часть его хотите перенести, а именно его функцию и строки в скрипте.
Допустим, нам нужно убрать последнюю строку на новое сообщение.
(На картинке представлен лишь пример. В теории строк после с индексом -1 может быть и больше).

2. По образу и подобию его добавьте после него новую функцию сообщения (можете даже скопировать) и соответственным образом поправьте строки.
(Здесь второй аргумент был убран, ибо, вероятно, то озвучка, а дубль её был бы весьма некстати).

3. В теории всё должно работать.
Основное сообщение:

Перенесённая часть:


Как уже ранее писалось, с играми от raiL-soft всё хитрее. Тамошняя система в чём-то примитивнее ряда игр от Liar-soft; даже тех, с коими идёт наравне. Адекватно сравнить её с системой из Инганока.
Тем не менее, игры на нём содержат ряд хитростей. Например, возможность изменять размер текста и его ход. Впрочем, о них подробнее будет написано в разделе Дополнительные особенности техработ с играми от raiL-soft.
Насчёт же переносов есть ряд аспектов.
- Обычно новые сообщения не ждут до клика, но в зависимости от наличия места появляются сразу под нынешними, при этом нынешние затемняются.

- Обычно переход на экран чрез клик идёт уже после достижения определённого количества строк (около 18-ти), а именно выход за их лимит некоторым сообщением. Установленный размер текста на то вроде как не влияет, но стоит проверить дополнительно.

- Тем не менее, есть один способ очистки окна после сообщения.
Итак, после самого сообщения вставьте команду #CLEAR_MESSAGE_WINDOW с единственным аргументом 0.

- В остальном остальному можете использовать методы для игр от Liar-soft.

Некоторые прочие практические подробности о движке.

Для корректной работы с данным движком желательно знать также некоторые его практические аспекты:
- Игра может работать более или менее корректно на разных локалях (русской, японской).
- При использовании метода костыльного шрифта игры на движке должны успешно работать даже на русской локали.
(Демонстрация на русской локали).

- Стоит, впрочем, учесть, что японские полноширинные символы на русской локали могут не работать корректно.
(Демонстрация на русской локали 2).


Как сделать так, дабы костыльный шрифт ставился по умолчанию?

Есть два варианта.
Во-первых, можно выполнить манипуляцию, указанную в разделе "Смена шрифта игры, и кириллица в игре".
Во-вторых, можно по выполнению перевода сделаю следующие манипуляции:
1. Удалить сохранения, лежащие в папке "save" директории игры.
2. Перейти в настройки (и никуда более, ежели вы не работаете с игрой от raiL-soft).

3. Сменить шрифт на нужный, выбрав из списка шрифтов ранее установленный костыльный шрифт.
Например, в случае TLateCodeX:

4. Выйти из игры и создавать релиз уже с данным файлом сохранения.

Дополнительные особенности необходимых техработ с играми от raiL-soft.

Большая часть из них была описана ранее, но один момент всё-таки остался, а именно установка горизонтального хода текста по умолчанию.
Что будет, если вы пренебрежёте данный пунктом?
По умолчанию пользователь будет видеть текст вот таким:


Инструкция по устранению проблемы:
(Можете заодно выполнить решение момента со шрифтом, см. раздел "Как сделать так, дабы костыльный шрифт ставился по умолчанию?").
1. Удалить сохранения, лежащие в папке "save" директории игры.
2. Перейти в игру (начать).

3. Нажать на указанную кнопку и удостовериться, что чёрточки в ней стали горизонтальными.
До:

После:

(Оттуда вы можете менять размер букв, наличие затемнения, положение текстового окна и даже шрифт).
4. Выйти из игры и создавать релиз уже с данным файлом сохранения.

Итого.

Оптимальной для русификации игр на сим движке при использовании представленных в статье методов является следующая схема перевода:
- Можно делать патчи для игр на движке, но вполне можно и делать готовую сборку.
- Не нужно прилагать дополнительные усилия для работы с локалями.
- Для корректного отображения русского текста оптимально использовать шрифт TLateCodeX, который подойдёт для всех версий движка. Для наиболее ранних версий движка можно также изготовить шрифт на основе полуширинной каны.
- gscScriptCompAndDecompiler является бесценным для полноценного редактирования .gsc скриптов данного движка; его использовать рекомендуется.
- При работе над играми от raiL-soft необходимы дополнительные мероприятия, указанные отдельно.
- Возможно использование дополнительного файла сохранения для упрощения работы с игрой пользователем.
18
Декабрь
5
4.4
2454
Добавлять комментарии могут только зарегистрированные пользователи.

Комментарии к записи: 5

avatar
#1 ice_cat
47981
в 12:19 (27/Июн/2020)
2
Цитата
как минимум одну решили портировать на Ren'Py из-за того, что не осилили техчасть

Причём портировать решили и портировали всё ж не мы, а сами разработчики, в конце позапрошлого года. По каким причинам - сие неведомо, но зело интересно.
Кстати, могу ошибаться, но судя по коду портировали не вручную, а автоматизированно, а значит где-то у них есть инструмент с большой такой кнопкой "зделоть красиво".
Не исключено, что и некоторые другие лиарсофтные тайтлы в новейших версиях лежат уже ренпайные.
avatar
#2 Tester
78951
в 12:28 (27/Июн/2020)
2
Хм-м, интересные данные.
Хотя те игры, кои тестировал, брал новейших версий (или по крайне мере так считал). И все они оказались на codeX RScript.

Аз только что просмотрел японские версии Родственных душ и, согласно указанным данным, они все на codeX RScript.

На Ren'Py же появились версии уже от MangaGamer. И только английские.
avatar
#3 ice_cat
47981
в 12:34 (27/Июн/2020)
1
Хм, ну да, ошибсо. Не разработчики, издатели скорее. И с датой ошибсо, в начале прошлого года. Да и портировали, думаю, чисто для удобства.
Крыша как раз тогда переиздавалась с полной озвучкой (ранее была частичная, едва ли четверть сцен) и кое-какой доп. графикой, и под это дело и решили сразу пересобрать, видимо, чтобы с патчами легче было возиться, да и моментальная поддержка линупса и яблока. Выпускали сразу три куска - версию с оригинальным контентом, расширенную-озвученную и отдельно сам патч.
avatar
#4 Хемуль
87473
в 14:35 (27/Июн/2020)
4
Спасибо за статью! Сразу видно огромный труд, который был затрачен на все это.
avatar
#5 Nazon
3724
в 22:07 (27/Июн/2020)
5
Вот это очень интересно. В свое время, я запускал английский перевод What a Beautiful People от Amaterasu Translations, но он не работал без японской локали.
Значит, сейчас есть обход.