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

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

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

Технические аспекты русификации игр на движках: 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".

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

(Секция переработана -- 22.12.2021).

На текущий момент существует лишь одно средство, которое может полностью работать с архивами сего движка -- SilkyArcTool. Оно имеет единственный недостаток -- достаточно низкую скорость работы, проистекающую из-за реализации алгоритма сжатия данных (разновидности LZSS), используемой в Silky Engine, на Python.

Остальные средства могут либо только извлекать, либо запаковывать данные "сырыми", без сжатия данных, ожидаемого SilkyEngine, ввиду чего размеры архивов получаются чрезмерно большими. Использовать их не рекомендуется.

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

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


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

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

Конвертация обратно в формат .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".

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

Секция переработана!

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

Ранее для редактирования строк сего движка использовалось средство "mestool". Однако, оно обладало крайне ограиченным функционалом и не поддерживало такие задачи, как углублённое редактирование кода и обеспечение переноса по сообщениям.

Однако, недавно аз написал новое средство, mesScriptAsseAndDisassembler, обладающее всем нужным функционалом.
Его использование и методы переноса строк/сообщений показаны по ссылке!

При его использовании скрипты автоматически приводятся в такой вид, что менять "0A" на "0B", что описано в дальнейших секциях, нет необходимости!

Что делать, коли строк в скриптах нету?

В таком случае, строки забираются из файлов патча строк .MAP, лежащих в архиве data.arc, как, например, в Странных сказках Адабаны.

Работать с данным форматом позволяет средство MAPTool, которое в своё время разработал, наткнувшись на странное отсутствие строк в скриптах той игры.

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

Видео запакованы в контейнер .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).
До:

После:


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


Ранее были необходимы дополнительные махинации с заменой "0A" на "0B", но при использовании современного средства они выполняются автоматически. Дополнительные модификации в этом плане не требуются.

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

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

Редактирование сего потребует редактирования ресурсов .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.
18
Декабрь
14
4.6
3480
Добавлять комментарии могут только зарегистрированные пользователи.

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

avatar
#1 Хемуль
87473
в 19:37 (27/Май/2020)
4
Очень подробная и полезная статья! Вот бы про все малоизвестные движки такие были...
avatar
#2 Nazon
3724
в 20:36 (27/Май/2020)
4
Хороший разбор. Во многом напоминает проблемы с QLIE, такие же косяки со шрифтами, но тут хотя бы перенос строк работает. Интересно, как обстоит дело с анимациями? Они только в видеофайлах или есть что-то еще?


avatar
#3 Хемуль
87473
в 21:09 (27/Май/2020)
3
Какой ещё Мицгол? Сиё Тестер еси!
avatar
#4 Tester
78951
в 22:35 (27/Май/2020)
4
Хм-м... Дайте подумать...

Сей вопрос не тестировал подробно, но могу огласить следующее:
1. В играх на движке немало видеовставок, часть из которых могут выступать в качестве зацикленных анимаций (что большая часть и делает) под выводом самого текста.
2. В играх на движке не обнаружил продвинутой системы анимаций, но всё же как минимум различные эффекты переходов, в том числе касающиеся спрайтов, у которых весьма богатое число эмоций, там имеются.
3. Полноценных файлов анимаций (вне видео в контейнерах, выступающих в качестве них) не обнаружил (в т.н. "эталонном" варианте движка).
avatar
#5 Lisper
87222
в 07:29 (28/Май/2020)
4
Теперь, если придётся ковыряться в новелле на Silky Engine, я знаю куда заглянуть.
happy
avatar
#6 Quezuxee
88328
в 14:00 (20/Июн/2020)
2
Судя по всему, недавно вышедшая Adabana Itan, похоже, тоже на этом движке.
avatar
#7 Tester
78951
в 15:37 (20/Июн/2020)
2
Проверил: там воистину оказался Silky Engine. Неожиданно, конечно... Надобно будет проверить следующую игру от Liar-soft. Надеюсь, там всё-таки будет обычный codeX RScript.
avatar
#8 NIKOZI
52216
в 10:53 (23/Мар/2021)
1
Можно подробнее:
Далее необходимо выполнить преобразование всех символов каждой строки в соответствии с соответствющим им символам, определяемых костыльными шрифтами. Допустим, если вы решили отображать символ "ш" в глифе символа "i", то необходимо менять все "ш" на "i". С остальными аналогично.

Это как? Где это нужно делать? В .exe через Hex редактор?
Скрипты достал, можно уже делать перевод, но, буквы в русском языке на большом расстоянии друг от друга... Не могу решить проблему.



Игра - Kotonoha Maichiru Natsu no Koe
Движок - Silky Engine
avatar
#9 Tester
78951
в 13:16 (23/Мар/2021)
1
Цитата
Это как? Где это нужно делать? В .exe через Hex редактор?

Нет-нет-нет.
Во-первых, надо сделать костыльный шрифт, где вы будете замещать картинки глифов. Для этого используйте средства для редактирования шрифтов, такие как FontForge.

Шрифт надо менять уже в .exe.

Далее в уже итоговых скриптах просто выполните замену. Допустим, напишите
программку, которая меняет одни символы на другие (допустим, то же "ш"
на "i").

Ежели всё ещё не ясно, могу вам дать готовую подборку: костыльный шрифт, программу-преобразователь + также могу поколдовать над .exe-шником.
avatar
#10 NIKOZI
52216
в 16:12 (24/Мар/2021)
0

Цитата
Ежели всё ещё не ясно, могу вам дать готовую подборку: костыльный шрифт, программу-преобразователь + также могу поколдовать над .exe-шником.

Если такое возможно, то будьте добры. А то я сам в программировании новичок, ваш шрифт TAGoth пробовал, но я только в .exe сменил, а дальше не смог продвинуться... Думаю многим будущим переводчикам такое пригодиться, сложно найти инфу по данному вопросу. Буду крайне благодарен!
avatar
#11 NIKOZI
52216
в 16:57 (24/Мар/2021)
1
Вот ссылка на игру:



Скрипты уже вытащил, в .exe прописан TAGoth.
Есть немного перевода, так сказать для теста - в папке Script, лежит файл .txt.
avatar
#12 Tester
78951
в 20:53 (24/Мар/2021)
1
Вроде бы готово...
Там была дополнительная проблема (небольшая, но встречающаяся тогда, когда несвоевременно уделяется внимание смене шрифта), посему вышло у меня всё сделать только после небольшого дополнительного анализа (все файлы скину позже, ежели результатом довольны).

Вот так пойдёт?

.
(И да, ежели вы всерьёз ведёте проект по переводу данной новеллы (а сам перевод в текущем приложенном виде откровенно слабый, его стоит серьёзно редактировать; надеюсь, сами его ведёте, а не через кое-какие программы, хотя некоторые его места заставляют в том сомневаться, например перевод "桜之宮学園に進学した俺の初登校日" как "Это был мой первый день в школе в Сакураномии Гакуен", хотя "初登校日" и "первый учебный день", а гакуэн, "学園", и есть "школа" (иногда "академия", в общем случае "учебное заведение"), то есть "桜之宮学園" есть "школа Сакураномия", а предложение можно перевести по-человеческому как "Это мой первый учебный день в школе Сакураномия", ежели игнорировать часть "進学した", что здесь сделать можно) рекомендую его добавить на vndb, приложив ссылку к самому проекту или вашей группе; предварительно добавьте публициста только).
avatar
#13 Berth
657902
в 01:51 (26/Апр/2022)
2
Извините, если это сообщение звучит странно, я испанец и пользуюсь автоматическим переводчиком, чтобы писать по-русски. У меня есть проблема, с которой мне нужна ваша помощь, пожалуйста. Я работаю над проектом перевода на свой язык, используя ваши инструменты, и они отлично работают. Однако версия игры, над которой мы работаем, — английская. Там шрифт в .exe файле вроде бы не меняется, так как они вроде бы помещаются в текстуры изображения. Не могли бы вы сказать мне, есть ли способ добавить специальные символы в таких случаях? Игра называется Doukyuusei, но этот метод также используется в английской версии Kimagure Temptation. Заранее большое спасибо и еще раз извините за неудобства.
avatar
#14 Tester
78951
в 19:06 (06/Май/2022)
0
Коли "они вроде бы помещаются в текстуры изображения", то перерисуйте данные текстуры. Либо портируйте на другую версию движка. Не доводилось просто сталкиваться.