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

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

Всем привет. Давно хотел перевести игру под названием Sara Is Missing, она работает на джава “движке” разработчика, написанном на libGDX.

Вся загвоздка в файле content.fs — это сериализированный набор каких-то текстовых данных, причём в нестандартном формате. Переводя его через HEX, проблема возникает, когда текст выходит длиннее оригинального, по итогу вся структура файла “съезжает” и приводит к ломанию игры на старте. 

Все игровые файлы лежат в sim.exe, который можно вскрыть при помощи 7-zip или Winrar.

Исходники игры, если кого заинтересовало:
https://drive.google.com/drive/folders/1hyVdLdSx_p1bGEKQ7H4c5zUpTaDgAncO?usp=sharing
 

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

rus arial.rar — спрайтовый шрифт с добавлением кириллицы.
Путь для замены: sim.exe\com\badlogic\gdx\utils
(Генерировал с помощью runnable-hiero.jar)

Текст:
.fs файлы содержат текста сообщений, а .class файлы — надписи для GUI (путь: sim.exe\game23). 
В android-версии все эти классы запакованы в classes.dex.

Декомпиляция кода:
Логика игры хранится в sim.exe\sengine. Просмотреть код .class файлов удобно через JD-GUI.
Альтернативный вариант — скачать андроид версию, вытащить dex файлы и декомпилировать их.

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

Возможные форматы текстур:
JFIF, PVR, ETC1
Файлы содержат шапку 126 байт (иногда 128), начинающуюся с тега TextureFile. 
Они могут содержать как одно целое изображение, так и множество его фрагментов, поэтому просто удалить шапку будет недостаточно.
Если исходная текстура была большой, то она разрезается на части, не больше, чем 512х512. Порядок частей такой же, как они идут в двоичном файле. У некоторых текстур имеются мипмапы. В симулякре возможно чуть по другому, там ещё можно встретить фрагментированные изображения в виде отдельных текстур: 1|1.png.texture, 1|2.png.texture и т.д.

Для изучения можно вытянуть все картинки утилитой bulk_extractor:
@echo off
bulk_extractor -o D:\Output -R D:\TextureFiles
pause

Логика загрузки изображений:
sengine\graphics2d\texturefile
-----------------------------------------------------------------------------------------------------------------------------------------------------
Кстати в симулякре в режиме отладки можно выполнить команду для распаковки текстуры на диск:
Globals.dumpTexture(“menu/headphones.png”) 
Аргумент это путь в файле support.assets без расширения “.texture”
После выполнения результат появится в кеш папке по пути C:\<username>\game27\compiled\dump

Способ массовой распаковки всех текстур:
Скачайте архив и поместите содержимое в C:\<username>\game27
В файле tex.java замените путь на свой
Запустите игру, нажмите тильду, введите команду: Console.console.evalFile(“tex.java”);
Во время выполнения скрипта игра может зависнуть на 5-10 минут, это нормально. Когда развиснет, значит процесс завершился. Идём в C:\<username>\game27\compiled\dump и проверяем.

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

Скачать архив
Подменить файл Game.class по пути sim.exe\com\accurve\game23 (изменено значение поля RELEASE на false, чтобы включить режим отладки).
Запустить игру.
Теперь можно вызвать консоль по кнопке тильды (~) и использовать команды. Важно: надо всё делать на английской раскладке. 

При инициализации консоли импортируются классы из следующих пакетов:



import com.badlogic.gdx.*;
import sengine.*;
import sengine.graphics2d.*;
import com.accurve.game23.*;
import game23.hlapi.*;
import game23.*;
import game23.grid.*;

Пример простой команды:
ClassName.method(argument);
ClassName.field = new_value;

Также можно по пути C:\<username>\game23 положить autoexec.java, при запуске игры код из этого файла выполнится автоматически через консоль. Но только при включённой отладке.

Чтобы запустить свой скрипт файл:



Console.console.evalFile(fileName);

необходимо сперва выполнить команду 



import sengine.utils.Console;


---------------------------------------------------------------------------------------------------------------------------------------------------------
Для включения отладки в симулякре нужно ставить конфиг:
Создать текстовый файл по пути C:\<username>\game27\autoexec.cfg
В нём прописать:



Gdx.app.setLogLevel(Application.LOG_DEBUG);

Запустить игру.

При инициализации консоли импортируются классы из следующих пакетов:

import com.badlogic.gdx.*;
import sengine.*;
import sengine.graphics2d.*;
import sengine.animation.*;
import sengine.calc.*;
import sengine.utils.*;
import game27.*;
import game27.gb.*;
import game27.glitch.*;
import game27.model.*;
import game27.renderer.*;
import game27.triggers.*;
import game27.Globals;
import game27.triggers.Triggers;
import game27.triggers.ACT1;
import game27.triggers.ACT2;
import game27.triggers.ACT3;
Скрытый текст

В стим-обсуждениях можно найти инструкцию от разработчиков по созданию неофициальной локализации.
https://steamcommunity.com/app/712730/discussions/0/1742220290366328362/

Ниже перевод этого сообщения. Ссылки до сих пор рабочие, но самое интересное — раздел тестирования пуст. Я пробовал следовать этой инструкции на разных версия симулякры, но ничего не вышло. Возможно я просто что-то делал неправильно :(

На всякий случай бэкап файлов: экселевские таблицы, конфиг, документ.
P.S. По умолчанию в конфиге включена рекомпиляция, так что в дальнейшем игра будет загружаться с помощью новосозданных fs в кеш папке. Поэтому если игра перестала запускаться (чёрный экран или крахи), удалите содержимое C:\<username>\game27\compiled, и конфиг, в случае ненадобности.

Цитата

Я добавил в документ инструкцию о том как тестировать свою локализацию (смотрите раздел “Testing”).
https://docs.google.com/document/d/163xald8WbyuNL_3nBZJqVUzGZ0NJ6ffM96QTH3Ii3Sk/edit?usp=sharing

Сперва вам необходимо продублировать документы в Google Drive и добавить свой перевод. Затем скачать этот файл:
https://drive.google.com/open?id=1zSmD7RAsaVIamVdNjPBdFQc46KFXSVyo

Поместите его в C:\<username>\game27\autoexec.cfg
Отредактируйте файл и замените Google ссылки на свои.
Перезапускайте игру каждый раз, когда вносите изменения онлайн.
Нажмите кнопку тильды (~) во время загрузки игры, чтобы проверить сообщения об ошибках.
Игровые сохранения могут повредиться, если внести крупные изменения.

 

Simulacra, альтернативный вариант перевода — версия для Switch

 

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

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


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

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

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


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

Потешно будет перевод сделать а это всё баловство

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


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

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

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


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

Нового что там ещё и таблица есть, а что бы сам файл восстановить дня два а то и три нужно, но один хрен сделаю

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


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

Пока точно не уверен, может с хешироваными именами всех файлов и их размеров.... 

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


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

Пока восстанавливаю исходный код .fs файла, дело это не быстрое к концу недели может и управлюсь

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


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

Хотя не факт что это чем то нам поможет

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


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

Впрочем, да. Но хочется надеяться, что таки поможет.

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

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


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

Ну что-же, с момента последнего сообщения тут прошло почти две недели. Есть что нового касаемо файла?

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


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

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

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

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

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

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

Войти

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

Войти сейчас



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

×