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

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

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

wL3OS70.png

Версия: 2.0.6623.47936

Скачать

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». На панели «Select Range» необходимо задать начальный символ диапазона или его код Unicode (десятичный или шестнадцатеричный) и конечный символ, затем нажать кнопку «+» или «-». Помимо этого, можно выбрать сразу все буквы алфавитов (прописанных в cfg). Для этого нужно нажать кнопку «A», выбрать алфавит из списка, а затем нажать кнопку «+» или «-». Для возвращения к выбору диапазона, необходимо нажать эту же кнопку еще раз.

Панель «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) вместе с настройками.

О настройках

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

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

  • Настройки поиска (Search Options)
    Лучше не завышать эти настройки, чтобы потом не выяснять почему утилита «зависла», выставляйте их с умом и в меру потребностей.
    • Глубина поиска (Search Depth)
      Указывает количество обрабатываемых подкаталогов при поиске файлов для сканирования, т.е. на сколько уровней «вглубь» опустится поиск
    • Максимальный размер файла (Max File Size)
      Файлы, размер (в байтах) которых превышает данное значение не будут обрабатываться утилитой, однако они появятся в списке результатов с пометкой «#FileSizeLimit#». Опция добавлена, чтобы большие файлы не тормозили общий процесс, вы всегда (если это требуется) можете просканировать их отдельно.
  • Настройки сканирования (Scan Options)
    • Big Endian
      Устанавливает порядок байтов от младшего к старшему, стоит обратить внимание при сканировании консольных ресурсов.
    • Длина подстроки (Substring Length)
      В UnityText предполагаемая строка текста проходит проверку не полностью (символ за символом), а по определенному алгоритму. Строка разбивается на подстроки указанной длины, и каждая подстрока проверяется все менее тщательно. Т.е. у первой подстроки проверяется каждый символ, у второй — каждый второй, у третьей — каждый третий и т.д. до достижения значения «Частоты», заданное опцией, описанной ниже.
    • Частота (Frequency)
      Значение частоты проверки подстрок алгоритма, описанного выше, после которого частота перестает изменяться. Т.е. при значении равном 4 для третей подстроки будет проверяться каждый третий символ, для четвертой — каждый четвертый, для пятой — также каждый четвертый, как и для всех последующих подстрок.
    • Упрощенная проверка (Simple Check)
      Будет проверено только начало строки (первая подстрока)
    • Минимальная длина строки (Min String Length)
      Длина строки меньше данного не будет учитываться утилитой. Важно отметить, что строка не просто будет пропущена, а утилита будет дальше обрабатывать ее данные как бинарные. Также стоит быть аккуратным, указывая значение равное 1, т.к. это может привести к ошибочным результатам сканирования.
    • Максимальный размер строки (Max String Size)
      Значение размера (в байтах, не путать с длинной в символах), указывающее максимально допустимый размер строки, все превышающие, как и в случае с «Минимальной длиной», не будут учитываться. За все время мне попался только один файл, который содержал в себе «выдающуюся» строку, содержавший какой-то JSON-текст, ее размер был равен почти 450 000 байт. Но это скорее исключение, поэтому рекомендуется выставлять небольшие значения, это может значительно ускорить сканирование.
  • Настройки экспорта в 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)
    Фильтр будет применяться только к файлам, имена которых удовлетворяют фильтру. Фильтр применяется только к именам файлов, не к именам каталогов

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

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

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

 

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

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

О прочем

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

 

Изменено пользователем StiGMaT
img fix
  • +1 2

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


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

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

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

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


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

@StiGMaT 

Оно работало! Теперь я могу перевести китайские только игры.
Большое спасибо! Ваш инструмент является блестящим!

 

It worked! Now I can translate Chinese only games.
Thank you very much! Your tool is brilliant!

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


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

В общем результат поиска не пустой выглядит он вот так (приложу скриншот) ну как то не понятно видимо я ожидал увидеть нечто другое выходит что UnityText все подряд находит и нужное и не нужное. Опять же не понял не наблюдаю не квестов не интерфейсы, различные описания (скилы, параметры и тд.) возможно что то не так делаю!

В папке Rus лежат не распакованные ассеты и распакованные!

Screenshot_15.png

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

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


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

@Ultraz46, все верно, утилита вытаскивает весь текст, который соответствует заданным параметрам. “Скармливать” ей лучше только MonoBehaviour файлы, т.е. те что были получены из UnityEX с параметром -t 114. Что касается “не наблюдаю”… Ну во-первых, есть вероятность, что настройки утилиты не оптимальны и она не весь текст нашла. Во-вторых, как я и писал в созданной тобой теме, что-то из GUI может быть нарисовано на текстурах. Ну и третье, опять таки писал в твоей теме, часть текста может находится в Assembly-CSharp.dll

Такс… глянул тут твой скриншот с приближением =) Давай по порядку. Удали (или перемести) папку Unity_Assets_Files (если она у тебя сейчас есть). Распакуй заново файлы с помощью UnityEX, используя параметр -t 114. После этого в в UnityText измени Search Depth на 2 и укажи путь к папку Unity_Assets_Files с только что распакованными файлами.

А и еще увеличь Max File Size на всякий случай, скажем до 5120000 =)

Изменено пользователем StiGMaT
-t 114

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


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

Такс… глянул тут твой скриншот с приближением =) Давай по порядку. Удали (или перемести) папку Unity_Assets_Files (если она у тебя сейчас есть). Распакуй заново файлы с помощью UnityEX, используя параметр -t 144. После этого в в UnityText измени Search Depth на 2 и укажи путь к папку Unity_Assets_Files с только что распакованными файлами.

А и еще увеличь Max File Size на всякий случай, скажем до 5120000 =)

Сделаю все как ты описал если что отпишусь о результатах моих поисков ближе к вечеру)

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


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

@Ultraz46, ОК. Результаты точно должны быть отличными от того что был ранее. Судя по скриншоту, ты сканировал корень папки Rus в которой лежали только “ассеты”, которые утилита вообще не должна обрабатывать.

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


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

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

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

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

Еще нашел строки связанные с локализацией видимо планируется в будущем но Русского там нет.

Screenshot_17.png

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

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


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

@Ultraz46, в этом и заключается “прелесть” перевода игр на Unity, о которой я писал в твоей теме =) 605 Кб файлов, как то совсем не густо, если честно. Если хочешь, можешь скинуть мне архивом эти файлы, я посмотрю их у себя. Но похоже что нужно искать текст в других “местах”. В “ассетах” то точно нет ничего с текстом?

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: DZH
      Программа для работы с архивами 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

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

  • Twitch Streams

    • Трансляций нет
    • Трансляций нет
  • Последние сообщения

    • Подправлено! Теперь всё должно корректно отображаться (разработчики любят в каждом патче чуть подправлять файлы и отсюда — косяки русификатора).
    • Интерфейс же перерисовали, разве нет?
      Наверное, PVR-текстуры из disk_*.tac не используются игрой, у которых есть “ремастеренные” аналоги в common_*.tac (как .DDS ). Системные надписи, карты из гонок, интерфейс весь там, похоже. Но да, многое просто сконверчено и так же мыльно и оставлено, если ты про это говоришь.
      Они перерисовали текстуры персоонажей?? Ого! Я думал, что всё оставят как было. Может, это просто с Xbox по наследству осталось..
       
    • Уникально! А я то переживал, что в GameDev уже не популярна LSD-25.
    • Мне она очень понравилась. Ну да, она жутко неудобной бывала и кривая, да и финал там так себе, но всё равно было классно. Что-то такое необычное, в памяти она точно останется. Правда игра “Метро-2” у меня тоже навсегда в памяти останется и только смерть избавит от воспоминаний (хотя ад может выглядеть как эта игра), но в “Один во тьме” это другое. 
    • C вашего позволения...Кхм-кхм...Да простят меня самураи...ГОДЗИЛЛА - ГЕЛИЙ! 
    • На PC тоже вполне отличная была. Очень рад, значит у Alone in the Dark будет либо хорошее продолжение, либо перезапуск. Последняя та что Alone in the Dark Illumination говно еще то
    • Я как узнал, что будут русские субтитры, то сразу гора с плечь. Свой перевод мы отменили. В PS3 версии на самом деле, нереальная каша в текстах. И хотя я разгребал подобное, но не хочется на постоянной основе от одного тайтла к другому со всем этим возиться.
    • Где ты взял инфу, что бросили, потом одно, а потом третье?
      В 2014 начали, а в 2015 были самые сильные годы активности.

      >>» Но из за проблем с отображением текста в игре был брошен опять ибо нет возможности проверить текст.
      Первый раз слышу. Всегда в игре нормально отображался текст. У меня PS3 и я сам проверяю и слежу за вставкой текста и текстур. Это проблемы только на эмуляторе. Чел, который начал проект Xillia, не пропадал и не кидал никого. Он до сих пор в чате и общается с нами, просто у него трудности в жизни, много времени переводу уделять больше не сможет. Но не суть. Потом всё это взвалилось на мои плечи, ну а куда ещё. В ходе все этого писались дополнительные программы собственного производства. Так как первоначальный куратор использовал инструментарий ромхакера mamu (гуглите, если интересно). После того, как всё это легло на меня, то я сменил приоритеты и организацию по самому переводу. Сразу отказался от программ mamu в пользу самопальных. Потом появился ещё один парень, как основной переводчик. Потом он временно отошёл от дел. У нас возникла пауза, которая длилась на самом деле не долго. Во время этой паузы со мной связался Меркурий. Почему у него не срослось с переводом Эксилли? я сам до сих пор не понимаю. Думаю, это он сам скажет, если захочет. В общем сейчас ситуация такова, что переведено в целом (сюжет+npc+скиты+меню+текстуры и т.д.) около 50% или чуть более.
    • Не могу поиграть в игру. Висит в лобби и время отсчитывает. То 2 минуты. Они кончаются опять поиском занимается, время новое ставит. И так до бесконечности. Помогите разобраться.

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

Система Orphus

×