Перейти к содержимому
Zone of Games Forum
HocorogEvgeniy

Руководство по разбору игр от Idea Factory/Compile Heart

Рекомендованные сообщения

Даже не знаю, зачем я пишу этот гайд — игры довольно нишевые и переводы к ним либо уже есть, либо в процессе. Но быть может кто-то захочет сделать свой перевод или исправить уже имеющийся.
На самом деле речь будет не о всех играх, ибо IF/CH любят экспериментировать с движками или файлами, но список всё равно внушительный.

Дисклеймер: cразу скажу, что в руководстве будет очень много текста/скриншотов, поскольку я хочу написать так, чтобы было максимально понятно даже тому, кто ни разу не переводил игры и желает попробовать себя в этом деле. Я постараюсь описать как можно больше деталей по играм, которые довелось перевести/распаковать. Также будут предоставлены инструменты, которые были найдены на просторах сети, и исходники к ним (ссылка или в папке) для тех, кто захочет покопаться в этом деле и адаптировать инструменты для других игр.
Дисклеймер 2: часть инструментов для других игр может НЕ ПОДОЙТИ. Как упомянуто ранее — разработчики часто экспериментируют с файлами, и от игры к игре структура может отличаться.

Инструментарий: https://disk.yandex.ru/d/HOD56-s2WRryIg
Список игр, которые можно с помощью него перевести (по крайней мере те, о которых я знаю):

Скрытый текст

Hyperdimension Neptunia Re;Birth 1-3;
Megadimension Neptunia VII;
Superdimension Neptune VS Sega Hard Girls;
Omega Quintet (с костылями);
Megadimension Neptunia VIIR
Neptunia Virtual Stars;
Mary Skelter 2/Finale;
Death end re;Quest 1-2;
Dragon Star Varnir

Скрытый текст

Лично игры не проверял. Могут быть различные ошибки.
Dark Rose Valkyrie;
Mary Skelter;
Fairy Fencer;
Trillion;
Mugen Souls

Также с помощью одного из инструментов можно разобрать ещё две игры, но я со структурой не знаком, поэтому и информации особой дать не могу.
MegaTagmension Blanc + Neptune VS Zombies;
Hyperdimension Neptunia U: Action Unleashed

Для собственного удобства я иногда буду называть файлы, которые можно распаковать, — архивами. Обычно в таких файлах хранятся не только нужные нам текст/текстуры, но и звуковые эффекты или другие нужные для игры файлы.
Перед началом разбора, наверное, стоит сделать описание расширений из упомянутых выше игр. Это позволит лучше ориентироваться в той куче файлов, что предстоит увидеть.

Скрытый текст
  • .pac (.dat у Orochi Engine, .bra у Mary Skelter, .cat у MegaTagmension и Neptunia U) — основной архив, в котором находятся другие файлы/архивы, связанные с переводом. Внутри обычно всё структурировано: события лежат в одной папке, текстуры — в другой.
  • .dat (у Orochi Engine) — также основной архив. Однако в отличие от .pac и прочих здесь никакой структуры нет. Все файлы свалены в кучу, а для перевода придётся искать текст/текстуры/шрифт.
  • .cl3 — архив, в котором могут храниться как текст, так и текстуры. Если внутри текст, то обычно он относится к основному сюжету игры или дополнительным событиям. Если что-то другое — то некоторая текстура и файлы, связанные с ней (звуковой эффект, частицы и пр.).
  • .gbin/.gstr — файлы, в которых хранится «интерфейсная» часть игры: описание предметов, названия атак, настройки и прочее. *.gstr содержит системные строки, поэтому изменять его надо с осторожностью — в противном случае игра может вылетать на различных моментах. В случае с Mary Skelter в этих файлах хранится весь текст, включая сюжет.
  • .tid (.TEX у Orochi Engine, .gxt у MegaTagmension и Neptunia U) — файл, в котором находится только текстура. Чего-либо ещё там не будет.
  • .ffu — архив с растровым шрифтом и координатами.

А теперь основная часть. Почти. Перед этим «небольшое» описание инструментов и то, как они работают.

Скрытый текст
  • Multi Extractor (https://github.com/MysteryDash/Dash.FileFormats)
    Позволяет распаковывать файлы с расширениями .pac, .cl3, .tid. Использование простое — переносите нужный файл на программу и всё.
    Внутри папки также находится аналог для распаковки .pac-файлов — nr2_unpacker. Использование такое же.
    Cl3 Editor и Pac Editor не советую к использованию. Они могут запаковать файлы, но из-за этих инструментов игра может вылетать.
     
  • nr2_tidtool
    Позволяет распаковать и запаковать текстуры из .tid в .png и обратно. Как и в остальных инструментах работает через перенос файла в программу. Переносите .tid — получаете .png. Переносите .png — получаете .tid. Программа поддерживает множественную распаковку/запаковку — можно выделить несколько файлов, перенести на программу и получить результат для каждого выделенного файла.
     
  • nr1_Packer
    Программа для запаковки файлов обратно в .pac. Интерфейс на японском, но в целом всё более-менее понятно. Запускаете программу, указываете нужный архив (кнопка вверху), а после переносите изменённые файлы в окно программы. В списке подсветится файлы, который будут заменены. Для запаковки нажимаете левую из двух кнопок внизу. При необходимости можно сделать бэкап файла (поставить галочку слева внизу).
     
  • dat_tool (исходники в папке)
    Программа для распаковки и запаковки .dat-файлов. Для распаковки надо перенести архив на extract_dat.exe. Есть небольшой минус — программа распакует все файлы — которых может быть десятки тысяч — прямо рядом с архивом. Чтобы избежать этого казуса необходимо просто поместить необходимый архив в пустую папку и уже оттуда его распаковывать.
    Запаковка файла в архив происходит следующим образом: первым аргументом необходимо в консоли указать путь до архива, а вторым — то, что собираетесь паковать.
    Для простоты в папке есть небольшой батник, который при запуске делает это всё автоматически, но работает только с конкретным архивом. Использование простое: копируете нужный архив в папку с программой, а изменённые файлы — в папку files. Затем в самом .bat-файле в 3-й и 4-й строках меняете название архива на нужное и запускаете его. В результате должен появиться ещё один файл с таким же названием, но c .NEW на конце — это и есть запакованный архив. Для более удобного использования можно создать несколько батников и папок на каждый архив.
     
  • cl3Editor (исходники в папке)
    Отвечает за распаковку и запаковку .cl3-файлов. Используется в основном для текстур. Работает по аналогии с dat_tool.
     
  • tex_tool (исходники в папке)
    Программа для разбора .tex-файлов. Позволяет распаковывать и запаковывать файлы. Для удобства также сделаны в виде батников. Распаковка работает следующим образом: копируете .tex-файлы в папку с батниками и запускаете tex2dds.bat. На выходе получаете текстуры с расширением .dds, которые можно редактировать так (с помощью плагина для фотошопа) или конвертировать их в .png сторонней программой. Запаковка работает таким же образом, но используете или dds2tex.bat, или png2tex.bat.
     
  • QuickBMS
    Программа, которой необходимы скрипты для распаковки. Мною почти не использовалась, но полезна в разборе слэшеров по Нептунии или для первой части Mary Skelter. Для распаковки архива необходимо запустить quickbms.exe, указать нужный скрипт (некоторые найденные мной есть в папке Scripts), указать архив и указать место для распаковки. Запаковка работает через reimport/reimport2 точно таким же образом. В папке с программой есть подробное описание работы программы от автора (на английском).
     
  • TextTool (https://github.com/u3shit/neptools)
    Главный инструмент для перевода текста. Как понятно из названия — позволяет извлекать текст из файлов игры. Работает с .gbin-, .gstr- и .cl3-файлами. Необходимые файлы помещаете в папку CONTENTS, запускаете батник под названием «2. ...», и все файлы, где присутствовал текст, будут распакованы в виде .txt. Для запаковки необходимо запускать батник под названием «3. ...».
    Также есть батник, позволяющий распаковать/запаковать файлы в виде .lua, который также можно открыть с помощью блокнота. Используется только в тех, событиях, в которых текст по каким-то причинам не вытащился с помощью основного способа (например, в файле есть варианты выбора).
     
  • Reconv (https://github.com/0xDC00/reconv)
    Один из основных инструментов. Отвечает за разбор шрифта. Конкретно этой версией я не пользовался, поскольку есть веб-приложение по ссылке из GitHub (можно самому скомпилировать). Позволяет как распаковать, так и запаковать шрифт игры.
    Использование настольной версии приложения: через консоль указываете тип работы, путь до файла и путь до места, куда надо распаковать. Запаковка работает таким же образом — отличие лишь в аргументах. Более подробно можно увидеть при запуске приложения.
    Использование веб-версии: выбираем нужную вкладку, отправляем файл и на выходе получаем архив. Для запаковки необходимо сделать наоборот: отправить архив и на выходе получить .ffu-файл.
    В папке с проектом есть текстовый файл, в котором я писал свои заметки. Возможно, они смогут помочь при разборе шрифта.

 

Всё, вот теперь точно начало гайда.

Дисклеймер 3: возможно после следующей части меня возненавидят более опытные команды по переводу (или их это позабавит), поскольку начиная с этого момента такие слова как «оптимизация», «аккуратность», «быстро» и «просто» можно будет выкинуть на помойку. Но поскольку я самоучка, и моя цель была «добраться до файлов, неважно каким путём», то считайте, что написанные ниже слова — один из вариантов для разбора и перевода игры.

Итак, для начала надо определиться с «основными» архивами игры — .PAC и .DAT в подавляющей части указанных выше игр. Нам неизвестно, где хранится текст/текстуры/шрифт.

   В случае с .pac-архивами иногда нам может помочь само название файла. Например, если он называется как-нибудь «SYSTEM-что-то-там», то можно попробовать его распаковать и поискать шрифты или текст, связанный с интерфейсом. Но основной текст мы вряд ли так найдём, да и для .dat-архивов такой метод уже не поможет. Что можно сделать?

Самый первый и очевидный вариант: с помощью инструментов разобрать вообще все архивы. Мы получим тысячи файлов, с которыми можно будет уже как-то работать. При этом в случае с .pac-архивами будет даже нормальная структура — всё рассортировано по папкам, и найти нужные события и текстуры не составит труда. Для .dat-архивов, как я упоминал в начале, всё будет свалено в кучу, но что-то найти тоже можно будет. Например, всё по тем же расширениям: если в архиве будут присутствовать сразу 5 расширений сразу — .tex, .cl3, .ffu, .gbin и .gstr — это, скорее всего, нужный нам архив. Или, по крайней мере, его часть.
Второй уже чуть более оптимизированный — можно попытаться заглянуть внутрь архивов. Например, с помощью поиска по файлам в Notepad++ найти намёки на нужный текст или расширения — если в архиве встречается сочетание ffu или реплика персонажа, то, возможно, это и есть то, что мы ищем. Способ хороший, но не всегда помогает. Однако его можно использовать вкупе с первым вариантом.

 

Скрытый текст

scli_k52XJFnTcIdSebMJMGVqJQsHUmKzrkAU4YPUNNsblzk-LRCyvZY_yIzGoz_wSungMpyCFDIuyL-BTEXbBZ7.jpg?quality=95&as=32x12,48x17,72x26,108x39,160x58,240x87,360x131,480x174,540x196,640x233,720x262,974x354&from=bu&cs=974x0

Сравнение .pac- и .dat-архивов (Megadimension Neptunia VII и Death end re;Quest). Я сразу взял нужные файлы, и на скриншоте видно, что у .pac-архива есть папка «event». Собственно, там и лежат события из игры, которые нам нужны. У .dat-архива также внутри находятся все 5 нужных там расширений (.gbin не влез — он чуть выше).

 

Ладно, что-то нужное мы, возможно, нашли. С .pac-архивами всё понятно — папки с текстом и текстурами лежат раздельно. Но что делать с внутренностями .dat-архива?
Помним, что нас интересуют следующие расширения: .cl3, .tid/.tex, .ffu и .gbin/.gstr. Для начала отсортируем файлы: .cl3-файлы в одну папку, .tid/.tex — в другую, .ffu — в третью, .gbin/.gstr — четвёртую, а всё ненужное можно попросту удалить. Таким образом, мы приведём содержимое в небольшой порядок и оставим только самое необходимое. Итого на данном этапе мы нашли текстуры, шрифт и интерфейс, однако основные события всё ещё под вопросом, поскольку хранятся они в .cl3, которые, как я упоминал ранее, могут содержать не только текст, но и текстуры.
Способа тут также два. Первый — «в лоб»: можно все файлы попытаться распаковать с помощью TextTool, и если программа найдёт текст — она отразит это в консоли. Если в файле текста нет, то, соответственно, это текстура.

Скрытый текст

r5u6q62CCSZHPU9Lfpy1Kl7ZlQy_Mr6OLiUS3hgsf6m6fsrkl_WwzZK_TImEstflAzwU8TXZYk3Uzs8uWXMscC5B.jpg?quality=95&as=32x18,48x27,72x41,108x61,160x90,240x135,360x203,480x271,540x304,640x361,720x406,974x549&from=bu&cs=974x0

Другой — вновь с помощью Notepad++ пробежаться по файлам на наличие какой-либо реплики персонажа. На данном этапе поиск точно покажет нужное событие, в котором есть эта реплика.

Скрытый текст

MBpeyiXFmXIgNUEDgHNaD16j0keEEWJJIfZf9PtlUiUo4saPtbt70VYTYVpAu8PE5Hqw5IsUU7X8AeO7krbhFt9u.jpg?quality=95&as=32x4,48x5,72x8,108x12,160x18,240x27,360x40,480x53,540x60,640x71,720x80,974x108&from=bu&cs=974x0

Первый способ удобен тем, что распакует текст сразу из всех .cl3-файлов. Если он там, конечно же, есть.

Теперь все проблемы с разбором .pac/.dat-файлов завершены: у нас есть текст, есть текстуры и есть шрифт. Всё, что осталось сделать — перевести. С помощью инструментов запаковываем тестовый перевод обратно и любуемся результатом... который, возможно, будет немного отличаться от желаемого.

Скрытый текст

y0QCEl6rMwMv_4mwmvtx457aovCPSnP_LqxkoI9AQ6lkYmNZlaUaTR-zw0uP5hqqpfVer_-SHZNXdhuvVth3Ut36.jpg?quality=95&as=32x19,48x28,72x42,108x63,160x94,240x141,360x211,480x282,540x317,640x376,720x423,974x572&from=bu&cs=974x0

С текстом и текстурами мы, конечно, разобрались, но вот со шрифтами наверняка будет проблема — расстояние между символами будет большим. В таком случае на помощь придёт reconv, с помощью которого достаём текстуру (.dds) и координаты (.txt) к каждому символу. Дальше будет довольно хлопотное занятие, которое может фактически поставить крест на переводе, если вам не хватает усидчивости: придётся разбираться как с текстовым файлом, так и с текстурой. Но с другой стороны можно почти полностью изменить шрифт.

Итак, разобрав шрифт, нас в первую очередь интересует текстовый файл. В нём на каждый символ написаны координаты отображения. Нас интересуют параметры «xAdv» и «width» — именно с ними и придётся экспериментировать. Изменяете значения и смотрите, как игра отреагирует.
Если изменение txt-файла не помогает, и расстояние всё равно большое или по каким-то причинам есть желание изменить текстуру символов, то придётся разбираться уже с текстурой. Может быть есть варианты получше, но я смещал текстуру каждого символа максимально влево (вслепую, разумеется), но так, чтобы она не заходила в «границы» другого символа. Поскольку на эти «границы» особых намёков нет, то делать это придётся по пикселям и после изменений проверять результат уже в игре. После этого надо будет вновь вернуться к текстовому файлу и редактировать параметр xAdv.

Скрытый текст

 

jL-gkOqPk1HX8rpWfeK2GMPWJPapl4oRsxfSXqzNxGxv3BXPHn462ZB2dtFG4wkztKQY2ActAMNbm9SaPuRh9Qly.jpg?quality=95&as=32x13,48x20,72x30,108x45,160x67,240x101,360x152,480x202,540x227,640x269,720x303,974x410&from=bu&cs=974x0

Шрифт для Megadimension Neptunia VII благополучно утерян, поэтому в качестве примера взял уже подправленный шрифт от Death end re;Quest.

 

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

Итого после всех этих страданий что мы имеем? Текст найден, текстуры тоже, шрифт изменён так, как нам надо. Теперь нам ничего не мешает начать сам перевод игры.

Скрытый текст

KErRFlEADO5k6jx35l7-kao9N9z_yofjMYrqpMyijATUmCQ7Heenv0Cr56rtfvz4rK34aZIcJjxX0R2DbGjjjmK5.jpg?quality=95&as=32x19,48x28,72x42,108x63,160x94,240x141,360x211,480x282,540x317,640x376,720x423,974x572&from=bu&cs=974x0

…Перевод-то начать можно, но вы же не думали, что прямо всё гладко пойдёт, да? На самом деле, есть ещё один момент при переводе, но я не уверен, что он касается всех игр.
В некоторых событиях есть варианты выборов. Самый простой пример — викторина Миллионеп из серии Neptunia.

Скрытый текст

NxwBG7kSiaY--motrMSiKPJ8Yrambc7e3r0Wz105xgYXC8NcNB1WIbjtvOq9QCcfM_FlCiSBBPJY77hjAYYT7Nph.jpg?quality=95&as=32x16,48x24,72x36,108x54,160x80,240x120,360x179,480x239,540x269,640x319,720x359,825x411&from=bu&cs=825x0

Данный текст есть в файле .cl3, но программа обычно его не распаковывает. Чтобы его достать, необходимо нужное событие поместить в папку Interface и запустить батник «4 …» у программы TextTool. .cl3-файл распакуется в .lua, где мы увидим следующее:

Скрытый текст

h7bL3WNTFJ5NEMBuVXjedE4IKyhEx-72IrtdeRjSt7W5-AeDLNKerGY1cEq_i6HJwQycAApK-Dt5snBTaov0en3S.jpg?quality=95&as=32x17,48x26,72x39,108x58,160x86,240x129,360x193,480x257,540x289,640x343,720x386,825x442&from=bu&cs=825x0

Теперь программа распаковала событие со всеми «внутренностями». Выглядит немного страшно, но по сути всё, что нам надо сделать — перевести нужный текст (вопросы викторины в данном случае), не задев при этом кавычки и вставляя переносы (#n) в нужных местах. После перевода вновь запаковываем через тот же батник, и теперь вопросы из Миллионепа у нас должны быть переведены. И вот теперь точно можно будет уже полностью перевести нужную игру.

Думаю, на этом гайд можно и закончить. Постарался всё разжевать и указать все нюансы при переводе. В будущем, если надо будет, то гайд можно обновить и более подробно рассказать про спин-оффы (в том числе на Unity), но не уверен, что это много кому интересно будет. Хотя кто знает, может руки когда-нибудь дойдут…
Ну а касательно MegaTagmension и Neptunia U — тут особых усилий не нужно, поскольку всё разбирается с помощью скриптов QuickBMS. Шрифта, к сожалению, у меня под рукой нет, но при желании его можно вытащить из нашего перевода. И если я не ошибаюсь, то где-то на форуме была инструкция к его разбору, но там уже используется HEX-редактор.

  • Лайк (+1) 1
  • +1 3

Поделиться сообщением


Ссылка на сообщение
19 минут назад, HocorogEvgeniy сказал:

QuickBMS

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

Поделиться сообщением


Ссылка на сообщение
5 минут назад, Tirniel сказал:

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

Это да, но иногда работает — как люди для неё скрипты напишут. В моём случае использовалось всё, что попалось под руку. В том числе и эту программку.
Хотя в данных играх она по-моему работает даже с превышением размера. Либо с некоторыми нюансами. Я уже не помню.)

Поделиться сообщением


Ссылка на сообщение
2 часа назад, HocorogEvgeniy сказал:

Но поскольку я самоучка, и моя цель была «добраться до файлов, неважно каким путём»

А как научились? гугл?

Изменено пользователем Dusker

Поделиться сообщением


Ссылка на сообщение
25 минут назад, Dusker сказал:

А как научились? гугл?

Преимущественно. Все инструменты были найдены в самых разных уголках интернета. У меня околонулевой опыт разбора файлов, поэтому иного варианта не было. Иногда ещё просил создателей подправить программы под какую-либо другую игру.
Ну и ещё любовь к упоротым экспериментам и местами немного программирования (например, для более удобного перевода текста).

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас



Zone of Games © 2003–2025 | Реклама на сайте.

×