@vnejs/docs 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/architecture.md +507 -0
- package/manifest.json +44 -0
- package/package.json +27 -0
- package/plugins/audio/ambient.md +39 -0
- package/plugins/audio/audio.md +61 -0
- package/plugins/audio/music.md +39 -0
- package/plugins/audio/sound.md +39 -0
- package/plugins/audio/voice.md +43 -0
- package/plugins/canvas/bg.md +76 -0
- package/plugins/canvas/bg.speak.md +54 -0
- package/plugins/canvas/fill.md +66 -0
- package/plugins/canvas/layer.md +57 -0
- package/plugins/canvas/sprite.md +85 -0
- package/plugins/canvas/sprite.speak.md +53 -0
- package/plugins/canvas/text.md +63 -0
- package/plugins/canvas/video.md +71 -0
- package/plugins/canvas.layers/bl.md +47 -0
- package/plugins/canvas.layers/fl.md +47 -0
- package/plugins/canvas.layers/ml.md +47 -0
- package/plugins/canvas.layers/ul.md +46 -0
- package/plugins/canvas.props/animation.md +48 -0
- package/plugins/canvas.props/clip.md +43 -0
- package/plugins/canvas.props/filters.md +39 -0
- package/plugins/canvas.props/mask.md +44 -0
- package/plugins/canvas.props/scale.md +41 -0
- package/plugins/controls/controls.md +41 -0
- package/plugins/controls/cursor.md +59 -0
- package/plugins/controls/gamepad.md +37 -0
- package/plugins/controls/keyboard.md +37 -0
- package/plugins/core/components.md +47 -0
- package/plugins/core/interact.md +45 -0
- package/plugins/core/logs.md +46 -0
- package/plugins/core/media.md +59 -0
- package/plugins/core/memory.md +44 -0
- package/plugins/core/platforms.md +48 -0
- package/plugins/core/scenario.md +63 -0
- package/plugins/core/settings.md +43 -0
- package/plugins/core/stack.md +57 -0
- package/plugins/core/state.md +51 -0
- package/plugins/core/storage.md +89 -0
- package/plugins/core/system.md +56 -0
- package/plugins/core/vendors.md +45 -0
- package/plugins/entities/entities.md +35 -0
- package/plugins/entities/wallet.md +47 -0
- package/plugins/font/montserrat.md +35 -0
- package/plugins/platform/android.md +38 -0
- package/plugins/platform/electron.md +40 -0
- package/plugins/platform/metric.md +42 -0
- package/plugins/rpg/damage.md +46 -0
- package/plugins/rpg/hit.md +46 -0
- package/plugins/rpg/skills.md +47 -0
- package/plugins/save/auto.md +47 -0
- package/plugins/save/continue.md +43 -0
- package/plugins/save/save.md +62 -0
- package/plugins/scales/health.md +37 -0
- package/plugins/scales/mana.md +37 -0
- package/plugins/scales/scales.md +54 -0
- package/plugins/scenario/autoread.md +50 -0
- package/plugins/scenario/choose.md +111 -0
- package/plugins/scenario/fastforward.md +61 -0
- package/plugins/scenario/pause.md +43 -0
- package/plugins/scenario/point_and_click.md +95 -0
- package/plugins/scenario/qte.md +97 -0
- package/plugins/scenario/random.md +38 -0
- package/plugins/settings/filter.md +39 -0
- package/plugins/settings/potato.md +41 -0
- package/plugins/settings/ratio.md +41 -0
- package/plugins/settings/textsize.md +39 -0
- package/plugins/settings/volume.md +41 -0
- package/plugins/text/inject.md +41 -0
- package/plugins/text/locs.md +49 -0
- package/plugins/text/meet.md +40 -0
- package/plugins/text/smooth.md +51 -0
- package/plugins/text/text.md +78 -0
- package/plugins/text/wall.md +41 -0
- package/plugins/time/date.md +42 -0
- package/plugins/time/time.md +43 -0
- package/plugins/vars/counters.md +46 -0
- package/plugins/vars/flags.md +44 -0
- package/plugins/vars/vars.md +51 -0
- package/plugins/views/achievement.md +64 -0
- package/plugins/views/comment.md +49 -0
- package/plugins/views/cursor.md +39 -0
- package/plugins/views/fps.md +51 -0
- package/plugins/views/video.md +57 -0
- package/plugins/views.scenario/choose.md +79 -0
- package/plugins/views.scenario/interface.controls.md +50 -0
- package/plugins/views.scenario/interface.fastforward.md +50 -0
- package/plugins/views.scenario/interface.md +68 -0
- package/plugins/views.scenario/point_and_click.md +87 -0
- package/plugins/views.scenario/qte.md +105 -0
- package/plugins/views.screens/confirm.md +48 -0
- package/plugins/views.screens/credits.md +46 -0
- package/plugins/views.screens/eula.md +54 -0
- package/plugins/views.screens/gallery.full.md +48 -0
- package/plugins/views.screens/gallery.md +69 -0
- package/plugins/views.screens/gamemenu.md +52 -0
- package/plugins/views.screens/history.md +70 -0
- package/plugins/views.screens/intro.md +50 -0
- package/plugins/views.screens/loading.md +48 -0
- package/plugins/views.screens/mainmenu.md +61 -0
- package/plugins/views.screens/mainmenu.socials.md +45 -0
- package/plugins/views.screens/save.md +63 -0
- package/plugins/views.screens/settings.defaults.md +51 -0
- package/plugins/views.screens/settings.md +53 -0
- package/scenario.catalog/README.md +38 -0
- package/scenario.catalog/index.md +109 -0
- package/scenario.catalog/stubs/achievement.md +16 -0
- package/scenario.catalog/stubs/audio.ambient.md +16 -0
- package/scenario.catalog/stubs/audio.music.md +16 -0
- package/scenario.catalog/stubs/audio.sound.md +16 -0
- package/scenario.catalog/stubs/audio.voice.md +16 -0
- package/scenario.catalog/stubs/bl.animation.md +18 -0
- package/scenario.catalog/stubs/bl.bg.md +18 -0
- package/scenario.catalog/stubs/bl.clip.md +18 -0
- package/scenario.catalog/stubs/bl.fill.md +18 -0
- package/scenario.catalog/stubs/bl.filter.md +18 -0
- package/scenario.catalog/stubs/bl.mask.md +18 -0
- package/scenario.catalog/stubs/bl.scale.md +18 -0
- package/scenario.catalog/stubs/bl.sprite.md +18 -0
- package/scenario.catalog/stubs/bl.text.md +18 -0
- package/scenario.catalog/stubs/bl.video.md +18 -0
- package/scenario.catalog/stubs/choose.block.md +25 -0
- package/scenario.catalog/stubs/choose.md +18 -0
- package/scenario.catalog/stubs/choose.option.md +24 -0
- package/scenario.catalog/stubs/comment.md +17 -0
- package/scenario.catalog/stubs/counter.md +21 -0
- package/scenario.catalog/stubs/credits.md +17 -0
- package/scenario.catalog/stubs/date.md +17 -0
- package/scenario.catalog/stubs/fl.animation.md +18 -0
- package/scenario.catalog/stubs/fl.bg.md +18 -0
- package/scenario.catalog/stubs/fl.clip.md +18 -0
- package/scenario.catalog/stubs/fl.fill.md +18 -0
- package/scenario.catalog/stubs/fl.filter.md +18 -0
- package/scenario.catalog/stubs/fl.mask.md +18 -0
- package/scenario.catalog/stubs/fl.scale.md +18 -0
- package/scenario.catalog/stubs/fl.sprite.md +18 -0
- package/scenario.catalog/stubs/fl.text.md +18 -0
- package/scenario.catalog/stubs/fl.video.md +18 -0
- package/scenario.catalog/stubs/flag.md +24 -0
- package/scenario.catalog/stubs/interface.md +17 -0
- package/scenario.catalog/stubs/intro.md +16 -0
- package/scenario.catalog/stubs/mainmenu.md +16 -0
- package/scenario.catalog/stubs/ml.animation.md +18 -0
- package/scenario.catalog/stubs/ml.bg.md +18 -0
- package/scenario.catalog/stubs/ml.clip.md +18 -0
- package/scenario.catalog/stubs/ml.fill.md +18 -0
- package/scenario.catalog/stubs/ml.filter.md +18 -0
- package/scenario.catalog/stubs/ml.mask.md +18 -0
- package/scenario.catalog/stubs/ml.scale.md +18 -0
- package/scenario.catalog/stubs/ml.sprite.md +18 -0
- package/scenario.catalog/stubs/ml.text.md +18 -0
- package/scenario.catalog/stubs/ml.video.md +18 -0
- package/scenario.catalog/stubs/other.md +17 -0
- package/scenario.catalog/stubs/pause.md +16 -0
- package/scenario.catalog/stubs/point-and-click.block.md +21 -0
- package/scenario.catalog/stubs/point-and-click.md +18 -0
- package/scenario.catalog/stubs/point-and-click.option.md +20 -0
- package/scenario.catalog/stubs/qte.md +16 -0
- package/scenario.catalog/stubs/random.md +16 -0
- package/scenario.catalog/stubs/random.option.md +16 -0
- package/scenario.catalog/stubs/save.auto.md +16 -0
- package/scenario.catalog/stubs/save.md +16 -0
- package/scenario.catalog/stubs/scenario.md +17 -0
- package/scenario.catalog/stubs/settings.defaults.md +16 -0
- package/scenario.catalog/stubs/stack.md +18 -0
- package/scenario.catalog/stubs/text.meet.md +16 -0
- package/scenario.catalog/stubs/text.wall.md +17 -0
- package/scenario.catalog/stubs/time.md +17 -0
- package/scenario.catalog/stubs/ul.animation.md +18 -0
- package/scenario.catalog/stubs/ul.bg.md +18 -0
- package/scenario.catalog/stubs/ul.clip.md +18 -0
- package/scenario.catalog/stubs/ul.fill.md +18 -0
- package/scenario.catalog/stubs/ul.filter.md +18 -0
- package/scenario.catalog/stubs/ul.mask.md +18 -0
- package/scenario.catalog/stubs/ul.scale.md +18 -0
- package/scenario.catalog/stubs/ul.sprite.md +18 -0
- package/scenario.catalog/stubs/ul.text.md +18 -0
- package/scenario.catalog/stubs/video.md +16 -0
- package/scenario.catalog/stubs/wallet.md +17 -0
- package/scenario.guide/README.md +82 -0
- package/scenario.guide/audio.md +29 -0
- package/scenario.guide/canvas.md +46 -0
- package/scenario.guide/choose.md +54 -0
- package/scenario.guide/dialogue.md +58 -0
- package/scenario.guide/flow.md +71 -0
- package/scenario.guide/point-and-click.md +35 -0
- package/scenario.guide/qte-random.md +51 -0
- package/scenario.guide/vars.md +67 -0
- package/scenario.guide/views.md +65 -0
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Документация VNEJS
|
|
2
|
+
|
|
3
|
+
Монорепозиторий движка визуальных новелл **VNEJS** — plugin-архитектура на TypeScript с событийной шиной и композицией через `bundles/`.
|
|
4
|
+
|
|
5
|
+
Публикуемый пакет: **`@vnejs/docs`**. Установка у потребителя:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @vnejs/docs
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Машинное оглавление: [`manifest.json`](./manifest.json).
|
|
12
|
+
|
|
13
|
+
## Для агента / автора сценария
|
|
14
|
+
|
|
15
|
+
Пишете или правите `.vne` во внешней игре — **сначала** смотрите сценарные разделы, не архитектуру плагинов.
|
|
16
|
+
|
|
17
|
+
| Приоритет | Раздел | Когда открывать |
|
|
18
|
+
|-----------|--------|-----------------|
|
|
19
|
+
| 1 | [`scenario.guide/`](./scenario.guide/) | Авторские гайды с примерами (вариант B) |
|
|
20
|
+
| 1 | [`scenario.catalog/`](./scenario.catalog/) | Полный индекс команд из `SCENARIO_COMMANDS` + stubs (вариант C) |
|
|
21
|
+
| 2 | [`plugins/`](./plugins/) | События, модули, internals плагина |
|
|
22
|
+
| 3 | [`architecture.md`](./architecture.md) | Модель монорепы — редко, не для написания реплик |
|
|
23
|
+
|
|
24
|
+
Сейчас в пакете **два** параллельных входа для сценария — сравните и выберите удобный. Оба ссылаются на `plugins/` за деталями.
|
|
25
|
+
|
|
26
|
+
## Содержание
|
|
27
|
+
|
|
28
|
+
- [Сценарий — guide](./scenario.guide/README.md) — синтаксис `.vne` и тематические гайды
|
|
29
|
+
- [Сценарий — catalog](./scenario.catalog/README.md) — каталог `$` / `%` команд
|
|
30
|
+
- [Архитектура](./architecture.md) — каталоги монорепы и их связи, mermaid-диаграммы
|
|
31
|
+
|
|
32
|
+
## Быстрый ориентир по монорепе
|
|
33
|
+
|
|
34
|
+
| Каталог | Роль |
|
|
35
|
+
| ------------------------------------------------------------- | ---------------------------------------- |
|
|
36
|
+
| [`packages/`](./architecture.md#packages) | Runtime: `shared`, `observer`, `core`, … |
|
|
37
|
+
| [`modules_extensions/`](./architecture.md#modules_extensions) | Базовые классы модулей |
|
|
38
|
+
| [`configs/`](./architecture.md#configs) | Общие TypeScript-конфиги |
|
|
39
|
+
| [`contracts/`](./architecture.md#contracts) | Публичный API плагина |
|
|
40
|
+
| [`plugins/`](./architecture.md#plugins) | Реализация поведения |
|
|
41
|
+
| [`compatibility/`](./architecture.md#compatibility) | Связка между плагинами |
|
|
42
|
+
| [`bundles/`](./architecture.md#bundles) | Сборка набора плагинов для игры |
|
|
43
|
+
| [`helpers/`](./architecture.md#helpers) | Утилиты без привязки к движку |
|
|
44
|
+
| [`uis/`](./architecture.md#uis) | React-компоненты для view-плагинов |
|
|
45
|
+
| [`cli/`](./architecture.md#cli) | Сборка монорепы и игр |
|
|
46
|
+
| [`games/`](./architecture.md#games) | Проекты игр: сценарий, entry, dist |
|
|
47
|
+
| [`vs_code_extensions/`](./architecture.md#vs_code_extensions) | Подсветка `.vne` в редакторе |
|
|
48
|
+
|
|
49
|
+
`games/` подключает один `bundles/` и получает `VneCore` — точку входа в движок.
|
package/architecture.md
ADDED
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
# Архитектура монорепозитория VNEJS
|
|
2
|
+
|
|
3
|
+
Документ описывает **общую модель** монорепозитория: каталоги движка, направление зависимостей и сборку игры. Конкретные пакеты не перечисляются — только принципы и связи.
|
|
4
|
+
|
|
5
|
+
## Суть модели
|
|
6
|
+
|
|
7
|
+
Движок построен на **событийной шине** и **глобальном реестре**:
|
|
8
|
+
|
|
9
|
+
- **`Observer`** — шина событий; модули подписываются (`on`) и публикуют (`emit`) по строковым ключам.
|
|
10
|
+
- **`VNE`** — реестр, заполняемый при загрузке: `CONST`, `EVENTS`, `SETTINGS`, `PARAMS` — по namespace каждого плагина.
|
|
11
|
+
- **`VneCore`** — runtime: собирает зарегистрированные модули, инжектит зависимости и запускает lifecycle (`inject → subscribe → init`).
|
|
12
|
+
|
|
13
|
+
Регистрация происходит **side-effect импортами** — при импорте пакета код сразу вызывает `regPlugin` или `regModule`, не дожидаясь явного вызова API.
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart LR
|
|
17
|
+
subgraph load ["Загрузка bundles/"]
|
|
18
|
+
I[side-effect import]
|
|
19
|
+
RP[regPlugin / regModule]
|
|
20
|
+
VNE[(VNE + VNE_MODULES)]
|
|
21
|
+
I --> RP --> VNE
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
subgraph runtime ["Runtime"]
|
|
25
|
+
VC[VneCore]
|
|
26
|
+
OBS[Observer]
|
|
27
|
+
VC -->|"создаёт модули из VNE_MODULES"| MOD[Модули]
|
|
28
|
+
MOD -->|"on / emit"| OBS
|
|
29
|
+
MOD -->|"читает"| VNE
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
VNE --> VC
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Граф зависимостей между каталогами
|
|
38
|
+
|
|
39
|
+
```mermaid
|
|
40
|
+
flowchart TD
|
|
41
|
+
G[games/] --> B[bundles/]
|
|
42
|
+
G --> CLI[cli/]
|
|
43
|
+
B --> P[plugins/]
|
|
44
|
+
B --> C[compatibility/]
|
|
45
|
+
P --> CT[contracts/]
|
|
46
|
+
C --> CT
|
|
47
|
+
P --> H[helpers/]
|
|
48
|
+
P --> U[uis/]
|
|
49
|
+
P --> ME[modules_extensions/]
|
|
50
|
+
ME --> PKG[packages/]
|
|
51
|
+
CT --> PKG
|
|
52
|
+
CFG[configs/] --> P
|
|
53
|
+
CFG --> PKG
|
|
54
|
+
CFG --> U
|
|
55
|
+
VSC[vs_code_extensions/] -.->|"подсветка .vne"| G
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Направление зависимостей:**
|
|
59
|
+
|
|
60
|
+
| От | К | Смысл |
|
|
61
|
+
|----|---|-------|
|
|
62
|
+
| `games/` | `bundles/`, `cli/` | Игра не знает про отдельные плагины; сборка через `cli/` |
|
|
63
|
+
| `bundles/` | `plugins/`, `compatibility/` | Только импорт нужного набора |
|
|
64
|
+
| `plugins/` | `contracts/` | Реализация следует объявленному API |
|
|
65
|
+
| `plugins/` | `modules_extensions/` → `packages/` | Модули наследуют базы, базы опираются на shared/observer |
|
|
66
|
+
| `compatibility/` | `contracts/` (2+) | Связка по событиям, без импорта реализаций |
|
|
67
|
+
| `plugins/` | `helpers/`, `uis/` | Горизонтальные утилиты и UI |
|
|
68
|
+
| `plugins/` | — другой `plugins/` | **Напрямую не зависит** |
|
|
69
|
+
| `configs/` | пакеты workspace | Общие tsconfig, не runtime |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## packages/
|
|
74
|
+
|
|
75
|
+
**Runtime-основа движка** — публикуемые npm-пакеты `@vnejs/*`, на которых держатся `plugins/`, `bundles/` и `VneCore`.
|
|
76
|
+
|
|
77
|
+
### Состав и зависимости
|
|
78
|
+
|
|
79
|
+
```mermaid
|
|
80
|
+
flowchart BT
|
|
81
|
+
CONST["constants"]
|
|
82
|
+
OBS["observer"]
|
|
83
|
+
SH["shared"]
|
|
84
|
+
SS["sources-set"]
|
|
85
|
+
SEM["semaphore"]
|
|
86
|
+
HELP["helpers/"]
|
|
87
|
+
CR["core — VneCore"]
|
|
88
|
+
|
|
89
|
+
CONST --> CR
|
|
90
|
+
OBS --> CR
|
|
91
|
+
SH --> CR
|
|
92
|
+
HELP --> CR
|
|
93
|
+
SS --> CT[contracts/ / plugins/]
|
|
94
|
+
SEM --> PL[plugins/]
|
|
95
|
+
SH --> PL
|
|
96
|
+
OBS --> ME[modules_extensions/]
|
|
97
|
+
SH --> ME
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| Пакет | Назначение |
|
|
101
|
+
|-------|------------|
|
|
102
|
+
| **`@vnejs/shared`** | Реестр **`VNE`**, массив **`VNE_MODULES`**, **`regPlugin`** / **`regModule`**, типы для module augmentation |
|
|
103
|
+
| **`@vnejs/observer`** | **`Observer`** — pub/sub: `subscribe`, `emit`, `emitOne`, `emitReal`, `emitReals` |
|
|
104
|
+
| **`@vnejs/core`** | **`VneCore`**: модули из `VNE_MODULES`, lifecycle, загрузка `mods.json` / media, `reset` |
|
|
105
|
+
| **`@vnejs/constants`** | Общие константы-заглушки (`EMPTY_OBJECT`, `EMPTY_ARRAY`) |
|
|
106
|
+
| **`@vnejs/sources-set`** | **`SourcesSet`** — управление множеством «источников» (text и связанная логика) |
|
|
107
|
+
| **`@vnejs/semaphore`** | **`Semaphore`** — очередь задач с весами и ограничением параллелизма |
|
|
108
|
+
| **`@vnejs/test-utils`** | Harness для тестов модулей: observer stubs, `createTestModule`, spies, DOM mocks |
|
|
109
|
+
|
|
110
|
+
### Принципы
|
|
111
|
+
|
|
112
|
+
- **`shared` + `observer`** — фундамент; почти все плагины и модули зависят от них.
|
|
113
|
+
- **`core`** — точка сборки runtime; `games/` создают `new VneCore()` после импорта `bundles/`.
|
|
114
|
+
- **`test-utils`** — только для тестов workspace-пакетов; не часть игрового runtime.
|
|
115
|
+
- Пакеты **не содержат** игровой логики и **не привязаны** к конкретному `bundles/`.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## modules_extensions/
|
|
120
|
+
|
|
121
|
+
**Иерархия базовых классов** для модулей внутри `plugins/`.
|
|
122
|
+
|
|
123
|
+
### Иерархия классов
|
|
124
|
+
|
|
125
|
+
```mermaid
|
|
126
|
+
flowchart TD
|
|
127
|
+
M["@vnejs/module<br/>Module"]
|
|
128
|
+
MC["@vnejs/module.core<br/>ModuleCore"]
|
|
129
|
+
MH["@vnejs/module.handlers<br/>ModuleHandlers"]
|
|
130
|
+
MR["@vnejs/module.replace<br/>ModuleReplace"]
|
|
131
|
+
MRE["@vnejs/module.replace.exec<br/>ModuleReplaceExec"]
|
|
132
|
+
MCO["@vnejs/module.components<br/>ModuleController, ModuleView"]
|
|
133
|
+
ML["@vnejs/module.layer<br/>canvas-слои"]
|
|
134
|
+
MA["@vnejs/module.audio"]
|
|
135
|
+
MCA["@vnejs/module.controller.audio"]
|
|
136
|
+
MCT["@vnejs/module.controller.tabs"]
|
|
137
|
+
MSC["@vnejs/module.scales.common"]
|
|
138
|
+
|
|
139
|
+
M --> MC
|
|
140
|
+
MC --> MH
|
|
141
|
+
MC --> MR
|
|
142
|
+
MC --> MRE
|
|
143
|
+
MC --> MCO
|
|
144
|
+
MC --> MA
|
|
145
|
+
MC --> MCA
|
|
146
|
+
MC --> MCT
|
|
147
|
+
MC --> MSC
|
|
148
|
+
MCO --> ML
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
| Пакет | Назначение |
|
|
152
|
+
|-------|------------|
|
|
153
|
+
| **`@vnejs/module`** | **`Module`**: `VNE`, `on`/`emit`, `inject`, state, shared, media, lifecycle |
|
|
154
|
+
| **`@vnejs/module.core`** | **`ModuleCore`** — типизированный доступ к **core-контрактам**; `emitLog`, `emitNext`, … |
|
|
155
|
+
| **`@vnejs/module.handlers`** | **`ModuleHandlers`** — параллельные обработчики emit-событий с приоритетами (side effects) |
|
|
156
|
+
| **`@vnejs/module.replace`** | **`ModuleReplace`** — последовательная подмена значения поля payload через `REPLACE_KEY` и цепочку handlers |
|
|
157
|
+
| **`@vnejs/module.replace.exec`** | **`ModuleReplaceExec`** — реестр exec-handlers по имени модуля (`EXEC_REG` / `EXEC_GET`) |
|
|
158
|
+
| **`@vnejs/module.components`** | **`ModuleView`**, **`ModuleController`** — React-view, zustand, media, controls |
|
|
159
|
+
| **`@vnejs/module.layer`** | Canvas layers: controller, image, sprite, text, video, props, view |
|
|
160
|
+
| **`@vnejs/module.audio`** | База для audio-плагинов scenario-слоёв (`music` / `sound` / …) |
|
|
161
|
+
| **`@vnejs/module.controller.audio`** | Overlay-BGM для view-экранов: pause global / play `view` / resume на SHOW/HIDE/PRELOAD |
|
|
162
|
+
| **`@vnejs/module.controller.tabs`** | Навигация по вкладкам view-экранов: TAB_PREV/TAB_NEXT → `TAB_SET`, PUSH/POP controls на SHOW/HIDE |
|
|
163
|
+
| **`@vnejs/module.scales.common`** | База для scales / RPG-модулей |
|
|
164
|
+
|
|
165
|
+
### Принципы
|
|
166
|
+
|
|
167
|
+
- Плагин берёт нужную базу (`ModuleCore`, `ModuleView`, `ModuleLayerController`, …), а не `Module` напрямую.
|
|
168
|
+
- Базы тянут **контракты** из `contracts/` — отсюда типизация `EVENTS` / `CONST`.
|
|
169
|
+
- **`ModuleCore`** — `plugins/core/` и `compatibility/`; **`ModuleView` / `ModuleLayer*`** — view/canvas + **`@vnejs/uis.react`**.
|
|
170
|
+
|
|
171
|
+
| | `packages/` | `modules_extensions/` |
|
|
172
|
+
|---|-------------|------------------------|
|
|
173
|
+
| Роль | Runtime и инфраструктура | Шаблоны для модулей плагинов |
|
|
174
|
+
| Регистрация в VNE | да (`shared`, `core`) | нет |
|
|
175
|
+
| Наследование | — | `plugins/` наследуют базы |
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## configs/
|
|
180
|
+
|
|
181
|
+
**Общие конфигурации сборки** — переиспользуемые TypeScript-настройки, не runtime.
|
|
182
|
+
|
|
183
|
+
| Пакет | Назначение |
|
|
184
|
+
|-------|------------|
|
|
185
|
+
| **`@vnejs/configs.ts-common`** | tsconfig для `plugins/`, `contracts/`, `packages/`, `modules_extensions/`, `helpers/` |
|
|
186
|
+
| **`@vnejs/configs.ts-uis`** | tsconfig для `uis/react/` и view-кода `games/` (JSX, React-типы) |
|
|
187
|
+
| **`@vnejs/configs.vitest`** | Общий Vitest-конфиг (`create-config.js`, `setup.js`) для пакетов с тестами |
|
|
188
|
+
|
|
189
|
+
```mermaid
|
|
190
|
+
flowchart LR
|
|
191
|
+
TC[configs.ts-common] --> PL[plugins/ / contracts/ / packages/]
|
|
192
|
+
TU[configs.ts-uis] --> UI[uis/react/]
|
|
193
|
+
TU --> GM[games/]
|
|
194
|
+
TV[configs.vitest] --> TEST[пакеты с vitest]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Пакеты `ts-*` экспортируют json; локальный `tsconfig.json` пакета **extends** общий и задаёт `rootDir` / `outDir`. Vitest-конфиг — JS-хелперы, не tsconfig.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## contracts/
|
|
202
|
+
|
|
203
|
+
**Контракт** — публичный API одного плагина: **спецификация**, не поведение.
|
|
204
|
+
|
|
205
|
+
### Что входит в контракт
|
|
206
|
+
|
|
207
|
+
- **`PLUGIN_NAME`** — namespace в реестре `VNE`.
|
|
208
|
+
- **`CONSTANTS`**, **`SUBSCRIBE_EVENTS`**, **`PARAMS`**, **`SETTINGS_KEYS`**.
|
|
209
|
+
- **Типы** — payload событий, shape глобального state, shared-поля.
|
|
210
|
+
|
|
211
|
+
### TypeScript augmentation
|
|
212
|
+
|
|
213
|
+
Контракт расширяет типы через `declare module`:
|
|
214
|
+
|
|
215
|
+
- `@vnejs/shared` — `VnePluginEventsMap`, `VnePluginConstantsMap`, …
|
|
216
|
+
- `@vnejs/module` — `ModuleGlobalState`, `ModuleShared`
|
|
217
|
+
- другие контракты — при cross-cutting типах
|
|
218
|
+
|
|
219
|
+
### Принципы
|
|
220
|
+
|
|
221
|
+
- Один контракт обычно соответствует **одному плагину** в `plugins/` (1:1).
|
|
222
|
+
- Контракт **не импортирует** реализацию из `plugins/`.
|
|
223
|
+
- Доменная структура `contracts/` зеркалит таксономию `plugins/`.
|
|
224
|
+
|
|
225
|
+
```mermaid
|
|
226
|
+
flowchart LR
|
|
227
|
+
CT[contracts/] -->|"declare module"| TS[Типы VNE / Module]
|
|
228
|
+
CT -->|"CONSTANTS, EVENTS, PARAMS"| REG[regPlugin при загрузке plugins/]
|
|
229
|
+
PL[plugins/] -->|"import"| CT
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## plugins/
|
|
235
|
+
|
|
236
|
+
**Плагин** — реализация поведения, описанного в `contracts/`.
|
|
237
|
+
|
|
238
|
+
### Регистрация
|
|
239
|
+
|
|
240
|
+
1. Импорт контракта из `contracts/`.
|
|
241
|
+
2. `regPlugin(PLUGIN_NAME, { constants, events, params, settings }, [ModuleClasses])`.
|
|
242
|
+
3. Классы попадают в `VNE_MODULES` через `regModule`.
|
|
243
|
+
|
|
244
|
+
### Модули и lifecycle
|
|
245
|
+
|
|
246
|
+
Плагин — **набор модулей** с уникальным `name`. После `new VneCore()`:
|
|
247
|
+
|
|
248
|
+
1. **`inject`** — observer, global state, shared, media.
|
|
249
|
+
2. **`subscribe`** — подписки на события.
|
|
250
|
+
3. **`init`** — асинхронная инициализация.
|
|
251
|
+
|
|
252
|
+
```mermaid
|
|
253
|
+
sequenceDiagram
|
|
254
|
+
participant A as Модуль plugins/ A
|
|
255
|
+
participant OBS as Observer
|
|
256
|
+
participant B as Модуль plugins/ B
|
|
257
|
+
|
|
258
|
+
A->>OBS: emit(EVENT_A.DONE, payload)
|
|
259
|
+
OBS->>B: handler
|
|
260
|
+
B->>OBS: emit(EVENT_B.START)
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Пакеты из `plugins/` **не импортируют** код соседних плагинов — только контракт и `VNE`.
|
|
264
|
+
|
|
265
|
+
### Зависимости
|
|
266
|
+
|
|
267
|
+
- `contracts/`, **`@vnejs/module.*`**, **`@vnejs/helpers`**, **`@vnejs/uis.*`** (view).
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## compatibility/
|
|
272
|
+
|
|
273
|
+
**Опциональная интеграция** между независимыми плагинами — включается в `bundles/`, не зашивается внутрь `plugins/`.
|
|
274
|
+
|
|
275
|
+
- Один модуль, наследник `ModuleCore`.
|
|
276
|
+
- В **`subscribe`** слушает A, эмитит B.
|
|
277
|
+
- **`regModule`** без `regPlugin` — нет своего namespace в `VNE`.
|
|
278
|
+
- Зависит только от **контрактов** из `contracts/`, не от реализаций в `plugins/`.
|
|
279
|
+
|
|
280
|
+
Именование: `@vnejs/compatibility.{источник}-with-{цель}` → путь `compatibility/{источник}/{цель}/`.
|
|
281
|
+
|
|
282
|
+
```mermaid
|
|
283
|
+
flowchart LR
|
|
284
|
+
PA[plugins/ A] -->|"emit EVENT_A"| OBS[Observer]
|
|
285
|
+
OBS --> CM[compatibility/]
|
|
286
|
+
CM -->|"emit EVENT_B"| OBS
|
|
287
|
+
OBS --> PB[plugins/ B]
|
|
288
|
+
|
|
289
|
+
PA -.->|"не импортирует"| PB
|
|
290
|
+
CM --> CTA[contracts/ A]
|
|
291
|
+
CM --> CTB[contracts/ B]
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## bundles/
|
|
297
|
+
|
|
298
|
+
**Композиция** без бизнес-логики — цепочка side-effect импортов из `plugins/` и `compatibility/`.
|
|
299
|
+
|
|
300
|
+
- Определяет **набор возможностей** для `games/`.
|
|
301
|
+
- Экспортирует **`VneCore`**.
|
|
302
|
+
- Дочерний пакет в `bundles/` импортирует родительский и **добавляет** плагины.
|
|
303
|
+
|
|
304
|
+
```mermaid
|
|
305
|
+
flowchart BT
|
|
306
|
+
CORE["bundles/core/"]
|
|
307
|
+
CANVAS["bundles/canvas.react/"]
|
|
308
|
+
SKEL["bundles/vn.skeleton/"]
|
|
309
|
+
BASE["bundles/vn.base/"]
|
|
310
|
+
GAME["bundles/coraline/"]
|
|
311
|
+
|
|
312
|
+
CORE --> CANVAS --> SKEL --> BASE --> GAME
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Entry point: re-export `VneCore` → импорт `plugins/` → импорт `compatibility/`.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## helpers/
|
|
320
|
+
|
|
321
|
+
**Чистые утилиты** вне event-архитектуры.
|
|
322
|
+
|
|
323
|
+
- **`helpers/primitives/`** — атомарные функции (`tokenize-*`, `get-id`, `to-json`, …).
|
|
324
|
+
- **`helpers/composites/`** — составные утилиты поверх primitives (например `call-all-promises`).
|
|
325
|
+
- **`helpers/base/`** — barrel **`@vnejs/helpers`** (реэкспорт primitives и composites).
|
|
326
|
+
|
|
327
|
+
```mermaid
|
|
328
|
+
flowchart LR
|
|
329
|
+
H[helpers/] --> P[plugins/]
|
|
330
|
+
H --> CORE[VneCore]
|
|
331
|
+
H -.->|"не связан"| VNE[(VNE / Observer)]
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## uis/
|
|
337
|
+
|
|
338
|
+
**Презентационный слой** для view-плагинов — не плагин, не в `VNE`.
|
|
339
|
+
|
|
340
|
+
| Часть | Назначение |
|
|
341
|
+
|-------|------------|
|
|
342
|
+
| **`uis/utils/`** | `cn`, `injectStyles`, `sel` |
|
|
343
|
+
| **`uis/react/primitives/`** | Атомы (button, text, icon, …) |
|
|
344
|
+
| **`uis/react/composites/`** | Составные компоненты |
|
|
345
|
+
| **`uis/react/complex/`** | Крупные UI-блоки |
|
|
346
|
+
| **`uis/react/hooks/`** | React-хуки |
|
|
347
|
+
| **`uis/react/base/`** | Barrel **`@vnejs/uis.react`** |
|
|
348
|
+
|
|
349
|
+
View-плагины в `plugins/`: **`ModuleView`** + render на компонентах из `uis/`.
|
|
350
|
+
|
|
351
|
+
```mermaid
|
|
352
|
+
flowchart TD
|
|
353
|
+
VP[plugins/ view / ModuleView]
|
|
354
|
+
VP --> UIR["@vnejs/uis.react"]
|
|
355
|
+
VP --> UU["@vnejs/uis.utils"]
|
|
356
|
+
VP --> OBS[Observer]
|
|
357
|
+
UIR -.->|"не использует"| VNE
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## cli/
|
|
363
|
+
|
|
364
|
+
**CLI** для монорепы и сборки `games/` (`npx @vnejs/*`).
|
|
365
|
+
|
|
366
|
+
```mermaid
|
|
367
|
+
flowchart LR
|
|
368
|
+
MR["@vnejs/monorepo"]
|
|
369
|
+
BD["@vnejs/build"]
|
|
370
|
+
DS["@vnejs/desktop"]
|
|
371
|
+
TL["@vnejs/tools"]
|
|
372
|
+
|
|
373
|
+
MR --> WS[workspace-пакеты]
|
|
374
|
+
BD --> G[games/]
|
|
375
|
+
DS --> G
|
|
376
|
+
TL --> G
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
| CLI | Роль |
|
|
380
|
+
|-----|------|
|
|
381
|
+
| **`@vnejs/monorepo`** | `build`, `package`, `publish`, `bump`, `sync-deps`, `graph`, `run-changed`, `clear` |
|
|
382
|
+
| **`@vnejs/build`** | **`data`** — `game/` → JSON в `dist/`; **`client`** — Vite entry → `dist/` |
|
|
383
|
+
| **`@vnejs/desktop`** | **`web`** — static-сервер для `dist/` |
|
|
384
|
+
| **`@vnejs/tools`** | Resize image/video/audio, контент-пайплайн |
|
|
385
|
+
|
|
386
|
+
Корень: `npm run build` → monorepo build; **Turbo** кэширует `build` с `dependsOn: ["^build"]`.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## games/
|
|
391
|
+
|
|
392
|
+
**Проекты игр** — потребители `bundles/` + `cli/`.
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
games/<name>/
|
|
396
|
+
├── entry/ # index.ts, index.html → импорт bundles/, new VneCore()
|
|
397
|
+
├── game/<mod>/ # scenario (.vne), scripts, media, public
|
|
398
|
+
├── desktop/ # Electron dev/prod
|
|
399
|
+
├── dist/ # JSON + JS после сборки
|
|
400
|
+
└── package.json
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
```mermaid
|
|
404
|
+
flowchart LR
|
|
405
|
+
SC["game/**/*.vne"]
|
|
406
|
+
DATA["build data"]
|
|
407
|
+
JSON["dist/*.json"]
|
|
408
|
+
ENTRY["entry/index.ts"]
|
|
409
|
+
CLIENT["build client"]
|
|
410
|
+
DIST["dist/"]
|
|
411
|
+
SRV["desktop web"]
|
|
412
|
+
|
|
413
|
+
SC --> DATA --> JSON
|
|
414
|
+
ENTRY --> CLIENT --> DIST
|
|
415
|
+
JSON --> RUN[Browser / Electron]
|
|
416
|
+
DIST --> RUN
|
|
417
|
+
SRV --> RUN
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
1. **`build:data`** — JSON для **`VneCore.init()`** (`mods.json`, labels, media).
|
|
421
|
+
2. **`build:client`** — Vite + `bundles/`.
|
|
422
|
+
3. **`entry/`** — `new VneCore()`, `await init()`.
|
|
423
|
+
|
|
424
|
+
`games/` **не собирает** `plugins/` — выбирает `bundles/` и добавляет контент.
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## vs_code_extensions/
|
|
429
|
+
|
|
430
|
+
**Расширения редактора** для формата сценария — не runtime.
|
|
431
|
+
|
|
432
|
+
| Расширение | Назначение |
|
|
433
|
+
|------------|------------|
|
|
434
|
+
| **`@vnejs/language`** | Подсветка **`.vne`** в `games/*/game/**/scenario/` |
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## Именование npm-пакетов
|
|
439
|
+
|
|
440
|
+
```
|
|
441
|
+
plugins/core/system/ → @vnejs/plugins.core.system
|
|
442
|
+
contracts/text/text/ → @vnejs/contracts.text
|
|
443
|
+
compatibility/text/scenario.autoread/ → @vnejs/compatibility.text-with-scenario.autoread
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
Слеш в пути → точка в имени; `compatibility/` — суффикс **`-with-`**.
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## Сборка end-to-end
|
|
451
|
+
|
|
452
|
+
```mermaid
|
|
453
|
+
flowchart TD
|
|
454
|
+
subgraph repo ["Монорепозиторий"]
|
|
455
|
+
CFG[configs/]
|
|
456
|
+
PKG[packages/]
|
|
457
|
+
ME[modules_extensions/]
|
|
458
|
+
CT[contracts/]
|
|
459
|
+
PL[plugins/]
|
|
460
|
+
CP[compatibility/]
|
|
461
|
+
BD[bundles/]
|
|
462
|
+
CL[cli/]
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
subgraph game_proj ["games/my-game/"]
|
|
466
|
+
SC[scenario .vne]
|
|
467
|
+
EN[entry/]
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
CFG --> PL
|
|
471
|
+
PKG --> ME --> PL
|
|
472
|
+
CT --> PL
|
|
473
|
+
CT --> CP
|
|
474
|
+
PL --> BD
|
|
475
|
+
CP --> BD
|
|
476
|
+
BD --> EN
|
|
477
|
+
SC --> CL
|
|
478
|
+
CL -->|"data + client"| ART[dist/]
|
|
479
|
+
EN --> ART
|
|
480
|
+
ART --> PLAY[Browser / Electron]
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
1. `bundles/` регистрирует `plugins/` и `compatibility/` в `VNE`.
|
|
484
|
+
2. `cli/` собирает сценарий в JSON и клиент в `dist/`.
|
|
485
|
+
3. `new VneCore().init()` — модули, media, `SYSTEM.STARTED`.
|
|
486
|
+
4. Игра живёт на событиях шины; cross-plugin связи — через `compatibility/` из `bundles/`.
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## Резюме
|
|
491
|
+
|
|
492
|
+
| Каталог | Одной фразой |
|
|
493
|
+
|---------|----------------|
|
|
494
|
+
| **`packages/`** | Реестр, шина, VneCore |
|
|
495
|
+
| **`modules_extensions/`** | Базовые классы модулей |
|
|
496
|
+
| **`configs/`** | Общие tsconfig |
|
|
497
|
+
| **`contracts/`** | API плагина: события, типы |
|
|
498
|
+
| **`plugins/`** | Реализация на шине |
|
|
499
|
+
| **`compatibility/`** | Opt-in связка двух плагинов |
|
|
500
|
+
| **`bundles/`** | Набор способностей для игры |
|
|
501
|
+
| **`helpers/`** | Утилиты без движка |
|
|
502
|
+
| **`uis/`** | React/UI для view |
|
|
503
|
+
| **`cli/`** | Сборка монорепы и игр |
|
|
504
|
+
| **`games/`** | Сценарий + entry + dist |
|
|
505
|
+
| **`vs_code_extensions/`** | Подсветка `.vne` |
|
|
506
|
+
|
|
507
|
+
**Главное правило:** `plugins/` не знают друг о друге; интеграция — через события по `contracts/` и явный `compatibility/` в `bundles/`.
|
package/manifest.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vnejs/docs",
|
|
3
|
+
"readOrder": [
|
|
4
|
+
"scenario.guide/README.md",
|
|
5
|
+
"scenario.catalog/README.md",
|
|
6
|
+
"scenario.catalog/index.md",
|
|
7
|
+
"plugins/",
|
|
8
|
+
"architecture.md"
|
|
9
|
+
],
|
|
10
|
+
"sections": {
|
|
11
|
+
"scenario.guide": {
|
|
12
|
+
"path": "scenario.guide/",
|
|
13
|
+
"role": "Author-facing .vne guides (variant B)",
|
|
14
|
+
"entry": "scenario.guide/README.md",
|
|
15
|
+
"pages": [
|
|
16
|
+
"scenario.guide/README.md",
|
|
17
|
+
"scenario.guide/dialogue.md",
|
|
18
|
+
"scenario.guide/flow.md",
|
|
19
|
+
"scenario.guide/vars.md",
|
|
20
|
+
"scenario.guide/choose.md",
|
|
21
|
+
"scenario.guide/point-and-click.md",
|
|
22
|
+
"scenario.guide/qte-random.md",
|
|
23
|
+
"scenario.guide/audio.md",
|
|
24
|
+
"scenario.guide/canvas.md",
|
|
25
|
+
"scenario.guide/views.md"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"scenario.catalog": {
|
|
29
|
+
"path": "scenario.catalog/",
|
|
30
|
+
"role": "Command catalog from SCENARIO_COMMANDS (variant C)",
|
|
31
|
+
"entry": "scenario.catalog/README.md",
|
|
32
|
+
"index": "scenario.catalog/index.md",
|
|
33
|
+
"stubs": "scenario.catalog/stubs/"
|
|
34
|
+
},
|
|
35
|
+
"plugins": {
|
|
36
|
+
"path": "plugins/",
|
|
37
|
+
"role": "Plugin internals: events, modules, contracts"
|
|
38
|
+
},
|
|
39
|
+
"architecture": {
|
|
40
|
+
"path": "architecture.md",
|
|
41
|
+
"role": "Monorepo architecture (read rarely for scenario authoring)"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vnejs/docs",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "VNEJS documentation for engine consumers and coding agents",
|
|
5
|
+
"files": [
|
|
6
|
+
"*.md",
|
|
7
|
+
"*.json",
|
|
8
|
+
"plugins/**/*.md",
|
|
9
|
+
"scenario.guide/**/*.md",
|
|
10
|
+
"scenario.catalog/**/*.md"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
"./package.json": "./package.json",
|
|
14
|
+
"./manifest.json": "./manifest.json",
|
|
15
|
+
"./README.md": "./README.md",
|
|
16
|
+
"./architecture.md": "./architecture.md",
|
|
17
|
+
"./plugins/*": "./plugins/*",
|
|
18
|
+
"./scenario.guide/*": "./scenario.guide/*",
|
|
19
|
+
"./scenario.catalog/*": "./scenario.catalog/*"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"publish:major": "npx @vnejs/monorepo publish major --access public",
|
|
23
|
+
"publish:minor": "npx @vnejs/monorepo publish minor --access public",
|
|
24
|
+
"publish:patch": "npx @vnejs/monorepo publish patch --access public"
|
|
25
|
+
},
|
|
26
|
+
"license": "ISC"
|
|
27
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# plugins/audio/ambient/
|
|
2
|
+
|
|
3
|
+
Пакет: `@vnejs/plugins.audio.ambient` · namespace: `AMBIENT`
|
|
4
|
+
|
|
5
|
+
Воспроизведение зацикленного ambient-аудио из сценария с отдельной громкостью.
|
|
6
|
+
|
|
7
|
+
## События
|
|
8
|
+
|
|
9
|
+
Нет.
|
|
10
|
+
|
|
11
|
+
## Константы
|
|
12
|
+
|
|
13
|
+
Нет.
|
|
14
|
+
|
|
15
|
+
## Параметры
|
|
16
|
+
|
|
17
|
+
Нет.
|
|
18
|
+
|
|
19
|
+
## Настройки
|
|
20
|
+
|
|
21
|
+
| Ключ | Тип | Смысл |
|
|
22
|
+
|------|-----|-------|
|
|
23
|
+
| `VOLUME` (`vne:ambient:volume`) | `number` | Уровень громкости. |
|
|
24
|
+
|
|
25
|
+
## Модули
|
|
26
|
+
|
|
27
|
+
| Модуль | Зона ответственности |
|
|
28
|
+
|--------|----------------------|
|
|
29
|
+
| `ambient` | Модуль `ambient`. |
|
|
30
|
+
|
|
31
|
+
## Близкие плагины
|
|
32
|
+
|
|
33
|
+
### plugins/core/
|
|
34
|
+
|
|
35
|
+
— нет
|
|
36
|
+
|
|
37
|
+
### Остальные
|
|
38
|
+
|
|
39
|
+
— нет
|