Перейти к содержимому
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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

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

    • Сейчас на раннюю бету батлы 6 — 200к человек в очереди (!) стоит. Им secure boot ну вообще не помешал.
    • Очень удобная штука уже года 3 пользуюсь. Но в облаке игры с защитой на уровне ядра не доступны.  Поэтому например отуда выпилили 2042 и от Риотов игры   з.ы По  сабжу ,я буду просто игнорировать игры с этой фишкой какс денувой.
    • Скажите у вас русификатор пошел ?  Я его ставлю в папку игры и ничего.
    • Это жесть ,я как фанат  колды(но это не точно) очень расстроился. И теперь  не куплю ее,а так бы купил( это то-же не точно). з.ы А если серьёзно то это как подорожник на ранку,вроде и немного поможет ,но читаки все равно будут. Плюс отмазка разрабам,ну вы что читеров очень мало(или вообще нет) мы же сукрбот включили.. Как картоха в свое время  года  4 усиралась  что у них читеров не бывает. У них же вычисления на сервере(все тупые-же)    
    • Я предполагаю, что предпоследним шагом в борьбе за “честную игру” станет не контроль над ПК пользователя, а полный отказ от доверия к пользователю с полным переносом игр на сторону сервера. Эта не гипотетическое будущее. Подобная модель уже реализуется в сервисах типа NVIDIA GeForce NOW. Их пользователи больше не скачивают игровой клиент на 100 ГБ. Они просто запускают приложение, которое, по сути, является продвинутым видеоплеером. Сама игра - со всей ее логикой, графикой и данными - исполняется на мощном сервере в дата-центре. На этот сервер пользователь отправляет только команды ввода (нажатия клавиш, движения мыши), а в ответ получает сжатый видеопоток и звук. Компьютер превращается в “тонкий клиент”, терминал. В такой модели все предыдущие главы войны теряют смысл: Ring 3? На ПК нет процесса игры, память которого можно было бы сканировать. Ring 0? На ПК нет драйверов игры, которые можно было бы подменить или обойти руткитом. DMA и гипервизоры? Атаковать нечего. Вся ценная информация - координаты игроков, состояние мира - находится за сотни километров, за стеной корпоративной безопасности. В этой парадигме серверу абсолютно безразлично, что происходит на компьютере пользователя. Человек может запустить игру хоть на взломанном Windows XP с сотней троянцев - это не будет иметь никакого значения, ведь единственное, что он можете скомпрометировать, - это видеопоток, который и так предназначен для его глаз. Казалось бы, вот финальное решение. Но нет. Гонка вооружений просто переходит на последний, метафизический уровень. Если нельзя взломать игру, можно взломать самого игрока. Точнее, его восприятие и реакцию. Новый и финальный вектор атаки - это чит на основе компьютерного зрения. Механизм выглядит так: Игрок получает видеопоток с игрового сервера. Этот видеопоток перехватывается (например, с помощью виртуального “второго монитора” или внешней карты видеозахвата). Он подается на вход нейронной сети, работающей на том же или на втором компьютере. ИИ в реальном времени анализирует картинку: распознает модели противников, подсвечивает их даже в дыму или тени, вычисляет упреждение для стрельбы, реагирует на вспышку выстрела за долю секунды. Проанализировав ситуацию, ИИ отдает команды на специальное USB-устройство, которое система видит как обычную мышь или клавиатуру, и производит выстрел с нечеловеческой точностью. С точки зрения сервера, все выглядит легитимно. Он получил команду “двинуть мышь сюда” и “нажать левую кнопку”. Он не знает, что эту команду отдал не человек, а цифровой “допинг” человека. Как c этим бороться? Запретить перехват видеопотока? Это технически невозможно и бессмысленно. Любой запрет на уровне ПО обходится аппаратной картой захвата. Запретить ее? Игрок может просто навести камеру на монитор. Кроме того, это убьет всю экосистему стриминга на Twitch и YouTube. Выход остается только один: если клиентскому ПК доверять нельзя, а видеопоток защитить невозможно, то единственным источником правды остается анализ поведения самого игрока на стороне сервера. На сервере запускается другой ИИ - античитерский. Он не ищет файлы или процессы. Он, как психолог-профайлер, анализирует стиль игры пользователя: Насколько плавно движется прицел? Нет ли в его движении микроскопических, но неестественных доводчиков? Каково среднее время реакции пользователя? Не слишком ли оно стабильно и близко к границам человеческих возможностей? Как пользователь отслеживаете цели за препятствиями? Не прилипает ли его прицел к силуэту? В таком будущее битва за честную игру окончательно покинет компьютеры пользователей и превратится в дуэль двух нейронных сетей. Одна будет пытается имитировать человека, а вторая - обнаружить первую.
    • Неожиданно, спасибо! Теперь есть мотивация допройти игру
    • Только, разве что, Циан всю игру огребал.
    • Да кого вообще игрульки волнуют? Тебе говорят, что подобные затычки так или иначе везде появятся, регистрация в любом сервисе рано или поздно будет такого требовать. И естественно, все эти данные будут в полуоткрытом доступе, все выпускаемые железки будут под колпаком. Будет вам и впн, и тор, и торренты и всё остальное.
    • если убрать всю воду из текста, то получается то, о чем я говорил в прошлом посте — в теории у нас античит который будет не возможно, но скорее всего просто очень сложно обойти. и что пора уже забывать про старое железо, не смотря на то, что оно еще что-то может...
  • Изменения статусов

    • Дмитрий Соснов  »  Tirniel

      Привет! ты разбираешься в компьютерном железе, сможешь помочь с советом по апгрейду старого компа?
      · 1 ответ
    • SHAMAH

      Куда вход на сайт убрали и ЗАЧЕМ? Хотел файл скачать, там только медленная загрузка и “зарегистрируйтесь”. Все. Пришлось вручную страницу входа прописывать.
      · 0 ответов
    • Nosferatu  »  behar

      Добрый вечер.
      Подскажите пожалуйста, у вас не осталось случайно исходников для фикса на широкоформатные мониторы для игры Vampire The Masquerade Redemption?
      Если да, то не могли бы вы ими поделиться, а если нет, то прошу прощенья что побеспокоил.
      Заранее спасибо.
      · 0 ответов
    • AlcoKolyic  »  makc_ar

      Здраствуйте! Извините, а можно попросить ссылку на место где можно взять перевод (патч или образ игры с переводом) El Shaddai: Ascension of the Metatron для ps3, пожалуйста? А то в теме к этой игре у меня не получилось найти работающие ссылки… Первая ведет в группу в которой удалены большинство постов, а пост с этой игрой ведет на сайт https://psnext.ru который сейчас не имеет отношения к видеоиграм. 
      · 0 ответов
    • oleg72  »  Boor

      https://www.skidrowcodex.net/fate-reawakened-goldberg/
      · 0 ответов
  • Лучшие авторы


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

×