This commit is contained in:
2026-05-14 01:11:58 +08:00
parent b13870f71b
commit 5a55180b78
61 changed files with 5050 additions and 1057 deletions

View File

@@ -99,19 +99,20 @@ Match3D 必须形成独立玩法域,后续技术方案至少需要覆盖:
- 2D 素材风格
- 难度选项
4. `需要消除次数` 与难度 `1~10` 数值不再作为独立输入框展示,由难度选项派生。
5. 生成抓大鹅草稿消耗 `20` 光点,生成按钮必须显式展示。
6. 结果页支持编辑游戏名称、标签、封面图等基础发布信息
7. 发布前支持试玩,并允许随时停止和修改配置
8. 发布不要求试玩通关
9. 单局运行态使用 `10` 分钟倒计时
10. 下方备选栏固定为 `7` 个格子
11. 玩家点击可见物品后,物品飞入备选栏
12. 备选栏中每凑齐 `3` 个相同物品 id 自动消除
13. 清空圆形空间中全部物品即胜利
14. 倒计时结束或备选栏满即失败
15. 胜利 / 失败后展示结算界面
16. 入口页的 2D 素材风格选择会进入素材图提示词,并作为后续物品素材新增和重绘的默认提示词依据
17. 点击、入槽、消除、失败、胜利的即时反馈效果由前端先行呈现,后端负责权威确认、状态落库和成绩可信性
5. 生成抓大鹅草稿固定消耗 `10` 光点,生成按钮必须显式展示。
6. 结果页背景音乐重新生成固定消耗 `5` 光点UI 背景重新生成固定消耗 `2` 光点;批量新增物品素材按实际可新增物品名每 `5` 个消耗 `2` 光点,不足 `5` 个向上取整
7. 结果页支持编辑游戏名称、标签、封面图等基础发布信息
8. 发布前支持试玩,并允许随时停止和修改配置
9. 发布不要求试玩通关
10. 单局运行态使用 `10` 分钟倒计时
11. 下方备选栏固定为 `7` 个格子
12. 玩家点击可见物品后,物品飞入备选栏。
13. 备选栏中每凑齐 `3` 个相同物品 id 自动消除
14. 清空圆形空间中全部物品即胜利
15. 倒计时结束或备选栏满即失败
16. 胜利 / 失败后展示结算界面
17. 入口页的 2D 素材风格选择会进入素材图提示词,并作为后续物品素材新增和重绘的默认提示词依据
18. 点击、入槽、消除、失败、胜利的即时反馈效果由前端先行呈现,后端负责权威确认、状态落库和成绩可信性。
---
@@ -191,17 +192,19 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
扁平图标 / 赛璐璐卡通 / 像素复古 / 手绘水彩 / 贴纸描边 / 厚涂图标 / 自定义
```
每个内置选项使用 VectorEngine `gpt-image-2-all` 生成的画风参考图展示;参考图保存在 `public/match3d-style-references/`,只作为入口选择的视觉提示,不作为用户上传参考图。选择内置风格时,前端提交 `assetStyleId``assetStyleLabel` 与对应 `assetStylePrompt`。选择 `自定义` 时必须弹出独立面板,用户填写描述后才允许应用;自定义描述作为 `assetStylePrompt` 进入后端生成链路。
每个内置选项使用 VectorEngine `gpt-image-2-all` 生成的画风参考图展示;参考图保存在 `public/match3d-style-references/`,只作为入口选择的视觉提示,不作为用户上传参考图。每张参考图只展示 `1` 个完整独立物品,不能展示 `5` 个物品样张或多物品散点图,避免用户误判为物品数量配置。选择内置风格时,前端提交 `assetStyleId``assetStyleLabel` 与对应 `assetStylePrompt`。选择 `自定义` 时必须弹出独立面板,用户填写描述后才允许应用;自定义描述作为 `assetStylePrompt` 进入后端生成链路。
`像素复古``assetStylePrompt` 必须是强约束而不是泛化描述:真正复古像素 2D 游戏道具 sprite先按约 `64x64` 低分辨率像素块绘制再整数倍放大,硬边方块像素清晰可见,有限色板 `12-24` 色,并禁止抗锯齿、柔焦、平滑渐变、真实 3D 渲染、PBR 材质和摄影光照。后端收到 `assetStyleId = pixel-retro` 时必须兜底补齐这组约束。
## 6.3 参考图片
抓大鹅入口页不展示参考图片上传。题材表现由题材文本和草稿切割图片链路承接;草稿生成阶段会生成多视角 2D 物品素材并写入作品 profile。结果页 `素材配置 > 物品` 继续承接物品素材预览、删除、批量新增和音效配置。
## 6.4 生成音效开关
## 6.4 生成音效入口
抓大鹅入口页在生成按钮前提供 `生成音效` Toggle,默认关闭。关闭时,草稿生成只保存 `generatedItemAssets[].soundPrompt`,不调用 Vidu 生成点击音效。
抓大鹅入口页不展示 `生成音效` Toggle草稿生成阶段只保存 `generatedItemAssets[].soundPrompt`,不调用 Vidu 生成点击音效,也不产生点击音效相关扣费
用户打开 Toggle 后,前端在创建会话和执行 `match3d_compile_draft` 时提交 `generateClickSound=true`。后端完成物品名称与 `soundPrompt` 生成后,在图片素材生成阶段为每个生成物品调用 Vidu 生成点击音效,并把结果写入对应 `generatedItemAssets[].clickSound`。音效生成复用通用创作音频接口和资产落点;结果页仍保留单个物品音效的手动补生成入口。
结果页仍保留单个物品音效的手动补生成入口。用户在 `素材配置 > 物品` 详情面板中生成点击音效时,后端复用通用创作音频接口和资产落点,把结果写入对应 `generatedItemAssets[].clickSound`
---
@@ -228,10 +231,16 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
## 7.3 素材生成边界
抓大鹅草稿生成链路会根据难度生成题材物品素材文本模型生成物品名VectorEngine 分批生成 `1:1` 素材图并切割为每个物品 `5` 张不同视角图片,再转存 OSS。入口页选择的 `assetStylePrompt` 必须写入素材图提示词;结果页批量新增物品时继续以该风格作为默认提示词起点。
抓大鹅草稿生成链路会根据难度生成题材物品素材文本模型生成物品名VectorEngine 分批生成 `1:1` 素材图并切割为每个物品 `5` 张不同视角图片,再转存 OSS。实际生成数量必须向上补齐为 `5` 的倍数,并生成补齐物品的名称和对应图片;例如标准难度玩法使用 `9` 种物品,但素材实际生成 `10` 种。入口页选择的 `assetStylePrompt` 必须写入素材图提示词;结果页批量新增物品时继续以该风格作为默认提示词起点。
批量新增物品素材与草稿生成使用同一素材图处理流程:先按用户实际新增名称补齐到 `5` 的倍数,整图生成完成后丢弃补齐用临时物品,只对用户实际新增项继续绿幕抠背景、切割和 OSS 上传,并只把这些真实新增物品写入 `generatedItemAssets`;补齐用临时物品不进入作品资产列表、不参与发布校验和运行态映射。计费数量按清洗、去重、排除已有物品并截断到容量上限后的实际新增数量计算。
素材图提示词必须固定要求 `5*5` 严格均匀排布,每格主体完整居中,不得跨格、贴边或越界,避免切割成独立图片后出现相邻物品内容污染。
生成出的独立图片必须作为结果页 `素材配置 > 物品` 的预览资产返回。图片素材生成成功时 `generatedItemAssets[].status = image_ready`,并携带 `imageViews[]`,兼容字段 `imageSrc` / `imageObjectKey` 指向首张视角图;正式平台资产绑定和更完整的二次编辑流程以后续技术方案为准。
局内 UI 生成分为两类图片:`9:16` 纯背景图和 `1:1` 中心容器 UI 图。纯背景图只表现题材氛围和环境不得生成锅、圆盘、托盘、拼图槽、物品槽、HUD、文字、按钮、倒计时、分数或物品中心容器 UI 图单独生成,贴合题材设定,用于覆盖运行态默认圆形竞技容器。容器图必须参考 `public/match3d-background-references/pot-fused-reference.png` 的大尺寸轻俯视构图:容器外轮廓接近画布四边,宽度约占画布 `86%-92%`、高度约占 `82%-90%`,内口为横向椭圆,不能生成小圆盘、正俯视扁盘、侧视碗或小托盘。底部备选栏、顶部控件和拼图/物品槽位继续使用运行态默认 UI不烘进生成背景。
## 7.4 发布前试玩
发布前需要支持试玩当前关卡。
@@ -267,8 +276,8 @@ Match3D 首版参考拼图后期的入口表单收集方式,而不是早期的
运行时主交互空间是一个有边界的圆形空间。
1. 圆形空间使用俯视角。
2. 背景环境资源后续可以尝试伪 3D 视角效果
3. 圆形空间边界是中间交互图案的边界
2. 背景环境资源只作为纯背景层,不承接圆形空间边界
3. 圆形空间边界由运行态默认容器或生成出的中心容器 UI 图承接,不能烘进纯背景图
4. 物品不能超出圆形边界,也不能被边界压住或裁切。
5. 运行态快照中的 `x / y / radius` 使用前端可直接渲染的 `0~1` 归一化坐标;圆心固定为 `(0.5, 0.5)`,圆形可用半径为 `0.5`
6. 后端生成和前端兜底渲染都必须满足 `distance((x, y), (0.5, 0.5)) + radius <= 0.5 - safeMargin``safeMargin` 至少覆盖圆形边框和视觉阴影,避免可消除图案贴边裁切。
@@ -680,12 +689,11 @@ GET /api/runtime/match3d/runs/:runId
## 14.2 入口表单
入口表单只展示个输入块:
入口表单只展示个输入块:
1. `想做一个什么题材的抓大鹅?` 大文本输入框。
2. `2D素材风格` 横向滑动风格卡,最后一个为 `自定义`
3. `难度` 选项按钮。
4. `生成音效` Toggle默认关闭。
入口页不展示参考图、`需要消除次数` 数值输入、`难度数值` 滑杆,也不展示 `题材 / 物品 / 难度` 三个摘要框。`需要消除次数``difficulty` 由难度选项派生后提交给后端。
@@ -695,6 +703,8 @@ GET /api/runtime/match3d/runs/:runId
结果页保持清爽,复用平台已有作品结果页风格。
结果页 `难度配置` 中的四档难度使用横向离散拖动条呈现,拖动条只允许停在 `轻松 / 标准 / 进阶 / 硬核` 四个刻度上,刻度标签可点击切换,仍按同一映射派生 `需要消除次数``difficulty``物品种类`
点击按钮弹出独立面板时,不实现成在当前面板下面展开内容。
## 14.4 运行态
@@ -718,7 +728,7 @@ GET /api/runtime/match3d/runs/:runId
3. 入口页不展示参考图上传。
4. 内置风格显示画风参考图,自定义风格通过独立面板填写并进入提交 payload。
5. 移动端入口页所有内容一屏展示,不产生纵向滚动。
6. `生成音效` 关闭时草稿生成不产生 `clickSound`;打开时首批生成物品随图片素材生成并持久化点击音效。
6. 入口页不展示 `生成音效` Toggle草稿生成不产生 `clickSound`,结果页物品详情仍可手动生成点击音效。
7. 系统可生成待发布结果页,并在草稿中返回首批多视角 2D 切割图片素材预览。
8. 用户可编辑游戏名称、标签、封面图等基础信息。
9. 用户可发布前试玩,且试玩失败不阻断发布。