Як будувався переклад
Дослідження
Розібралися, де гра зберігає текст, шрифти й текстури, і які формати TT Games доведеться змінювати.
Розпакування
Розпакували DAT-архіви, знайшли ENGLISH.TXT, TRC.CSV, титри, атласи шрифтів і текстури з написами.
Шрифти
Додали в ігрові атласи літери І, Ї, Є, Ґ та їхні малі пари, підігнали метрики й перевірили кожен шрифт гри.
Переклад і глосарій
598 рядків гри, TRC.CSV і титри: спершу глосарій і контекст кожного рядка, потім переклад, вичитка й культурні адаптації.
Рушій (UAP/ASI)
ASI-плагін через dinput8.dll підставляє ресурси з пакета UKRAINIAN.uap під час гри — оригінальні файли лишаються недоторканими.
Текстури
Перемалювали 9 текстур із написами, зокрема логотип на титульному екрані.
QA наживо
Проходили гру з перекладом: шукали обрізаний текст, криві переноси й рядки без контексту, правили й перевіряли знову.
Реліз
Зібрали ZIP із контрольними сумами SHA256SUMS і опублікували на GitHub — перша публічна версія 1.1.10.
Ця сторінка пояснює, як зроблено українізатор: звідки беруться слова, хто що робив, як перевірявся кожен рядок і чому деякі рішення саме такі. Технічні подробиці — в architecture.md і в розділі досліджень.
Коротко
Розділ «Коротко»- Переклад — не машинний прогін. Кожен рядок перекладено в контексті місця, де він з’являється в грі, звірено з глосарієм і вичитано автором.
- Технічну частину (формати, адреси в пам’яті, плагін) досліджено з нуля: офіційних інструментів для перекладу гри немає.
- ШІ-асистент був інструментом дослідження й чернеток. Рішення, вичитка й перевірка в грі — за автором.
- Нічого не заявляється без перевірки: якщо щось не перевірено, так і написано.
Хто що робив
Розділ «Хто що робив»Проєкт зроблено однією людиною з ШІ-асистентами (Claude Code, Codex). Ми пишемо про це відкрито: це чесно, і саме так вдалося за кілька тижнів пройти шлях від «гра не знає літери ї» до повного перекладу.
| Автор | ШІ-асистент |
|---|---|
| Ідея проєкту й усі рішення: що перекладати, як встановлювати, що випускати | Дослідження форматів .FNT, UAP, DDS, сейвів |
| Глосарій і словник, культурні адаптації («Валєра», «Пластун», «круглики») | Пошук адрес і функцій у пам’яті гри, розбір дампів падінь |
| Вичитка кожного рядка, правки стилю й термінів | Розпакування ресурсів, інвентаризація текстур, OCR |
| Перевірка в живій грі: проходження, скриншоти, пошук помилок | Чернетки перекладу за глосарієм і контекстом |
| Графіка: логотип, написи на текстурах, ручне налаштування гліфів | Інструменти: збирачі, кодери DXT, тести, плагін |
| Ідентифікація шрифту Franklin Gothic Medium і параметрів рендеру | Документування досліджень і перевірок |
Важливий наслідок: майже всі помилки шрифтів, описані в fonts.md, знайшов автор у живій грі. Автоматичні перевірки байтів їх не бачили.
Шлях одного рядка
Розділ «Шлях одного рядка» ID рядка де він у грі глосарій переклад ┌────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────┐ │ 151 │──────>│ магазин │──────>│ team- │──────>│ «Валєра» │ │ Jungle │ │ персонажів, │ │ approved? │ │ │ │ Guide │ │ коротке ім'я │ │ так/ні │ │ │ └────────┘ └──────────────┘ └────────────┘ └────┬─────┘ │ ┌─────────────────────┐ ┌───────────v──────┐ │ жива перевірка в │<──────│ вичитка автором: │ │ грі: вміщується, │ │ стиль, рід, │ │ шрифт, контекст │ │ токени [..], %d │ └─────────────────────┘ └──────────────────┘- ID. Кожен рядок
ENGLISH.TXTмає числовий ID, рядкиTRC.CSV— текстові мітки, PC-меню — власні ID. Переклад зберігається за ID уtranslations/*.json; повних англійських файлів гри в репозиторії немає, а структуру рядків (ID, службові токени) описує індекс уindex/. - Контекст. Де рядок з’являється: меню, підказка, ім’я в магазині, заголовок рівня. Від цього залежить довжина, рід, відмінок і тон. Наприклад, «Posted» у грі — статус посилки, тому «Відправлено», а не «Опубліковано».
- Глосарій.
translations/glossary.jsonмістить імена, артефакти, місця, ігрові терміни й рівень упевненості для кожного:high,medium,low-proposal,team-approved. - Переклад. Чернетку готував ШІ-асистент за глосарієм і контекстом; автор приймав, правив або переписував.
- Вичитка. Автор звіряв стиль і терміни. Автоматична перевірка
(
python -m ua validate) стежить, щоб не загубилися ID, службові токени[...],%dі щоб кожен символ був у шрифті. - Жива перевірка. Рядок має бути видно в грі: чи вміщується, чи не обрізаний, чи правильно рендериться кожна літера.
Глосарій і джерела
Розділ «Глосарій і джерела»- Офіційний український дубляж трилогії (ICTV, студія «ТВ+»): «У пошуках втраченого ковчега», «Храм Долі», «Останній хрестовий похід».
- Українська Вікіпедія: імена персонажів, назви артефактів і місць (Меріон Ревенвуд, Малюк, Салла, Беллок, Ковчег Заповіту, палац Панкот).
- Українських перекладів книг про Індіану Джонса немає, тож це не пропущений крок, а порожня ніша.
- Усталеної української термінології LEGO-ігор (Studs, Free Play, Minikit) публічно не знайшлося. Такі терміни — обґрунтовані пропозиції, позначені в глосарії.
- Сторонні кириличні локалізації не використовувалися як джерело перекладу. Технічно використано лише атлас сторонньої кириличної латки шрифту як основу Font 1.
Культурні адаптації описано окремо: research/cultural-adaptations.md.
Як перевірялося
Розділ «Як перевірялося»Жива гра. Для нативної Win32-гри браузерна автоматизація не допоможе. Цикл перевірки виглядав так: закрити гру → оновити файли → запустити через Steam → дійти до потрібного екрана → скриншот → порівняти. Для шрифтів автор тимчасово ставив замість «Нова гра» тестовий рядок з усіма вісьмома новими літерами поруч, щоб бачити їх в одному слові.
Пам’ять процесу. Окремий інструмент читає пам’ять запущеної гри (нічого не змінюючи) і звіряє, що там справді лежать наші рядки: 598/598 основних, 194/194 значень CSV, 38/38 PC-рядків.
Тести. Формати, індекс рядків, структура шрифтів, базова лінія, рантаймові символи прицілу, x86-адаптери редактора, підміна DDS на оригінальних контейнерах, поведінка без UAP і з пошкодженим UAP.
Незмінність гри. Після встановлення й відкату SHA-256 EXE і DAT мають збігатися з оригіналом.
Чесний статус. У кожній версії окремо писалося, що перевірено, а що — ні. Наприклад, повне проходження гри від початку до кінця ще не завершене, тому канали зворотного зв’язку стоять на першому екрані README.
Від 0.1.0 до 1.1.10
Розділ «Від 0.1.0 до 1.1.10»| Версія | Що відкрито або зроблено |
|---|---|
| 0.1.0 | Увесь текст і 8 літер в основному шрифті; гра мусила бути розпакована |
| 0.1.1–0.1.2 | Логотип і 9 текстур з написами |
| 0.1.3 | Виправлено Font 2 і базову лінію іконок геймпада |
| 0.1.4 | PC-меню з EXE через підміну вказівників у пам’яті |
| 0.1.5 | Редакторський прохід: «круглики», «Бонуси», підказки |
| 0.1.6–0.1.7 | UAP: оригінальні DAT лишаються, пакет зменшився з 182 МБ до 2 МБ |
| 0.1.8 | Офіційний Ultimate ASI Loader і ASI-плагін |
| 0.1.9 | Культурні адаптації імен |
| 0.1.10 | Приціл, UTF-8 у редакторі, «Форелька» й «Льоля» |
| 1.1.10 | Перший публічний реліз, новий відтворюваний репозиторій |
Деталі кожної версії — у CHANGELOG.md.
Принципи, яких варто триматися
Розділ «Принципи, яких варто триматися»- Не змінювати файли гри на диску. Усе підставляється в пам’яті, а видалення трьох файлів повертає оригінал.
- Не постачати ресурсів гри. У git — лише наш текст, наші шари графіки й наші гліфи; повні ресурси збираються з власної копії гри.
- Перевіряти перед зміною. Плагін звіряє EXE, байти функцій і пакет; за найменшої розбіжності він нічого не робить.
- Гіпотеза — не факт. Кілька ранніх припущень (loose-файли поверх DAT, «magic» у заголовку FNT, винний плагін у паузі катсцен) спростували експерименти. Висновок записується лише після перевірки.