Русификатор Yakuza 5 Remastered: 33 000 строк, зачистка бага 0xFF и инженерные сводки из Нагасугай.
Всем привет. Праздники закончились, а «Драконьи хроники» продолжаются. Январь 2026-го я встретил не за отдыхом, а за масштабной ревизией того, что успел наворотить в прошлом году. Пока Кирю развозит пассажиров по Фукуоке, я штурмовал файлы первой главы (Nagasugai).
Результаты на сегодня: мой мастер-словарь разросся до 33 000 строк, количество ручных фильтров (тех самых, что отсеивают бинарный шум) перевалило за 3 000, а техническая подготовка первой папки сюжета (UID01) почти завершена.
Масштабная работа вскрыла важный нюанс: в будущем мне всё-таки придётся полностью переделывать и движок редактора (V3), и саму систему подмены символов вместе с шрифтами — всё ради 4K и идеального расположения букв. Но пока это планы, а сегодня я хочу рассказать про одну маленькую «бомбу», на которой я подорвался во время сборки — про «байт-убийцу» 0xFF.
ГЛАВА 6: Ложный след длины и байт-убийца 0xFF
Последнее время я плотно занимался фильтрами и настройкой массового перевода, но одна проблема не давала покоя. Игра вылетала или обрезала текст в случайных местах. Я был уверен, что дело в переполнении буфера — слишком длинная русская строка не влезает в окно или это ошибка анимации.
Попытка №1: Радикальное сокращение
Я начал резать текст "по живому". Пробовал принудительные переносы (\n), сокращал фразы в 2-3 раза, оставляя минимум смысла.
Но это не помогало.
Попытка №2: Механика разделения (Splitter)
Тогда я пошел сложным путем: написал скрипт, который разбивает одну длинную фразу на два отдельных диалоговых окна. Это была долгая и мучительная работа. Я смог заставить игру показать первую часть и... продолжить работать, игнорируя вторую. Движок просто пропускал второй кусок текста, потому что для него не был создан правильный новый указатель. Я даже пытался сделать "костыль": в первом окне полный текст, а во втором — пустая заглушка, просто чтобы проверить логику. Всё впустую.
Истинная причина.
Как оказалось, я боролся с ветряными мельницами. Проблема была не в длине. Ранее я перевел систему с таблицы символьной подмены на прямую запись байтов. И по алфавитному порядку буква «я» (последняя в списке) получила код 0xFF.
Встречая букву «я» (0xFF) в слове, игра, скорее всего, воспринимала её как служебный маркер ошибки или конца файла. Стоило мне удалить этот символ — и всё заработало: и длинные строки, и те самые места, где игра вылетала. Точную причину без исходного кода движка назвать сложно, но факт есть факт: этот байт был "отравлен".
Что теперь?
Придется делать шаг назад, но правильно.
- Возвращаюсь к таблице символьной подмены (Swap Table), но теперь на новой основе.
- Чтобы не пересекаться с системными кодами, я буду использовать безопасный диапазон символов.
- Для этого придется перерисовать шрифт в 4K (об этом позже), чтобы подменить западноевропейские знаки на нормальную кириллицу
ГЛАВА 7: Глобальный мозг — 33 000 строк и Правила Игры
Победив технические вылеты, я вернулся к масштабированию. В папке сюжета лежит 1784 файла. Чтобы переварить этот объем, я написал «Умный Пылесос» и систему массовой AI-нарезки. Она собирает текст, удаляет дубликаты и фасует строки в пакеты по 250 штук.
В итоге Мастер-Словарь разросся до 33 000 строк. Чтобы этот массив текста не превратился в кашу из разных стилей, я внедрил жесткие правила обработки.
1. Чистка фонетики: «Д» должна уйти
Я продолжаю придерживаться кинематографичного стиля, но здесь пришлось копнуть глубже. Главная война шла не столько за «Ши/Си», сколько за букву «Z».
- В системе Поливанова Z часто превращается в ДЗ (Аидзава). Это режет слух и утяжеляет текст.
- Мой стандарт: Z = З. Поэтому Аизава (Aizawa), а не Аидзава. Казума (Kazuma), а не Кадзума.
- Окончания: Имена, оканчивающиеся на -be или -me (Watanabe, Madarame), пишутся через «Е», а не «Э». Ватанабе, а не Ватанабэ.
2. Бренды и Группы: Транслитерация
Вместо того чтобы оставлять английские названия или переводить их дословно («Летающие Финансы»), я привел всё к единому виду:
- Компании и группы пишутся кириллицей и в кавычках.
- Примеры из игры: «Дайна Чейр», «Скай Финанс», «Осака Талент».
- Группы идолов: «Ти-Сет» (T-Set).
Спортивные команды: Их я решил переводить по смыслу, чтобы звучало как названия клубов, а не набор звуков.
Wyverns -> «Виверны».
Giants -> «Гиганты».
3. Идолопоклонство и «трудности перевода»
Ветка Харуки подкинула специфических проблем.
- Айдол, а не Идол: Харука — это поп-звезда (Айдол), а не языческое божество (Идол). Разница в одну букву, но она критична для атмосферы.
- Специфические мемы: В игре есть моменты, которые заставили задуматься. Например, странная речевая разминка «Фунняпа» (Foonya) или персонаж с фамилией Манда-сан. Тут пришлось проверять контекст дважды, чтобы это не выглядело как ошибка автозамены, а оставалось верным оригиналу.
Вся эта система теперь работает в полуавтоматическом режиме: Фильтр -> Перевод -> Проверка словарем -> Вставка в игру
ГЛАВА 8: Камуро-Дизайн — Битва за чёткость в 4K
Заставив игру читать русский текст, я столкнулся с последней проблемой на сегодня — эстетикой. Стандартный шрифт 2012 года на современных мониторах выглядит мыльным, а кириллица, впихнутая в узкие ячейки, часто «плывет».
Решение нашлось на Нексусе — моддеры уже сделали текстуру шрифта в высоком разрешении. Я решил не рисовать велосипед, а угнать этот «Кадиллак» и перекрасить его в наши цвета.
Я разработал схему «Камуро-Дизайн»:
- Берём 4K-атлас (текстуру со всеми буквами).
- Находим свободные слоты западноевропейских символов (À, Æ, Ö...), которые я использую для технической подмены.
- Через редактор (написанный мной плагин «Камуро-Дизайн») отрисовываем там чёткую кириллицу.
- В итоге игра думает, что показывает французский акцент, а игрок видит идеальный русский шрифт в высоком разрешении.
Это финальное решение. Искать скрытые таблицы отступов в коде я больше не планирую — на 4K-текстуре буквы и так читаются отлично. В планах только автоматизация отрисовки: хочу дописать скрипт, который будет массово генерировать алфавит и наносить его на текстуру, а заодно обновить таблицу подмены символов на новую.
СПИСОК ЗАВЕРШЕНИЯ:
✅ 33 000+ строк — сформирован единый Мастер-Словарь перевода.
✅ Safe Append — движок сборки больше не ломает игру, дописывая байты в «хвост» файла.
✅ Fixer-Bot — написаны скрипты глобальной автозамены (Тэнджин, Айдол, Пак).
✅ Тех. часть Нагасугай — сюжет первой главы готов к заливке текста.⏳ 4K Fonts — база для HD-шрифта подготовлена, идет отрисовка.
⏳ Массовый тест — начинаем обкатку перевода в реальном геймплее.
БЛАГОДАРНОСТИ
Отдельное спасибо пользователю (Аноним) за первый донат!
Имени не называю, так как не спрашивал разрешения, но знай — это было неожиданно и чертовски приятно. Такая поддержка — лучшее топливо для работы, покруче любого Stamina Royale.
Также жму руку всем, кто поддерживает актив в комментариях и следит за постами. Видеть живой интерес аудитории — это лучший стимул возвращаться к коду после работы.
Я не буду давать пустых обещаний, что обязательно доведу проект до финальных титров — объем игры колоссальный, а я работаю один. Но пока есть силы и интерес — я буду продолжать этот взлом. А ваша поддержка дает отличный пинок не останавливаться.
Продолжаю пилить. Дальше — больше.
Sungoro
Хроники разработки: