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

Вскрытие XCOM TBG. Локализация

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

Прошу помочь. Сначала немного о сабже - это приложение для настольной игры XCOM, написанное на Unity 4.6 (судя по логам). Я понимаю, что сама тематика немного не по специализации форума, но больше не знаю куда обратиться.

XCOMTBG - App Win

Начиная с последней версии приложение стало поддерживать несколько языков локализации (как это обычно бывает - без русского, поэтому появилось желание перевести его самостоятельно).

Пользуясь советами и программами из данного раздела форума мне удалось найти файл, в котором хранится локализация. К сожалению, Unity Assets Explorer (1.3 и 1.5) хоть и смог распаковать архивы Unity, но при сборке обратно вместо какого-либо из языков локализации отображаются названия переменных (скрины скину вечером, сейчас, к сожалению не могу их снять), да и объем файла увеличивается на 3 лишних мегабайта.

Плагин Unity Assets Support для Total Commander'а напротив, справился с задачей на отлично - мне удалось вытащить файл, заменить ряд названий (поставил русские названия, вместо немецких) и загрузить обратно в архив.

После успешной первой пробы был переведён ещё кусок текста и названий. Но при дальнейшей загрузке обновлённого файла локализации приложение начало вылетать.

По логам, которые создаются в папке приложения ошибка в следующем:

DynamicHeapAllocator out of memory - Could not get memory for large allocationCould not allocate memory: System out of memory!Trying to allocate: 1935762480B with 4 alignment. MemoryLabel: StringAllocation happend at: Line:74 in Memory overview

 

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

The file 'D:/!Work/Unity/XCOMTBG_Win (1)/XCOMTBG_Win_v1.1.3_Data/resources.assets' is corrupted! Remove it and launch unity again![Position out of bounds! 111980300 > 111972262](Filename:  Line: 273)DynamicHeapAllocator out of memory - Could not get memory for large allocationCould not allocate memory: System out of memory!Trying to allocate: 1850027056B with 4 alignment. MemoryLabel: StringAllocation happend at: Line:74 in Memory overview

 

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

Заранее спасибо.

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

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


Ссылка на сообщение
После успешной первой пробы был переведён ещё кусок текста и названий. Но при дальнейшей загрузке обновлённого файла локализации приложение начало вылетать.

А ты добавлял в тот же файл куда уже добавлял до этого или в оригинальный заново? Попробуй в оригинальный добавлять. По чуть-чуть.

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


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

Добавлял в изменённый. Я оставил контрольный файл локализации, который был изначально (Localization.mov.xml.bcg). Если копирую его обратно (т.е. восстанавливаю assets в том виде, как они были изначально, то приложение снова запускается.

Хорошо, попробую в оригинальный, по чуть-чуть.

Странно, теперь даже то, что получалось в начале не получается. Вылетает с ошибкой, в логах:

(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)DynamicHeapAllocator out of memory - Could not get memory for large allocationCould not allocate memory: System out of memory!Trying to allocate: 1952544368B with 4 alignment. MemoryLabel: StringAllocation happend at: Line:74 in Memory overview[ ALLOC_DEFAULT ] used: 13836895B | peak: 0B | reserved: 20971520B [ ALLOC_GFX ] used: 69948B | peak: 0B | reserved: 7340032B [ ALLOC_CACHEOBJECTS ] used: 427232B | peak: 0B | reserved: 10485760B [ ALLOC_TYPETREE ] used: 0B | peak: 0B | reserved: 0B [ ALLOC_PROFILER ] used: 2340B | peak: 0B | reserved: 8388608B Could not allocate memory: System out of memory!Trying to allocate: 1952544368B with 4 alignment. MemoryLabel: StringAllocation happend at: Line:74 in Memory overview

 

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


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

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

2d23247bd8b4.png

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


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

Вот я рискую сорвать приз за тупые вопросы: А как правильно актуализировать информацию, какая верная длина должна быть?

И ещё вопрос: Есть ли возможность удалить из файла ненужные локализации? Чтобы была только русская и английская версии.

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


Ссылка на сообщение
Вот я рискую сорвать приз за тупые вопросы: А как правильно актуализировать информацию, какая верная длина должна быть?

Размер файла в байтах

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


Ссылка на сообщение
Размер файла в байтах

Хм. Идею понял, но вот тут интересный вопрос: судя по скрину длина файла 982056 + 4, но Тотал Коммандер говорит, что общая длина файла 982064. Куда делись 4 байта? О_о

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


Ссылка на сообщение
Хм. Идею понял, но вот тут интересный вопрос: судя по скрину длина файла 982056 + 4, но Тотал Коммандер говорит, что общая длина файла 982064. Куда делись 4 байта? О_о

4 байта в конце (00 00 00 00), служат для "выравнивания" длинны файла, пока оставь их как есть

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


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

Всем огромное спасибо за помощь, работа пошла!

Но как всегда - новые сложности:

Рабочий файл локализации

Как только я добавляю дополнительный перевод в файл выше (ну, в смысле перевожу очередной кусок текста) приложение начинает вылетать с ошибкой:

The file 'D:/!Work/Unity/XCOMTBG_Win (1)/XCOMTBG_Win_v1.1.3_Data/resources.assets' is corrupted! Remove it and launch unity again![Position out of bounds! 112833268 > 111981298](Filename:  Line: 273)Mismatched serialization in the builtin class 'TextAsset'. (Read 983076 bytes but expected 983074 bytes)(Filename:  Line: 1174)Shader warmup: 17 shaders 45 combinations 0.025sAudioController - Initialized with 24 hooks(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)Loading Saved Settings Music: 0.7894737 Sound: 0.7894737(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)DynamicHeapAllocator out of memory - Could not get memory for large allocationCould not allocate memory: System out of memory!Trying to allocate: 1733230628B with 4 alignment. MemoryLabel: AudioAllocation happend at: Line:334 in Memory overview[ ALLOC_DEFAULT ] used: 14692208B | peak: 0B | reserved: 20971520B [ ALLOC_GFX ] used: 69992B | peak: 0B | reserved: 7340032B [ ALLOC_CACHEOBJECTS ] used: 158348B | peak: 0B | reserved: 10485760B [ ALLOC_TYPETREE ] used: 0B | peak: 0B | reserved: 0B [ ALLOC_PROFILER ] used: 2376B | peak: 0B | reserved: 8388608B Could not allocate memory: System out of memory!Trying to allocate: 1733230628B with 4 alignment. MemoryLabel: AudioAllocation happend at: Line:334 in Memory overview

 

Пока проверил на двух разных кусках перевода в разных частях файла, ошибка вылетает одна и та же, как только значение длины файла, которую я записываю становится: 0a 00 0f 00

на нынешнем значении всё работает

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


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

UPD Всем огромная благодарность за помощь! Процесс идёт полных ходом.

Для тех, кто будет разбираться с дебрях перевода, читая эту тему - чтобы избежать ошибки в данном посте выше, необходимо добавить (или убрать) в конец файла (в блок выравнивания) дополнительные 00 байты так, чтобы длина файла делилась на 4.

Кстати, вопрос всё ещё актуален, кто-нибудь сталкивался:

И ещё вопрос: Есть ли возможность удалить из файла ненужные локализации? Чтобы была только русская и английская версии.

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


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

Перевод почти закончен, хочу ещё раз поблагодарить всех за помощь.

Накопилось несколько вопросов, с которыми так же хотел попросить помочь:

1. Если в файле локализаций меняешь название языка (в моём случае German -> Russian), то приложение падает. Как я понимаю, это связано с тем, что по названиям локализаций подгружаются остальные файлы из архива (картинки, музыка). Можно ли как-нибудь исправить данное падение и таки добавить русский в список доступных языков?

1.1. Есть вариант конечно, попробовать добавить пачку файлов с _Russian в названии, вдруг получится и заработает, но об этом скажу только завтра.

2. В продолжении варианта 1, есть ли возможность убрать остальные локализации, кроме Английской и Русской? (они, в принципе, не нужны, только место занимают) Если убираю вручную, то приложение опять же падает (а вот тут уже возникает подозрение, что языки "вшиты" в код приложения)

3. Который дополнительно вылезает из первых двух пунктов - есть вариант добавить тупо русский ко всему набору. И вот тут возникает ещё одна проблема: если оба предположения верны (части названий файлов и "вшитые" в код локализации), то если с первой проблемой разобраться можно легко, то как разобраться со вшитыми названиями локализаций и где это делать?

Заранее благодарен за помощь.

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

  • Изменения статусов

    • axe66  »  SerGEAnt

      здравствуйте. можете добавить на сайт раздел для игры She’s Leaving и русификатор к нему? и как и куда вам скинуть фото и сам русификатор?
      [h2] Версия: 1.0.1 (от 22.05.2026)
      Совместимость: для сборки 20909321 [/h2]
       Информация:
      Машинный перевод моделью gemma2:9b-instruct с несколькими этапами автоматической перепроверки (модель "самопроверялась") и финальными ручными правками.
      Это не финальная версия — по мере нахождения ошибок перевода будут выходить обновления.
      Известные нюансы:
      * Возможны неточности и ошибки в переводе.
      * Некоторые элементы интерфейса остались без перевода.
       Установка:
      1. Запустить Russifier.exe
      2. Нажать "Выбрать папку"
      3. Выбрать папку с игрой и нажать ОК
      4. Нажать "Установить"
      5. Дождаться завершения установки и закрыть программу.
      После установки запустите игру и наслаждайтесь!
      Если заметили ошибки или некорректные формулировки — оставляйте комментарии, будем исправлять!
       
      Автор: Serjik Sokolov История изменений:   Версия 1.0.1 от 22.05.2026 - Установщик теперь автоматически определяет корневую папку игры, даже если случайно выбрана вложенная папка.   Версия 1.0.0 от 03.12.2025 - Релиз
      · 1 ответ
    • Perfect End Strange  »  SerGEAnt

      Привет, озвучку для Silent Hill 4: The Room выпустил энтузиаст под ником Perfect End Strange, а вы написали совсем другую студию, пожалуйста, исправьте эту оплошность
      · 0 ответов
    • Jimmi Hopkins  »  SerGEAnt

      я его уже открыл в свободный доступ, чтобы не потерялось среди новинок
      · 0 ответов
    • NekoNya  »  Onzi

      https://www.dropbox.com/scl/fi/4xncxr2tqy77vz4644q08/text_RU_FINAL.json?rlkey=xckxss3jkql4gjmc1ah6qjb5e&st=k5ql651f&dl=0 
       
      Вот, то что вышло. Извинюсь, что зря говорил, что помогу (
      · 2 ответа
    • serfly  »  SerGEAnt

      Доброго времени! Недавно столкнулся с проблемой автоперевода XUnity AutoTranslator BeplnEx iL2cc. Пару последних лет часто пользовался, теперь консольные команды виснут на стадии загрузки библиотек, хотя они есть там изначально. На GitHub есть подобные вопросы, но ни одного рабочего ответа я не нашел. А Вы что можете посоветовать?
      · 0 ответов
  • Лучшие авторы


×