Технические аспекты русификации игр на движках: Silky Engine
Решил на досуге немного (для переводческого минимума) потестировать один движок, но затем решил довести тесты до конца и написать комплекс техмероприятий-минимум для переводов игр на сим движке: Silky Engine, известный также как Silky's Engine.

К таким играм относятся:
- Таинственная сказка в алых цветах (Акэйро кайкитан);
- Апейрия живописного моря (Хикари но уми но Апейрия);
- Реинкарнация семи цветов радуги (Нанаиро реинкарнэйшн);
- Соблазнение по прихоти (Кимагурэ темптэйшн);
- Странные сказки Аданабаны (Аданабана итан) {пожалуй, наиболее внезапный экспонат}.

Также гипотетически на данном движке могут быть:
- Все игры от Silky's Plus.
- Часть игр от Silky's (последние).
- Возможно, ещё некоторые игры от связанных с ними компаний.

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

Важно: все методы для работы с движком написаны для оригинального движка, эталоном коего является таковой в игре Таинственная сказка в алых цветах. Работа на каких-либо модифицированных версиях не гарантируется.

Итак, насчёт сего движка у меня смешанные чувства... но обо всём по порядку.

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

Эталонная игра на SilkyEngine содержит:
.exe-шник самой игры с названием, зависящим от конкретной игры.
"chkconfig.exe" и "Menu.exe", не критичные для работы.
Несколько .arc-архивов, так называемых "Silky Arc":
data.arc:
* Содержит технические средства движка. Средств для удобного редактирования не найдено, но критичной надобности редактирование файлов движка не имеет.
* В данном архиве имеется ряд файлов .vo, .bin и .area. Шифрования строк в данных файлах замечено не было. По сути являются компилированными скриптами.
effect.arc:
* Содержит звуковые эффекты в формате .wav. Других форматов замечено не было.
music.arc:
* Содержит музыку в формате .ogg. Других форматов замечено не было.
movie.arc:
* Содержит видео в контейнерах .vsd в связке с .mov. В контейнерах можно обнаружить видео в формате .mpg.
voice.arc:
* Содержит голоса в формате .ogg. Других форматов замечено не было.
layer.arc:
* Содержит изображения в формате .akb. Других форматов замечено не было.
script.arc:
* Содержит компилированные скрипты в формате .mes и связанную с ними библиотеку "library.lib".

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

Архивы (вероятно, всех игр или их большинства) успешно вскрываются GARbro.
Запаковывать архивы не обязательно: данные можно извлекать в саму директорию игры, и они будут иметь приоритет над теми, что в архивах. Однако, удалять сами архивы при сим ни в коем случае нельзя.

Впрочем, запаковка возможна с помощью средства extarc от regonme (не путать с одноимённым средством от Asmodean), которое, вопреки своему названию, распаковывать архивы не умеет.

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

Картинки могут конвертироваться в нормальный формат с помощью GARbro, либо же с помощью SilkyTools (а именно AkbTool.exe там).

Конвертация обратно в формат .akb возможна с помощью тех же SilkyTools (да, и именно AkbTool.exe там).

Использование SilkyTools для редактирования картинок (пример):
0. Положить требуемую для редактирования картинку в директорию игры вместе с "AkbTool.exe".
1. Ввести в поиске файлов через пуск "cmd.exe". Включить появившееся приложение.
2. Ввести "cd {директория игры}", где вместо "{директория игры}" написать директорию игры.
3. Ввести "AkbTool". Выведется инструкция по использованию.
4. Для конвертации {draw}.akb в {pic}.png (где вместо "{draw}" надо написать название картинки .akb, а вместо "{pic}" -- название картинки в .png, в кою будет конвертировано), требуется ввести "AkbTool p {draw}.akb {pic}.png".
5. Для обратной конвертации в {draw}.akb из {pic}.png (см. п. 4) требуется ввести "AkbTool c {draw}.akb {pic}.png {draw}.akb". Ежели нужно создать отдельный {draw2}.akb (вместо "{draw2}" подставить название новой картинки .akb) на основе конвертации {pic}.png в {script}.akb, требуется ввести "AkbTool c {draw}.akb {pic}.png {draw2}.akb".

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

SilkyTools позволяют полноценно редактировать строки игр на данном движке. Требуется либо "MesTool.exe", либо "MesToolx64.exe" оттуда. Инструкции показываются при вызове их из командной строки.
Таким образом, можно извлекать строки в нужный текстовый файл и затем их успешно запаковывать.

Использование SilkyTools для редактирования скриптов (пример) (для MesTool.exe. В случае MesToolx64 писать вместо "MesTool" "MesToolx64":
0. Положить требуемый для редактирования скрипт в директорию игры вместе с "MesTool.exe".
1. Ввести в поиске файлов через пуск "cmd.exe". Включить появившееся приложение.
2. Ввести "cd {директория игры}", где вместо "{директория игры}" написать директорию игры.
3. Ввести "MesTool". Выведется инструкция по использованию.
4. Для выведения строк из {script}.mes в {text}.txt (где вместо "{script}" надо написать название скрипта, а вместо "{text}" -- название текстового файла, куда будет выведено), требуется ввести "MesTool p {script}.mes {text}.txt".
5. Для обратной запаковки строк в {script}.mes из {text}.txt (см. п. 4) требуется ввести "MesTool c {script}.mes {text}.txt {script}.mes". Ежели нужно создать отдельный {script2}.mes (вместо "{script2}" подставить название нового скрипта) на основе вставки строк из {text}.txt в {script}.mes, требуется ввести "MesTool c {script}.mes {text}.txt {script2}.mes". Есть случай, когда то делать не рекомендуется. См. п. 2 раздела "Как заставить корректно отображаться диалоговый текст (в контексте перевода игры)?".

Движок имеет систему автопереноса с переносом символов (не пословно, но именно посимвольно!) на новую строку, так что при должной сноровке можно нормально переносить на новые, опять же, строки.
Переноса на новое сообщение/окно, к сожалению, в движке нет (ну или полноценно работающего). Более того, при слишком длинных строках игра крашится, но, ежели начать пропуск до того, как отрисовка дойдёт до вылезающих символов, вам удастся сего избежать. Будьте осторожны!

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

Как работать с видео?

Видео запакованы в контейнер .vsd и используются в связке с файлами .mov.
Видео из контейнеров успешно и корректно извлекается в помощью GARbro. Оно находится в формате .mpg.
Извлечённый .vsd требуется удалить, а .mpg -- отредактировать и сменить ему расширение на .vsd.

100% гарантии работоспособности метода не могу дать, но, согласно быстрому тесту, работать может.

Как заставить корректно отображаться диалоговый текст (в контексте перевода игры)?

Да, здесь уже всё хитрее. Либо придётся кропотливо колдовать с HEX-редактором, либо делать другое средство для работы со скриптом. Здешние мероприятия требуется проводить как с .exe-шником, так и с файлами скриптов, притом изменения требуется вносить с помощью HEX-редактора. Все мероприятия здесь будут описать наиболее подробно.

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

-3. Создать моноширинный костыльный шрифт на основе MS ゴシック {MS ゴシック} или MS 明朝 {MS 明朝}. Символы должны располагаться на полуширинных символах, то есть на латинском алфавите + знаках и полуширинной кане. Либо вы можете воспользоваться моим костыльным шрифтом TAGoth, размещающим кириллицу на полуширинной кане и паре малополезных знаков и не требующим существенных усилий для замены в .exe-шнике. (Для TAGoth мои средства будут приведены далее). Однако, при использовании TAGoth учтите, что игра не будет корректно отображать перевод на японской локали. Эталонная локаль в сим случае есть русская. Для исправления проблемы можете попробовать использовать, например, TGothic, но данный момент не тестировался.
-2. Установить шрифт. Отныне корректная игра на переводе потребует установки шрифта. Есть несколько методов убрать в том необходимость и автоматизировать процесс установочными скриптами, но они здесь рассмотрены не будут.
-1. С помощью HEX-редактора (подойдёт, например, MadEdit) открыть .exe-файл самой игры с названием, зависящим от конкретной игры (не chkconfig.exe и не Menu.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) и заменить её на строку костыльного шрифта (для удобства путь она не будет длиннее по байтам исходной строки), притом последние байты старой строки, кои останутся после наложения новой строки, должны быть сменены на 00. Например, в случае "TAGoth" исходные HEX-строки должны превращаться в: "54 41 47 6F 74 68 00 00 00 00 00 00" и "54 41 47 6F 74 68 00 00 00" соответственно. Ниже вы можете видеть две картинки-примера: до (с MS ゴシック) и после (с TAGoth).
До:

После:

0. Извлеките скрипт, что желаете перевести, в директорию игры.
1. Перед тем, как ковыряться самим редактором, следует перевести текст (диалоги + имена + прочее), преобразовать его в соответствии с костыльным шрифтом (в случае TAGoth с помощью TesterFontConv) (в случае TGothic с тем же средством, но с некоторой настройкой (все необходимые инструкции должны быть в коде)) и вставить текст в сам скрипт с помощью MesTool (или MesToolx64) (см. ранее).
2. После того, как отредактировали нужные части скрипта HEX-редактором, пересобирать скрипт через те средства не рекомендуется, так как возможны некоторые проблемы.
3. Как можно видеть на рисунке ниже, при простой запаковке в оригинальный движок не будет работать корректно ни кириллица, ни латиница. Даже при смене шрифта в .exe-шнике.

4. Находим нужную строку скрипта, используя HEX-редактор.

5. Для строк диалогов (не имён!): замечаем, что перед всяким выводом строки в оригинальном движке и скрипте стоит "0A". Меняем на "0B". Получаем (при условии корректного проведения преобразований строк (см. п. 1)):

6. Для строк имён же имеем немного другую ситуацию. Дополнительные преобразования в них не требуются, ввиду чего замена байтов не требуется тоже.
7. Готово! Теперь, учитывая все предыдущие пункты, вы вполне можете вставлять диалоговый текст и имена в игру, притом так, дабы они корректно отображались.


Добавление новых сообщений.

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

ВНИМАНИЕ: ДАННЫЙ СПОСОБ МОЖЕТ ПРИВЕСТИ К СЕРЬЁЗНЫМ ОШИБКАМ! БЕЗ КРАЙНЕЙ НУЖДЫ НЕ ИСПОЛЬЗОВАТЬ!

Метод добавления сообщений:
1. Изменить все "0B" на "0A" перед строками сообщений.
2. Изменить на "0B" строку сообщения, что нужно дублировать.
3. С помощью SilkyTools вставить в скрипт строки.
4. Теоретически сообщение должно дублироваться. Дабы вновь заставить SilkyTools его видеть, просто измените "0B" перед строками сообщений на "0A".

Редактирование верхнего меню игр, названий в процессах, названия вверху.

Для начала следует обозначить, что здесь есть верхнее меню. На картинке ниже указано.

Редактирование сего потребует редактирования ресурсов .exe-шника. Сделать это относительно просто (по крайне мере в данном случае). Алгоритм таков:
0. Скачать Resource Tuner (для корректного перехода по ссылке может потребоваться использовать прокси, VPN или сети Tor, i2p и так далее).
1. Открыть с помощью него .exe-шник самой игры.
2. Перевести все следующие ресурсы: Menu, Dialog, String, Version. Ежели после перевода чего-то игра перестала работать, следует откатить изменения (backup-версии при сохранениях создаются автоматически).
3. При необходимости можно также сменить иконку (через Icon Group или Icon).

Смена директории запуска игр на движке.

Данный движок весьма капризен и запускается только из директории установки. Тем не менее, есть способ заставить его запускаться из некоторой другой директории.

Смена директории запуска игры:
0. Примем, что "{игр}" есть некоторое условное техническое название игры. Для каждой игры оно своё. Например, для Таинственной сказки в алых цветах (Акэйро кайкитан) оно есть "Akeiro". Примем, что "{комп}" есть некоторое условное техническое название компании выпуска игры. Допустим, у "Silky's Plus" оно "SilkysPlus".
1. Открыть с помощью подходящего текстового редактора (допустим, Notepad++) файл "{игр}_inst.xml", находящегося в директории "%AppData%\{комп}\{игр}".
2. Заменить директорию, написанную меж "<InstallPath>" и "</InstallPath>", на желаемую директорию.
3. Заменить .exe-шник, написанную меж "</RunExe>" и "</RunExe>", на .exe-шник + путь к нему.
4. Пример. Новая директория: C:\SilkysPlus\Akeiro Keikitan", а .exe-шник "C:\SilkysPlus\Akeiro Keikitan\akeiro.EXE"
5. На практике, впрочем, хватает лишь смены самой директории.

Коли вы внезапно включили полноэкранный режим.

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

Внимание: в данном методе используются обозначения из раздела "Смена директории запуска игр на движке".

Изменение полноэкранного режима на оконный и наоборот:
0. Перейти в директорию "%AppData%\{комп}\{игр}\save".
1. Открыть файл "{игр}.xml" с помощью редакторов, поддерживающих XML (например, Notepad++).
2.1. Для перехода в оконный режим из полноэкранного заменить строку
" <Status>2</Status>"
на строку
" <Status>1</Status>"
2.2. Для перехода в полноэкранный режим из оконного заменить строку
" <Status>1</Status>"
на строку
" <Status>2</Status>"

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

Для корректной работы с данным движком требуется знать также некоторые его практические аспекты. Итак, эталонный Silky Engine имеет следующие требующие внимания аспекты:
- Может работать на разных локалях (например, японской и русской).
- При работе на разных локалях могут быть разные особенности.
- Устанавливается с помощью установщика.
- Игра может воспроизводиться только в директории установки. Простых и вместе с тем гарантированно рабочих методов исправления того не найдено (но вполне могут быть найдены при дополнительных тестах), посему для перемещения игры в иную директорию рекомендуется переустанавливать её в другое место с помощью установщика. Обновлено: такой метод найден, см. раздел "Смена директории запуска игр на движке.".

Итого.

Оптимальной для русификации игр на сим движке при использовании представленных в статье методов является следующая схема перевода:
- Сам архив перевода должен содержать установщик игры и патч к самой игре. Обновлено: патчи ныне не обязательно оптимальны. Для каждой отдельной игры можно написать скрипт, который будет замещать установщик и заставлять игру работать в текущей директории. Так как метод разнится от игры к игре, можете за подробностями по отдельным играм обращаться в комментарии.
- При незапаковке архивов также желателен ярлык извне папки собственно игры, ибо сама директория игры в таком случае будет заполнена ресурсами. Во избежания сего используйте представленный ранее скрипт-запаковщик на Golang.
- При использовании TAGoth также необходимо удостовериться, что игра запускается на русской локали. Во избежания сего используйте либо представленный ранее TGothic, либо собственно созданный костыльный шрифт, не задействующий символы полуширинной каны. Взамен, впрочем, отнимется полноценная поддержка латиницы, присутствующая в случае TAGoth.


Автор материала: Tester
Материал от пользователя сайта.

Translate 27.05.2020 1422 Tester Silky, техническая часть, форматы, разбор, игры, техчасть, Silky's Engine, Engine, Проект, техсредства, Silky Engine, двжики, Проекты, взлом, движок, техработы, средства, перевод, ТАРИД 4.8/20

Комментарии (8):
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
4
1 Хемуль  
87473
Очень подробная и полезная статья! Вот бы про все малоизвестные движки такие были...

0
2 Dasgun  
37873
дада

4
3 Nazon  
3724
Хороший разбор. Во многом напоминает проблемы с QLIE, такие же косяки со шрифтами, но тут хотя бы перенос строк работает. Интересно, как обстоит дело с анимациями? Они только в видеофайлах или есть что-то еще?



3
4 Хемуль  
87473
Какой ещё Мицгол? Сиё Тестер еси!

4
5 Tester  
78951
Хм-м... Дайте подумать...

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

4
6 Lisper  
87222
Теперь, если придётся ковыряться в новелле на Silky Engine, я знаю куда заглянуть.
happy

2
7 Quezuxee  
88328
Судя по всему, недавно вышедшая Adabana Itan, похоже, тоже на этом движке.

2
8 Tester  
78951
Проверил: там воистину оказался Silky Engine. Неожиданно, конечно... Надобно будет проверить следующую игру от Liar-soft. Надеюсь, там всё-таки будет обычный codeX RScript.