Перейти до вмісту
EN

Як будувався переклад

  1. Дослідження

    Розібралися, де гра зберігає текст, шрифти й текстури, і які формати TT Games доведеться змінювати.

  2. Розпакування

    Розпакували DAT-архіви, знайшли ENGLISH.TXT, TRC.CSV, титри, атласи шрифтів і текстури з написами.

  3. Шрифти

    Додали в ігрові атласи літери І, Ї, Є, Ґ та їхні малі пари, підігнали метрики й перевірили кожен шрифт гри.

  4. Переклад і глосарій

    598 рядків гри, TRC.CSV і титри: спершу глосарій і контекст кожного рядка, потім переклад, вичитка й культурні адаптації.

  5. Рушій (UAP/ASI)

    ASI-плагін через dinput8.dll підставляє ресурси з пакета UKRAINIAN.uap під час гри — оригінальні файли лишаються недоторканими.

  6. Текстури

    Перемалювали 9 текстур із написами, зокрема логотип на титульному екрані.

  7. QA наживо

    Проходили гру з перекладом: шукали обрізаний текст, криві переноси й рядки без контексту, правили й перевіряли знову.

  8. Реліз

    Зібрали 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 │
└─────────────────────┘ └──────────────────┘
  1. ID. Кожен рядок ENGLISH.TXT має числовий ID, рядки TRC.CSV — текстові мітки, PC-меню — власні ID. Переклад зберігається за ID у translations/*.json; повних англійських файлів гри в репозиторії немає, а структуру рядків (ID, службові токени) описує індекс у index/.
  2. Контекст. Де рядок з’являється: меню, підказка, ім’я в магазині, заголовок рівня. Від цього залежить довжина, рід, відмінок і тон. Наприклад, «Posted» у грі — статус посилки, тому «Відправлено», а не «Опубліковано».
  3. Глосарій. translations/glossary.json містить імена, артефакти, місця, ігрові терміни й рівень упевненості для кожного: high, medium, low-proposal, team-approved.
  4. Переклад. Чернетку готував ШІ-асистент за глосарієм і контекстом; автор приймав, правив або переписував.
  5. Вичитка. Автор звіряв стиль і терміни. Автоматична перевірка (python -m ua validate) стежить, щоб не загубилися ID, службові токени [...], %d і щоб кожен символ був у шрифті.
  6. Жива перевірка. Рядок має бути видно в грі: чи вміщується, чи не обрізаний, чи правильно рендериться кожна літера.

Глосарій і джерела

Розділ «Глосарій і джерела»
  • Офіційний український дубляж трилогії (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 Увесь текст і 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, винний плагін у паузі катсцен) спростували експерименти. Висновок записується лише після перевірки.