RenForge v1.2

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 из сборки таки не пропал, но используется он теперь исключительно для того, чтобы посмотреть на оригинальную верстку скрипта и на актуальный (на момент последнего мода) файл доставки. В оригинальном скрипте подсвечены извлеченные строки, а также строки, которые извлечены не были, но вероятно были пропущены экстрактором. Отсюда можно добавить пропущенные строки в файл перевода.

Экспорт и импорт

RenForge v1.2

Добавлен новый формат .po, для использования в CAT.

Ручное добавление строк

Модалка добавления строк
Модалка добавления строк

Теперь можно добавить новые строки вручную, в случае, если она была пропущена экстрактором. Новые строки будут добавляться в отдельный файл, но если вы добавили их из другого файла перевода, то они останутся и там, но только косметически.

ИИ Ассистент

Модалка ИИ Ассистента
Модалка ИИ Ассистента

В дополнение к локальным LLM и ручному (Copy-Paste) переводу, была добавлена возможность подключить облачную LLM. Также теперь можно редактировать системный промпт для нейросетей.

Вкладка Изображений

Добавлена Drag&Drop замена изображений.

Развернутая миниатюра
Развернутая миниатюра

Теперь есть возможность развернуть миниатюры изображений, масштабировать и листать их.

Вкладка Аудио

Тоже добавил Drag&Drop замену и улучшил внешний вид.

Итог

Спасибо, что дочитали до конца. Работа над приложением продолжается и я буду рад увидеть любой фидбэк. Некоторые важные и нужные функции были добавлены только благодаря вашим комментариям. Вот ещё раз ссылка на GitHub.

Отдельное спасибо за фидбэк и поддержку:

Perekatipole, Николай Лаптев, Greg6, Disruptor и Shematon

Хорошего дня и до свидания!

3