cajonzero 0.1.1 → 0.1.3

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 CHANGED
@@ -10,39 +10,42 @@ npm install cajonzero
10
10
  npx cj0 --help
11
11
  ```
12
12
 
13
- ## 本地运行
13
+ ## 本地运行(本仓库)
14
14
 
15
15
  ```bash
16
16
  npm install
17
17
  npm run build # 构建大厅与管理后台
18
- npm run demo # 启动在 http://127.0.0.1:8787
18
+ npm run demo # http://127.0.0.1:8787
19
19
  ```
20
20
 
21
- 打开页面,注册账号后选择地图即可进入房间。
22
- 管理后台地址是 `/admin/login`,演示环境的令牌为 `cajonzero-demo-admin-token`。
21
+ 管理后台地址 `/admin/login`,演示令牌 `cajonzero-demo-admin-token`。
23
22
 
24
- ## 创建自己的服务
23
+ ## 创建项目
25
24
 
26
25
  ```bash
27
- cj0 create my-server
26
+ npx cj0 create my-server
28
27
  cd my-server
29
28
  npm install
30
- npm run dev # 本地预览
29
+ npx cj0 setup # 交互配置 ENV + KV namespace
30
+ npm run dev
31
31
  ```
32
32
 
33
- 部署前需要完成以下配置:
33
+ ## 部署
34
34
 
35
35
  ```bash
36
- npx wrangler kv namespace create CAJONZERO_KV # 把返回的 id 填进 wrangler.jsonc
36
+ npx cj0 setup # vars/密钥/KV(可自动创建 KV namespace)
37
37
  npx wrangler secret put CAJONZERO_SESSION_SECRET # 会话签名密钥
38
38
  npx wrangler secret put BOX_PLAY_ADMIN_TOKEN # 管理后台令牌
39
39
  npm run deploy
40
40
  ```
41
41
 
42
+ `cj0 setup` 会把 KV namespace id 写进 `wrangler.jsonc`;如果当时没有登录
43
+ wrangler,也可以手动运行 `npx wrangler kv namespace create <name> --update-config --binding CAJONZERO_KV`。
44
+
42
45
  ## 配置地图
43
46
 
44
- 地图文件需要单独上传,不随 worker 打包。把解包后的 `.boxplay` 目录上传到
45
- OSS/S3/CDN,然后在 `cajonzero/maps.json` 中登记:
47
+ 地图文件单独上传,不随 worker 打包。把解包后的 `.boxplay` 目录上传到
48
+ OSS/S3/CDN(需允许 CORS),然后在 `cajonzero/maps.json` 中登记:
46
49
 
47
50
  ```json
48
51
  {
@@ -58,17 +61,51 @@ OSS/S3/CDN,然后在 `cajonzero/maps.json` 中登记:
58
61
  }
59
62
  ```
60
63
 
61
- 地图文件由客户端和房间直接向 CDN 拉取,服务端不做缓存。
62
- 更新地图后请刷新 CDN 缓存,或改用带版本的路径。
64
+ `root` 必须以 `/` 结尾;更新地图后刷新 CDN 缓存或改用带版本的路径。
63
65
  房间参数、地图拉取策略等配置位于 `cajonzero/config.json`。
64
66
 
67
+ ### 预计算 seed(强烈建议)
68
+
69
+ 默认情况下房间启动会沿着 `bundle.json` → manifest → 每个 blob 逐个拉取,一张真实地图
70
+ 会产生 100+ 次子请求。Cloudflare Workers 免费版单次调用只有 50 个子请求 / 10ms CPU,
71
+ 线上会直接起不来(本地 `wrangler dev` 不限制,所以看起来正常)。
72
+
73
+ `cj0 worker build-seed` 在本地把每张图解析一次,把单文件 seed pack 写进 **worker 的静态资源目录**
74
+ (`dist/ui/seed/<slug>.json.gz`),随 `wrangler deploy` 一起上传,不需要改 CDN、不写 KV/R2:
75
+
76
+ ```bash
77
+ cj0 worker build-seed # 所有地图;也可只传 slug
78
+ # seeded race: 155 bodies, 64 voxel chunks, 52 meshes -> dist/ui/seed/race.json.gz (38.2 KB)
79
+ # seed assets: dist/ui/seed (served at /seed/<slug>.json[.gz])
80
+ ```
81
+
82
+ 之后房间启动变成 **1 次 assets 读取**,不再遍历项目图。生成的部署项目脚本已经包含这一步:
83
+
84
+ ```json
85
+ "dev": "cj0 worker prepare && wrangler dev",
86
+ "deploy": "cj0 worker prepare && cj0 worker build-seed --force && wrangler deploy"
87
+ ```
88
+
89
+ `cj0 worker prepare` 会保留 `seed/` 目录;`deploy` 强制重建,避免地图内容更新但 `version`
90
+ 没变时继续用旧 pack(`maps.json` 的 `version` / `etag` / `root` 变化也会触发重建)。
91
+
92
+ 如果你更想把 pack 放在地图 CDN 上(不改 worker),也可以用:
93
+
94
+ ```bash
95
+ cj0 maps pack race # 生成 race.seed.json.gz,手动上传到 <root>/seed.json.gz
96
+ ```
97
+
98
+ 两种来源都会自动识别,缺省时回退到逐文件解析。
99
+
65
100
  ## 常用命令
66
101
 
67
102
  ```bash
68
- cj0 serve [--port <port>] [--host <host>] # 本地启动
69
103
  cj0 create <folder> # 生成部署项目
104
+ cj0 setup [--config <file>] # 配置 ENV + KV namespace(id)
105
+ cj0 maps pack <slug> # 预计算 seed 文件(上传到 CDN)
106
+ cj0 worker build-seed [slug...] # 预计算 seed 并写进 worker assets
107
+ cj0 serve [--port <port>] [--host <host>] # 本地启动
108
+ cj0 worker prepare [--config <file>] # 把包内 UI 同步到 assets.directory
70
109
  npm test # 运行测试
71
110
  npm run ci:gates # 完整检查(类型/测试/构建)
72
111
  ```
73
-
74
- 详细说明见 [`docs/`](./docs/)。