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 night | TYPE-MOON | Одна из самых известных ВН на движке |
| Fate/hollow ataraxia | TYPE-MOON | Продолжение Fate/stay night |
| Nekopara | NEKO WORKs | Использует модифицированную версию, доступна в Steam |
| 1999 Christmas Eve | — | Классическая новелла на Kirikiri |
| Maji de Watashi ni Koi Shinasai! | Minato Soft | Популярная коммерческая ВН |
Движок широко используется как в додзин-проектах (любительских), так и в коммерческих визуальных новеллах [[15]].
Версии и развитие
| Версия | Год | Статус | Особенности |
|---|---|---|---|
| Kirikiri 1 | 1998 | Устарела | Базовая функциональность |
| Kirikiri 2 + KAG3 | ~2003 | Наиболее распространённая | Полная переработка, обратная совместимость на уровне сценариев [[9]] |
| Kirikiri Z | 2013+ | Активная форк-версия | Поддержка современных ОС, улучшения рендерера [[7]] |
С октября 2010 года оригинальный Kirikiri не обновлялся. С 2013 года развитие продолжилось в виде форка Kirikiri Z [[15]].
Для переводчиков и моддеров
Основные инструменты:
- Garbro — универсальный экстрактор архивов, поддерживает XP3 [[1]]
- KirikiriTools (GitHub) — набор утилит:
Xp3Packдля создания патчей,KirikiriDescramblerдля расшифровки скриптов [[1]] - VNTextPatch — инструмент для патчинга текста без переупаковки архивов [[1]]
- Translator++ — специализированный редактор с поддержкой KAG-тегов [[4]]
Типичные сложности:
- Шифрование/скремблинг скриптов — некоторые игры защищают
.ks-файлы сигнатурамиFE FE 00 FF FEи др. [[1]] - Кодировки — старые игры используют Shift-JIS, новые — UTF-8; ошибка приведёт к нечитаемому тексту [[3]]
- Длина текста — русский/английский текст длиннее японского; может потребоваться разбивка строк или правка окон диалога
- Шрифты — встроенные шрифты могут не поддерживать кириллицу; иногда требуется подмена через конфигурацию
Ресурсы для изучения
- 🌐 Официальная документация KAG — справочник по тегам и примерам [[9]]
- 💻 KirikiriTools на GitHub — инструменты для работы с движком [[1]]
- 🗣️ Lemma Soft Forums — сообщество локализаторов, гайды по Kirikiri [[2]]
- 📖 Dreamsavior: KiriKiri/KAG Guide — практические советы по переводу [[4]]
Пайплайн перевода игр на Kirikiri2
🔹 Этап 1: Разведка и подготовка
Цель: Понять структуру игры, проверить защиту, подготовить рабочее окружение.
- Определить версию движка (
krkr.exe,data.xp3, наличиеplugin/,config.tjs). - Проверить наличие защиты: скремблинг скриптов, шифрование XP3, проверка подписи (
.sig), модифицированный экзешник. - Найти гайды по конкретной игре на LemmaSoft Forums, Fuwanovel, GitHub или VNDB.
- Создать чистую рабочую директорию:
original/,extracted/,translated/,patch/.
Инструменты:
Detect It Easy (DIE)илиPEiD→ анализkrkr.exeGarbro→ быстрый просмотр содержимого.xp3Strings/HxD→ поиск ключевых слов (KAG,TJS,XP3)- Поисковые запросы:
[GameName] Kirikiri extract,KAG script decryption
🔹 Этап 2: Извлечение ресурсов
Цель: Получить доступ к скриптам, текстам и графике без повреждения структуры.
- Распаковать
.xp3архивы в отдельную папку. - Сохранить оригинальную иерархию папок (движок чувствителен к путям).
- Если архив зашифрован/скремблирован: применить дамп памяти или специфичный для игры декриптор.
Инструменты:
Garbro(GUI, поддерживает XP3, TLG, WAV)krkrextract/Xp3Dump(консольные, быстрая распаковка)QuickBMS+ скрипты (если нестандартная упаковка)Textractor→ альтернативный метод: вытягивает текст напрямую из памяти запущенной игры (полезно, если скрипты зашифрованы)
🔹 Этап 3: Перевод и редактирование
Цель: Перевести текст, сохранить синтаксис KAG, подготовить графику и шрифты.
- Определить кодировку
.ksфайлов:Shift-JIS(старые японские игры) илиUTF-8/UTF-16(новые/порты). - Открыть файлы в редакторе с поддержкой кодировок. Не менять:
- Теги KAG:
[r],[l],[p],[if],[iscript],*label,@jump - Переменные:
f.name,sf.scene,mp.char - Системные вызовы
- Теги KAG:
- Перевести текст, сохраняя структуру вызовов
text="...". Если текст длиннее оригинала, разбить на несколько строк или использовать[ruby]/[nowrap]. - Отредактировать изображения с текстом (меню, заставки, логотипы).
- Подготовить шрифт с поддержкой кириллицы (если движок использует встроенный).
Инструменты:
Notepad++/VS Code→ редактирование.ks, подсветка синтаксисаTranslator++→ CAT-инструмент с поддержкой KAG-тегов, экспорт/импорт в таблицыOmegaT/Smartcat→ для командной работы и глоссариевPhotoshop/GIMP/Krita→ правка графикиFontForge/Noto Sans→ подготовка шрифтовTextractor+Textractor CLI→ автоматический сбор текста для перевода в CSV
🔹 Этап 4: Интеграция и сборка
Цель: Вернуть переведённые файлы в игру, не сломав логику.
- Запаковать изменённые файлы обратно в
.xp3с идентичной структурой. - Если игра проверяет целостность (
.sigили хеш-суммы):- Использовать патчер, игнорирующий проверки
- Или заменить
data.xp3полностью, если игра не использует внешнюю валидацию
- Настроить шрифт:
- В
data.tjsилиconfig.tjsизменить путь к шрифту на системный ("C:/Windows/Fonts/arial.ttf") - Или использовать DLL-инжектор шрифтов (например,
Kirikiri Font Changer)
- В
- Создать патч или модифицированную сборку.
Инструменты:
Garbro→ повторная упаковкаXp3Pack(из KirikiriTools) → точная сборка с сохранением метаданныхHxD/010 Editor→ правка заголовков, обход простых проверокKirikiri Font Patcher→ замена шрифтов без правки скриптовInno Setup/7-Zip SFX→ создание установщика патча
🔹 Этап 5: Тестирование и отладка
Цель: Убедиться, что игра стабильна, текст отображается корректно, нет вылетов.
- Запуск с отладочным флагом:
krkr.exe -debugилиdebug=1в конфиге. - Проверка:
- Загрузка всех сцен
- Переполнение диалоговых окон
- Корректность кодировки (нет "кракозябр")
- Работа сохранений и перемотки
- Сбор логов вылетов (обычно
error.logв папке игры или%APPDATA%). - Фикс проблем: разбивка строк, правка тегов, замена шрифта, отключение проблемных плагинов.
Инструменты:
- Встроенный отладчик Kirikiri2 (
-debug,log=1) Process Monitor→ отслеживание доступа к файламOBS Studio/ скриншоты → фиксация баговNotepad++с regex → массовая правка переполнений
🔹 Этап 6: Публикация и поддержка
Цель: Выпустить патч, документировать особенности, собрать фидбек.
- Упаковать патч с инструкцией по установке.
- Написать
README.md: версия движка, известные баги, требования, контакты. - Опубликовать на тематических площадках (VNDB, LemmaSoft, VK/Discord сообщества, itch.io).
- Поддерживать обновления: фиксы, хотфиксы шрифтов, совместимость с обновлениями игры.
Инструменты:
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 | Создание патча и контроль версий |
Критические советы
- Никогда не редактируй оригиналы напрямую. Всегда работай в копии.
- Соблюдай синтаксис KAG. Лишний пробел в теге
[if cond="true"]может сломать сцену. - Тестируй инкрементально. Перевёл 1 файл → проверил → перешёл к следующему.
- Кодировка — главный враг. Открывай
.ksстрого в исходной кодировке. Сохраняй в той же. - Длина текста. Японский текст в 1.5–2 раза короче русского. Используй
[r]для переноса или уменьшай шрифт в окне диалога. - Защита. Если игра не распаковывается стандартными утилитами, ищи специфичный декриптор или используй
Textractorдля прямого сбора текста из памяти.
Где искать поддержку
- LemmaSoft.fo.ru / LemmaSoft Forums → разделы
Kirikiri,Translation Tools - GitHub:
arcusmaximus/KirikiriTools,morkt/GARbro,Artikash/Textractor - VNDB.org → страница игры → вкладка
Releases→ часто есть ссылки на патчи - Discord:
VN Translation,Kirikiri Localization
