SteamWorld Heist UA Tools

Комплекс утиліт для локалізації SteamWorld Heist. Повний C#-тулсет для впровадження кирилиці в бінарні bitmap-шрифти (SWH.FontTool), WPF-редактор локалізації з графічним інтерфейсом (SWH.LocEditor), репакер DLC архівів та двомовний валідатор тексту.

Утиліти

SWH.FontTool — повний набір C#-інструментів (Core / Analyzer / CLI) для впровадження повного українського алфавіту у власний бінарний формат шрифтів гри (.fnt + .png), реверс-інжинірингований побайтово, без жодної документації розробника. Кожна з 66 українських літер отримує повністю нову геометрію у розширеному просторі PNG; базова лінія та висота тіла калібруються від оригінальної латиниці шрифту (гарантовано коректної), а не від кирилиці, яка подекуди сама була невідповідного розміру в тих самих файлах. Індивідуальний вимірюваний трекінг-коефіцієнт (XAdvance) для кожного шрифту окремо — від ~0.64 для конденсованих шрифтів до ~1.0 для звичайного тексту, універсальна формула тут не працює. Безпечна 3-рівнева система донорів для гліфів без прямого відповідника (Ё/Ъ/ё тощо), яка уникає символів, зайнятих іншими локалізаціями в тому самому файлі. Рендер шрифтами родини Fira Sans (Extra Condensed Bold для заголовків, SemiBold для основного тексту) — замінили початкові Oswald/Comfortaa після перевірки походження: кириличне розширення обох виконувала одна й та сама студія з рф, тоді як латиницю й кирилицю Fira Sans створила одна команда (Carrois Type Design / болгарські дизайнери Nikoltchev-Kateliev) без стосунку до неї. Консольне меню повністю двомовне (UA/EN). Замінює попередній FontGenMaster.

SWH.LocEditor — WPF-застосунок (розділений на SWH.LocEditor.Core — чиста логіка без залежності від GUI, і SWH.LocEditor.GUI — інтерфейс) для роботи з мовним CSV гри (.csv/.csv.z) напряму, без проміжних кроків через QuickBMS. Живі перевірки перекладу під час редагування (кирилиця у службових змінних, незбалансовані теги, підозріло довший/коротший за оригінал переклад — пороги підібрані під природну довшість української мови), автоматичне визначення технічних рядків (лише символи/плейсхолдери або явний коментар розробника “do not translate”) і дублікатів оригіналу з одним кліком розповсюдження перекладу на всю групу та окремим маркером, якщо дублікати вже розійшлися. Редагована колонка “Вичитка” з готовими позначками або довільним коментарем, автозбереження робочого TSV. Чітке розмежування джерел даних: ключ/оригінал/коментар розробника завжди беруться з оригінального CSV гри, а колонки для людей-рецензентів програма ніколи не читає й не перезаписує. Темна/світла тема, масштаб шрифту, фільтри за статусом із живими лічильниками, файлове логування ключових операцій для діагностики.

TextValidator — двомовний (UA/EN) валідатор перекладу: злиття перевірених рядків назад у формат гри з автоматичною перевіркою тегів, змінних %, переносів рядка та випадкової кирилиці у службових змінних (запобігає крашам рушія), звіт про ключі оригіналу, відсутні в review-файлі.

ImpakRepacker — двомовний репакер DLC-архівів .impak зі збереженням оригінальних рівнів стиснення кожного файлу (запобігає артефактам і крашам через невідповідне стиснення). Меню вибору конкретного DLC або пакування всіх одразу, зі статусом готовності кожного.

OllamaTranslatorClient — двомовний клієнт для автоматизованого першого проходу перекладу через локальну модель TranslateGemma 12B (Ollama), із захистом ігрових тегів від пошкодження та автоматичною QA-перевіркою результату.

Додаткові інструменти

QuickBMS — використовується для розпакування та пакування текстових архівів .z і .csv.z гри.

Вимоги

Windows 10/11 x64/x86. SWH.LocEditor: self-contained збірки (win-x64/win-x86) не потребують встановленого .NET; framework-dependent версія потребує .NET 10 Desktop Runtime. Решта утиліт — .NET 10 SDK для збірки з коду.

Завантаження

Актуальні релізи доступні на GitHub Releases.

Безпека та прозорість

Вихідний код інсталятора та всіх утиліт повністю відкритий. Інсталятор (Inno Setup, packexe.iss) виконує лише операції копіювання файлів у теці гри: заміну текстового архіву, розгортання власних атласів шрифтів і оновлення DLC перепакованими архівами. Реєстр використовується виключно для стандартного запису в HKEY_CURRENT_USER — підтримка деінсталятора через Панель керування Windows та відстеження версії (запобігання дублюванню встановлення). Жодні глобальні системні налаштування, драйвери чи параметри безпеки не змінюються; деінсталятор повністю видаляє всі записи реєстру та встановлені файли.

Попередження Windows SmartScreen виникають виключно через відсутність платного цифрового підпису — це норма для некомерційних проєктів. Актуальний звіт VirusTotal доступний на сторінці Nexus Mods.

Пов’язаний проєкт

Розроблено для SteamWorld Heist — Українська локалізація.

Подяки

  • QuickBMS — екстракція та імпорт .z архівів
  • Inno Setup — інсталятор з підтримкою версійності
  • Fira Sans / Fira Sans Extra Condensed (Carrois Type Design для Mozilla/Telefónica, OFL) — шрифтова родина, використана для рендеру всіх нових українських гліфів
  • SixLabors.ImageSharp / ImageSharp.Drawing — обробка PNG-атласів та рендер гліфів у SWH.FontTool
  • Ollama / TranslateGemma 12B — локальна модель для першого проходу перекладу без хмарних API-ключів
  • sb8gapi та спільнота Graj po Polsku — дослідження структури .fnt файлів SteamWorld Heist
  • Steam Community — технічні деталі роботи з .z архівами
  • AI-асистент (Claude) — частина коду написана за його допомогою; всі технічні рішення, вимірювання, перевірка в грі та фінальне ухвалення лишаються за автором