Skip to content

Kirikiri

Общая информация

Kirikiri (произносится «Кирикири», яп. 吉里吉里) — это скриптовый движок для создания визуальных новелл и кинетических новелл, разработанный японским программистом W.Dee и впервые выпущенный в 1998 году [[17]].

Движок практически всегда используется в связке с фреймворком KAG (Kirikiri Adventure Game System) — системой скриптов, специально разработанной для упрощения создания визуальных новелл [[9]].

Интересный факт: Название «Кирикири» — это звукоподражание японскому крику сверчка, символизирующее лёгкость и изящество движка.

Архитектура и технологии

Двухуровневая система

┌─────────────────────────┐
│   Сценарий (.ks)        │ ← Пишет сценарист (KAG-теги)
│   [KAG Framework]       │
└─────────┬───────────────┘

┌─────────────────────────┐
│   Скрипты (.tjs)        │ ← Пишет программист (TJS2)
│   [TJS2 Interpreter]    │
└─────────┬───────────────┘

┌─────────────────────────┐
│   Ядро Kirikiri         │ ← Рендеринг, ввод, аудио
│   [Native C++ Core]     │
└─────────────────────────┘

Ключевые компоненты:

КомпонентОписание
KAGВысокоуровневый язык сценариев с тегами, похожими на HTML ([backlog], [image], [button]) [[9]]
TJS2Объектно-ориентированный скриптовый язык, на котором написан сам KAG; позволяет расширять функционал движка
XP3Проприетарный формат архивов для упаковки всех ресурсов игры [[4]]

Форматы файлов

Основные расширения:

РасширениеНазначение
.xp3Архив с данными игры (изображения, звук, скрипты) [[21]]
.ksФайл сценария на языке KAG (Kirikiri Script)
.tjsСкрипт на языке TJS2 для расширенной логики
.tlgПроприетарный формат изображений Kirikiri (часто конвертируется в PNG)
.sigФайл цифровой подписи/проверки целостности архива [[24]]

Структура типичной игры:

GameFolder/
├── data.xp3          # Основные ресурсы
├── patch.xp3         # Обновления/патчи
├── krkr.exe          # Исполняемый файл движка
├── plugin/           # Дополнительные модули
└── save/             # Сохранения игрока

Все данные игры упакованы в .xp3-архивы. Для извлечения требуются специальные утилиты вроде Garbro, krkrextract или Xp3Pack [[1]][[26]].

Особенности и преимущества

🔹 Гибкость

  • Расширяемость через TJS2: Поскольку KAG написан на TJS2, разработчики могут модифицировать сам фреймворк или напрямую обращаться к ядру движка [[9]].
  • Поддержка плагинов: Можно подключать внешние DLL-модули для добавления новой функциональности.

🔹 Кроссплатформенность

  • Изначально разработан для Windows, но существуют порты:
    • Kirikiroid2 — для Android
    • Kirikiri Z — современная форк-версия с поддержкой новых ОС [[7]]

🔹 Производительность

  • Оптимизирован для 2D-рендера: спрайты, переходы, эффекты
  • Поддержка аппаратного ускорения (в более новых версиях)

🔹 Локализация

  • Поддержка различных кодировок: Shift-JIS (для японских игр), UTF-8/UTF-16 (для международных версий) [[3]]
  • Возможность подмены шрифтов для отображения кириллицы и других алфавитов

Известные игры на Kirikiri

ИграСтудияПримечание
Fate/stay nightTYPE-MOONОдна из самых известных ВН на движке
Fate/hollow ataraxiaTYPE-MOONПродолжение Fate/stay night
NekoparaNEKO WORKsИспользует модифицированную версию, доступна в Steam
1999 Christmas EveКлассическая новелла на Kirikiri
Maji de Watashi ni Koi Shinasai!Minato SoftПопулярная коммерческая ВН

Движок широко используется как в додзин-проектах (любительских), так и в коммерческих визуальных новеллах [[15]].

Версии и развитие

ВерсияГодСтатусОсобенности
Kirikiri 11998УстарелаБазовая функциональность
Kirikiri 2 + KAG3~2003Наиболее распространённаяПолная переработка, обратная совместимость на уровне сценариев [[9]]
Kirikiri Z2013+Активная форк-версияПоддержка современных ОС, улучшения рендерера [[7]]

С октября 2010 года оригинальный Kirikiri не обновлялся. С 2013 года развитие продолжилось в виде форка Kirikiri Z [[15]].

Для переводчиков и моддеров

Основные инструменты:

  • Garbro — универсальный экстрактор архивов, поддерживает XP3 [[1]]
  • KirikiriTools (GitHub) — набор утилит: Xp3Pack для создания патчей, KirikiriDescrambler для расшифровки скриптов [[1]]
  • VNTextPatch — инструмент для патчинга текста без переупаковки архивов [[1]]
  • Translator++ — специализированный редактор с поддержкой KAG-тегов [[4]]

Типичные сложности:

  1. Шифрование/скремблинг скриптов — некоторые игры защищают .ks-файлы сигнатурами FE FE 00 FF FE и др. [[1]]
  2. Кодировки — старые игры используют Shift-JIS, новые — UTF-8; ошибка приведёт к нечитаемому тексту [[3]]
  3. Длина текста — русский/английский текст длиннее японского; может потребоваться разбивка строк или правка окон диалога
  4. Шрифты — встроенные шрифты могут не поддерживать кириллицу; иногда требуется подмена через конфигурацию

Ресурсы для изучения

Пайплайн перевода игр на Kirikiri2

🔹 Этап 1: Разведка и подготовка

Цель: Понять структуру игры, проверить защиту, подготовить рабочее окружение.

  1. Определить версию движка (krkr.exe, data.xp3, наличие plugin/, config.tjs).
  2. Проверить наличие защиты: скремблинг скриптов, шифрование XP3, проверка подписи (.sig), модифицированный экзешник.
  3. Найти гайды по конкретной игре на LemmaSoft Forums, Fuwanovel, GitHub или VNDB.
  4. Создать чистую рабочую директорию: original/, extracted/, translated/, patch/.

Инструменты:

  • Detect It Easy (DIE) или PEiD → анализ krkr.exe
  • Garbro → быстрый просмотр содержимого .xp3
  • Strings / HxD → поиск ключевых слов (KAG, TJS, XP3)
  • Поисковые запросы: [GameName] Kirikiri extract, KAG script decryption

🔹 Этап 2: Извлечение ресурсов

Цель: Получить доступ к скриптам, текстам и графике без повреждения структуры.

  1. Распаковать .xp3 архивы в отдельную папку.
  2. Сохранить оригинальную иерархию папок (движок чувствителен к путям).
  3. Если архив зашифрован/скремблирован: применить дамп памяти или специфичный для игры декриптор.

Инструменты:

  • Garbro (GUI, поддерживает XP3, TLG, WAV)
  • krkrextract / Xp3Dump (консольные, быстрая распаковка)
  • QuickBMS + скрипты (если нестандартная упаковка)
  • Textractorальтернативный метод: вытягивает текст напрямую из памяти запущенной игры (полезно, если скрипты зашифрованы)

🔹 Этап 3: Перевод и редактирование

Цель: Перевести текст, сохранить синтаксис KAG, подготовить графику и шрифты.

  1. Определить кодировку .ks файлов: Shift-JIS (старые японские игры) или UTF-8/UTF-16 (новые/порты).
  2. Открыть файлы в редакторе с поддержкой кодировок. Не менять:
    • Теги KAG: [r], [l], [p], [if], [iscript], *label, @jump
    • Переменные: f.name, sf.scene, mp.char
    • Системные вызовы
  3. Перевести текст, сохраняя структуру вызовов text="...". Если текст длиннее оригинала, разбить на несколько строк или использовать [ruby]/[nowrap].
  4. Отредактировать изображения с текстом (меню, заставки, логотипы).
  5. Подготовить шрифт с поддержкой кириллицы (если движок использует встроенный).

Инструменты:

  • Notepad++ / VS Code → редактирование .ks, подсветка синтаксиса
  • Translator++ → CAT-инструмент с поддержкой KAG-тегов, экспорт/импорт в таблицы
  • OmegaT / Smartcat → для командной работы и глоссариев
  • Photoshop / GIMP / Krita → правка графики
  • FontForge / Noto Sans → подготовка шрифтов
  • Textractor + Textractor CLI → автоматический сбор текста для перевода в CSV

🔹 Этап 4: Интеграция и сборка

Цель: Вернуть переведённые файлы в игру, не сломав логику.

  1. Запаковать изменённые файлы обратно в .xp3 с идентичной структурой.
  2. Если игра проверяет целостность (.sig или хеш-суммы):
    • Использовать патчер, игнорирующий проверки
    • Или заменить data.xp3 полностью, если игра не использует внешнюю валидацию
  3. Настроить шрифт:
    • В data.tjs или config.tjs изменить путь к шрифту на системный ("C:/Windows/Fonts/arial.ttf")
    • Или использовать DLL-инжектор шрифтов (например, Kirikiri Font Changer)
  4. Создать патч или модифицированную сборку.

Инструменты:

  • Garbro → повторная упаковка
  • Xp3Pack (из KirikiriTools) → точная сборка с сохранением метаданных
  • HxD / 010 Editor → правка заголовков, обход простых проверок
  • Kirikiri Font Patcher → замена шрифтов без правки скриптов
  • Inno Setup / 7-Zip SFX → создание установщика патча

🔹 Этап 5: Тестирование и отладка

Цель: Убедиться, что игра стабильна, текст отображается корректно, нет вылетов.

  1. Запуск с отладочным флагом: krkr.exe -debug или debug=1 в конфиге.
  2. Проверка:
    • Загрузка всех сцен
    • Переполнение диалоговых окон
    • Корректность кодировки (нет "кракозябр")
    • Работа сохранений и перемотки
  3. Сбор логов вылетов (обычно error.log в папке игры или %APPDATA%).
  4. Фикс проблем: разбивка строк, правка тегов, замена шрифта, отключение проблемных плагинов.

Инструменты:

  • Встроенный отладчик Kirikiri2 (-debug, log=1)
  • Process Monitor → отслеживание доступа к файлам
  • OBS Studio / скриншоты → фиксация багов
  • Notepad++ с regex → массовая правка переполнений

🔹 Этап 6: Публикация и поддержка

Цель: Выпустить патч, документировать особенности, собрать фидбек.

  1. Упаковать патч с инструкцией по установке.
  2. Написать README.md: версия движка, известные баги, требования, контакты.
  3. Опубликовать на тематических площадках (VNDB, LemmaSoft, VK/Discord сообщества, itch.io).
  4. Поддерживать обновления: фиксы, хотфиксы шрифтов, совместимость с обновлениями игры.

Инструменты:

  • Git / GitHub Releases → версионирование патчей
  • Markdown → документация
  • Discord / Telegram → сообщество и баг-репорты

Стартовый набор инструментов (рекомендация)

КатегорияИнструментЗачем
РаспаковкаGarbro + krkrextractБыстрое извлечение XP3/TLG
ТекстTranslator++ + TextractorИзвлечение, перевод, импорт/экспорт
РедактированиеVS Code + Notepad++Правка .ks с подсветкой KAG
ГрафикаGIMP / PhotoshopПеревод меню, заставок
ШрифтыFontForge + Noto SansПодготовка кириллического шрифта
СборкаXp3Pack + GarbroОбратная упаковка XP3
Тест-debug флаг + логиОтлов вылетов и переполнений
ПубликацияInno Setup + GitСоздание патча и контроль версий

Критические советы

  1. Никогда не редактируй оригиналы напрямую. Всегда работай в копии.
  2. Соблюдай синтаксис KAG. Лишний пробел в теге [if cond="true"] может сломать сцену.
  3. Тестируй инкрементально. Перевёл 1 файл → проверил → перешёл к следующему.
  4. Кодировка — главный враг. Открывай .ks строго в исходной кодировке. Сохраняй в той же.
  5. Длина текста. Японский текст в 1.5–2 раза короче русского. Используй [r] для переноса или уменьшай шрифт в окне диалога.
  6. Защита. Если игра не распаковывается стандартными утилитами, ищи специфичный декриптор или используй Textractor для прямого сбора текста из памяти.

Где искать поддержку

  • LemmaSoft.fo.ru / LemmaSoft Forums → разделы Kirikiri, Translation Tools
  • GitHub: arcusmaximus/KirikiriTools, morkt/GARbro, Artikash/Textractor
  • VNDB.org → страница игры → вкладка Releases → часто есть ссылки на патчи
  • Discord: VN Translation, Kirikiri Localization

Контакты: bystrovno@basealt.ru