/Eventurika-Honkai-Impact-Translation

This repository contains tools for working with .usm cinematics from Honkai Impact 3, allowing users to extract and replace video, audio, and subtitles seamlessly. Also, we are looking for patching in-game dialogues.

Primary LanguageC#MIT LicenseMIT

Описание

English soon, btw just use translator. Этот репозиторий содержит все для работы с .usm синематиками игры Honkai Impact 3. Перечисленные здесь инструменты позволят вам открыть файлы с синематиками расположенными \Games\BH3_Data\StreamingAssets\Video. Получить видео дорожку. Получить аудио дорожку. Получить несколько дорожек с субтитрами. Заменить видео, аудио, субтитры. Каждый синематик - это .usm файл. Все синематики можно просмотреть в игре "Телефон" -> "Collection" -> "Cutscenes". Либо "Профиль" (слева сверху) -> "Replay CG".

Вам потребуется

.NET 8.0 - можно скачать с офф сайта

Net framework 3.5 - для работы Scaleform VideoEncoder

DirectX 9 - для работы Scaleform VideoEncoder можно скачать с офф сайта

Scaleform VideoEncoder - для сборки USM файлов можно тут

ffmpeg - конвертировать медиа после VGMToolBox, использую билд отсюда. Размещена, где угодно. В скрипте указывается путь до неё.

VGMToolBox - экспортировать медиа и аудио из usmиспользую билд отсюда. Размещена, где угодно. В скриптах не используется.

Описание программ в этой репозитории

Экспортировать сабы из USM / Конвертировать сабы для будущей упаковки - USM_subs_toolbox.exe - прога, использую билд с гита или билд из Discord (оба работают). Размещена в distr/.

Упаковщик USM - USM_builder - запаковывает файлы обратно в формат, пригодный игре.

Как заменить субтитры

-1. Windows Defender может посчитать файл "distr\USM_subs_toolbox.exe" вирусом. В таком случае, используйте другой билд этой же программы "distr/USM_subs_toolbox_build_23072024.exe". Инструкция по смене ниже. 0. Из игры не требуется выходить. Все послед. действия можно выполнять с запущенной игрой.

  1. Помещаем интересующий нас файл из BH3_Data/StreamingAssets/Video в usm_videos Например Story05_CG01.usm cp "C:\Program Files\Honkai Impact 3rd glb\Games\BH3_Data\StreamingAssets\Video\Story05_CG01.usm" ".\usm_videos\Story05_CG01.usm"
  2. Запускаем .usm_srt_extract.bat, вводим путь к файлу при запуске скрипта ИЛИ прописываем название файла внутри скрипта
  3. Указываем путь к файлу - ничего не трогаем, просто запускаем скрипт
  4. В строке set "folder_name=6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a" изменяем название файла. Убираем из этой строки ::, добавляем в строку ниже, чтобы получилось ::set /p "folder_name=Enter file name (ex: Story05_CG01): " При выполнение будут созданы папки logs/Story05_CG01 и srt/Story05_CG01. В srt/Story05_CG01 будут храниться все хранимые в файле субтитры. Если каких-то не хватает, можно проверить logs/Story05_CG01. Надпись Subtitles not found in this file означает, что по указанному номеру (lang id) нет субтитров. Это первый этап на котором вы можете переводить текст в файле с англ субтитрами lang_1.srt. Если файла lang_1.srt нет, то англ. субтитров нет для этого файла. Для такого файла русские субтитры создать не получится. Но можно создать через Aegisub и подобные редакторы которые могут экспортировать субтитры в формате srt (как это например делают переводчики аниме). Должно работать. Сейчас мы способны изменить только англ дорожку субтитров. Это задевает все синематики "Дни рожденья" т.к. там видеоряд - это письмо на англ языке. Напишите в раздел Issues, если найдете еще.
  5. Запускаем .usm_srt_convert.bat, вводим путь к файлу при запуске скрипта ИЛИ прописываем название файла внутри скрипта Вводим путь к файлу при запуске скрипта ИЛИ прописываем название файла внутри скрипта
  6. Указываем путь - ничего не трогаем, просто запускаем скрипт
  7. В строке set "folder_name=6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a" изменяем название файла. Убираем из этой строки ::, добавляем в строку ниже, чтобы получилось ::set /p "folder_name=Enter file name (ex: Story05_CG01): " При выполнение будут созданы папки logs/Story05_CG01 и srt/Story05_CG01 (Если вы не пропускали прошлые пункты, то должно выдать сообщение A subdirectory or file srt/Story05_CG01 already exists. и A subdirectory or file log/Story05_CG01 already exists.).
  8. В srt/Story05_CG01 будут храниться конвертированные файлы субтитров. Конвертирование нужно для будущей сборки. Это второй этап, последний этап, на котором вы можете переводить текст в файле с англ субтитрами converted_lang_1.txt.
  9. Переведенный файл кладем в папку usm_builder_input и называем его Story05_CG01_en.txt либо Story05_CG01.txt
  10. Открываем VGMToolBox. В интерфейсы программы: Misc. Tools -> Stream Tools -> Video Demultiplexer -> Формат "USM (CRI Movie 2)"
  11. Закидываем файл (файлы) из usm_videos (Story05_CG01.usm) В этой же папке будет создана два файла: Story05_CG01_40534656.m2v и Story05_CG01_40534641.hca. m2v - видео-дорожка. hca - аудио-дорожка.
  12. Переносим эти файлы (Story05_CG01_40534656.m2v и Story05_CG01_40534641.hca) в папку usm_builder_input.
  13. Переименовываем эти файлы, убираем мусор из названия (Story05_CG01.m2v и Story05_CG01.hca). Для этого можно выделить оба файла и нажать F2, тогда переименуются выделенные файлы. mstsc_uesY7aFNJP
  14. На этом этапе в папке usm_builder_input можно размещать множество файлов. Для создания одного .usm файла в папке usm_builder_input должно быть 3 файла
    • FILENAME.m2v - видео (Story05_CG01.m2v, используемый кодек H.264 aka AVC)
    • FILENAME.hca - аудио (Story05_CG01.hca)
    • FILENAME.txt - сабы (Story05_CG01_en.txt) P.S. принимаются как с окончанием на _en.txt так и без.
  15. В файле .start_usm_builder.bat меняем ./USM_Builder.exe "usm_builder_input" "distr/ffmpeg/bin/ffmpeg.exe" "distr/ffmpeg/bin/ffprobe.exe" "distr/Scaleform VideoEncoder/medianocheH264.exe" "usm_builder_output" "distr/USM_subs_toolbox.exe"
  • "usm_builder_input" - путь до папки с файлами .avi (видео), .txt (субтитры), .wav (аудио)
  • "distr/ffmpeg/bin/ffmpeg.exe" - путь до ffmpeg.exe
  • "distr/ffmpeg/bin/ffprobe.exe" - путь до ffprobe.exe
  • "distr/Scaleform VideoEncoder/medianocheH264.exe" - путь до энкодера
  • "usm_builder_output" - путь до папки с результатами (будет создана если не существует)
  • "-doNotUseSubtitles" - опциональный параметр если usm файл должен собраться без субтитров

"distr/USM_subs_toolbox.exe"` - путь до патчера от Девятого (НЕ ИСПОЛЬЗУЕТСЯ @TODO начать его использовать для получения сабов из .usm файлов)

  1. Запускаем Сборку .usm файла .usm_build.bat При выполнение будет создана папка usm_builder_temp. После успешного или не успешного выполнения скрипта, её можно удалить. Если эта папка существует и в ней есть файлы с тем же названием, например, вы повторно запустили скрипт, то они будут перезаписаны. Может быть ошибка нехватки .NET, ставьте отсюда https://dotnet.microsoft.com/en-us/download/dotnet/8.0
  2. Результат обратно кидаем в BH3_Data/StreamingAssets/Video. Если что, бэкап у нас есть в usm_videos.

Обьяснения форматов файлов

  • txt - что угодно
  • srt - субтитры
  • usm - видеоролики (медиа, аудио, субтитры в одном файле)
  • m2v - медиа файл после vgmtoolbox (без аудио и сабов)
  • hca - аудио файл после vgmtoolbox (без видео и сабов)
  • bat - самодельные скрипты
  • md - файлы документации
  • exe - исполняемые файлы

Скрипты

Написал скрипт .usm_srt_extract.bat - достает из usm файла сабы

  1. Помещаем файл из BH3_Data\StreamingAssets\Video в ./usm_videos/
  2. Вводим путь к файлу при запуске скрипта ИЛИ прописываем название файла внутри скрипта
  3. Указываем путь - ничего не трогаем, просто запускаем скрипт
  4. В строке set "folder_name=6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a" изменяем название файла. Убираем из этой строки ::, добавляем в строку ниже, чтобы получилось ::set /p "folder_name=Enter file name (ex: Story05_CG01): "
  5. Запускаем скрипт Достанет 0-7 дорожки сабов в папку ./srt/6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a/, лог в ./logs/6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a/

Написал скрипт .usm_srt_extract_en.bat - достает из usm файла англ сабы

  1. Помещаем файл из BH3_Data\StreamingAssets\Video в ./usm_videos/
  2. Вводим путь к файлу при запуске скрипта ИЛИ прописываем название файла внутри скрипта
  3. Указываем путь - ничего не трогаем, просто запускаем скрипт
  4. В строке set "folder_name=6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a" изменяем название файла. Убираем из этой строки ::, добавляем в строку ниже, чтобы получилось ::set /p "folder_name=Enter file name (ex: Story05_CG01): "
  5. Запускаем скрипт Достанет 1 дорожку сабов в папку ./srt/6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a/, лог в ./logs/6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a/

Написал скрипт .usm_srt_convert.bat - конвертирует формат сабов. Перед запуском требуется запустить extract.bat, чтобы он создал файлы .srt

  1. В строке set "folder_name=6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a" изменяем название файла
  2. Запускаем скрипт

Особенности

Хранение файлов

Все usm файлы надо хранить в ./usm_videos. USM_subs_toolbox иначе не работает. Запуск в таком случае Test.exe -extractSbt "usm_videos/kiana.usm" -l 4. файл с сабами будет лежать в usm_videos/kiana.srt. Иначе будет ошибка: Error : [file_open,null/test.srt]

Индекс сабов (lang id)

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

Оригинальные синематики

До версии 5.8 (в 5.8 от 30.06.2022 произошел переход на .usm формат) использовались mp4 файлы. Их битрейт намного выше (качество выше), поэтому рекомендую использовать их для сборки синематиков до версии игры 5.8. ссылка на гугл драйв с архивом и списком файлов1

Windows defender обнаружил вирус

Windows Defender может посчитать файл "distr\USM_subs_toolbox.exe" вирусом. В таком случае, используйте другой билд этой же программы "distr/USM_subs_toolbox_build_23072024.exe". Замените название файла с USM_subs_toolbox_build_23072024.exe на USM_subs_toolbox.exe. На момент 29.07.2024 защитник windows обе программы считает безопасными, если у вас повторился этот случай, пожалуйста, составьте issue в гитхабе. Номер билда - это дата (23.07.2024) когда @Persivan получил билд в Disocrd.

Языки

Файл usm_videos/7.1_Birthday_Kiana_21f3d1f775e2938ac9c205e53d88bd82.usm

  1. Китайский (упрощенный)
  2. НЕТ ДОРОЖКИ!? (видимо тут должен быть английский, но т.к. на видеоряде англ буковки, то решили ничего не писать)
  3. Вьетнамский
  4. Тайский
  5. Французский
  6. Немецкий
  7. Индонезийский

Файл usm_videos/2.6_CG111_mux.usm

  1. Китайский
  2. Английский
  3. Вьетнамский
  4. Тайский
  5. Французский
  6. Немецкий
  7. Индонезийский

Файл 6.5_Birthday_Mei_efbc04aec45adb226958ad3f7582d70a.usm

  1. Китайский (упрощенный)
  2. НЕТ ДОРОЖКИ!? (видимо тут должен быть английский, но т.к. на видеоряде англ буковки, то решили ничего не писать)
  3. Вьетнамский
  4. Тайский
  5. Французский
  6. Немецкий
  7. Индонезийский

Зависимости

Devyatyi9/HI3rd_usm_sbt_patcher

Оконная программа для сборки USM на NetFramework - автор artserious (это дискорд ник). Он не загружал её на гит. UPD: больше не используется, прога переписана под консольный интерфейс