-
Публикации
13 -
Зарегистрирован
-
Посещение
Репутация
8 НейтральнаяО adm-244
-
Звание
Новичок
Информация
-
Пол
Мужской
-
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
@Amigaser у меня версия из steam v1.02. Взял на проверку версию из GOG v1.00.1 и проверил на ней тот же tra файл — тоже работает: Как вариант почистить содержимое папки “%HOMEPATH%\Saved Games\Rosewater”. Магии не бывает, что-то значит отличается -
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
Возможно у нас отличаются версии игры, тут нужно разбираться. У меня пока других идей в чем может быть дело нет -
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
function game_start() { <...> if (Language != "German") { Game.ChangeTranslation(""); } <...> } -
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
@Amigaser следует убедиться, что: trs файл сохранен в кодировке UTF-8 German.tra собран из правильного trs файла В игре язык переключен на немецкий Для предложеного trs файла игра считывает перевод и заменяет кнопки меню успешно: Ссылка на тестовые trs и tra файлы: MediaFile В случае с Rosewater это не будет работать. Игра при старте проверяет выбраный язык и если это не “German”, игнорирует tra файл. -
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
@Amigaser формат trs файла следующий: // комментарий <текст оригинала> <текст перевода> <...> Первой идет строка оригинального текста, под ней идет строка с переводом и дальше они чередуются до конца файла. Строки с комментариями игнорируются. Более развёрнуто это выглядит так: // комментарий (целая строка игнорируется) Оригинальная строка 1 Перевод оригинальной строки 1 Строка 2 Перевод строки 2 Строка 3 Строка 4 Перевод строки 4 Здесь “Оригинальная строка 1” заменяется на “Перевод оригинальной строки 1”, “Строка 2” на “Перевод строки 2” и “Строка 4” на “Перевод строки 4”. В данном примере “Строка 3” остается без перевода, т.к. за ней следует пустая строка. Грубо говоря, игра когда использует перевод смотрит на оригинальный текст и ищет его в этом файле, если находит, то берет текст со строки ниже. В случае с кнопками меню в Rosewater для немецкого языка игра ищет в этом файле не английский вариант, а немецкий, а т.к. в German.trs нет нужной строки с оригинальным текстом (на немецком) перевод не подхватывается (его там просто нет). Для удобства лучше добавить недостающие строчки в конец файла примерно в таком виде: <...> Neues Spiel+ Neues Spiel Spiel laden Einstellungen Spiel fortsetzen Spiel beenden Spiel sichern <...> Предвидя вопрос как узнать каких строчек не хватает сразу скажу, что лучше воспользоваться сгенерированым trs файлом по кнопке “Generate TRS from Assets”. В таком случае все необходимые строки уже будут добавлены (плюс всякие строчки которые не отображаются в игре, но используются в скриптах, их переводить не нужно). -
Руководство по русификации игр от Adventure Game Studio
adm-244 ответил в тему пользователя Tericonio в Вскрытие игровых ресурсов
@Amigaser рано сдались. Сгенерированный trs файл конкретно для Rosewater должен быть в UTF-8. Если файл получен из tra, то в его начало нужно добавить строчку “//#Encoding=UTF-8”, тогда проблем с порченными символами не будет. Это бага в AGSUnpacker v08, он не считывает кодировку из tra файла если в нем есть блок настроек. Что касается непереводимости текста кнопок в меню… На самом деле все переводится, просто разработчик для немецкого языка захардкодил текст этих самых кнопок на немецком. Проще говоря, когда выбран немецкий язык, игра ищет перевод не для “New Game”, а для “Neues Spiel”. Если в trs файл добавить перевод для этой строки, то текст начинает подхватываться. Содержимое trs файла: //#GameId=1087995093 //#GameName=Rosewater //#Encoding=UTF-8 Neues Spiel+ TEST+ -
Файлы фрагментно зашифрованны с использованием операции XOR по “ключу”. Структура файла: uint32 : dataOffset — смещение на начало секции с файлами uint8 : globalFlags — флаги характеризующие файл: 0x1 — указывает файловому менеджеру игры, что файлы нужно расшифровать сразу же при открытии архива 0x2 — указывает, что каждое вхождение файла в таблице содержит дополнительные флаги 0x4 — указывает, что таблица файлов зашифрована Структура таблицы файлов: uint16 : count — количество файлов в архиве <далее вхождения файлов> Структура вхождения файла в таблице: cstring : filename — относительный путь к файлу \ название файла uint32 : size — размер файла #if globalFlags & 0x2 uint8 : flags — дополнительные флаги файла: 0x1 — файл зашифрован #endif Что касается шифрования, это тот же самый алгоритм, что используется в игре “The Escape from Paradise City”, который представлен в скрипте для quickBMS (я так понимаю именно он и использовался для распаковки других файлов): Отличие только в используемом ключе: key = dataOffset + 0x00E6C2CF — ключ для таблицы файлов key = dataOffset + file.Offset + (file.Size * 7) — ключ для файла Удалось написать программку и распаковать представленные архивы. Найти её можно здесь: Прямая ссылка (GitHub)
- 1 ответ
-
- 1
-
-
Форсировать кодировку отдельных строк в .txt
adm-244 ответил в тему пользователя shikulja в Вскрытие игровых ресурсов
Добавил поддержку промежутков для задания последовательности строк (например, 1000-1100). Также сделал выходной файл не обязательным параметром. Если он не указан, то запись осуществляется во входной файл. Ссылка: zog_re-encoder_v02 Насчет неправильной конвертации у представленных программ. Проблема заключается в том, что некоторые символы Windows-1251 закодированные как UTF-8 являются, так называемыми, “управляющими символами” и многими текстовыми редакторами игнорируются или заменяются на другие. Отсюда и “пропажа” символов. -
Вскрытие ресурсов игры 1998 года
adm-244 ответил в тему пользователя AntonivkA в Вскрытие игровых ресурсов
Поработал над распаковщиком для этой игры, но из-за нехватки времени и утраты интереса, по итогу, как говорится, забил :-) Были разобраны форматы файлов: .dat (архив), .clc (палитра), .zft (растровый шрифт), частично .zim (графика задников и спрайты) и .mod (описание игровых объектов). На данный момент имеется распаковщик, некоторые части упаковщика и совсем сырой графический пользовательский интерфейс. Если ещё актуально, все эти наработки можно найти тут: CC98Unpacker (github). EDIT: Текст находится в файлах “.mod”. “Дергалка” текста из них реализована. -
Форсировать кодировку отдельных строк в .txt
adm-244 ответил в тему пользователя shikulja в Вскрытие игровых ресурсов
Насколько я понял нужно указанные строчки в UTF-8 файле преобразовать в кодировку Windows-1251 и записать обратно в файл как UTF-8. Ссылка на программу: zog_re-encoder_v01 Подробности в readme файле. P.S. Для преобразования индивидуальных строк можно использовать эту программку: CyrillicConverter -
Да, для главного меню, меню загрузки и настроек точно. Для остального нужно отдельно смотреть, не проверял. Факт в том, что во многих местах используется конструкция вида: if (Game.TranslationFilename != "") { button.NormalGraphic = 1; button.MouseOverGraphic = 2; button.PushedGraphic = 3; gui.BackgroundGraphic = 4; <...> } Тоесть, при использовании любого *.tra файла, игра меняет графику кнопок и задников элементов интерфейса на немецкий аналог и оригинальная графика на английском не используется. Скорее всего разработчики хотели добавить поддержку нескольких языков, но столкнулись с трудностями и решили не заморачиваться, а часть кода (или весь) так и остался висеть в GlobalScript.
-
Проблема оказалась вполне банальной. Разработчик в GlobalScript в функции game_start добавил вызов функции Game::ChangeTranslation с пустым параметром. Таким образом, при запуске игры файл с переводом (*.tra) обнуляется и перевод не используется. Проблему можно решить двумя способами: Модифицировать GlobalScript и убрать вызов Game::ChangeTranslation; Пропатчить движок, чтобы вызов Game::ChangeTranslation не менял перевод. Самое простое решение под номером два. Пропатченный acwin.exe прикрепляю. Скачать. P.s. Во многих местах в игре сделана проверка наличия файла с переводом, и, если он обнаружен, то графика меняется на немецкий вариант.
-
adm-244 изменил свою фотографию
-
Вы не написали удалось ли открыть распакованный файл с установленным флагом, поэтому предположу, что скорее всего этот флаг показывает наличие сжатия. Первые 4 байта — размер сжатого файла, вторые 4 байта — размер исходного файла.
- 1 ответ
-
- 1
-