feat: ATL pictures/contains/function/time, colour matrices and more Python for Ren'Py
ATL
- Image blocks become timelines: picture steps with dissolve, parallel, contains,
finite repeat, time, function f(trans, st, at), calls of other transforms with
arguments, on hover/idle events for buttons. Animations stop when their element
leaves the page
- Pictures defined by an expression (get_face_path("base")) are drawn at show time
- Purely graphical hints (shader, mesh, gl_*, u_*) are accepted and dropped
Colour
- matrixcolor and im.matrix.* as 5x5 matrices combined with `*`, applied through SVG
filters; im.MatrixColor/Scale/Crop/Blur/Composite and Text/Image as values
Python
- match statement, re/copy/time/datetime/defaultdict/functools.partial, more
str/dict methods, Character(...) created by code
- narrator("..."), Character calls, renpy.say and renpy.show/hide with expressions in
Python blocks become script nodes
- Audit follows reachability: functions and classes nothing refers to (custom
statement lexers, unused tools) no longer block an import
Docs: README and ARCHITECTURE now describe a multi-engine library (GameMaker and
QSP planned). Tests for the new runtime pieces.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
62ece25902
commit
ea03cebf6a
21 files changed
+1264
-93
No files matched your search
+11
-6
@@ -1,9 +1,10 @@
|
||||
# pgames-manager — архитектура
|
||||
|
||||
Локальная библиотека визуальных новелл (сначала Ren'Py). Игры не запускаются
|
||||
оригинальным движком: архив разбирается на сервере, скрипт и ассеты
|
||||
перекладываются в собственный формат **PGVN**, а играется копия в нашем
|
||||
веб-плеере.
|
||||
Локальная библиотека игр, которые играются в браузере: визуальные новеллы, «песочницы», текстовые
|
||||
квесты (см. [README](../README.md)). Игры не запускаются оригинальным движком: архив разбирается на
|
||||
сервере, скрипт и ассеты перекладываются в собственный формат **PGVN**, а играется копия в нашем
|
||||
веб-плеере. Для каждого движка и для особенных игр есть профиль ([GAME_PROFILES.md](GAME_PROFILES.md)),
|
||||
у игр с собственным устройством — собственная среда исполнения (`game.runtime`).
|
||||
|
||||
## Развёртывание
|
||||
|
||||
@@ -145,8 +146,12 @@ LOCKED`), Redis не нужен.
|
||||
|
||||
Планы:
|
||||
|
||||
* ATL `function`, `matrixcolor`, шейдеры и `im.*` (экраны и ATL с движением уже есть:
|
||||
* шейдеры и детали `im.*` (экраны, ATL, `matrixcolor` уже есть:
|
||||
[SCREENS.md](SCREENS.md), `backend/app/converter/atl.py`, `frontend/src/player/atl.ts`);
|
||||
* другие движки (TyranoBuilder, RPG Maker MV) через тот же IR;
|
||||
* движки без своего профиля: **GameMaker** (`data.win`, виртуальная машина GML — отдельный проект),
|
||||
**QSP** (текстовые квесты `.qsp`: свой формат, локации, переменные, действия и вставки HTML),
|
||||
затем TyranoBuilder, RPG Maker MV;
|
||||
* Ren'Py: код Python, который ждёт игрока (`renpy.input`, `narrator()`, `renpy.say` внутри функций и
|
||||
циклов) — для него нужен интерпретатор на генераторах;
|
||||
* дальнейшее дробление `engine.ts` на модули (рендер сцены, UI, сохранения);
|
||||
* типизация backend под `mypy` (сейчас проверка справочная).
|
||||
Reference in new issue
Block a user