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

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

UnityText — работа с текстом бинарных файлов 

wL3OS70.png

Версия: 2.1.6841.19286

Скачать

T7QLOnr.png     zx29Naf.png

О программе

 

Утилита предназначена для редактирования текста в бинарных файлах. В первую очередь это так называемые «MonoBehaviour» файлы игр, разработанных на Unity.

Изначально утилита создавалась для внутреннего использования для помощи в переводе Unity-игр, в виду чего в ней не закладывался большой потенциал, что привело к ряду ограничений и упрощений. Но за 3 года существования она вышла за изначальные рамки, и несмотря на то, что в ней много чего изменилось за это время, мне продолжают регулярно поступать вопросы. Поэтому было принято решение выпустить «мажорное» обновление и создать тему на форуме, в которой описать, что и как работает.

О версии 2

 
  • Полностью переписанный код
  • Добавлены/расширены настройки
  • Редактирования диапазонов символов, реализовано через интерфейс
  • Новый фильтр с новыми опциями
  • Предустановки для настроек и фильтров
  • Экспорт в CSV в новом формате, с расширенными настройками
  • Возможность работы с любыми файлами (не только из Unity, имеющими выравнивание данных в 4 байта и текст в кодировке UTF-8)

О работе

 

Некоторые пользователи UnityText не до конца, а может и совсем, не понимают принцип ее работы. Утилита не работает с каким-то определенным форматом данных, она просто сканирует файл в поисках текста по определенным условиям. Именно это позволяет UnityText работать с любым файлом. Важно понимать, успех результата будет зависеть от корректности настроек утилиты, но даже это не всегда может гарантировать 100% верный результат. Еще более важно, несмотря на то, что утилита изменит весь текст, который она найдет в файле, это может вызвать проблемы в работе игры/программы. Проблема кроется в структуре бинарного файла, а именно в том содержит ли она в себе размеры (общий или отдельных блоков), ссылки на данные (смещения). Однако все выше написанное относится к тем, кто соберется использовать UnityText для не Unity-игр.

О диапазонах символов

 

Именно диапазоны символов отвечают, в первую очередь, за то, будет ли принята найденная строка утилитой. Раньше они задавались исключительно через cfg файл, что для кого-то было затруднительно.

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

Предваряя вопрос «Почему не использовать все символы?», отвечу, что это сделано чтобы избежать лишних «срабатываний». Даже если отсеять все непечатные символы (из групп control, format, surrogate), то останется тысячи, которые могут помешать корректному определению «правильной» строки. К тому же, таким образом вы всегда можете отсеять ненужные языки (например, использующие иероглифы).

Для задания диапазонов символов нужно нажать кнопку «C» на панели кнопок. Все доступные (описанные в файле ucd.xml) символы Unicode собраны в «Наборах символов/Character Set», они разбиты на блоки. Для удобства символы разных категорий (типов) окрашены в разные цвета. По умолчанию это зеленый для букв, оранжевый для цифр, фиолетовый для знаков пунктуации, синий для специальных знаков (математических, технических, денежных и т.п.), красный для разделителей и серый для остальных. Цвета можно изменить, см. раздел «О другом». Добавлять/удалять символы из диапазона можно с помощью мышки (по одному, диапазоном, строками или целыми блоками) или из панели «Выбрать диапазон/Select Range». На панели необходимо задать начальный символ диапазона или его код Unicode (десятичный или шестнадцатеричный) и конечный символ, затем нажать кнопку «+» или «-». Помимо этого, можно выбрать сразу все буквы алфавитов (прописанных в cfg). Для этого нужно нажать кнопку «С», выбрать алфавит из списка, а затем нажать кнопку «+» или «-».

Панель «Обновление данных/Update Data» позволяет обновить информацию о символах с сайта unicode.org и алфавитах с сайта unicode-table.com. Вы можете выбрать какая информация будет обновлена: о блоках Unicode (флажок «Данные блоков/Block Data»), о символах (флажок «Данные символов/Char Data»), о категориях/группах символов (флажок «Категории/Categories»), о алфавитах (флажок «Алфавиты/Alphabets»). Флажок «Блок управляющих символов/С0 Control Block» добавляет отдельный блок управляющих символов (U+00 — U+1F), который в Unicode включен в блок «Basic Latin».

Также вы можете изменить шрифт отображения символов, это полезно если шрифт по умолчанию не содержит необходимых вам символов. Вы можете выбрать один из установленных в системе шрифтов из списка Fonts или загрузить свой нажав кнопку «…».

Диапазоны символов можно сохранить в предустановках (Presets) вместе с настройками.

В версии 2.1 появилась несколько новых возможностей. Во-первых, возможность скрывать блоки в которых ничего не выбрано (кнопка «☑»). Во-вторых,  возможность выделять в блоке только буквы (кнопка «Б/L») или только печатные символы (кнопка «П/P»). Данные фильтры применяются только при выделении целого блока, т.е. при клике по флажкам. В-третьих, добавлен пошаговый поиск в по названиям блоков, просто начните набирать с клавиатуры названия блока, при этом фокус должен быть на «Наборах символов/Character Set». Ну и последняя добавленная функция — это «Пошаговое сканирование/Step-by-step Scan» (кнопка «С/S»). При данном сканировании учитываются все печатные символы (с 10%-ным допуском непечатных) и, если символы не выбраны в «Наборах символов/Character Set», будет предложено их добавить в диапазон.

Также в версии 2.1 появилась настройка «Печатные символы вместо диапазонов/Printable Instead of Ranges», которая позволяет отказаться от настройки «Диапазонов символов/Character Ranges». Это не панацея, так как может привести к ошибочным результатам, но иногда может пригодиться.

О настройках

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

Для отображения дерева настроек нужно нажать кнопку «O» на панели кнопок. Все настройки для удобства разбиты на группы. Помимо их значений, можно указать будет ли сохраняться настройка в предустановках. Через контекстное меню можно установить значения всех настроек по умолчанию, а также пометить их все для сохранения.

  • Настройки поиска (Search Options)
    Лучше не завышать эти настройки, чтобы потом не выяснять почему утилита «зависла», выставляйте их с умом и в меру потребностей.
    • Глубина поиска (Search Depth)
      Указывает количество обрабатываемых подкаталогов при поиске файлов для сканирования, т.е. на сколько уровней «вглубь» опустится поиск
    • Максимальный размер файла (Max File Size)
      Файлы, размер (в байтах) которых превышает данное значение не будут обрабатываться утилитой, однако они появятся в списке результатов с пометкой «#FileSizeLimit#». Опция добавлена, чтобы большие файлы не тормозили общий процесс, вы всегда (если это требуется) можете просканировать их отдельно.
  • Настройки сканирования (Scan Options)
    • Big Endian
      Устанавливает порядок байтов от младшего к старшему, стоит обратить внимание при сканировании консольных ресурсов.
    • Длина подстроки (Substring Length)
      В UnityText предполагаемая строка текста проходит проверку не полностью (символ за символом), а по определенному алгоритму. Строка разбивается на подстроки указанной длины, и каждая подстрока проверяется все менее тщательно. Т.е. у первой подстроки проверяется каждый символ, у второй — каждый второй, у третьей — каждый третий и т.д. до достижения значения «Частоты», заданное опцией, описанной ниже.
    • Частота (Frequency)
      Значение частоты проверки подстрок алгоритма, описанного выше, после которого частота перестает изменяться. Т.е. при значении равном 4 для третей подстроки будет проверяться каждый третий символ, для четвертой — каждый четвертый, для пятой — также каждый четвертый, как и для всех последующих подстрок.
    • Минимальная размер строки (Min String Size)
      Строки, размер (в байтах, не путать с длинной в символах) которых меньше данного, не будет учитываться утилитой. Важно отметить, что строка не просто будет пропущена, а утилита будет дальше обрабатывать ее данные как бинарные. Также стоит быть аккуратным, указывая значение равное 1, т.к. это может привести к ошибочным результатам сканирования.
    • Максимальный размер строки (Max String Size)
      Значение размера (в байтах, не путать с длинной в символах), указывающее максимально допустимый размер строки, все превышающие, как и в случае с «Минимальной длиной», не будут учитываться. За все время мне попался только один файл, который содержал в себе «выдающуюся» строку, содержавший какой-то JSON-текст, ее размер был равен почти 450 000 байт. Но это скорее исключение, поэтому рекомендуется выставлять небольшие значения, это может значительно ускорить сканирование.
    • Печатные символы вместо диапазонов (Printable Instead of Ranges)
      Данная настройка упраздняет «Диапазоны символов». При ее включении строка может содержать в себе любые печатные символы. Стоит отметить, что это может привести к некорректным результатам.
    • Пропускать без букв (Skip Without Letter)
      Строка с длиной не превышающей длину подстроки (Substring Length), и которая не содержит букв, не будет учитываться при сканировании.
    • Упрощенная проверка (Simple Check)
      Будет проверено только начало строки (первая подстрока)
    • Динамический фильтр (Runtime Filter)
      Фильтр будет применен во время сканирования, таким образом, отфильтрованные строки не попадут в итоговые результаты.
  • Настройки экспорта в Csv (Csv Export Options)
    • Внешние бинарные данные (External Bin Data)
      Новый формат хранения данных, бинарная часть из csv файла помещается в отдельный файл, что делает csv «чище» и значительно уменьшает его размер
    • Esс-последовательности (Esc-Sequences)
      Происходит замена некоторых символов на escape-последовательностями (сочетание косой черты и символа) при экспорте, обратная замена при импорте csv
      \n  — новая строка
      \r  — возврат каретки
      \t  — горизонтальная табуляция
      \\  — обратная косая черта
    • Столбец с индексом (Index Column)
      Добавляет в файл csv столбец с порядковым номером строки, может быть полезен для возвращения исходной сортировки, которая важно при импорте csv
    • В несколько столбцов (Multicolumn Mode)
      Строки между которыми нет данных, экспортируются в несколько столбцов. Это полезно для файлов, которые содержат в себе несколько локализаций. Однако при этом не учитываются пустые строки.
      • Предполагать наличие длины (Assume Array Length)
        Опция, расширяющая работу предыдущей. При ее включении утилита анализирует данные, предполагая, что перед строками указывается их количество, отдельно для каждого массива (группы) строк. Данная опция учитывает пустые строки.
    • Максимальная длина строки в ячейке (Max String Length in Cell)
      Текст, длина которого превышает указанное значение, разбивается на подстроки, которые размещаются в отдельных ячейках. Опция, в первую очередь, призвана избавить от ограничения на длину текста в ячейках электронных таблиц
      • Разбивать по разделителям (Split by whitespace)
        Опция, расширяющая работу предыдущей. Текст, по возможности, разбивается по переносам строки, табуляции, разделителям и знаком пунктуации.

О фильтрах

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

Для включения фильтра нужно нажать кнопку «Ф/F» на панели кнопок. Важно понимать, что фильтр применяется только когда кнопка нажата, т.е. когда панель «Фильтр» («Filter») видна. В новой версии UnityText фильтры не применяются во время сканирования, они применяются к уже найденному тексту, что позволяет менять их без повторного сканирования данных. Также добавилась возможность временно отключить тот или иной шаблон фильтра, сняв флажок возле него. Все отфильтрованные строки вычеркиваются из списка результатов (отображаются зачеркнутым шрифтом).

Все основные команды фильтра доступны через контекстное меню. Через него можно добавить, отредактировать или удалить паттерн, а также полностью очистить фильтр. Кроме того, там же доступен пункт для обновления фильтра. По умолчанию обновление происходит при смене фокуса с панели фильтра. Новый паттерн фильтра можно добавить также, как и в старой версии, отредактировав «New Pattern», однако для того чтобы ввести многострочный текст придется воспользоваться контекстным меню. При редактировании фильтра через контекстное меню отобразится многострочное поле для ввода текста. Подтвердить или отменить действие можно с помощью кнопок или клавиатуры, соответственно Ctrl+Enter и Esс.

Список доступных настроек для фильтра расширился. Теперь в него входят следующие настройки:

  • Учитывать регистр (Case Sensitive)
  • Строка целиком (Whole String Only)

  • Использовать регулярные выражения (UseRegularExpressions)
    Подробнее о том какие регулярные выражения используются можно узнать здесь

  • Соседние строки (NeigborString)
    Если указанный шаблон фильтра соответствует строке и значение этой настройки не равно 0, то фильтруется строка, положение которой отличается на значение указанное в опции

    • Включая строку шаблона (IncludePatternItem)
      Будет отфильтрована и сама строка, которая соответствует шаблону 
    • Включая промежуточные строки (IncludeIn-BetweenItems)
      Все строки между текущей (удовлетворяющей шаблону) и соседней ей (отстоящую на указанную позицию) будут отфильтрованы

  • Маска файла (File Mask)
    Фильтр будет применяться только к файлам, имена которых удовлетворяют фильтру. Фильтр применяется только к именам файлов, не к именам каталогов

Для фильтров предусмотрено сохранение в предустановках подобно диапазонам символов.

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

Об обновлениях

 

В программе предусмотрена автоматическая проверка обновлений, но для ее работы нужно наличие SSL библиотек (libeay32.dll и ssleay32.dll). Они уже могут быть установлены (зарегистрированы) в вашей системе, например, другими программами. Узнать об этом можно просто открыв окно «About» (кнопа «?»). Если в открывшемся окне, есть флажок «Check for Update» значит библиотеки найдены. В случае их отсутствия и желания использовать функции обновления, вы можете скачать библиотеки самостоятельно, например, отсюда или из другого источника. Нужна версия для Win32. Если вы скачивали библиотеки отдельными файлами, то дальше вы можете их зарегистрировать в системе (для последующего использования другими утилитами) или просто скопировать в папку с UnityText.

Помимо проверки обновления, в UnityText есть возможность обновления данных по символам Unicode (с официального сайта), а также информации об алфавитах (с ресурса unicode-table.com). В отличии от первого, второму также нужно наличие SSL библиотек.

О прочем

 
  • Как работать с другими (не «Unity») файлами?
    Как я писал возможность такая в новой версии предусмотрена, но так как она не тестировалась, я ее решил скрыть. Если кому-то в ней заинтересован, то напишите мне в ЛС.
    Начиная с версии 2.1 «Расширенные настройки/Expert mode» доступны всем. Экспериментируйте на здоровье =)
  • Где русский?
    Это, как мне кажется, самый странный вопрос, который мне приходится слышать… от переводчиков =) Доступен начиная с версии 2.1. Скачать можно здесь.
  • А вы знали, что?..
    • В поле ввода пути можно использовать Enter для подтверждения
    • Там же можно указывать расширенные маски файлов с использованием символов подстановки
    • Там же можно указывать через «;» несколько масок файлов
    • В результатах сканирования можно сворачивать узлы файлов (двойной клик или стрелка влево на имени файла)
    • В предустановках всегда есть возможность загрузить последнюю не сохраненную, очистив поле ввода и нажав Enter
    • Там же, при заполненном поле, нажатие Enter позволит сохранить/загрузить предустановку
    • С помощью файла cfg, вы можете менять внешний вид программы, например, можно изменить размер/цвет шрифта/компонента
    • Для изменения максимального количества хранимых предустановок для путей, необходимо в файле cfg отредактировать значение атрибута «Tag» для узла «Components\btnPresetPathAdd»
    • Для изменения цвета категории символа необходимо в файле cfg добавить или отредактировать атрибут «Color» для узла «UCD\Category» (работает и для дочерних узлов), значение цвета задается в шестнадцатеричном формате BGR
    • Для обновления данных алфавитов можно указать язык (поддерживаемый unicode-table.com), для этого в файле cfg нужно добавить атрибут «Locale» для узла «UCD\Alphabets» со значением кода ISO 639-1 (двухбуквенное обозначение)
    • Для увеличения размера списка последних путей, необходимо в файле cfg отредактировать значение атрибута «Tag» для узла «Components\cbbPath»
    • Можно обмениваться предустановками через буфер обмена с помощью комбинации клавиш Ctrl+Shift+C/Ctrl+Shift+V, находясь внутри поля предустановок. При экспорте в буфер помещается xml, который можно передать другому пользователю.
  • Что еще может быть полезным для локализации игр на Unity?

История версий

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

 

Изменено пользователем StiGMaT
новая версия, редактирование информации
  • Спасибо (+1) 1
  • +1 2

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


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

Заранее извиняюсь если есть косяки в тексте или форматировании, редактор на новой версии форума “тихий ужас” =(

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

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


Ссылка на сообщение
В 13.09.2018 в 23:16, Ultraz46 сказал:

Распаковал ассеты заново с вышеописанными настройками с батника с параметром:


for %%F in ("level*." "*.assets" "*.unity3d") do "UnityEX.exe" export "%%F" -t 114

Получилась папка 605 кб. на этот раз результат получше, кое что нашлось но мало (Модельки двери, окна, стекла, автомобили и тд. ну они не нужны. Шрифты разные. NPC, названия локаций, названия зданий. И самое полезное что нашлось это немного предметов для перевода) много чего отсутствует! Очень тяжело понять что есть что в этой куче а еще много чего дублирующегося.


Для начала стоит:
- Скачать Total Commander
- В левом (или правом окне) переходим в папку с игрой (лучше всего зайти в НазваниеЮнитиИгры_Data)
- Жмём на значок бинокля, откроется поиск (убедитесь, что место поиска соответствует нужной папке). 
- Жмём галочку на “с текстом”
- Везде убираем галочки, оставляем их только на:
(Левый столбец: Только слова целиком)
(Правый столбец: 
В кодировке ANSI (Windows)
В кодировке ASCII (DOS)
UTF-16
UTF-8)
- Вбиваем кусок текста (лучше всего, чтобы в игре это была часть предложения без всяких переносов, жирного или выделенного цветом текста), который встречался в каком-то элементе игры (в субтитрах, в интерфейсе и так далее), после чего  жмём “начать поиск” и ждём. В итоге выдаст assets, level файлы, либо вообще какие-то unityfs бандлы. 
- В дальнейшем из найденных архивов и стоит извлекать файлы с минусовым типом, а из них извлекать текст (Либо там вообще могут быть текстовики с 49-м типом).
- Если текст не был найден, хотя лишних галочек (типа “учитывать регистр”) не стоит, то стоит произвести поиск по другой части предложения или словосочетанию из него, либо вообще отдельному редкому слову.
- Если текст всё равно не был найден, то скорее всего  он лежит в Assembly-CSharp.dll.
- Если и в dll этого текста нет, то скорее всего он находится на одной из текстур внутри архивов.

//Иногда для точности поиска можно ставить галочку на "учитывать регистр”, только в таком случае размер букв должен быть таким же, как в игре, 1 в 1.
///Если мы извлекли все level и разный текст лежит в куче разных level разного типа, да и вообще всё плохо, то можно попытаться найти в этих разных level текст одной разновидности (субтитры, допустим), после этого закинуть два или три бинарника подобного вида в HEX-редактор, лучше всего HxD. Смотрим на средний столбец и ищем совпадающие где-то в начале (шапке) последовательности, допустим, вида:
01 00 00 00 F7 02 00 00 00 00 00 00 0C 00 00
(Чем сложнее кусок последовательности будет и меньше в нём будет 00, тем лучше)
//После нахождения последовательности идём в Total Commander и ставим галочку на “HEX-код” и вставляем в окно поиска найденную последовательность, после чего начинаем поиск в Unity_Assets_Files. Скорее всего, после этого отсеится большая часть файлов с текстом данного типа. Их можно перемещать на панель и затем оттуда перемещать в какую-то папку. 
Остальные текстовые элементы игры ищутся таким же образом. Полезная схема, когда в игре под сотню level архивов. Хотя не даёт 100% гарантии, что найдётся абсолютно всё. 

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

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


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

Можно ещё вот так искать и извлекать файлы, в UnityEX 1.7.7.

for %%F in ("level*." "*.assets" "*.unity3d") do "UnityEX.exe" search "%%F" -sp “New Game” -lf “find.txt” -ef

или так из файла значения для поиска брать из первой строки

for %%F in ("level*." "*.assets" "*.unity3d") do "UnityEX.exe" search "%%F" -sf “search.txt” -lf “find.txt” -ef

И обычно если в определённых файлах с отрицательным типом текст есть то он будет и в других файлах с таким же типом.

Изменено пользователем DZH
  • Спасибо (+1) 1

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


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

Hi, I got the trouble with Unity text. UnityText cannot load the files. Please help me. Thanks

qD6cI6N.png

 

Link files: https://drive.google.com/file/d/1J1MMrqLaMtxwuCaAcRzoSidfA0kfxQP0/view?usp=sharing

 

Sorry, Its work fine. My bad :(

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


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

@dawningteamvn, UnityFont довольно сильно устарела, в связи с чем встречается все больше и больше шрифтов (а возможно и все), которые она не поддерживает. И твой шрифт — не исключение. Да, по сути это все тот же формат (Type 2), но с немного изменившимися данными в начале и в конце (поэтому утилита и не читает его).

UnityFont давно нуждается в серьезном обновлении, но я не уверен, что хочу заниматься этим сейчас или в ближайшем будущее.

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


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

@dawningteamvn, UnityFont довольно сильно устарела, в связи с чем встречается все больше и больше шрифтов (а возможно и все), которые она не поддерживает. И твой шрифт — не исключение. Да, по сути это все тот же формат (Type 2), но с немного изменившимися данными в начале и в конце (поэтому утилита и не читает его).

UnityFont давно нуждается в серьезном обновлении, но я не уверен, что хочу заниматься этим сейчас или в ближайшем будущее.

@StiGMaT, I am a person who loves the tools you have created. They are really useful to me. I hope you can help me handle this font. Thank you very much

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


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

Я менял текст с этой программой во многих играх но когда менял текст в игре Broken Reality - игра крешится а тот текст который я менял совсем проподает. Как я понимаю дело в игре но можно ли это как то решить?

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


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

@Rauaaaan, мне сложно судить на словах, но важно понимать,

В 18.02.2018 в 15:47, StiGMaT сказал:

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

 

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


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

@Petr Dgm Honzajk, она извлечет то, что ей указать, т.е. все зависит от того как ее настроить :wink: В некоторых файлах есть возможность использовать “Multicolumn Mode” при экспорте в CSV, в таком случае каждый язык будет в своем столбце, но опять же это требует предварительной настройки и фильтрации (пример данных из My Friend Pedro).

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


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

Добрый день.

У меня такая проблема:

Я распаковал файлик через UnityEX, отредактировал текст через Unity_Text и никак не могу запаковать его обратно…
Я просто не понимаю что делать. Нажимаю экспорт — экспортируются .csv и .bin файл, а что с ними делать? не понятно..
При упаковке через Unity_Text создается папка с кучей файлов, но её я в UnityEX(чтобы запаковать) засунуть не могу.
Помогите пожалуйста

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


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

@Exty41 экспортируется в csv для удобства редактирования через Excel и ему подобные, в крайнем случае любым текстовым редактором. В bin файле содержаться остальные данные (не текстовые или отфильтрованный текст) и он нужен для последующего восстановления файлов с текстом.

В 24.09.2020 в 08:51, Exty41 сказал:

При упаковке через Unity_Text создается папка с кучей файлов

А что должно создаваться? Если в утилиту была загружена куча файлов, то логично что и будет выгружена та же куча но уже измененных файлов, заменяй ими оригиналы, и перепаковывай с помощью UnityEX.

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


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

Как импортировать файл csv, с уже переведенными строками текст, обратно в UnityText?

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


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

@Sashaok123, просто открыть его (кнопка csv) :wink: Или с этим какие-то проблемы?

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


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: DragonZH
      Программа для работы с архивами Unity.

      Если вы уже читали всю информацию.
      Так как информация добавляется, вы можете сравнить изменения текста и узнать, что было добавлено. (WinMerge 2.14 сравнение текста).
      https://web.archive.org/web/20250408171028/https://forum.zoneofgames.ru/topic/36240-unityex/
       
      Скачать UnityEX yandex
      Скачать UnityEX dropbox
      Сборник bat файлов для консольного режима
      UnityEX_Soft для дополнительной конвертации файлов и получения текстовых дампов xml, папка подключается из настроек UnityEX
      Несколько шаблонов xml для проектов на cpp2il

      Покупка ключа платных версий UnityEX:
       
      Блог Boosty
      https://boosty.to/dragonzh

      В комментариях по желанию и возможности укажите “За UnityEX”.
      Платная версии UnityEX
      Ultimate версия, поддержка юнити до 2020-6000 и возможно выше последней текущей, обработка звуков, видео, спрайтов, обработка текстовых дампов.
      Оплата происходит на реквизиты отсюда или аналогичные из программы. После оплаты нужно связаться со мной @DragonZH по оплате вышлю ключ (Или по связаться почте dragonzh@yandex.ru).
      Ключ нужно вести в обычной версии программы там где кнопка ? вверху справа.
      Применить и появятся ссылки на Ultimate версию, которую нужно будет скачать.
      Для активации нужен интернет.
      В версии Ultimate после номера версии везде будет добавлено слово Ultimate.
      Передача ключа другим людям не допускается, иначе ключ будет заблокирован!
      Также возможна блокировка ключа при использовании глобального VPN или прокси! Браузерным VPN или VPN роутера можно пользоваться.
    • Автор: SerGEAnt

      Специалисты считают, что виной всему перенасыщение рынка, начавшееся в период пандемии. Увольнения продолжатся в течение всего 2024 года.
      Сайт Video Games Layoffs подсчитал, что за январь в компаниях, связанных с игровой индустрией, было уволено уже 5700 человек. Это больше половины от числа уволенных в 2023 году (10,5 тысяч).

      Лидеры по числу сокращений:
      Microsoft — 1900 человек Unity — 1800 человек Riot Games — 530 человек Twitch — 500 человек PlayTika — 350 человек Специалисты считают, что виной всему перенасыщение рынка, начавшееся в период пандемии. Увольнения продолжатся в течение всего 2024 года.

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

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

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

    • Чел хочет чтобы как у конкурентов было,где фамильяра Айрис перевели как <знакомого> )))
    • Не ну выбор разрешения то есть.  
    • А, типа Брэйвер, Старшауэр и Фокуст Шот эстетически читать приятнее, чем латиницу? А ещё лучше читать описание навыков в духе: Наносит удар “Удар с воздуха”, или при нанесении удара “Истинный удар”, чем их английские варианты
       Понял-принял, делать так, конечно же, не собираюсь 
    • Прошло 16 лет, а русификатора у инди игры досих пор нет. Это немыслимо) 
    • смена разрешения есть и настройки под ретро 
    • Добрый день, скачал игру в Steam версия 0.9.0.5 устанавливаю русификатор и при входе в игру меню игры исчезает полностью, ничего не могу сделать в игре, даже выйти, приходится через Alt+F4 закрывать, помогите, оч хочу в неё поиграть.
    • Прямой эфир будет как обычно идти на наших Twitch, ВК, а также в Telegram. Товарищи! Все свободные граждане приглашаются вечером на просмотр фильма «Шпионские игры». Начать планируем после 22:00 по московскому времени. Прямой эфир будет как обычно идти на наших Twitch, ВК, а также в Telegram.
    • История русской локализации Tales of Rebirth (PS2)
      Глава 6. Разбор исполняемого файла ELF с помощью IDA Pro
      https://temple-tales.ru/games/tor/russian_localization.html Если попалась игра, в которой куча строк текста находится в исполняемом файле и с этим некому помочь, то, скорее всего, вам прямая дорога к таким инструментам обратной разработки, как IDA Pro или Ghidra. Для новичков это очень непростое погружение, и многое в этих приложениях может быть непонятным. Тем не менее часть из этого я попытаюсь объяснить, так как со всеми текстами в файле ELF Сказаний Перерождения мне пришлось поработать очень активно. И всё это для возможности гибких изменений, чтобы работать с текстом без ограничений по количеству символов на каждую строку. На изображении наглядная визуализация распределения поинтеров на блоки по разным местам исполняемого файла:
      Если мы просто откроем исполняемый файл SLPS_254.50 в хекс-редакторе, то при беглом просмотре рано или поздно наткнёмся на блоки текста, которые распределены в хаотичном порядке близко к самому хвосту файла. На изображении выше я попытался визуально изобразить степень распределения текста и поинтеров в этой области. Все поинтеры скучкованы по разным блокам, а всего этих блоков более четырёх десятков. Кроме того, многие из них попадаются прямо посреди участков с записанными текстовыми данными. Всё это очень непросто отследить, высчитать, а также написать алгоритм для извлечения и вставки текста. В этом нам поможет комплекс нескольких программ. По началу мне советовали использовать специальное приложение под названием Kruptar авторства Джинни (https://magicteam.net/index.php?page=programs). С одной стороны, я посчитал его слишком запутанным, а с другой — простым, так как программа имеет ряд ограничений, а созданный в ней проект привязан к своему файлу, в котором сконцентрированы все данные. Это, в свою очередь, накладывает ряд неудобств из-за невозможности внешней манипуляций на каждом шагу. Затем мне посоветовали поэкспериментировать с IDA Pro — эта программа умеет работать с архитектурой консолей PS1-2. Впоследствии я отказался от работы с IDA Pro и перешёл на более удобный мне способ извлечения и упаковки текста в исполняемых файлах. Тем не менее иногда я до сих пор открываю различные файлы PSX-EXE или ELF в IDA Pro для поиска каких-то данных, так как эта программа строит удобную карту взаимосвязей между различными функциями. Поэтому для начала я покажу вам, как искать поинтеры к строкам текстов в исполняемом файле с использованием IDA Pro и простого хекс-редактора. ⬜ Этап 1. Поиск любого текста в SLPS_254.50 через хекс-редактор и IDA Pro а) Открываем любой хекс-редактор и ищем текст. К этому моменту у нас уже должен быть набит глаз для таких поисков. Возьмём для примера блок со строками текста, в котором находятся названия сценок. Первая строка начинается со смещения 0x1133E0, следующая с 0x1133F8 и т.д. О том, что именно этот блок является текстом, можно легко понять, если использовать на этой области преобразование кодировки текста, о которой я уже писал во втором этапе в четвёртой главе.
      б) Теперь загружаем SLPS_254.50 в IDA Pro. Программа автоматически распознаёт файл как "ELF for MIPS", а среди перечня работы с архитектурой процессоров должна автоматически выбрать "MIPS little endian". Нажимаем "ОК" и ждём, как приложение просчитает взаимосвязи всех функций. После полного анализа вы услышите звуковое уведомление. Затем щёлкаем по вкладке "Hex View-1" и наблюдаем по головной части данных, что программа просчитала весь файл немного не так, как располагаются значения при открытии через хекс-редактор. Дело в том, что все смещения в IDA Pro указаны сразу с учётом расположения этих данных относительно оперативной памяти консоли. Поверьте, это весьма удобно для поиска поинтеров, которые имеют не фактический адрес. А ведь практически все поинтеры в исполняемом файле ELF именно такого типа. Теперь нам нужно найти здесь начало того же текста, как это было сделано в хекс-редакторе на смещении 0x1133E0. Для этого мы открываем в верхней строке вкладку "Search" и выбираем пункт "Sequence of bytes". Далее вводим все значения той самой строки, которую нашли через обычный хекс-редактор: 99 9c 9a 6e 9a 83 9a 8d 9a 5d 99 cd 9d 61 99 a6 99 cd 99 9d. Затем нажимаем "ОК" и, если всё написано верно, программа покажет расположение того самого текста.
      ⬜ Этап 2. Поиск поинтеров в SLPS_254.50 а) Обратите внимание на выделенные красным цветом смещения строк в хекс-редакторе и IDA Pro на предыдущих двух изображениях. Имея на руках оба этих адреса, мы можем спокойно высчитать поправку для поиска будущих поинтеров. Для этого берём числовое значение смещения 0x2123E0 (IDA Pro) и вычитаем из него значение 0x1133E0 (хекс-редактор), а как результат получаем число поправки FF000. Теперь, когда нам известно смещение, где находится текст и число поправки, мы можем высчитать значение поинтера и адрес его расположения. б) В этом и следующем пунктах я опишу метод поиска поинтеров через любой хекс-редактор. После того, как находим любую строку с текстом, запоминаем числовое значение смещения этой строки (в нашем примере это 0x1133E0), а затем к этому числу прибавляем поправку FF000 и получаем значение 002123E0. Если попытаться найти это значение через поиск, то у вас ничего не получится, потому что текущий вид этого значения имеет тип порядка байтов big-endian. Напоминаю, что принцип построения порядка байтов в поинтерах PS2 консоли имеет вид little-endian, а это значит, что необходимо развернуть полученное значение по байтам наоборот: 00 21 23 E0 >> E0 23 21 00.
      в) Теперь, когда у нас на руках есть реальное значение самого поинтера, то его можно легко найти в исполняемом файле. Просто копируем 4 байта "E0 23 21 00" в строку поиска и жмём искать по всему файлу. Результатом должно быть одно найденное место, которое и будет являться поинтером. Запоминаем, что начало и конец этого поинтера находятся на смещениях 0xF5368 и 0xF536B.
      г) Метод поиска поинтеров через IDA Pro гораздо проще, чем через хекс-редактор. Потому что вся разница сводится к тому, что на этапе 1 в пункте "б", найденный текст по первому байту уже подсвечивается смещением, которое можно спокойно вводить в поиск в пункте "Sequence of bytes". Только не забудьте во всплывающем окне поиска поставить галочку "Find all occurences", чтобы поиск работал по всему файлу.
      Достаточно просто искать поинтеры таким вот способом, не правда ли? Если посмотрим на весь диапазон поинтеров, которые располагаются друг за другом выше от найденного указателя, то обнаружим, что все поинтеры, которые скучкованы в этом блоке, находятся в диапазоне от 0xF42A8 до 0xF536B. Всё, что находится за пределами этого диапазона — это уже совсем другие данные или другая группа поинтеров. Именно с этим диапазоном нам и нужно будет дальше работать. Потому что найти всё это одно дело, а составить алгоритм для правильной адресации, извлечения текстов с учётом разделителей, вставки изменённого текста с учётом пересчёта поинтеров и многого другого — совсем другая задача, которая требует использования совсем других подручных средств. В этом нам поможет приложение "abcde", которое я указал среди перечня сборника уникальных программ во второй главе, а также небольшое дополнение к нему под названием "ELF Text Injector", которое я специально заказывал у RikuKH3, чтобы облегчить себе работу по вставке текстов в ELF-файлы. Далее я поэтапно покажу, как пользоваться этими приложениями, которые не имеют графический интерфейс и в которых все настройки прописываются в основном в качестве числовых значений.

      ⬜ Этап 3. Установка Strawberry Perl, Python и работа с приложением abcde а) Для начала необходимо установить Strawberry Perl. Это бесплатный дистрибутив на языке программирования Perl для операционных систем Windows. Он включает в себя всё для запуска и разработки Perl-приложений. Скачать его можно с официального сайта: https://strawberryperl.com. Без этого abcde работать нормально не будет, так как приложение написано на этом языке. После этого требуется установить дистрибутив Python. "Он тоже бесплатный, но на другом одноимённом языке программирования. Его тоже можно скачать с официального сайта: https://www.python.org/downloads. Один из моих знакомых Ethanol (уважаемый программист) написал специальный код на языке Python для работы с приложением abcde. Поэтому будем использовать его наработки.
      б) Далее к этому пункту я прилагаю архив с приложением abcde v0.0.10, который включает в себя все готовые настройки для работы с нашим типом поинтеров. Его можно распаковать в любую папку. Внимание!!! Для корректной работы программы и всех скриптов необходимо, чтобы путь к программе не содержал никаких пробелов. В противном случае приложение не будет извлекать текст и вставлять его обратно. Скачать #1
      https://temple-tales.ru/games/tor/data_design/files/abcde_v0.0.10.zip Скачать #2 (зеркало)
      https://disk.yandex.ru/d/CRbc-SWxnXHC-w Красным я выделил файлы, которые были созданы дополнительно для работы с приложением, а зелёным - те, которые относятся к ресурсам игры: исполняемый файл и таблица с кодами для правильной идентификации кодировки игры.
      в) Теперь нужно корректно настроить работу программы для извлечения строк текста. Сначала подготавливается TBL для работы с кодировкой игры (ToR.tbl). Об этом я уже рассказывал в четвёртой главе. Только разница с программой CODES в том, что abcde читает другой формат таблицы. Разделитель значений здесь другой. Кроме того, программа ругается на использование символов "<" и ">", а значит, в нашей таблице мы их опустим и заменим на "[" и "]" соответственно. Готовая таблица в формате TBL для приложения abcde прилагается в архиве, ссылка на который размещена в прошлом пункте.
      г) Далее настраиваем работу с поинтерами через файл "!abcde_script_skits.txt". Все строки настроек я описывать не буду — пройдусь по основным, которые необходимы для понимания принципа работы. Этой базовой информации хватает для того, чтобы работать с исполняемыми файлами консолей PS1-2 и других аналогичных файлов, в которых поинтеры лежат в открытом виде.
      #GAME NAME: Tales of Rebirth
      Здесь указывается название игры. Данная строка ни на что далее не влияет, и является по своей сути простой меткой на случай, если у вас будет накоплено много файлов данного типа для разных игр. #BLOCK NAME: Skits
      В этой строке прописывается название блока текста. А это на тот случай, если таких скриптов будет много в рамках одной игры. В принципе, можно даже указать название файла, если в нём всего 1 блок поинтеров и создавать другие нет надобности. #POINTER ENDIAN: LITTLE
      С этого параметра начинается ввод важных данных, которые дают понять, с каким типом порядка байтов программе необходимо работать: big-endian или little-endian. В нашем случае это little-endian (особенность платформы PS2), но если бы мы работали с какой-нибудь игрой на ПК, то, скорее всего, пришлось бы указать big-endian. Приложение считывает синтаксис в этой строке только в таком виде:
      BIG
      LITTLE #POINTER TABLE START: $F42A8
      #POINTER TABLE STOP: $F536B
      Помните, как был найден диапазон поинтеров для блока названия сценок? Об этом я писал на этапе 2 после пункта "г". Именно этот диапазон и нужно прописывать в этих двух строках. Одна из них указывает начало смещения, с которого начинается таблица поинтеров для данного блока, а вторая указывает самый последний байт крайнего поинтера в этом блоке. Приложение считывает синтаксис в этих строках только в таком виде:
      $*****
      Вместо звёздочек нужно написать смещение. #POINTER SIZE: $04
      Помимо типа порядка байтов, программа учитывает и размер поинтеров. Они бывают по 2 и 4 байта. Соответственно, в этой строке приложение будет считывать только следующий синтаксис:
      $02
      $04 #POINTER SPACE: $00
      Если так случилось, что между поинтерами есть какое-то пространство, то эту особенность можно прописать в этой строке. Приложение будет учитывать эти пробелы между поинтерами, а если поинтеры идут друг за другом без дополнительного пространства, как в нашем случае, то необходимо указывать просто нулевое значение. Приложение считывает синтаксис в этих строках только в таком виде:
      $**
      Вместо звёздочек нужно написать размер в байтах, которое будет соответствовать дополнительному пространству. Наглядное представление пространства между поинтерами при просмотре через хекс-редактор на изображении ниже (поинтеры выделены голубым цветом):
      #BASE POINTER: $-FF000
      Одно из первостепенных неудобств при работе с поинтерами в исполняемых файлах это то, что всегда нужно учитывать поправку. Разумеется, в этом приложении предусмотрен учёт разницы между фактическим расположением поинтеров в файле и оперативной памяти. Здесь приложение считывает синтаксис в этой строке только в таком виде:
      $-*****
      Вместо звёздочек нужно написать размер поправки. #TABLE: ToR.tbl
      Ну и напоследок стоит упомянуть таблицу кодов, которую здесь тоже нужно прописывать в виде названия файла. Именно на эту таблицу приложение и будет опираться во время извлечения строк с текстом. д) Заранее подготавливаем файлы с командами для извлечения и вставки текста через командную строку: Файл 1, извлечение
      !abcde_dump_skits.bat
      perl abcde.pl -m bin2text -cm abcde::Cartographer "SLPS_254.50" "!abcde_script_skits.txt" Tales_of_Rebirth_dump_skits -s
      pause Файл 2, вставка
      !abcde_inception_skits.bat
      perl abcde.pl -m text2bin -cm abcde::Atlas "SLPS_254.50" Tales_of_Rebirth_dump_skits.txt
      pause Все файлы должны находиться в корневой папке приложения. е) После того, как закончили готовиться к работе, копируем исполняемый файл игры в директорию программы и нажимаем пакетный bat-файл "!abcde_dump_skits.bat". После обработки получаем файл с извлечёнными строками текста "Tales_of_Rebirth_dump_skits.txt". Если всё сделано корректно, то вы увидите вот такое сообщение в командной строке:
      ж) Файл с извлечёнными строками текста будет выглядеть примерно так:
      Первые несколько частей содержат дублирующую информацию из настраиваемого файла скрипта, но в немного изменённом виде, а чуть ниже уже идут строки с метками #JMP и //POINTER #0. С метками поинтеров всё просто. Для каждого поинтера есть свой индивидуальный блок с множеством сегментов. Здесь сразу указаны смещения поинтера и строки, порядковый номер и сами строки с извлечённым текстом. Когда вы сделаете множество вот таких файлов с извлечёнными строками с текстом, то все блоки с поинтерами и прилагаемыми к ним данными можете копировать между собой или объединять в один файл без ограничений, а нумерация #0, #1, #2 и т.д. не будет мешать самому процессу работы. Данные номера — это просто заметка о порядковом номере извлечения. Так что в них нет ничего особенного. А вот что касается метки #JMP, то это вспомогательный сегмент, о котором стоит рассказать подробнее в следующем пункте, так как его роль очень важна. з) #JMP — это отдельная настройка, которую программа высчитывает самостоятельно и которая потребуется нам дальше для обратной вставки изменённого текста. В извлечённом файле данная строка имеет вот такой вид: #JMP($1133E0, $1195C0) // Jump to insertion point В скобках указан диапазон смещений между первым байтом первой извлечённой строки и последним байтом последней строки. Иначе говоря, данный интервал даёт нам представление о размере той области, в которой находятся извлечённые строки с текстом. Это очень полезная информация, и её нужно куда-то выписывать отдельно. Потому что, как я говорил в начале этой главы, в исполняемом файле есть несколько десятков отдельных блоков поинтеров, соответственно, и областей с текстом тоже. При обратной вставке текст нужно укладывать строго в те области, в которых изначально находился японский текст. Только таким образом в коде игры мы ничего не сломаем. Когда я активно занимался исполняемым файлом и идентифицировал все блоки поинтеров и области текста, то составил несколько строк с диапазоном, куда программе можно укладывать текст. Если кому-то интересно, то вот этот список: 112EA0;11332E
      113DBC;1195C6
      119890;11C8A6
      11C8A8;11D99E
      11D9A0;11E36E
      11E370;11E88E
      11E890;11F38E
      11F3C0;11FCDE
      11FCE0;1200B5
      120228;1206C6
      1206D8;120776
      120778;12280E
      122B30;12A63E
      12A640;12AAAE
      12AB28;12AFC6
      12B0E8;12B15E
      12B1A0;12BACE
      12BAD0;12D0FE
      12DCA0;12EBBE
      12EBC0;12EF76
      12EFF0;130A5E Внимание!!! При обратной вставке текста программа использует файл с извлечёнными строками текста "Tales_of_Rebirth_dump_skits.txt", а это значит, что во время этого процесса менять диапазон, прописанный в строке #JMP, можно как угодно. Это очень удобно, так как объём переведённого текста всегда отличается в большую или меньшую сторону. Возможность укладки текста в доступные области ограничена лишь вашими собственными нуждами. В общем, как вам удобно, так и выбирайте. Но к этому нужно подходить с умом, потому что когда областей мало, то расчёты сводятся к минимуму, а когда нужно работать с огромным количеством областей, то тут уже требуется провести достаточно большое количество расчётов. и) После того, как были извлечены все строки с названиями сценок в диапазоне 0xF42A8 - 0xF536B, их все можно переводить в этом документе ТХТ, но это достаточно неудобно, так как файл слишком большой, и в нём не так просто ориентироваться. А если учесть то, что таких файлов придётся сделать несколько десятков, то приходит понимание, что всё это нужно как-то систематизировать. В этом нам поможет Microsoft Excel. Для этого я создаю отдельную таблицу с фильтрами для столбцов, а также присваиваю каждой строке свой ID, чтобы всегда можно было развернуть порядок строк на обратный, как оно есть в исходном файле, а также сместить все лишние строки вниз, чтобы они не мешали во время процесса перевода. К этому пункту прилагаю готовый файл для экселя, а также на изображении ниже наглядно показываю, как выглядит текст до сортировки текста и после того, как всё упорядочено:
      Скачать #1
      https://temple-tales.ru/games/tor/data_design/files/Skits.xlsx Скачать #2 (зеркало)
      https://disk.yandex.ru/i/z-J4JIO7-zVtSw к) Как только текст переведён, можно отсортировывать все строки согласно корректным значениям алфавитного порядка по колонке ID, а затем выделить весь текст и скопировать его в файл с извлечёнными строками "Tales_of_Rebirth_dump_skits.txt".
      л) Обратная вставка строк с текстом в исполняемый файл осуществляется через командную строку. Для этого просто запускаем пакетный bat-файл, о подготовке которого я упоминал ранее: Файл 2, вставка
      !abcde_inception_skits.bat
      perl abcde.pl -m text2bin -cm abcde::Atlas "SLPS_254.50" Tales_of_Rebirth_dump_skits.txt
      pause Если всё сделано корректно, то вы увидите вот такое сообщение в командной строке:
      Внимание!!! Всегда проверяйте числовые значения, которые прописаны в командной строке после вставки. Приложение прописывает там весь диапазон области для вставки, а также сколько байт было записано. Если общий объём вашего переведённого текста будет превышать установленный диапазон для вставки, то в командной строке программа уведомит вас о том, сколько байт было превышено. м) В завершении этого этапа хочу отметить, что перед тем, как вставлять текст обратно в исполняемый файл, необходимо отредактировать файл с таблицей кодов. Так как для извлечения текста нужен один набор кодов, а для обратной вставки он немного поменяется, потому что в файле шрифта игры при адаптации кириллицы приходится использовать многие коды для русских букв. Именно поэтому всегда нужно иметь наготове 2 файла с таблицей кодов: для японской версии и для русской. Это далеко не всё. Ведь всегда можно улучшить и как-то оптимизировать процесс запаковки или вставки текста. В самом начале главы я упоминал про дополнительную программу "ELF Text Injector" авторства RikuKH3. Дело в том, что работа с abcde хоть и решает множество задач, но во время вставки текста всегда тянет за собой весь дистрибутив, а также не учитывает оптимизацию текста. Именно поэтому в какой-то момент мне захотелось облегчить процесс. Я заказал у RikuKH3 данную программу и кратко описал задачу: что именно мне требуется для работы с Tales of Rebirth, а также чтобы это по необходимости можно было применить к любым другим файлам. Использование данной программы полностью заменяет пункт "л" на этапе 3. Приложение вы можете скачать из таблицы сборника уникальных программ во второй главе. А уже саму настройку и использование программы я опишу на этапе 4. ⬜ Этап 4. Использование ELF Text Injector для оптимизации вставляемого текста а) В первую очередь важно понять, что ELF Text Injector распознаёт синтаксис abcde и для вставки использует файл извлечённого текста "Tales_of_Rebirth_dump_skits.txt". Ничего заново настраивать не нужно. Кроме того, приложение также подхватывает таблицу кодов TBL. Всё, что требуется, это подготовить файл с командами для вставки текста через командную строку, а также создать дополнительный файл "tor_elftext.lst" со списком диапазона смещений, в которые будет укладываться текст. Выглядит этот файл со списком вот так:
      б) Обратная вставка строк с текстом в исполняемый файл осуществляется через командную строку. Для этого просто запускаем пакетный bat-файл, о подготовке которого я упоминал в прошлом пункте: !1_Text_Injector_RUN.bat
      @copy /y SLPS_254.50 SLPS_254.50_new > NUL
      tor_elftext.exe -LittleEndian "tor_elftext.tbl" "!2_ELF_Russian_compiled.txt" "SLPS_254.50_new"
      @pause Если всё сделано корректно, то в командной строке вы увидите вот такое сообщение:
      Как и в случае с abcde, данная программа уведомляет о том, сколько байт было записано из доступного диапазона. в) Но это всё, по сути, тоже самое, что и при использовании самого abcde. А вот что гораздо важнее — ELF Text Injector делает оптимизацию текста и экономит место во время укладки в заданный диапазон. Для полного понимания плюсов этого алгоритма на нём стоит остановиться подробнее. Дело в том, что разработчики множества игр используют как раз-таки этот метод. Его суть заключается в том, что если в процессе перевода имеется две и более строки с одинаковым текстом, то есть дубликаты, то программа укладывает только одну строку, а все поинтеры содержат адрес к этой самой строке. В результате у нас не записываются остальные дублирующие строки, а значит, происходит экономия места. Если попытаться изобразить это в хекс-редакторе, то выглядеть это будет примерно так:
    • Ну, какими бы вылизанными не было бы механики в returnal, рогаликом и буллет хеллом он быть не перестанет, игра то именно про это, это её ядро и основа, и по этому если человеку это не нравиться, то и играть в returnal он не будет.   Неа, вообще никак настроек, да в общем то, и без них норм.
    • Правильно. Не пристало мужику заниматься эскортом.
  • Изменения статусов

    • Jimmi Hopkins  »  SerGEAnt

      Это не просто перевод, а полноценная авторская сценарная адаптация. Диалоги переписаны так, чтобы персонажи звучали живо, остро и в характере. Добавлен чёрный юмор там, где авторы постеснялись. Убраны лорные противоречия, докручены мотивации. В результате игра стала умнее, злее и смешнее оригинала.
      · 0 ответов
    • ElikaStudio

      Долгожданный релиз полного сезона состоялся!
      https://youtu.be/mwBk2stm2OQ?si=qpJojB_XDABaC0We
      https://vk.com/video-48153754_456239394?sh=4&list=c62797c2b7d0725d6e
      Life is Strange: Before the Storm:
      Эпизод 1: "Прoбуждeниe"
      Эпизод 2: "О дивный новый мир"
      Эпизод 3: "Ад пуст"
      Бонусный эпизод: "Прощание"
      Русская озвучка уже доступна для скачивания!
      ElikaStudio выражает огромную благодарность всем, кто принял участие в создании проекта! 
      Группе Mechanics VoiceOver R.G. MVO , в частности их руководителю Дмитрию за неоценимую помощь в выпуске эпизода.
      Скачать для PC Classic (2018):
      GDrive: - https://drive.google.com/file/d/19CL_L80Mz0sIxcb54Ss64byAkeZmV22r/view?usp=sharing
      Скачать для PC Remastered (2022):
      GDrive: - https://drive.google.com/file/d/13q58Lpvw5_aYPYeZ7OGYZlAKOoS1gEbL/view?usp=sharing
      Скачать для Свитч(2022):
      GDrive: - https://drive.google.com/file/d/15e—T1LQiGQCYIHeNnj_C2qJA16Gvh1i/view?usp=sharing
      Ручная установка PC(оба издания):
      https://drive.google.com/drive/folders/1MJPd8965m4XxxAuOBt8enSHtv8_yy5xh?usp=sharing
      Баг репорт в обсуждении:
      https://vk.com/topic-48153754_55571577
      ___________________________________________
      Финансовый аппарат:
      www.donationalerts.com/r/elikastudio
      Пожертвовать средства на наши проекты:
      Кошелек ЮMoney 4100 1188 6818 3009
      карта Сбер банк 2202 2018 6334 1042
      карта Альфа банк 5559 4937 0209 8584
      Спасибо за вашу поддержку!
      #elikastudio #русскаяозвучка
      · 0 ответов
    • fox222  »  Siberian GRemlin

      Здравствуйте, хочу купить персональный доступ к переводам, сколько стоит?
      · 1 ответ
    • vitkach  »  eaZy

      Извините за беспокойство. Хотел спросить, а русификатор ещё когда-нибудь будет обновляться? Дело в том, что после его выхода выходили ещё обновления, в частности обновление 1.1, вышедшее летом 2023 года, где была добавлена целая сюжетная глава в конце если проходишь на лучшую концовку золотого пути, это где-то ещё полчаса диалогов. Также в игре присутсвуют иногда кракозябры вместо русского языка, это в основном связано с тем, что кое-где текст был изменён, в основном в обучающих сообщениях.
      · 0 ответов
    • TerryBogard  »  Siberian GRemlin

      C&C: RA: Retaliation (ПК) не работает.
      · 0 ответов
  • Лучшие авторы


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

×