feat: improve RenPy conversion and support MIST runtime
This commit is contained in:
1 parent
f7f7f5b1b3
commit
f9eb5c1212
44 files changed
+2822
-174
No files matched your search
@@ -40,6 +40,46 @@ python -m app.import_library "D:\Torrents\Pgames" --check --output report.json
|
||||
python -m app.import_library "D:\Torrents\Pgames" --import --owner admin --output report.json
|
||||
```
|
||||
|
||||
Для одной игры укажите `--single`: путь должен вести к её папке или архиву.
|
||||
Проверяются сценарии и совместимость тем же способом, что при импорте:
|
||||
|
||||
```powershell
|
||||
python -m app.import_library "D:\Torrents\Pgames\Renpy\DesertStalker-0.21.4-pc" --single --check --output desert-stalker.json
|
||||
python -m app.import_library "D:\Games\SomeGame.zip" --single --check --output game.json
|
||||
```
|
||||
|
||||
Для подробного разбора Ren'Py и сохранения извлечённых/декомпилированных
|
||||
сценариев доступна диагностическая команда (без конвертации медиа):
|
||||
|
||||
```powershell
|
||||
python -m app.converter.analyze --dump ..\data-test\renpy-dump "D:\Torrents\Pgames\Renpy\DesertStalker-0.21.4-pc"
|
||||
```
|
||||
|
||||
Приоритет — общая поддержка синтаксиса и поведения Ren'Py в конвертере и
|
||||
плеере. Патчи отдельных сборок находятся в `app/games/renpy_builds.py`;
|
||||
замены блоков дополнительно проверяют SHA-256 исходного текста. Неизвестные
|
||||
изменения проходят обычную строгую проверку. В DesertStalker 0.21.4 блок
|
||||
восстановления нативных сохранений заменяется вызовом загрузчика PGames;
|
||||
сохранения Ren'Py в формате pickle не переносятся.
|
||||
|
||||
Начальный код оригинальной игры можно дополнительно проверить в браузерном
|
||||
интерпретаторе без конвертации медиа. После создания дампа выполните из `backend`:
|
||||
|
||||
```powershell
|
||||
python -m tests.export_renpy_runtime "D:\Torrents\Pgames\Renpy\DesertStalker-0.21.4-pc" "..\data-test\renpy-dump\DesertStalker-0.21.4-pc" "..\data-test\desert-runtime.json"
|
||||
```
|
||||
|
||||
Затем из `frontend`:
|
||||
|
||||
```powershell
|
||||
$env:PGAMES_RENPY_RUNTIME = "D:\Github\pgames-manager\data-test\desert-runtime.json"
|
||||
node --test tests/renpy-original.test.mjs
|
||||
```
|
||||
|
||||
Это проверка `init`/`default` и сохранности загрузчика PGames; прохождение
|
||||
сюжета, визуальные эффекты и все ветки она не подтверждает. Оригинальные
|
||||
сценарии и дампы не включаются в репозиторий.
|
||||
|
||||
`--check` не создаёт карточек или версий и не изменяет исходные игры.
|
||||
`--import` создаёт версии только для прошедших проверку игр. Обработка
|
||||
коллекции продолжается после отказа отдельной игры. При наличии хотя бы одного
|
||||
@@ -52,6 +92,36 @@ python -m app.import_library "D:\Torrents\Pgames" --import --owner admin --outpu
|
||||
Входные каталоги используются только для чтения; временная распаковка и
|
||||
декомпиляция происходят отдельно.
|
||||
|
||||
## MIST 1.0.3 и общая поддержка Ren'Py
|
||||
|
||||
Оригинальная сборка MIST 1.0.3 проходит проверку сценариев и полную конвертацию:
|
||||
3527 изображений, 355 аудиофайлов, 778 видео и 5 шрифтов. Общий плеер поддерживает
|
||||
циклы `ui.interact()` с результатами `Return` от уже показанных экранов,
|
||||
`renpy.movie_cutscene` с ожиданием/пропуском, регистрацию изображений через
|
||||
`renpy.image`/`ImageReference`, пользовательские микшеры и базовую `Gallery`.
|
||||
У видео `Movie` сохраняются маски прозрачности и режим повтора; красный канал
|
||||
маски задаёт прозрачность кадра. Эти возможности применяются ко всем играм.
|
||||
|
||||
На исходных сценариях MIST проверены начальный код, победа/поражение QTE,
|
||||
мини-игра поднятия руки и продолжение её цикла после загрузки сохранения.
|
||||
Тесты `frontend/tests/mist-runtime.test.mjs` включаются переменной
|
||||
`PGAMES_MIST_RUNTIME`, указывающей на JSON из `tests.export_renpy_runtime`.
|
||||
`PGAMES_MIST_ORIGINAL` включает backend-проверку оригинального дистрибутива.
|
||||
Полное прохождение сюжета и визуальная проверка каждой сцены не подтверждены.
|
||||
|
||||
В оригинальном `scripts.rpa` есть четыре перехода на отсутствующие метки
|
||||
(`robinspent`, `breakfastdialog`, `firstdungeontalk`, `afterrscene09`) и показ
|
||||
отсутствующего `newbuildingcontrolscreen`. Профиль `renpy/mist-1.0.3` распознаёт
|
||||
сборку дополнительно по SHA-256 сценарного архива и допускает только эти пять
|
||||
дефектов с исходным количеством вхождений. Они остаются предупреждениями;
|
||||
при достижении такого места плеер останавливается с явной ошибкой. Замены
|
||||
сюжетных переходов не подставляются. Изменённые сценарии проверяются заново.
|
||||
|
||||
В отчёте также перечислены 22 ссылки на отсутствующие медиа оригинала,
|
||||
включая старые объявления анимаций, иконку `Roastedfish_Kachel.png` и два
|
||||
side-изображения. Они не подменяются другими картинками; это ограничение
|
||||
самого дистрибутива, которое нужно учитывать при проверке конкретных веток.
|
||||
|
||||
## Текущая поддержка Naninovel
|
||||
|
||||
Добавлен импорт скомпилированных сценариев из Unity-ресурсов Mono-сборок
|
||||
|
||||
Reference in new issue
Block a user