RenForge v1.2
Привет! Спустя месяц работы готов поделиться крупным апдейтом на свою софтину. Крупный рефакторинг, новые фичи и улучшение старых. Статья про первую релизную версию здесь, а я начну...
А, и по традиции, если лень читать, вот ссылочка на репозиторий.
Кратко по софт
RenForge - это GUI-инструмент для извлечения текста, локализации и сборки модов-переводов игр на движке Ren'Py.
Стек:
- Фронтэнд: Vue 3 + Vite.
- Бэкэнд: Rust (Tauri 2.0).
- Хранение: SQLite — прогресс перевода, статистика, глоссарий.
- Сайдкары: unrpa (распаковка .rpa) и rpyc_extractor (собственный AST-экстрактор; включает unrpyc для декомпиляции в просмотре исходника). Исходники — в src-tauri/tools/.
Дэшборд
Главная страница приложения претерпела значительные изменения:
Граф структуры файлов был вырезан, чтобы сделать рабочее пространство более лаконичным и информативным.
Шапка
Теперь при открытии папки игры в шапке приложения отобразится название папки, версия игры и версия движка (иногда).
Также была реализована система профилей переводов по парам языков (напр., en-ru), создавать и вести их можно параллельно и независимо, также есть возможность в любой момент экспортировать перевод отдельным модом, или .zip папкой со всей игрой.
Теперь, нажав на кнопку обновление, вы можете перенести перевод в папку с новой версией игры, строки автоматически подставятся.
База переводов
Добавлена кросс-сессионная база данных переводов, в неё сохраняются все строки, что вы перевели и сохранили. Открывая в приложении новую игру, вы можете автоматически заполнить совпадающие строки из этой базы.
Пайплайн
Добавлен трехступенчатый пайплайн перевода Извлечение - Перевод - Мод.
Извлечение: От использования unrpyc и нативного движкового генератора переводов было решено отказаться в пользу самописного AST экстрактора на питоне, он работает непосредственно с rpyc скриптами, исключая необходимость их декомпилировать. Упор при разработке делался на кросс-версионность Ren'Py, поддерживаются SL1 и SL2.
Сборка мода: От штатной системы переводов Ren'Py (translate-блоки с ID и old/new) тоже было решено отказаться. Вместо этого RenForge генерирует один рантайм-файл (.rpy), который подменяет текст в рантайме по самому тексту оригинала, языконезависимо. Язык игры намеренно не переключается (renpy.change_language отравляет persistent._preferences.language и роняет игры, индексирующие словари по языку → KeyError). Преимущества подхода: нет коллизий со встроенными переводами игры, нет крашей translation already exists, не нужны ID-якоря (которые ломаются между версиями).
Однако даже такой подход не дает стопроцентной гарантии доставки перевода в игру, я физически не могу забить в логику доставщика каждый кастомный стейтмент, который придумывают авторы новелл. Поэтому с новым механизмом доставки была добавлена возможность написать свой собственный хук и вставить его рантайм-файл:
Возможность подмены шрифтов уже была в 1.1, но в 1.2 получила развитие. Теперь каждый используемый в игре шрифт можно заменить независимо, также для удобства была добавлена проверка наличия целевой письменности:
Инфографика
Новый виджет, с подробной информацией о текущем проекте, кол-во переведенных строк, файлов, изображений, аудио.
Список файлов
В целом не изменился, просто переехал их узкой колонки в низ дэшборда. По мелочи: добавил сортировку, фильтры и заметки.
Редактор
Тоже изменился
Из главных нововведений хочется выделить:
Читалка
Unrpyc из сборки таки не пропал, но используется он теперь исключительно для того, чтобы посмотреть на оригинальную верстку скрипта и на актуальный (на момент последнего мода) файл доставки. В оригинальном скрипте подсвечены извлеченные строки, а также строки, которые извлечены не были, но вероятно были пропущены экстрактором. Отсюда можно добавить пропущенные строки в файл перевода.
Экспорт и импорт
Добавлен новый формат .po, для использования в CAT.
Ручное добавление строк
Теперь можно добавить новые строки вручную, в случае, если она была пропущена экстрактором. Новые строки будут добавляться в отдельный файл, но если вы добавили их из другого файла перевода, то они останутся и там, но только косметически.
ИИ Ассистент
В дополнение к локальным LLM и ручному (Copy-Paste) переводу, была добавлена возможность подключить облачную LLM. Также теперь можно редактировать системный промпт для нейросетей.
Вкладка Изображений
Добавлена Drag&Drop замена изображений.
Теперь есть возможность развернуть миниатюры изображений, масштабировать и листать их.
Вкладка Аудио
Тоже добавил Drag&Drop замену и улучшил внешний вид.
Итог
Спасибо, что дочитали до конца. Работа над приложением продолжается и я буду рад увидеть любой фидбэк. Некоторые важные и нужные функции были добавлены только благодаря вашим комментариям. Вот ещё раз ссылка на GitHub.
Отдельное спасибо за фидбэк и поддержку:
Perekatipole, Николай Лаптев, Greg6, Disruptor и Shematon
Хорошего дня и до свидания!