Русификатор Yakuza 5 Remastered. Часть 4: «Навигатор Сузуки», восстановление сборки и 41 000 строк.
Вступление: Ошибка «Универсального Солдата»
В программировании есть соблазн сделать одну программу, которая делает всё. Я попытался превратить свой «Редактор Дракона» в универсального помощника для всех типов файлов сразу. Идея была красивой, но реализация привела к краху.
Пытаясь научить редактор работать с бинарниками, я сломал то, что уже работало. Старая сборка отвалилась, новая не завелась, .bin файлы игру вешали намертво. Несколько дней работа стояла.
Пришлось признать ошибку, откатить амбиции и написать отдельный, специализированный инструмент для сложных задач — «Навигатор Сузуки». Сегодня о том, как я восстанавливал проект из пепла, воевал с защитой заголовков в файлах и довел базу переводов до 41 000 строк.
ГЛАВА 9: «Навигатор Сузуки» и Выстрел себе в ногу
Эпицентром взрыва стала папка boot — сердце интерфейса игры. Мой старый универсальный редактор, который я пытался «натянуть» на все форматы, на бинарных файлах сломался окончательно.
Ситуацию усугубило то, что я сам загнал себя в ловушку: поторопился и перевел кучу строк из boot-архива без надежных фильтров. Когда игра начала вылетать, я оказался в тупике. Что именно сломало движок? Мой новый код, который неверно пересчитал байты? Или я случайно перевел системный тег на русский, и скрипты игры сошли с ума?
Пришлось откатываться назад и писать новый, узкоспециализированный инструмент — «Навигатор Сузуки».
В его основе лежит код старого «Редактора Меню» (о создании которого я писал в [Побочной истории про создание инструментария]), скрещенный с удачными фичами «Редактора Дракона» — цветовым выделением и фильтрами строк.
Важный нюанс: пока Навигатор работает строго с одним файлом (string_tbl.bin). Это не универсальная "волшебная кнопка". Я даже сканер префиксов к нему еще не прикрутил, поэтому очищать строки от мусорных символов приходится вручную.
Но именно этот «ручной» подход позволил найти Баг Века, который я сам же и создал.
Ошибка «Безопасного Заголовка»:
- Мой скрипт честно рассчитывал новые адреса для строк, обновлял их, всё было идеально.
- Но последним шагом срабатывала функция «Защита заголовка». Она брала первые 64 байта из старого оригинального файла и копировала их в новый, «чтобы ничего не сломать».
- Проблема в том, что именно в этих первых байтах и хранились те самые обновленные указатели!
В итоге скрипт сначала чинил файл, а за секунду до сохранения сам ломал его обратно, перезаписывая правильные адреса старыми данными. Только исправив и вычистив словарь, я наконец-то запустил игру.
ГЛАВА 10: Камуро-Дизайн и Ручная Калибровка
Визуальную часть тоже пришлось допиливать. Про битву с цветом я подробно рассказывал в , но оставалась проблема геометрии.
Автоматическая калибровка в «Камуро-Дизайн» работала неидеально — текст предательски сползал вниз. Поэтому я использовал её только для поиска базовой линии, а дальше действовал вручную.
Я доработал плагин, чтобы можно было принудительно менять высоту символов. Пришлось слегка увеличить их и подогнать так, чтобы низ русской буквы стоял идеально вровень с точкой в английском оригинале. Теперь текст не «плавает» относительно интерфейса.
Заодно провел точечный ремонт:
- Отрисовал новый пресет для буквы «ё» и перенес её в другую ячейку таблицы (подальше от греха и технических конфликтов).
- Слегка сдвинул «п», чтобы она не слипалась с соседями.
В итоге — это всё ещё ручная работа, но теперь у меня есть инструменты, чтобы видеть результат сразу, а не после десятого перезапуска игры.
ГЛАВА 11: 41 000 строк, «Советник» и поломка сюжета
Пока я воевал с архитектурой и бинарниками, база переводов («Master Dictionary») разрослась до неимоверных масштабов. На данный момент в словаре зафиксировано уже более 41 000 строк. Теперь при входе в игру встречает не только логотип, но и понятные русские пункты в Настройках и Главном меню.
Чтобы не утонуть в таком объеме, я внедрил в инструментарий «Советника». Это алгоритм внутри редактора, который анализирует структуру строки и подсвечивает её: диалоги — зеленым, а опасные системные ID — красным.
В вопросах пунктуации я решил не рисковать. Чтобы игра гарантированно не вылетала, я настроил автоматическую замену русских кавычек-ёлочек «» на стандартные "". Красота важна, но стабильность важнее. А вот длинное тире — удалось сохранить, и теперь оно отображается корректно.
Но самая главная победа — в логике. Помните мою статью про Решение проблемы 0xFF? Чтобы окончательно победить вылеты, я внедрил систему Двойной Кодировки.
Это кажется костылем, но это работает: программа анализирует файл, и если видит технические данные, использует одну таблицу символов, а для диалогов — другую, безопасную, где русская "я" не превращается в смертельный байт FF. Только этот гибридный подход позволил запустить меню без крашей.
Но без «ложки дегтя» не обошлось. Плагин «Сценарист», отвечающий за сборку катсцен, перестал работать. То ли я давно его не обновлял, то ли он не подружился с новым ядром кодировки, но собирать файлы сюжета он отказывается.
Тем не менее, на старых сборках уже видно, как преобразился шрифт в катсценах — он стал ровным и четким (скриншоты приложу). Теперь цель — переписать «Сценариста» под новые стандарты и вернуть сюжет в строй.
И символ переноса экранировал правильно
📋 СПИСОК ЗАВЕРШЕНИЯ
ОСНОВНОЕ:
✅ Восстановить систему сборки (После критического сбоя)
✅ Создать «Навигатор Сузуки» (Инструмент для .bin файлов)
✅ Интеграция перевода (Главное меню и Настройки работают)
ТЕКСТ И ШРИФТЫ:
✅ Базовая линия (Текст выровнен по высоте, исправлены отступы)
✅ Пунктуация (Тире работает, кавычки заменены на безопасные)
✅ Объем словаря (Достигнута отметка 41 000+ строк)
ПРОБЛЕМЫ И ПЛАНЫ:
❌ Плагин «Сценарист» (Сломан, требуется ремонт)
❌ Кернинг (Буквы местами слипаются, требуется полировка)
🔨 Редактор Текстур (Старый стал редактором шрифтов, нужен новый для UI-картинок)