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

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


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

@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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: DragonZH
      Программа для работы с архивами Unity.
      Возможности:
      - поддержка версий архивов 4, 5 и 2017.
      - поддержка GUI и консольного режима.
      - экспорт всех и выбранных файлов из архива в GUI режиме.
      - экспорт всех файлов и файлов по типу из архива в консольном режиме.
      - алгоритм массового импорта файлов из каталога извлечённых за один заход. Размеры импортируемых файлов абсолютно не важны.
      - английская локализация.
      - поддержка архивов консольных платформ (PS3)
      - поддержка шрифтов ttf или извлечение метрики координат font_raw.
      - поддержка текстовых файлов.
      - поддержка видео файлов.
      - поддержка аудио файлов.
      - поддержка конвертации текстур DDS.
      - поддержка конвертации текстур CRN.
      - поддержка конвертации текстур KTX.
      - поддержка конвертации текстур PVR.
      - поддержка ресурсов из внешних ResS при извлечении файлов из assets.
      - поддержка извлечения mesh в obj.
      - поиск по именам файлов.
      - поиск текста в файлах.
      - поддержка .splitX (Android)
      - поддержка AssetBundles(Unity3D) - UnityRaw.
      - поддержка AssetBundles(Unity3D) - UnityWeb.
      - поддержка AssetBundles(Unity3D) - UnityFS.
      Скачать программу UnityEX
       
       
       
      Если кто желает отблагодарить автора, то вот номера кошельков:  
      WebMoney:
      WMR - R345178676524
      WMZ - Z902634901912
      WME - E675124820338
      QIWI - dragonzh@yandex.ru
      Яндекс.Деньги - 410012996939768
      За ДОНАТ будут выкладываться и другие проги для шрифтов, а потом для текста, примерно при наборе тысячи каждая, пока 0р. Но всё равно, возможно, не всё поддерживается и они работают через консоль (bat файлы) для unity 2017 2018, старые форматы не поддерживаются. По шрифтам обработка через xml BMFONT, может и доставать координаты.


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

Система Orphus

×