@66rpg/cgmaker 0.1.23 → 0.1.24
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 +27 -25
- package/dist/index.js +40 -51
- package/dist/validate.js +1 -1
- package/package.json +2 -2
- package/share/run-logic.mjs +1 -1
- package/skill/cgmaker/SKILL.md +120 -131
- package/skill/cgmaker-identity/SKILL.md +44 -45
- package/skill/cgmaker-identity/references/branches.md +123 -163
- package/skill/cgmaker-identity/references/fields.md +64 -64
- package/skill/cgmaker-template-spec/SKILL.md +11 -10
- package/skill/cgmaker-template-spec/references/layout.md +27 -19
|
@@ -1,163 +1,123 @@
|
|
|
1
|
-
# 业务场景与参数配置指南
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
发布前请先确认两件事:
|
|
6
|
-
|
|
7
|
-
- **模板、开源工程**:上传不含 `node_modules`,`package.json` 里的依赖须能公开安装、版本真实可用。
|
|
8
|
-
- **模板、游戏、开源工程**:运行时只用本地资源,不要用 CDN 或其它在线地址。
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## 1. 模板发布业务场景
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
- 若此工程之前未发布过游戏,平台将创建全新的游戏 ID;若已发布过,则自动追加新版本。
|
|
125
|
-
|
|
126
|
-
- **发布试玩版本(Demo)**:
|
|
127
|
-
```bash
|
|
128
|
-
npx cgmaker publish --demo --version 1.0.0
|
|
129
|
-
```
|
|
130
|
-
- 试玩版本通过 `--demo` 旗标区分。在平台机制中,试玩版属于**独立的作品发布通道**,拥有独立的试玩游戏 ID。
|
|
131
|
-
- **支持先发试玩**:允许在正式游戏发布前提前发布试玩版本。
|
|
132
|
-
- **自动挂接机制**:当同一工程后续执行正式版发布(不带 `--demo`)时,平台会自动检测并关联该工程已有的试玩版,无需创作者手动配置关联关系。
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 3. 参数冲突与规范清单(避坑指南)
|
|
137
|
-
|
|
138
|
-
为避免因参数冲突导致命令执行失败,请注意以下规则:
|
|
139
|
-
|
|
140
|
-
1. **`--assets` 必须是绝对路径**
|
|
141
|
-
- 正确:`--assets D:\game\assets` 或 `--assets /Users/name/game/assets`
|
|
142
|
-
- 错误:`--assets ./assets` 或 `--assets ..\custom-assets`(相对路径将直接导致校验失败退出)
|
|
143
|
-
- 映射规则:无论外部目录名是什么,打包后在平台素材包中均统一置于 `assets/` 根路径。
|
|
144
|
-
|
|
145
|
-
2. **第一版不能绑数据包**
|
|
146
|
-
- 无 origin 的 `publish-template`(含 `--init`)不要同时传 `--with-assets` / `--assets` / `--data-ver` / `--data-summary`。
|
|
147
|
-
- 续发默认不带包;要再传一包用 `--with-assets`。该 `data_ver` 尚无包且本地有 `assets/` 时会自动带上。
|
|
148
|
-
- 无 origin 时不要擅自加 `--init`(与默认首发相同)。
|
|
149
|
-
|
|
150
|
-
3. **`--data-id` 仅用于 Fork 换绑;开工程用 `--with-assets <数据包ID>`**
|
|
151
|
-
- 在普通的模板发布(`publish-template` 且未带 `--fork`)中,严禁传入 `--data-id`。
|
|
152
|
-
- 开工程只有带了 `--with-assets` 才下载素材包;不带则只下代码。已不再支持 `--data-id`。
|
|
153
|
-
- 上传自己本地的素材,用 `--with-assets` 声明(Fork 不要再传 `--data-ver`)。
|
|
154
|
-
|
|
155
|
-
4. **`--data-ver` 仅在实际上传数据包时使用**
|
|
156
|
-
- 续发默认不带包时不要传 `--data-ver`,否则退出 2。
|
|
157
|
-
- 无 origin 的首发 / `--init` / `--fork` 也不要带。
|
|
158
|
-
|
|
159
|
-
5. **素材版本号不自动递增,未指定则不改 `package.json`**
|
|
160
|
-
- 未传 `--data-ver` 时读 `package.json` 的 `data_ver`,不写回。只有命令行显式传入且上传成功才写回。
|
|
161
|
-
|
|
162
|
-
6. **本地测试模板无法直接上架发布**
|
|
163
|
-
- 若工程是从本地磁盘目录直接导入安装创建的,其模板处于本地调试模式,无法直接作为官方上架模板执行 `publish-template`。
|
|
1
|
+
# 业务场景与参数配置指南
|
|
2
|
+
|
|
3
|
+
本文档面向模板作者与游戏创作者。版本号、素材版本写在 `package.json`,素材目录固定为工程 `assets/`。不要在命令里传版本号或素材路径。素材说明可用 `--data-summary`。平台展示名写在 `package.json.name`。更新说明去网页改。
|
|
4
|
+
|
|
5
|
+
发布前请先确认两件事:
|
|
6
|
+
|
|
7
|
+
- **模板、开源工程**:上传不含 `node_modules`,`package.json` 里的依赖须能公开安装、版本真实可用。
|
|
8
|
+
- **模板、游戏、开源工程**:运行时只用本地资源,不要用 CDN 或其它在线地址。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 模板发布业务场景
|
|
13
|
+
|
|
14
|
+
### 场景 1.1:首次发布全新模板
|
|
15
|
+
|
|
16
|
+
当你的模板工程从未在平台发布过:
|
|
17
|
+
|
|
18
|
+
- **方式 A:完整首次发布(代码 + 素材)**
|
|
19
|
+
- **前置准备**:`package.json` 中已配置好 `slug`、`version`、`data_ver`、可选 `data_summary`、`scripts.validate`、`scripts.dev:demo` 与 `scripts.build:demo`。有独立试玩数据时 `validate` 必须同时检查两份,不要 `validate:demo`。无独立 demo 时 `dev:demo` 可与 `dev` 相同、`build:demo` 可与 `build` 相同。另需合法平台展示名:`package.json.name`,不能含 `/` 或 `@`;空缺时会要求输入并写回。若现有 name 已经带 `/` 或 `@`,不要覆盖,发布时会再问展示名。不会用 `slug` 顶上。本地素材放在工程 `assets/`。
|
|
20
|
+
- **命令示例**:
|
|
21
|
+
```bash
|
|
22
|
+
npx cgmaker publish-template
|
|
23
|
+
```
|
|
24
|
+
- **说明**:
|
|
25
|
+
- `package.json.version`:首发代码版本号。须 1–16 位,仅小写字母、数字、`.`、`-`;须以字母或数字开头和结尾,不能有连续符号。
|
|
26
|
+
- `package.json.data_ver`:首发素材包版本。平台不会自动 +1。
|
|
27
|
+
- 可选 `--with-assets`:即使该 `data_ver` 已有包也再传一包。**第一版不能带包**,不要加。
|
|
28
|
+
- 可选 `--data-summary`:本包说明。也可写 `package.json.data_summary`。
|
|
29
|
+
|
|
30
|
+
- **方式 B:仅发布代码(暂不带素材)**
|
|
31
|
+
- **命令示例**:
|
|
32
|
+
```bash
|
|
33
|
+
npx cgmaker publish-template
|
|
34
|
+
```
|
|
35
|
+
- **注意**:**不要加 `--with-assets`**。本地即使有 `assets/` 也不会上传。
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### 场景 1.2:已有模板版本更新
|
|
40
|
+
|
|
41
|
+
- **方式 A:同时更新代码与素材**
|
|
42
|
+
- 先改 `package.json` 的 `version` / `data_ver`(及可选 `data_summary`)。
|
|
43
|
+
- **命令示例**:
|
|
44
|
+
```bash
|
|
45
|
+
npx cgmaker publish-template --with-assets
|
|
46
|
+
```
|
|
47
|
+
- 该 `data_ver` 尚无包时即使不加 `--with-assets` 也会自动传 `assets/`。
|
|
48
|
+
|
|
49
|
+
- **方式 B:仅更新模板代码**
|
|
50
|
+
- 先改 `package.json.version`。
|
|
51
|
+
- **命令示例**:
|
|
52
|
+
```bash
|
|
53
|
+
npx cgmaker publish-template
|
|
54
|
+
```
|
|
55
|
+
- 该 `data_ver` 已有包时默认不再上传素材。新版本仍绑定已有素材包。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### 场景 1.3:仅更新模板素材(代码未变动)
|
|
60
|
+
|
|
61
|
+
- 改 `package.json` 的 `data_ver`(及可选 `data_summary`);素材放在工程 `assets/`。
|
|
62
|
+
```bash
|
|
63
|
+
npx cgmaker publish-template-data
|
|
64
|
+
```
|
|
65
|
+
- 只上传素材,**不会**产生新的模板代码版本。已经基于旧素材开好的游戏工程不受影响。要用新素材,开工程时带上新的素材包 ID。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### 场景 1.4:基于他人已上架版本派生
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx cgmaker publish-template --fork <源版本ID>
|
|
73
|
+
npx cgmaker publish-template --fork <源版本ID> --with-assets
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- 继承源版本的代码底座。
|
|
77
|
+
- 默认不传本地包。要上传本地素材加 `--with-assets`。
|
|
78
|
+
- 换绑已有素材包时按提示选择,不要自己编 ID。
|
|
79
|
+
- 派生成功后是一份新模板。代码版本号仍读 `package.json.version`。
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 2. 游戏发布业务场景(正式版与试玩版)
|
|
84
|
+
|
|
85
|
+
先改 `package.json.version`:
|
|
86
|
+
|
|
87
|
+
- **发布正式游戏**:
|
|
88
|
+
```bash
|
|
89
|
+
npx cgmaker publish
|
|
90
|
+
```
|
|
91
|
+
- 上传当前工程 `dist/`。还没发布过会新建游戏;已发布过则追加新版本。
|
|
92
|
+
- 上传前会列出名称、版本、正式/试玩等,确认后才发布。不想询问时可加 `--no-interactive`。
|
|
93
|
+
|
|
94
|
+
- **发布试玩**:
|
|
95
|
+
```bash
|
|
96
|
+
npx cgmaker publish --demo
|
|
97
|
+
```
|
|
98
|
+
- 试玩是**独立作品**。
|
|
99
|
+
- 允许先发试玩。同一工程后续发正式版时会自动挂接。
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 3. 避坑
|
|
104
|
+
|
|
105
|
+
1. **素材目录固定为工程 `assets/`**,不要在命令里指定别的路径。
|
|
106
|
+
|
|
107
|
+
2. **第一版不能绑数据包**
|
|
108
|
+
- 还没发布过的 `publish-template` 不要加 `--with-assets`。
|
|
109
|
+
- 续发默认不带包;要再传一包用 `--with-assets`。该 `data_ver` 尚无包且本地有 `assets/` 时会自动带上。
|
|
110
|
+
|
|
111
|
+
3. **开工程下载素材用 `--with-assets <数据包ID>`**
|
|
112
|
+
- 和发模板时的 `--with-assets`(开关、无值)不是同一个参数。
|
|
113
|
+
- 网页命令没有素材包编号,就不要补。
|
|
114
|
+
|
|
115
|
+
4. **`data_ver` 写在 `package.json`**
|
|
116
|
+
- 续发默认不带包时,改这个字段也不会上传。
|
|
117
|
+
- 首发、派生默认都不走「只传素材」。
|
|
118
|
+
|
|
119
|
+
5. **素材版本号不自动递增**
|
|
120
|
+
- 更新素材时请改 `package.json` 的 `data_ver`(及可选 `data_summary`)。
|
|
121
|
+
|
|
122
|
+
6. **从本地文件夹拷来的工程不能当模板上架**
|
|
123
|
+
- `--from-dir` 落地的工程还没接到平台,不能 `publish-template`。
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
# 参数与配置字段说明
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. 模板工程配置字段(`package.json`)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| 字段名称 | 类型 | 是否必填 | 功能与使用说明 | 配置规范与注意事项 |
|
|
12
|
-
|---|---|---|---|---|
|
|
13
|
-
| `slug` | 字符串 | 是 |
|
|
14
|
-
| `name` | 字符串 | 首发必填 |
|
|
15
|
-
| `version` | 字符串 | 是 |
|
|
16
|
-
| `data_ver` | 字符串或数字 | 是 |
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
|
|
32
|
-
| `--
|
|
33
|
-
| `--assets
|
|
34
|
-
| `--
|
|
35
|
-
| `--fork <源版本ID>` | `publish-template` | 派生制作时必填 | **基于平台上已有的某个模板版本派生新模板**。 |
|
|
36
|
-
| `--
|
|
37
|
-
| `--
|
|
38
|
-
| `--
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 3. 平台全局标识(ID)与用途
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
| 标识名称 | 产生方式 | 主要用途与业务意义 |
|
|
47
|
-
|---|---|---|
|
|
48
|
-
| **模板 ID
|
|
49
|
-
| **版本 ID
|
|
50
|
-
| **素材包 ID
|
|
51
|
-
| **游戏 ID
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## 4. 常见易混淆概念说明
|
|
56
|
-
|
|
57
|
-
### 模板短名(`slug`) vs 模板名(`name`) vs 模板 ID
|
|
58
|
-
- **`slug`**:本地 `package.json`
|
|
59
|
-
- **`name
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
###
|
|
63
|
-
-
|
|
64
|
-
-
|
|
1
|
+
# 参数与配置字段说明
|
|
2
|
+
|
|
3
|
+
本文档面向模板作者与游戏创作者,说明开发、构建和发布时会用到的配置字段、命令参数和平台标识。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 模板工程配置字段(`package.json`)
|
|
8
|
+
|
|
9
|
+
在模板工程根目录的 `package.json` 中配置:
|
|
10
|
+
|
|
11
|
+
| 字段名称 | 类型 | 是否必填 | 功能与使用说明 | 配置规范与注意事项 |
|
|
12
|
+
|---|---|---|---|---|
|
|
13
|
+
| `slug` | 字符串 | 是 | **模板的英文短名**。开工程引用 `用户名/slug` 的后半段就是它。 | 仅支持小写字母、数字与中划线,如 `quiz-react`。**发布后禁止修改**。它**不是**平台分配的模板 ID,也**不是**平台展示名 `name`。 |
|
|
14
|
+
| `name` | 字符串 | 首发必填 | **平台展示名**(给人看,可中文)。同一作者下未删除的模板不能重名,且不能含 `/` 或 `@`。 | 可改。**不要用 `slug` 冒充展示名**,也**不要**把本字段写进开工程命令。空缺时会问你并写回本字段。如果现有 name 已经带 `/` 或 `@`(包名),不要覆盖,发布时会再问展示名。开工程落地会把游戏工程的 `name` 改成目录名,不要动 `slug`。 |
|
|
15
|
+
| `version` | 字符串 | 是 | **工程的代码版本号**。发布时读取,不要在命令里传版本号。 | **仅发布模板**时须 1–16 位、仅小写字母/数字/`.`/`-`、以字母或数字开头和结尾、不能有连续符号(如 `0.1.0`、`1.0.0-a`)。游戏与开源工程发版不套此格式。 |
|
|
16
|
+
| `data_ver` | 字符串或数字 | 是 | **模板配套素材的版本号**。发布时读取,不要在命令里传素材版本号。 | 建议从 `"1"` 开始。平台不会自动 +1。更新素材时请改这个字段再跑 `publish-template --with-assets` 或 `publish-template-data`。 |
|
|
17
|
+
| `data_summary` | 字符串 | 否 | **本次素材包说明**。同一 `data_ver` 下多包时用来区分。 | 可写在 `package.json`,也可用 `--data-summary`。 |
|
|
18
|
+
| `scripts.dev` | 字符串 | 是 | **正式内容的开发服务**(`npm run dev`)。 | 命令随技术栈,名字不能改。 |
|
|
19
|
+
| `scripts.dev:demo` | 字符串 | 是 | **试玩的开发服务**(`npm run dev:demo`)。 | 发模板时必须有。无独立 demo 时可与 `dev` 写成同一条命令。 |
|
|
20
|
+
| `scripts.build` | 字符串 | 是 | **打包正式版到 `dist/`**。 | 发布游戏前由作者自行执行。 |
|
|
21
|
+
| `scripts.build:demo` | 字符串 | 是 | **打包试玩到同一份 `dist/`**(会覆盖正式产物)。 | 发模板时必须有。无独立 demo 时可与 `build` 写成同一条命令。发游戏试玩前由作者执行。 |
|
|
22
|
+
| `scripts.validate` | 字符串 | 是 | **模板自己的数据检查**(`npm run validate`)。 | 发模板时必须有。有独立试玩数据时,同一条命令必须把正式和试玩两份都检查过。**不要** `scripts.validate:demo`。必须是模板自己的命令,**不要**写成 `cgmaker validate`。`npx cgmaker validate` 会转调这条脚本。 |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. 命令行功能参数详解
|
|
27
|
+
|
|
28
|
+
帮助里能看到、作者会用到的参数:
|
|
29
|
+
|
|
30
|
+
| 参数名称 | 适用命令 | 是否必填 | 功能与作用说明 | 参数规则与配置示例 |
|
|
31
|
+
|---|---|---|---|---|
|
|
32
|
+
| `--data-summary <说明>` | `publish-template` / `publish-template-data` | 选填 | **本次素材包说明**。 | 也可写在 `package.json.data_summary`。派生时不要传。 |
|
|
33
|
+
| `--with-assets` | `publish-template` | 选填 | **显式同时上传数据包**。 | 默认不带包。该 `data_ver` 在平台尚无包且本地有 `assets/` 时也会自动上传。再传一包须加本开关。第一版不能带包。zip 始终来自工程 `assets/`。 |
|
|
34
|
+
| `--with-assets <数据包ID>` | `cgmaker-create` | 选填 | **下载指定素材包**。 | 值必填,与 `publish-template --with-assets`(开关、无值)不是同一个参数。不带则只下代码。 |
|
|
35
|
+
| `--fork <源版本ID>` | `publish-template` | 派生制作时必填 | **基于平台上已有的某个模板版本派生新模板**。 | 继承该版本的代码底座。要带本地包加 `--with-assets`。换绑已有素材包时按提示选择。 |
|
|
36
|
+
| `--demo` | `publish` | 选填 | **本次发布为试玩**。 | 试玩与正式版是两份独立作品。可先发试玩,后续在同一工程发正式版时会自动挂接。 |
|
|
37
|
+
| `--no-interactive` | 各命令 | 选填 | **关闭终端询问**。 | 脚本或不想逐步确认时使用。 |
|
|
38
|
+
| `--force` | `login` | 选填 | **强制重新登录**。 | 换号时不必先退出。 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. 平台全局标识(ID)与用途
|
|
43
|
+
|
|
44
|
+
你在网页、命令成功提示或开工程参数中会接触到的标识:
|
|
45
|
+
|
|
46
|
+
| 标识名称 | 产生方式 | 主要用途与业务意义 |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| **模板 ID** | 首次发布模板成功后由平台分配 | 模板在平台上的身份。开工程网页默认用 `用户名/slug`,也可传该 ID 或版本 ID。 |
|
|
49
|
+
| **版本 ID** | 每次发布新的模板代码版本时生成 | 某一次具体的模板代码版本。派生、绑定游戏时用它。 |
|
|
50
|
+
| **素材包 ID** | 每次成功上传素材包后生成 | 一份独立的素材内容。开工程用 `--with-assets <数据包ID>` 拉取。 |
|
|
51
|
+
| **游戏 ID** | 首次发布游戏成功后由平台分配 | 游戏在平台上的编号。正式版与试玩各有一份,可先发试玩。 |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 4. 常见易混淆概念说明
|
|
56
|
+
|
|
57
|
+
### 模板短名(`slug`) vs 模板名(`name`) vs 模板 ID
|
|
58
|
+
- **`slug`**:本地 `package.json` 的英文短名。发布后禁止修改。开工程命令 `用户名/slug` 的后半段用它,不要用 `name`。
|
|
59
|
+
- **`name`**:平台展示名(可中文)。首发必须合法,不能含 `/` 或 `@`;**不会**自动用 `slug` 顶上。不用于开工程引用。若现有 `package.json.name` 已经带 `/` `@`,不要覆盖该字段。
|
|
60
|
+
- **模板 ID**:平台分配。开工程第一位置交给平台解析:`用户名/slug`、`用户名/slug@版本`、模板 id 或版本 id 均可。
|
|
61
|
+
|
|
62
|
+
### 素材版本号(`data_ver`) vs 素材包 ID
|
|
63
|
+
- **`data_ver`**:写在 `package.json`,由你规划(如 `"1"`、`"2"`)。**它不会自动加 1**。
|
|
64
|
+
- **素材包 ID**:平台为该次上传生成。开工程用 `--with-assets <数据包ID>` 精确获取该包。
|
|
@@ -24,10 +24,10 @@ description: 橙光 cgmaker 模板工程规范。在用户改目录或脚本名
|
|
|
24
24
|
模板提供(进指纹):
|
|
25
25
|
|
|
26
26
|
- `src/` 必须
|
|
27
|
-
- `package.json` 必须有 `scripts.dev` / `scripts.build` / `scripts.build:demo`,以及 `slug`、`data_ver`
|
|
27
|
+
- `package.json` 必须有 `scripts.dev` / `scripts.dev:demo` / `scripts.build` / `scripts.build:demo` / `scripts.validate`,以及 `slug`、`data_ver`
|
|
28
28
|
- `README.md`、`AGENTS.md` 必须(README 不进指纹;AGENTS.md 进)
|
|
29
29
|
- `skill/` 可选
|
|
30
|
-
-
|
|
30
|
+
- `scripts.validate` 必有:模板自己检查数据。有独立试玩数据时同一条命令检查两份,不要 `validate:demo`。实现可放 `schema/`,不必是 JSON Schema
|
|
31
31
|
- 根 `index.html`、打包配置可选
|
|
32
32
|
|
|
33
33
|
不要 `template.yaml`。作者只填 `package.json` 的 `slug`、`data_ver` + 已有的 `version` / `description`。平台模板名用 `name`(可改;首发必须填写,不能含 `/` 或 `@`,不要用 `slug` 顶上)。不要手写 `template_id`。落地会改 `name`,**禁止改 `slug`**。参数与字段详细定义,见 `cgmaker-identity`。
|
|
@@ -41,16 +41,17 @@ description: 橙光 cgmaker 模板工程规范。在用户改目录或脚本名
|
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
npx cgmaker validate-template # 验证当前工程目录是否符合模板规范
|
|
44
|
-
npm run validate #
|
|
44
|
+
npm run validate # 必有:模板自己检查数据。有独立试玩数据时同一条命令检查两份,不要 validate:demo
|
|
45
|
+
npx cgmaker validate # 转调 npm run validate
|
|
46
|
+
npm run dev # 正式内容开发服务
|
|
47
|
+
npm run dev:demo # 试玩开发服务(无独立 demo 时可与 dev 相同)
|
|
45
48
|
npm run build
|
|
46
|
-
npm run build:demo # 试玩 dist
|
|
47
|
-
npx cgmaker publish-template
|
|
48
|
-
npx cgmaker publish-template --
|
|
49
|
-
npx cgmaker publish-template
|
|
50
|
-
npx cgmaker publish-template-data --data-ver 2 --data-summary "关卡修订"
|
|
51
|
-
npx cgmaker publish-template-data --data-ver 2 --assets C:\path\to\assets
|
|
49
|
+
npm run build:demo # 试玩 dist/(发布模板必须有这条脚本;无独立 demo 时可与 build 相同)
|
|
50
|
+
npx cgmaker publish-template
|
|
51
|
+
npx cgmaker publish-template --with-assets
|
|
52
|
+
npx cgmaker publish-template-data
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
过不过关只认 `cgmaker validate-template`。发布游戏用 `npx cgmaker publish`(只认 `dist/`);试玩用 `npx cgmaker publish --demo`(先 `build:demo`,可无正式版首发)。命令怎么敲见 `cgmaker`;功能参数与场景搭配见 `cgmaker-identity
|
|
55
|
+
过不过关只认 `cgmaker validate-template`。发布游戏用 `npx cgmaker publish`(只认 `dist/`);试玩用 `npx cgmaker publish --demo`(先 `build:demo`,可无正式版首发)。命令怎么敲见 `cgmaker`;功能参数与场景搭配见 `cgmaker-identity`。`version`、`data_ver` 写在 `package.json`;素材固定为工程 `assets/`。素材说明可用 `--data-summary`。平台展示名写在 `package.json.name`;现有 name 已经带 `@` 时不要覆盖。更新说明去网页改。缺字段就改 `package.json` 再跑。
|
|
55
56
|
|
|
56
57
|
发布模板或开源工程前:zip 不含 `node_modules`,`package.json` 里的依赖必须能装、版本必须真实可用。发布模板、游戏或开源工程前:运行时只用本地资源,不要热链 CDN 或其它在线地址。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
给人(和 AI)读的条文。机器实现是 `npx cgmaker validate-template`。
|
|
4
4
|
|
|
5
|
-
技术栈自选(React / Vue / Phaser / 原生 Canvas 均可),工程是 **npm 包**:必须有 `package.json` 和 `scripts.dev` / `scripts.build` / `scripts.build:demo`。**平台规定的目录名不允许改**;`assets/` 内部子目录名由各模板写在 `AGENTS.md` 里。
|
|
5
|
+
技术栈自选(React / Vue / Phaser / 原生 Canvas 均可),工程是 **npm 包**:必须有 `package.json` 和 `scripts.dev` / `scripts.dev:demo` / `scripts.build` / `scripts.build:demo` / `scripts.validate`。**平台规定的目录名不允许改**;`assets/` 内部子目录名由各模板写在 `AGENTS.md` 里。
|
|
6
6
|
|
|
7
7
|
✅ 必有 · ⭕ 可选(有则校验)。产物 HTML 见 [dist.md](dist.md)。`template_id` / origin / 再发布是平台实现,见仓库 [docs/origin.md](../../../../../docs/origin.md)。
|
|
8
8
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
只要求 **Node.js 20+**(LTS,自带 `npm` / `npx`)。不要写 `"packageManager": "pnpm@…"`。
|
|
12
12
|
|
|
13
|
-
`create` 脚手架会写一份含 `@66rpg/cgmaker` 的 `package.json`。模板 zip 自带的 `package.json` 覆盖脚手架那份(须保留 `slug` 与 `dev` / `build` / `build:demo`)。
|
|
13
|
+
`create` 脚手架会写一份含 `@66rpg/cgmaker` 的 `package.json`。模板 zip 自带的 `package.json` 覆盖脚手架那份(须保留 `slug` 与 `dev` / `dev:demo` / `build` / `build:demo` / `validate`)。
|
|
14
14
|
|
|
15
15
|
## 工程根
|
|
16
16
|
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
|
|
19
19
|
```
|
|
20
20
|
.
|
|
21
|
-
├── package.json ✅ slug + version + data_ver + scripts.dev / build / build:demo;指纹不含 name、slug、data_ver
|
|
21
|
+
├── package.json ✅ slug + version + data_ver + scripts.dev / dev:demo / build / build:demo / validate;指纹不含 name、slug、data_ver
|
|
22
22
|
├── README.md ✅ 不进指纹
|
|
23
23
|
├── AGENTS.md ✅ 进指纹。写明 assets/ 子目录;可指向 skill/SKILL.md
|
|
24
24
|
├── src/ ✅ 进指纹。完整可改源码,不规定语言或框架
|
|
25
25
|
├── assets/ ✅ 必须有这个目录(可空);正式内容;不进指纹
|
|
26
|
-
│ ├── data/ ⭕
|
|
26
|
+
│ ├── data/ ⭕ 样板惯例。正式 game.json;有独立试玩时另有 game.demo.json,由 scripts.validate 同一条命令检查
|
|
27
27
|
│ ├── theme/ ⭕ 样板惯例;默认找 theme/layout.json
|
|
28
28
|
│ └── images/ ⭕ 样板惯例。子目录名平台不管,写在 AGENTS.md
|
|
29
29
|
├── .gitignore ✅ 必须忽略 dist/、node_modules/
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
素材引用相对 **`assets/` 根**(JSON 写 `images/cover.svg`,不要写 `assets/images/...`)。根目录不要再放 `data/`、`theme/`。
|
|
44
44
|
|
|
45
|
-
试玩(同一工程、同一份 `src/`,两次 build 都进 `dist/`):必须提供 `scripts.build:demo
|
|
45
|
+
试玩(同一工程、同一份 `src/`,两次 build 都进 `dist/`):必须提供 `scripts.dev:demo`(试玩开发服务)和 `scripts.build:demo`(试玩产物)。无独立 demo 时,`dev:demo` 可与 `dev` 相同、`build:demo` 可与 `build` 相同。数据校验只有一条 `scripts.validate`:有独立试玩数据时,同一条命令必须把正式和试玩两份都检查过。**不要** `scripts.validate:demo`。不要第二份作者工程,不要 `dist-demo/`。
|
|
46
46
|
|
|
47
47
|
安装之后多出来、**不要打回 zip** 的:`.cgmaker/`(`origin.json` 模板身份、`game.json` 游戏正式版 / demo,见 [docs/origin.md](../../../../../docs/origin.md))、`node_modules/`、`dist/`、以及 create/init 或 `cgmaker skill` 按所选编辑器拷入的 `.agents/` `.cursor/` 等目录(未选编辑器则没有这些目录;之后可 `npx cgmaker skill --platform cursor` 补装)。凭据在 `~/.cgmaker/`,不在工程里。
|
|
48
48
|
|
|
@@ -67,41 +67,49 @@
|
|
|
67
67
|
"name": "my-game",
|
|
68
68
|
"slug": "react-admin",
|
|
69
69
|
"version": "1.2.0",
|
|
70
|
+
"data_ver": "1",
|
|
71
|
+
"data_summary": "示范关卡",
|
|
70
72
|
"description": "商店简介 / 列表说明",
|
|
71
73
|
"scripts": {
|
|
72
|
-
"dev": "
|
|
74
|
+
"dev": "<正式内容开发服务>",
|
|
75
|
+
"dev:demo": "<试玩开发服务;无独立 demo 时可与 dev 相同>",
|
|
73
76
|
"build": "<打包正式版到 dist/>",
|
|
74
|
-
"build:demo": "<打包试玩到同一个 dist
|
|
77
|
+
"build:demo": "<打包试玩到同一个 dist/,会覆盖正式产物;无独立 demo 时可与 build 相同>",
|
|
78
|
+
"validate": "<模板自己的数据检查;有独立试玩数据时同一条命令检查两份>"
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
```
|
|
78
82
|
|
|
79
83
|
- `slug` ✅ `^[a-z0-9][a-z0-9-]{0,62}$`。发布后禁止修改。**不是**平台模板名,也不是 `name`
|
|
80
|
-
- `version` ✅ 模板发版时作为接口 `version_name
|
|
84
|
+
- `version` ✅ 模板发版时作为接口 `version_name`:1–16 位,仅小写字母、数字、`.`、`-`;须以字母或数字开头和结尾,不能有连续符号(如 `0.1.0`、`1.0.0-a`)。不是随意 semver。游戏 / 开源工程发版不套此格式。不要用 `--version` 覆盖。
|
|
85
|
+
- `data_ver` ✅ 素材版本号(发布模板强制)。平台不会自动 +1。不要用 `--data-ver`
|
|
86
|
+
- `data_summary` ⭕ 本次素材包说明(接口 `summary`)。也可用 `--data-summary`
|
|
81
87
|
- `description` ⭕ 商店简介(接口 `summary`)
|
|
82
88
|
- `name` ⭕ 平台模板名。可改;服务端按作者校验唯一,不能含 `/` 或 `@`。首发必须由用户给出,**不会**默认用 `slug`。落地会改成工程目录名,不要拿它当 slug
|
|
83
|
-
- `scripts.dev` ✅
|
|
89
|
+
- `scripts.dev` ✅ 正式内容开发服务。命令随栈,**名字不能改**
|
|
90
|
+
- `scripts.dev:demo` ✅ 试玩开发服务(`npm run dev:demo`)。发布模板时强制有这条。无独立 demo 时可与 `dev` 写成同一条命令。CLI **不执行**该脚本
|
|
84
91
|
- `scripts.build` ✅ 产出正式版 `dist/`,命名见 [dist.md](dist.md)
|
|
85
|
-
- `scripts.build:demo` ✅ 产出试玩 `dist
|
|
86
|
-
- `scripts.validate`
|
|
92
|
+
- `scripts.build:demo` ✅ 产出试玩 `dist/`(同一目录,会覆盖)。发布模板时强制有这条。无独立 demo 时可与 `build` 写成同一条命令
|
|
93
|
+
- `scripts.validate` ✅ 模板自己的数据检查(`npm run validate`)。发布模板时强制有这条。有独立试玩数据时,同一条命令必须把正式和试玩两份都检查过。**不要** `scripts.validate:demo`(开发服务和打包才分正式/试玩)。必须是模板自己的检查(如 `node schema/check.mjs`),**不要**写成 `cgmaker validate`(`npx cgmaker validate` 会转调 `npm run validate`,会循环)
|
|
87
94
|
- 不要 `scripts.login` / `publish`(和 npm 撞车),不要 `bin` / `packageManager`
|
|
88
95
|
|
|
89
|
-
`qualified_name` = 当前账号用户名 + `/` +
|
|
96
|
+
`qualified_name` = 当前账号用户名 + `/` + `slug`(开工程用这个,不要用平台模板名 `name`)。
|
|
90
97
|
|
|
91
98
|
三件容易混的「scripts」:`package.json` 的 `"scripts"` 字段(必有,不是文件夹);`schema/logic.mjs`(可选校验);`skill/scripts/`(给 AI,不是 npm)。
|
|
92
99
|
|
|
93
100
|
```bash
|
|
94
101
|
npx cgmaker validate-template
|
|
95
|
-
npm run validate #
|
|
102
|
+
npm run validate # 必有:模板自己检查数据。有独立试玩数据时同一条命令检查两份,不要 validate:demo
|
|
103
|
+
npx cgmaker validate # 转调 npm run validate
|
|
104
|
+
npm run dev
|
|
105
|
+
npm run dev:demo # 试玩开发服务(无独立 demo 时可与 dev 相同)
|
|
96
106
|
npm run build
|
|
97
107
|
npm run build:demo # 试玩 dist/(发布模板也必须有这条脚本)
|
|
98
108
|
npx cgmaker publish # 游戏正式版:只认 dist/
|
|
99
109
|
npx cgmaker publish --demo # 试玩:先 build:demo,只认 dist/
|
|
100
|
-
npx cgmaker publish-template
|
|
101
|
-
npx cgmaker publish-template --
|
|
102
|
-
npx cgmaker publish-template
|
|
103
|
-
npx cgmaker publish-template-data --data-ver 2 --data-summary "关卡修订"
|
|
104
|
-
npx cgmaker publish-template-data --data-ver 2 --assets C:\path\to\assets
|
|
110
|
+
npx cgmaker publish-template
|
|
111
|
+
npx cgmaker publish-template --with-assets
|
|
112
|
+
npx cgmaker publish-template-data
|
|
105
113
|
```
|
|
106
114
|
|
|
107
115
|
## 指纹
|
|
@@ -118,7 +126,7 @@ npx cgmaker publish-template-data --data-ver 2 --assets C:\path\to\assets
|
|
|
118
126
|
|
|
119
127
|
`publish-template` 打的是源码树,不传 `.git`。Git 是可选派生,不当主键。
|
|
120
128
|
|
|
121
|
-
**不要打进代码 zip:** `assets/`、`node_modules/`、`dist/`、`.git/`、`.cgmaker/`(包内一律丢弃,防伪造 origin / game.json)、`.agents/` `.cursor/` `.claude/` 等 `skill-targets`、`preview/`、`tests/`、根目录 `scripts/`、`build/` `out/` `www/`。资源 zip
|
|
129
|
+
**不要打进代码 zip:** `assets/`、`node_modules/`、`dist/`、`.git/`、`.cgmaker/`(包内一律丢弃,防伪造 origin / game.json)、`.agents/` `.cursor/` `.claude/` 等 `skill-targets`、`preview/`、`tests/`、根目录 `scripts/`、`build/` `out/` `www/`。资源 zip 只含工程 `assets/`。
|
|
122
130
|
|
|
123
131
|
平台 skill(`cgmaker`、`cgmaker-template-spec`、`cgmaker-identity`、`cgmaker-play-sdk`)来自 `@66rpg/cgmaker` 包,不来自模板 zip。zip 里的 `skill/` 只可能是玩法 skill。
|
|
124
132
|
|