OctopusBridge — десктопное приложение для Windows, предназначенное для перевода и модификации компьютерных игр: визуальных новелл, JRPG, текстовых квестов. Оно извлекает тексты игры, переводит их (бесплатные интернет-сервисы), записывает перевод обратно в файлы игры и/или внедряет его в запущенную игру в реальном времени. Дополнительно даёт «чит-инструменты»: редактирование переменных, золота, предметов, карт, сейвов.
Лицензия: GPL-3.0. Проект открытый, ведётся на GitHub (DezFix/OctopusBridge). Языки интерфейса: русский, английский.
| Движок | Форматы | Статус |
|---|---|---|
| RPG Maker MV / MZ | JSON-базы данных, карты, события; шифрованные ресурсы (.png_, .ogg_, .rpgmvp и др.); Electron-сборки с app.asar |
стабильный |
| Ren'Py (7.x / 8.x) | исходники .rpy, скомпилированные .rpyc (legacy и RPC2), архивы .rpa (v1, v2.0, v3.0) |
стабильный |
| TyranoScript / TyranoBuilder | data/scenario/*.ks, Electron-сборки |
отложен: код на месте, выключен в реестре (DISABLED_ENGINES) |
| AjinSyoujyo | Electron-сборка TyranoScript (asar + override) | отложен: код на месте, выключен в реестре (DISABLED_ENGINES) |
| Twine (SugarCube) | HTML-стори *.html, сейвы .save (LZ-String) |
экспериментальный (активен: файловый перевод, редактор сейвов, live через мост) |
| Wolf RPG Editor | Data/*.wolf (DXA-v8), Game.dat/*Database.dat/CommonEvent.dat/.mps; внедрение в loose-Data/ |
отложен: код на месте, выключен в реестре (DISABLED_ENGINES) |
| Unity | Mono/IL2CPP, тексты TextMesh/GUIText (UnityPy) | отложен: код на месте, выключен в реестре (DISABLED_ENGINES) |
Движок определяется автоматически по структуре папки игры (весовой детектор). Для каждой игры ведётся проект .ob.json (пути, переводы, настройки), проекты хранятся в %APPDATA%\OctopusBridge.
- Пакетный пайплайн: извлечение → перевод → запись в игру. Обработка пакетами до 100 строк, параллельные воркеры.
- Движки перевода:
- Google (каскад из 3 бесплатных эндпоинтов, встроенная защита от rate-limit, переключение на запасные);
- Bing;
- MyMemory (с e-mail из настроек);
- Rotate (автопереключение между доступными).
- Защита от поломки кода игры: маскирование игровых тегов (
\C[8],<center>,{b},<xN/>и др.) — перевод не трогает макросы, имена переменных и служебные вставки; контроль целостности (сместившиеся/потерянные токены отбрасываются). - Глоссарий (общий для всех проектов, с категориями и быстрой вставкой в таблицу перевода).
- Кэш перевода — единый
octopus_cache.jsonв папке игры; CSV-импорт/экспорт.
Подключение к запущенной игре для читов, live-перевода и мониторинга состояния:
- CDP (Chrome DevTools Protocol) — Chromium-рантаймы: RPG Maker MZ, Tyrano, Twine (WebView2).
- Frida — Ren'Py: внедрение Python-агента в процесс игры (две ветки: py2 для Ren'Py 7, py3 для Ren'Py 8; офсеты CPython из БД; запуск игры через приложение или подключение к уже запущенной).
- HTTP-мост — RPG Maker MV (официальный рантайм NW.js без remote-debugging): в игру вшивается плагин
octopus_ob.js(HTTP-сервер внутри страницы), все команды идут через него. Сбор ошибок страницы игры (переживает краш через localStorage). - Live-перевод: словарь original→translation внедряется в запущенную игру (хуки отрисовки текста) — работает поверх файлового патча и покрывает шифрованные/asar-сборки.
- RPG Maker: золото (задать/добавить), отряд (уровень, HP/MP, EXP, состояния, полное исцеление, снятие состояний), предметы (выдать/забрать), переменные и переключатели, телепорт, ноуклип, скорость персонажа, турбо-скорость игры (1–20×), перезагрузка карты, мгновенная победа в бою, скриншот игры.
- Ren'Py: переменные (просмотр/изменение), триггеры, сейвы (слоты ↔ файлы, плоский список переменных).
- Twine: редактор сейвов SugarCube (все переменные, включая вложенные структуры).
- Рендер карт 1:1 с движком (алгоритм тайлмапа скопирован из
rmmz_core.js): автотайлы, верхние слои, столы, тени, регионы; MV и MZ; поддержка шифрованных карт MV (.rpgmvm) — расшифровка при загрузке и обратное шифрование при сохранении. - Редактор событий: страницы, картинки, триггеры, приоритеты, маршруты движения (46 команд), условные ветки (13 типов), сообщения, выборы; форматы команд MZ (dict) и MV (list).
- Браузер ресурсов игры: просмотр/прослушивание/просмотр видео (QMediaPlayer), сохранение файлов; работа внутри
app.asar(Electron). - Патч шрифта Ren'Py (Noto Sans — кириллица вместо квадратиков), размер шрифта в игре.
- Патч шрифтов Wolf RPG (TTF в корне игры, после перезапуска).
- Живое применение шрифта/размера без перезапуска (RPG Maker через CDP/мост, Ren'Py через агента).
- Трей в системной панели, drag-and-drop проекта, проверка обновлений (GitHub API), тёмная тема.
main.py — точка входа, экземпляр QApplication
app/
ui/ — интерфейс PySide6 (Qt)
main_window.py главное окно, вкладки, трей
translate_tab.py таблица перевода, пайплайн извлечение/перевод/запись
map_tab.py карты RPG Maker + рендер-поток
event_editor.py редактор событий RPG Maker
cheat_tab.py чит-панель RPG Maker
renpy_cheat_tab.py чит-панель Ren'Py (переменные/триггеры)
save_editor_tab.py редактор сейвов Twine
resource_tab.py браузер ресурсов (аудио/видео/картинки)
welcome_tab.py / projects_tab.py — старт и список проектов
i18n.py все строки интерфейса (RU/EN)
updates.py проверка обновлений
engines/ — модули движков (детекция + интеграция в UI)
base.py абстрактный EngineModule
registry.py реестр движков, детекция по весу
rpgmaker/ renpy/ tyrano/ twine/ wolf/
core/ — логика, независимая от UI
renpy/ parser.py (тексты, .rpyc/.rpa), rpa.py (архивы), agent.py (агент для Frida)
rpgmaker/ parser.py, maprender.py, event-команды, crypto.py (шифрование),
mv_bridge.py (HTTP-мост MV), asar-чтение
tyrano/ parser.py (сценарии .ks)
twine/ parser.py, savefile.py (LZ-String)
wolf/ dxa.py (DXA-v8: XOR/Huffman/LZ, read-only), parser.py
(Game/Database/CommonEvent/.mps, loose-apply), fontpatch.py
translate/ engines.py (Google/Bing/MyMemory/Rotate), glossary.py,
mask.py, fixers.py, detect.py, alphabets.py, service.py
tentacles/ DEPRECATED-шим (base.py, cdp_base.py) — только совместимость импортов
models.py TranslationEntry, Project
live/ — live-слой (работа с запущенной игрой)
tentacle.py Tentacle (запуск/останов щупальца), LaunchResult
session.py GameSession
cdp_base.py CDP-база (общий код CDP-щупалец)
transport/ — транспорты
cdp/ client.py (WebSocket CDP), browser.py (поиск портов отладки)
frida_rpc/ injector.py (внедрение Python-кода в процесс Ren'Py)
core/assets/fonts/ — NotoSans-Regular.ttf (патч шрифтов)
tests/ — функциональные тесты (14 файлов)
build_app.py — сборка .exe (PyInstaller)
setup.iss — установщик (Inno Setup)
run_tests.py — запуск всех тестов
Ключевой интерфейс: EngineModule (детекция → extract() → apply()) и Tentacle (живая сессия: launch()/attach()/detach(), сигналы Qt). Щупальце для RPG Maker MV прозрачно роутит все команды через HTTP-мост вместо CDP.
- Python 3.13 (Windows 10/11 x64).
- PySide6 6.11 (Qt6) — GUI, мультимедиа (FFmpeg-бэкенд).
- requests, websockets (CDP), psutil (процессы), frida (внедрение в Ren'Py), pywebview (Twine).
- PyInstaller — сборка single-exe; Inno Setup — установщик; GitHub Actions — CI (тесты + сборка на Windows).
python build_app.py --tests # тесты + сборка exe (dist/OctopusBridge_vX.Y.Z.exe)
python build_app.py --installer # дополнительно установщик Inno Setup
build.bat # обёртка для Windows
Версия берётся из app/__init__.py (__version__). Схема нумерации: X.Y, где X — номер обновления (новые фичи), Y — фиксы последнего обновления (например 154.6). Релизы на GitHub: тег X.Y, exe прикладывается к релизу (репозиторий DezFix/OctopusBridge/releases). История изменений — CHANGELOG.md.
python run_tests.py— 14 функциональных тестовых файлов (парсеры движков, шифрование, архивы, агенты, щупальца, UI-логика), без обращения к сети.- CI (GitHub Actions, windows-latest): установка зависимостей → тесты → сборка exe.
- Линт: ruff (в коде поддерживается чистота, E402/F401 в тестах допускаются осознанно).
- Перевод пакетный (не построчный live): текст извлекается, переводится и записывается до запуска игры; live-хуки работают как дополнение к файловому патчу.
- Google/Bing — неофициальные бесплатные эндпоинты: без ключей, но возможны лимиты объёма.
- Инструменты модифицируют игру (файлы и/или память процесса) — использовать на играх, которые пользователь вправе модифицировать.
- Репозиторий, трекер, релизы: https://github.com/DezFix/OctopusBridge