收口评审 P2:点选条款限定引擎档、对象名上限入边界、素材 id 格式写入 skill
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m29s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m6s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m50s
Project CI / Frontend tests (pull_request) Successful in 3m26s
Project CI / Backend tests (pull_request) Successful in 7m48s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m3s
Project CI / Repository checks (pull_request) Successful in 7m15s
Project CI / Native shell tests (pull_request) Successful in 9m30s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m29s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m6s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m50s
Project CI / Frontend tests (pull_request) Successful in 3m26s
Project CI / Backend tests (pull_request) Successful in 7m48s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m3s
Project CI / Repository checks (pull_request) Successful in 7m15s
Project CI / Native shell tests (pull_request) Successful in 9m30s
- 功能说明第 8 条「命中区域裁剪在画布内」限定为引擎档,并说明 DOM 档仍是元素矩形;证据表对应行同步对齐 - 功能说明「边界与非目标」新增一条:引擎档对象名超过 40 字符按取不到处理(有意保留),宿主侧标签上限另为 120 - SKILL.md「运行画面点选契约」第 3 条补一句:素材 id 不含空白与路径分隔符(localAssetId 由客户端生成) - skill-pack 指纹同步(agc-web-game-development version 2026-08-26.42 与 sha256)
This commit is contained in:
+1
-1
@@ -38,7 +38,7 @@ When implementing a new game loop or a broad gameplay revision, read `references
|
||||
- 这四个构造器是预览桥做射线与包围盒投影的最小集;该字段只给预览桥用,玩法代码不要引用它。
|
||||
- 旧形态 `{ engine: 'three', THREE, scene, camera, renderer }` 仍被兼容读取,新代码一律用上面的瘦身形态。
|
||||
2. **Phaser 图片用 Image 标签装载**:游戏配置固定 `loader: { imageLoadType: 'HTMLImageElement' }`。默认的 XHR 装载把贴图地址换成会话内临时地址,点选读不回原始素材路径;这类项目只能靠第 3 条的显式标注。
|
||||
3. **给渲染对象标注素材身份**:用已登记素材渲染的对象要带上 manifest 的稳定身份,值只取 `agc_list_registered_assets` 返回的 `localAssetId` / `localPath`,不自行编造、不改写文件名。
|
||||
3. **给渲染对象标注素材身份**:用已登记素材渲染的对象要带上 manifest 的稳定身份,值只取 `agc_list_registered_assets` 返回的 `localAssetId` / `localPath`,不自行编造、不改写文件名;素材 id 不含空白与路径分隔符(`localAssetId` 由客户端生成)。
|
||||
- Phaser:`sprite.setData('genarrativeResourceId', '<localAssetId>')`,或 `sprite.setData('genarrativeResourcePath', '<localPath>')`;两者都给时 id 优先。
|
||||
- three.js:`mesh.userData.genarrativeResourceId` / `mesh.userData.genarrativeResourcePath`;GLB、分组或关卡导入的模型给 `traverse` 到的实际渲染 mesh 标注。
|
||||
4. **素材进 dist 走稳定路径**:素材放进游戏包 `public/`(脚手架 Vite 配置的默认 `publicDir`,原样拷贝、不加 hash),并保持与 `localPath` 相同的相对段(项目根 `assets/hero.png` → `game/public/assets/hero.png`,运行时用 `./assets/hero.png` 加载)。不要 `import` 图片或模型:构建产物名会带内容 hash,与 manifest 路径对不上,点选只剩文件名兜底,重名素材直接丢掉。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": "agc-skill-pack.v1",
|
||||
"version": "2026-08-26.41",
|
||||
"version": "2026-08-26.42",
|
||||
"skills": [
|
||||
{
|
||||
"name": "agc-unity-editor",
|
||||
@@ -121,7 +121,7 @@
|
||||
"agents/openai.yaml",
|
||||
"references/game-quality-checklist.md"
|
||||
],
|
||||
"sha256": "c0227101a9940dbf1882ba274ff775cbc20653780465663223d8f9b2d0167b85"
|
||||
"sha256": "9959892b2b92a62aa5e8ca12a1938483a1bafc57c8b8e4520fed6547ed38d0de"
|
||||
},
|
||||
{
|
||||
"name": "agc-browser-playtest",
|
||||
|
||||
@@ -66,7 +66,7 @@ AGC 聊天输入框支持以结构化引用标记当前项目已登记素材,
|
||||
5. **命中反馈**:能定位到命中对象时,高亮范围是命中对象在画面上的区域;取不到对象矩形时退化为与 DOM 档一致的高亮范围。
|
||||
6. **协议与净化不变**:运行画面点选与 DOM 点选共用同一套预览消息协议、同一套字段净化与数量上限;引擎侧取到的标识必须先过同一套净化才能进入引用载荷。
|
||||
7. **点选不改变预览适配**:进入检查模式、悬停、点中对象都不得改变预览页上报的内容尺寸与宿主算出的适配布局;点选自身的高亮层不属于页面内容,不得参与内容尺寸测量。
|
||||
8. **命中区域裁剪在画布内**:上报/绘制的命中区域只取画布范围内的可见部分;命中区域与画布无交集时退化为指针点区域,不产生超出画布的巨型区域。
|
||||
8. **命中区域裁剪在画布内**:引擎档的命中区域只取画布范围内的可见部分;命中区域与画布无交集时退化为指针点区域,不产生超出画布的巨型区域。DOM 档仍是元素矩形。
|
||||
|
||||
### 边界与非目标
|
||||
|
||||
@@ -76,6 +76,7 @@ AGC 聊天输入框支持以结构化引用标记当前项目已登记素材,
|
||||
- 不做像素级或颜色拾取,不为了识别素材去改写玩法源码、资源文件或渲染结果。
|
||||
- **Phaser 4 默认装载下贴图地址不可得**:Phaser 4 默认用 XHR 装载图片,贴图元素上的地址是会话内的临时地址,读不回原始素材路径。这类项目**必须由玩法显式标注素材身份**才能点出素材;没有标注就按第 4 条退化(退化为不带素材的区域引用),不猜。
|
||||
- **只认玩法发布的只读引擎句柄**:预览页没有发布该句柄、或句柄声明的引擎类型不在支持范围内时,一律退化为不带素材的区域引用;宿主不通过扫描全局对象去猜引擎。
|
||||
- **引擎档对象名有 40 字符上限(有意保留)**:引擎档命中对象的名字超过 40 字符时按取不到处理,标签退到几何类型 / 对象类型;宿主侧标签上限另为 120。取 40 是为了避免程序化生成的长名塞进引用芯片。
|
||||
- **生成期契约落在 AGC 玩法 Skill**:句柄发布、Phaser 图片的 Image 装载、素材渲染对象的身份标注、素材在 dist 的稳定路径这四条写进 `agc-web-game-development` 的「运行画面点选契约」,生成期即按契约产出;本能力说明不承诺历史项目自动具备,也不改写既有项目。
|
||||
- **three 句柄只放桥要用的构造器**:契约推荐 `{ engine: 'three', three: { Raycaster, Vector2, Vector3, Box3 }, scene, camera, renderer }`;传整个 `THREE` 命名空间会破坏 tree-shaking(同一 Vite 构建实测 517,682 B → 730,831 B,+41%)。旧形态仍被兼容读取,但新代码与模板只用瘦身形态。
|
||||
|
||||
@@ -89,7 +90,7 @@ AGC 聊天输入框支持以结构化引用标记当前项目已登记素材,
|
||||
| 5 | 高亮矩形:声明级用例 + 真机目视 | 浏览器实测高亮矩形与期望逐值相减:Phaser 差 0px、three 最大差 ≈0.0006px;DOM 档仍是元素矩形。 |
|
||||
| 4、5 | 命中对象但取不到素材身份时:芯片显示画面侧可得的名字(对象名 → 几何类型 → 对象类型),不是一律的 `canvas`;矩形仍是命中对象在画面上的区域 | 真实 Chromium + 真实 three 0.184 + 真实桥脚本实测(瘦身句柄 `three: { Raycaster, Vector2, Vector3, Box3 }`):`object.name = 'Crate'` → 芯片 `Crate`、矩形 143×143;无名字的 `SphereGeometry` → 芯片 `SphereGeometry`、矩形 227×227;旧 `THREE` 命名空间句柄 → 芯片 `LegacyMesh`(两形态都命中);`userData.genarrativeResourceId` → `resourceIds: ["local-asset:probe"]`。两条 label 兜底与两形态句柄另由 `tests/runtimeInspectEngines.test.ts`(33 例)锁定。 |
|
||||
| 7 | `tests/localPreviewInspectSizeStability.test.ts`(5 例,对修复前的桥 5 failed) | 真实 Chromium 夹具对照:尺寸消息 1459 → 3、iframe 布局变更 1457 → 1、游戏 `resize` 1454 → 1、相机 `aspect` 由振荡变为恒定 1.607143。 |
|
||||
| 8 | 同文件用例覆盖「投影盒超出画布被裁剪」与「无交集退化为 1×1 指针点区域」 | 真实夹具高亮矩形由 `[-2852,-2078,6607,4721]` 变为 `[0,0,904,564]`(画布 900×560 + 2px 边框)。 |
|
||||
| 8 | 同文件用例覆盖引擎档的「投影盒超出画布被裁剪」与「无交集退化为 1×1 指针点区域」 | 真实夹具高亮矩形由 `[-2852,-2078,6607,4721]` 变为 `[0,0,904,564]`(画布 900×560 + 2px 边框);DOM 档仍给元素矩形。 |
|
||||
|
||||
素材收敛口径由 `tests/runtimeInspectResourceMatch.test.ts`(11 例)覆盖:显式 id、精确后缀、文件名、序列帧四档与去重。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user