Jump to content
Zone of Games Forum
Memoric

Автопереводчик для Unity игр XUnity.AutoTranslator

Recommended Posts

Апну тему скринами из разных игр с использованием autotranslator:

Banner of the Maid (китайский →  русский): https://imgur.com/a/LNHYwsV

Banner of the Maid (китайский → английский): https://imgur.com/a/LDdyhHK

We the Revolution (английский → русский): https://i.imgur.com/D3hJUo1.png

NITE Team 4 (английский → русский):  https://i.imgur.com/K4KPip1.png

Tales of the Neon Sea (английский → русский):  https://imgur.com/a/y7oztQg

 

Share this post


Link to post

Чуть обновил тупые сборки в стиле кинул что-нибудь в игру, тупа жмякнул на всё и уже гамаешь.
https://disk.yandex.ru/d/PkI0TPJFlk3IZA

Edited by DragonZH
что забанили ссылку, теперь другая
  • Like (+1) 4

Share this post


Link to post
11 минут назад, mixa_pulemet сказал:

Нужен скриншот, чтобы понять о чём вы.

font_outline.png
Видна некоторая “пиксельность” на буквах. Особенно хорошо видна “лесенка” на наклонных линиях.

Share this post


Link to post
Posted (edited)

Как изменить параметры скомпилированного TMP SDF шрифта без создания нового TMP шрифта в Unity.

  1. Скачиваем, распаковываем и запускаем утилиту UABEA — UABEA
  1. В меню выбираем File — Open и выбираем bundle-файл шрифта. Утилита скажет, что он  запакован, и его надо распаковать и спросит куда? Выбираем Memory (в память).
  2. Станут доступны кнопки ниже. Нажимаем Info. Откроется окно Assets Info со списком assets.
  3. Чтобы масштабировать шрифт в игре (поменять его размер), нужно выбрать asset с типом MonoBehavior и нажать справа кнопку Edit Data. Откроется окно редактирования ассета.
  4. Находим в группе параметров m_FaceInfo свойство m_Scale = 1, и меняем его значение (в разах) на которое нужно увеличить (или уменьшить) шрифт. Напр., в моей игре мне подошло m_Scale = 1,8. Шрифт увеличился в 1,8 раза.
  5. Дальше нажимаем OK и в меню окна Assets Info выбираем File — Save. Утилита скажет, что сохранены в память, и для того, чтобы сохранить изменения в файл, надо закрыть это окно и сохранить в файл в главном окне Утилиты (bundle window — UABEA). Это и делаем в bundle window выбираем File — Save as и в окне имя нового bundle-файла шрифта и Сохранить.
  6.  Файл сохранится в несжатом виде. Если нужно сжать файл, то нужно сначала закрыть в UABEA текущий файл, выбрав File — Close, а затем открыть новый правленный файл и выбрать в меню File — Compress. Затем сохранить уже сжатый файл через File — Save as
  7. Для получения обводки символов в шрифте, проделываем те же самые процедуры, но только открываем для правки asset с типом Material и там в карте m_Floats в массиве ищем data со строкой first = "_OutlineSoftness" и меняем параметр second = 0 на second = 2 (это размывка обводки). И также включаем саму обводку в first = "_OutlineWidth" меняем параметр second = 0 на second = 1 (это толщина обводки, можно поставить больше).
  8. Сохраняем изменения как описано выше. Также можно и сжать файл шрифта, перегрузив в UABEA новый правленный файл и выбрав сжатие.
  9. В файле шрифта (в ассетах) можно поменять и другие параметры. Их там масса. Поле для экспериментов большое.
Edited by Amigaser
  • Thanks (+1) 1
  • Upvote 1

Share this post


Link to post
Posted (edited)

Всем привет, есть такая игра Yet Another Zombie Survivors

она на il2cpp без mono переводчик отлично подключался до посл обновления 0.6 через BepInEx

после последнего обновления игры появились такие файлы в папке _Data
RuntimeInitializeOnLoads.json
ScriptingAssemblies.json

переводчик перестал подхватыватся на любые версии BepInEx и через Melon — нет реакции

Файлы и скрины вот https://disk.yandex.ru/d/zOZwt9OH-Oo_rg
Версия exe от 2022.03.28
Может кто знает как такое победить? Это новая версия юнити или что? Работало работало и перестало.

Edited by Alisa86

Share this post


Link to post
14 часов назад, Alisa86 сказал:

Всем привет, есть такая игра Yet Another Zombie Survivors

она на il2cpp без mono переводчик отлично подключался до посл обновления 0.6 через BepInEx

после последнего обновления игры появились такие файлы в папке _Data
RuntimeInitializeOnLoads.json
ScriptingAssemblies.json

переводчик перестал подхватыватся на любые версии BepInEx и через Melon — нет реакции

Файлы и скрины вот https://disk.yandex.ru/d/zOZwt9OH-Oo_rg
Версия exe от 2022.03.28
Может кто знает как такое победить? Это новая версия юнити или что? Работало работало и перестало.

Используйте последнюю версию BepInEx-Unity.IL2CPP ОТСЮДА.

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

2024-06-14-182911.png

288.png

 

  • Thanks (+1) 1

Share this post


Link to post
В 10.06.2024 в 17:25, Дмитрий Соснов сказал:

Установил  на игру загрузчик Melon Loader: MelonLoader.Installer-0.6.1.exe

Подскажите, пожалуйста, а можно как-то перегружать перевод налету в игре? ALT+R не работает с этим загрузчиком. А то надоело многократно перегружать игру для проверки исправлений в тексте. :( 

Share this post


Link to post
Posted (edited)
10 минут назад, Amigaser сказал:

Подскажите, пожалуйста, а можно как-то перегружать перевод налету в игре? ALT+R не работает с этим загрузчиком. А то надоело многократно перегружать игру для проверки исправлений в тексте. :( 

надо в файле конфига загрузчика поменять флаг: ReloadTranslationsOnFileChange=False на ReloadTranslationsOnFileChange=True

тогда он будет подгружать перевод из файла автоматом при его изменении во время игры...

Edited by Дмитрий Соснов
  • Thanks (+1) 1
  • Upvote 1

Share this post


Link to post
Posted (edited)

Игра Svarog's Dream. Все делал по рецепту. Не создаются файлы с переводом в паке Svarog's Dream\AutoTranslator\Translation\ru\Text\ и Svarog's Dream\AutoTranslator\Translation\en\Text\. Создались только 3 файла с нулевым размером. _Postprocessors.txt _Preprocessors.txt _Substitutions. Пытался снять галочку “только чтение” с папки игры. Не снимается. Вернее снимается и сразу восстанавливается обратно. Но я видел скрин игры с переводом. Почему не выходит?

Edited by avax2024

Share this post


Link to post
Posted (edited)
В 15.06.2024 в 16:24, avax2024 сказал:

Игра Svarog's Dream. Все делал по рецепту. Не создаются файлы с переводом в паке Svarog's Dream\AutoTranslator\Translation\ru\Text\ и Svarog's Dream\AutoTranslator\Translation\en\Text\. Создались только 3 файла с нулевым размером. _Postprocessors.txt _Preprocessors.txt _Substitutions. Пытался снять галочку “только чтение” с папки игры. Не снимается. Вернее снимается и сразу восстанавливается обратно. Но я видел скрин игры с переводом. Почему не выходит?

У  меня тоже самое было, при попытке перевести игру  SKALD: Against the Black Priory версии  1.0.3d https://store.steampowered.com/app/1069160/SKALD_Against_the_Black_Priory/  с помощью XUnity AutoTranslator.

Загрузчики BepInEx и MelonLoader нормально вставали и были видны в игре, даже можно было открыть меню настроек. Но вот почему то ни не могли  подхватить текст для перевода! А в папке:  \BepInEx\Translation\ru\Text не создавался файл в который идёт перевод:  _AutoGeneratedTranslations.txt  А если я это файл  создавал там вручную, то всё равно это не помогало.

Проверял разными версиями этих загрузчиков, но всё было тоже самое и они не могли подхватить текст… 

Вот логи: 

[Message:   BepInEx] BepInEx 5.4.23.1 - SKALD Against the Black Priory (30.05.2024 20:00:38)
[Info   :   BepInEx] Running under Unity v2020.3.36.7469419
[Info   :   BepInEx] CLR runtime version: 4.0.30319.17020
[Info   :   BepInEx] Supports SRE: False
[Info   :   BepInEx] System platform: Bits64, Windows
[Message:   BepInEx] Preloader started
[Info   :   BepInEx] Loaded 1 patcher method from [BepInEx.Preloader 5.4.23.1]
[Info   :   BepInEx] 1 patcher plugin loaded
[Info   :   BepInEx] Patching [UnityEngine.CoreModule] with [BepInEx.Chainloader]
[Message:   BepInEx] Preloader finished
[Message:   BepInEx] Chainloader ready
[Message:   BepInEx] Chainloader started
[Info   :   BepInEx] 2 plugins to load
[Info   :   BepInEx] Loading [XUnity Auto Translator 5.3.0]
[Info   :XUnity.AutoTranslator] Version of TextMesh Pro: 1.4.0.
[Warning:  HarmonyX] AccessTools.Method: Could not find method for type TMPro.TMP_Text and name SetCharArray and parameters (int[], int, int)
[Warning:XUnity.AutoTranslator] Could not hook 'TMP_Text_SetCharArray_Hook3'. Likely due differences between different versions of the engine or text framework.
[Info   :XUnity.AutoTranslator] Loaded XUnity.AutoTranslator into Unity [2020.3.36f1] game.
[Info   :   BepInEx] Loading [XUnity Resource Redirector 2.1.0]
[Message:   BepInEx] Chainloader startup complete
[Info   :XUnity.AutoTranslator] Skipping plugin scan because no plugin-specific translations has been registered.
[Info   :XUnity.AutoTranslator] Set fallback endpoint to 'GoogleTranslate'.

я так понимаю что эти пиксели программа просто не воспринимает как шрифт? 

Edited by Дмитрий Соснов

Share this post


Link to post

Случилось чудо. Неожиданно. Запустил игру, поиграл, вышел из игры. Спустя время опять запустил игру и о чудо Eset Endpoint Security просигнализировал что Google Translator хочет выйти в интернет (я не запрещал). Я дал разрешение и перевод начался. Очень кривой. Некоторые буквы заменяются на квадратики. Но самое плохое-описание оружия, брони, колец-просто выдает описание, вообще без характеристик и цифровых значений. Пришлось отказаться от перевода. Т.к я не знаю как отключить переводчик, присвоил папке AutoTranslator имя 1AutoTranslator.

Share this post


Link to post

А у меня вот такой вопрос. Можно ли что-то придумать, если в оригинальной строке, которую подхватывает Автопереводчик, есть символ ‘=’ ? Как-то экранировать что ли? Иначе Автопереводчик сбивается и не переводит такую строку. :( Может кто что подскажет? 

Share this post


Link to post
18 часов назад, Дмитрий Соснов сказал:
Игра Alaloth - Champions of The Four Kingdoms
 
https://store.steampowered.com/app/919360/Alaloth_Champions_of_The_Four_Kingdoms/

Переводится с помощью BepInEx 6.0.0-be.682 + XUnity Auto Translator 5.3.0

Я вот все равно не понимаю.,как это делать можно сделать тут папку с переводом

Share this post


Link to post

Можете помочь, игра не цепляет переводчик.

https://store.steampowered.com/bundle/41367/Yakuza_Rogue_12/

Вот ссылка на игру в архиве.

Пробовал BepInEx-Unity.IL2CPP-win-x64-6.0.0-be.692+851521c  и MelonLoader + MelonMod-IL2CPP-5.3.1 и тот и другой в итоге выбивает ошибку. Остальные версии попросту вообще не видят игры. Заранее спасибо !

 

 

 

 

Share this post


Link to post

Перевод текстур с помощью XUnity AutoTranslator

Начиная с версии 2.16.0+ этот мод предоставляет базовые возможности по замене изображений. Это функция, которая отключена по умолчанию. Однако автоматического перевода этих изображений нет.

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

Он управляется следующей конфигурацией:

[Texture]
TextureDirectory=Translation\Texture
EnableTextureTranslation=False
EnableTextureDumping=False
EnableTextureToggling=False
EnableTextureScanOnSceneLoad=False
EnableSpriteRendererHooking=False
LoadUnmodifiedTextures=False
TextureHashGenerationStrategy=FromImageName
DuplicateTextureNames=
DetectDuplicateTextureNames=False
EnableLegacyTextureLoading=False
CacheTexturesInMemory=True

TextureDirectory
указывает каталог, в который загружаются текстуры. Загрузка будет происходить также из всех подкаталогов указанного каталога, поэтому вы можете перемещать выгруженные изображения в любую желаемую структуру папок.

EnableTextureTranslation
включает перевод текстуры. В основном это означает, что текстуры будут загружаться из TextureDirectoryкаталога и его подкаталогов. Эти изображения заменят внутриигровые изображения, используемые игрой.

EnableTextureDumping
включает сброс текстур. Это означает, что мод будет выгружать любые изображения, которые он еще не выгрузил, в файл TextureDirectory. При сбросе текстур также может быть целесообразно включить: 
EnableTextureScanOnSceneLoad
более быстрый поиск всех текстур, требующих перевода. Никогда не распространяйте мод с включенным этим параметром.

EnableTextureScanOnSceneLoad
позволяет плагину сканировать объекты текстуры в событии sceneLoad. Это позволяет плагину находить больше текстур при незначительном снижении производительности во время загрузки сцены (что часто происходит во время загрузки экранов и т. д.). Однако из-за того, как работает Unity, не все из них можно заменить. Если вы нашли образ, который сброшен, но не может быть переведен, сообщите об этом. Однако обратите внимание, что этот мод в первую очередь предназначен для замены текстур пользовательского интерфейса, а не текстур для 3D-сеток.

EnableSpriteRendererHooking
позволяет плагину попытаться перехватить SpriteRenderer. Это отдельная опция, потому что SpriteRenderer на самом деле не может быть правильно перехвачен, а реализованный обходной путь может теоретически повлиять на производительность в определенных ситуациях.

LoadUnmodifiedTextures
Включает, должен ли плагин загружать текстуры, которые не были изменены. Это полезно только для отладки и может вызвать различные визуальные сбои, особенно если EnableTextureScanOnSceneLoadоно также включено. Никогда не распространяйте мод с включенным этим параметром.

EnableTextureToggling
включает, будет ли горячая клавиша ALT+T также переключать текстуры. Это ни в коем случае не гарантирует работу, особенно если EnableTextureScanOnSceneLoad
она также включена. Никогда не распространяйте мод с включенным этим параметром.

DuplicateTextureNames
указывает разные текстуры в игре, которые используются под одним и тем же именем ресурса. Плагин будет использовать «FromImageData» для идентификации изображения для этих изображений.

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

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

CacheTexturesInMemory
указывает, что все текстуры перевода должны храниться в памяти для оптимизации производительности. Можно отключить, чтобы уменьшить использование памяти.

TextureHashGenerationStrategy
определяет, как изображения идентифицируются. Когда изображения сохраняются, игре потребуется какой-то способ связать их с изображением, которое она должна заменить. Это делается с помощью хеш-значения, которое хранится в квадратных скобках в каждом имени файла изображения, например: file_name [0223B639A2-6E698E9272].png. Эта конфигурация указывает, как генерируются эти хэш-значения:

FromImageName
означает, что хэш генерируется из внутреннего имени ресурса, которое игра использует для изображения, которое может существовать не для всех изображений или даже быть уникальным. Однако в целом он достаточно надежен. Если у образа нет имени ресурса, он не будет сброшен.

FromImageData
означает, что хэш генерируется из данных, хранящихся в образе, который гарантированно существует для всех изображений. Однако создание хэша связано с затратами на производительность, которые также будут нести конечные пользователи.

FromImageNameAndScene
означает, что он должен использовать имя и сцену для генерации хеша. Для этого по-прежнему требуется имя. При использовании этой опции есть шанс, что одна и та же текстура может быть сброшена с разными хэшами, что нежелательно, но может потребоваться для некоторых игр, если само имя не уникально и FromImageData
опция вызывает проблемы с производительностью. Если это используется, рекомендуется также включить EnableTextureScanOnSceneLoad.

При работе с этими параметрами необходимо учитывать один важный нюанс: если существует ЛЮБОЙ из этих параметров: EnableTextureDumping=True, EnableTextureToggling=True, TextureHashGenerationStrategy=FromImageData, то игре потребуется прочитать необработанные данные со всех изображений, которые она находит в игре, чтобы заменить изображение. а это дорогая операция.

Поэтому рекомендуется использовать TextureHashGenerationStrategy=FromImageName. 
Скорее всего, изображения без имени ресурса все равно будет неинтересно переводить.

Если вы распространяете этот мод с переведенными изображениями, рекомендуется удалить все изображения, которые вы либо не собираетесь переводить, либо вообще не переведены.

Вы также можете изменить имя файла на любое по своему желанию, если вы держите хэш, добавленный в конец имени файла.

Если что-то и вынести из этого раздела, то это должны быть следующие два пункта:

Никогда не распространяйте мод с помощью EnableTextureDumping=True, EnableTextureToggling=True, LoadUnmodifiedTextures=True или DetectDuplicateTextureNames=true
Распространяйте мод с включенным модом только в том TextureHashGenerationStrategy=FromImageData 
случае, если это абсолютно необходимо игре.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



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

×