From 6cb553858ebd113ea3bbb7c21d57eb49c2d39c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=94=E9=A6=99=E4=B8=B8=E5=AD=90?= <15518898337@163.com> Date: Thu, 30 Apr 2026 18:25:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=93=E5=A4=A7=E9=B9=85pr?= =?UTF-8?q?d=EF=BC=8C=E5=8D=B3=E6=97=B6=E8=A1=A8=E7=8E=B0=E7=94=B1?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E7=A7=BB=E8=87=B3=E5=89=8D=E7=AB=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ATOR_AND_GAMEPLAY_SYSTEM_PRD_2026-04-30.md | 75 +++++++++++-------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/docs/prd/AI_NATIVE_MATCH3D_CREATOR_AND_GAMEPLAY_SYSTEM_PRD_2026-04-30.md b/docs/prd/AI_NATIVE_MATCH3D_CREATOR_AND_GAMEPLAY_SYSTEM_PRD_2026-04-30.md index eec8b96d..79998d53 100644 --- a/docs/prd/AI_NATIVE_MATCH3D_CREATOR_AND_GAMEPLAY_SYSTEM_PRD_2026-04-30.md +++ b/docs/prd/AI_NATIVE_MATCH3D_CREATOR_AND_GAMEPLAY_SYSTEM_PRD_2026-04-30.md @@ -72,7 +72,7 @@ 1. 不复用 RPG 的世界、角色、章节、剧情推进结构。 2. 不复用拼图的网格切图、交换、合并块和下一关推荐算法。 3. 不复用大鱼吃小鱼的实时吞噬、实体等级和摇杆移动规则。 -4. 不把 Match3D 运行规则写成前端本地真相源。 +4. 不把 Match3D 运行规则写成前端本地真相源,但局内即时反馈效果由前端负责呈现。 5. 不使用 `server-node` 或 PostgreSQL 作为新增玩法后端。 ## 3.3 独立玩法域要求 @@ -110,7 +110,7 @@ Match3D 必须形成独立玩法域,后续技术方案至少需要覆盖: 13. 清空圆形空间中全部物品即胜利。 14. 倒计时结束或备选栏满即失败。 15. 胜利 / 失败后展示结算界面。 -16. 点击判定、入槽、消除、失败、胜利必须由后端裁决。 +16. 点击、入槽、消除、失败、胜利的即时反馈效果由前端先行呈现,后端负责权威确认、状态落库和成绩可信性。 --- @@ -128,7 +128,7 @@ Match3D 必须形成独立玩法域,后续技术方案至少需要覆盖: 8. 不做真实物理碰撞结算。 9. 不做必须试玩通关才能发布的门槛。 10. 不把玩法规则说明长文默认写入 UI 面板。 -11. 不在前端即时完成规则裁决。 +11. 不把前端即时反馈当作最终规则真相。 12. 不使用 `server-node` 或 PostgreSQL 新增实现。 --- @@ -292,31 +292,36 @@ totalItemCount = clearCount * 3 圆形空间里的物品可以重叠、遮挡、堆叠。 -首版使用 2D 逻辑实现遮挡和点击判定: +首版使用 2D 逻辑实现遮挡和点击反馈: 1. 被完全遮挡的物品不允许点击。 2. 如果物品有局部露出,且露出区域可被点击选中,则允许点击。 -3. 具体露出区域判定使用 2D 逻辑的最优方案,不做真实 3D 遮挡。 +3. 前端基于后端下发的物品层级、位置、半径和可点击快照,执行即时命中检测与选中反馈。 +4. 后端收到点击意图后做权威确认;如果确认失败,前端必须回滚本次即时反馈。 +5. 具体露出区域判定使用 2D 逻辑的最优方案,不做真实 3D 遮挡。 ## 8.8 点击入槽 -玩家点击通过后,后端裁决该物品可选中。 - -前端播放飞行动画,把物品放入下方备选栏。 +玩家点击可见物品后,前端立即播放按压、选中和飞行动画,把物品表现为飞入下方备选栏。 飞行动画过程中,物品不再与其他物品产生碰撞。 +前端播放即时反馈的同时,必须向后端提交点击意图。后端确认后固化入槽结果;后端拒绝时,前端恢复物品位置和备选栏表现。 + ## 8.9 备选栏 下方备选栏固定为 `7` 个格子。 -1. 每次成功点击后,物品进入备选栏。 -2. 备选栏中每出现 `3` 个相同物品 id,自动消除并腾出格子。 -3. 如果备选栏满且无法消除,则判定关卡失败。 +1. 每次点击进入即时反馈流程后,前端先把物品表现为进入备选栏。 +2. 备选栏中每出现 `3` 个相同物品 id,前端立即播放自动消除效果并腾出格子。 +3. 后端确认后固化真实备选栏和消除结果;若后端返回状态不一致,前端必须以最新后端快照校正。 +4. 如果备选栏满且无法消除,前端可以立即展示失败过渡,最终失败状态以后端确认为准。 ## 8.10 胜利 -圆形空间内全部物品被消除后,播放胜利动画并展示胜利界面。 +圆形空间内全部物品被消除后,前端立即播放胜利动画。 + +正式胜利界面、使用时间和成绩记录以后端确认的运行态为准。 胜利结算页至少展示: @@ -332,6 +337,8 @@ totalItemCount = clearCount * 3 1. 倒计时结束。 2. 备选栏满。 +倒计时归零或备选栏满时,前端立即展示失败过渡;正式失败原因和完成进度以后端确认的运行态为准。 + 失败结算页至少展示: 1. 失败原因。 @@ -378,33 +385,38 @@ totalItemCount = clearCount * 3 1. 创建玩法草稿。 2. 编译运行时初始局面。 3. 生成物品序列与布局。 -4. 判断物品是否可点击。 -5. 处理点击入槽。 -6. 判断 `3` 个相同物品 id 消除。 -7. 判断备选栏满失败。 -8. 判断倒计时结束失败。 -9. 判断清空空间胜利。 -10. 记录成绩所需的基础数据。 +4. 下发前端即时反馈所需的物品位置、层级、半径、可点击快照和版本号。 +5. 权威确认玩家点击意图是否合法。 +6. 权威确认入槽结果。 +7. 权威确认 `3` 个相同物品 id 消除。 +8. 权威确认备选栏满失败。 +9. 权威确认倒计时结束失败。 +10. 权威确认清空空间胜利。 +11. 记录成绩所需的基础数据。 ## 10.2 前端职责 -前端只负责: +前端负责所有游戏过程中需要即时呈现的反馈效果: 1. 展示 Agent 创作界面。 2. 展示结果页和基础编辑表单。 3. 上传参考图片。 4. 展示运行态场景、物品、倒计时和备选栏。 -5. 发送玩家点击意图。 -6. 播放点击、飞入、消除、胜利和失败动画。 -7. 展示结算界面。 +5. 基于最新后端快照执行 2D 命中检测、悬停、按压和选中反馈。 +6. 发送玩家点击意图。 +7. 在等待后端确认期间,先行播放飞入、入槽、三消、腾格、胜利和失败过渡效果。 +8. 收到后端确认后,把本地表现校正到权威快照。 +9. 展示结算界面。 -前端不得自行完成规则裁决。 +前端可以做即时表现预判,但不得把预判结果作为最终规则真相或成绩来源。 ## 10.3 防作弊要求 -首版即按正式版本搭建规则裁决链路。 +首版即按正式版本搭建“前端即时反馈 + 后端权威确认”的链路。 -前端不可信任本地点击、消除、胜利或成绩结果;所有关键状态必须由后端裁决后下发。 +前端不可信任本地点击、消除、胜利或成绩结果;所有关键状态必须以后端确认后的快照为准。 + +为了保证手感,前端可以先行展示操作反馈;为了防作弊,发布成绩、结算状态、消除计数和运行态持久化必须以后端确认为准。 --- @@ -484,6 +496,8 @@ interface Match3DItemSnapshot { } ``` +`Flying` 可以作为前端表现态使用,不要求后端把飞行动画过程逐帧落库。后端只需要确认物品是否从 `InBoard` 进入 `InTray` 或 `Cleared`。 + ## 11.5 备选栏快照 ```ts @@ -672,7 +686,7 @@ Agent 每轮优先追问最影响 demo 生成的一个问题。 13. 倒计时结束或备选栏满后失败。 14. 胜利结算展示使用时间。 15. 失败结算展示完成进度和重新开始按钮。 -16. 关键规则由后端裁决,前端不本地判定胜负。 +16. 局内即时反馈由前端先行呈现,关键状态以后端确认快照校正。 17. 相关中文文档通过编码检查。 --- @@ -696,14 +710,15 @@ Agent 每轮优先追问最影响 demo 生成的一个问题。 1. 新增 `module-match3d` 规则。 2. 新增 SpacetimeDB 运行态表和 procedure。 -3. 实现开始、点击、消除、失败、胜利。 +3. 实现开始、点击确认、消除确认、失败确认、胜利确认。 ## 阶段 D:前端运行态 1. 展示圆形空间和 2D 物品。 2. 展示 `7` 格备选栏。 3. 接入点击接口和后端快照。 -4. 补飞入、消除、胜负动画。 +4. 补点击命中、飞入、入槽、消除、腾格、胜负过渡等即时反馈。 +5. 补后端确认失败时的前端回滚和快照校正。 ## 阶段 E:分发与成绩预留 @@ -715,4 +730,4 @@ Agent 每轮优先追问最影响 demo 生成的一个问题。 ## 17. 一句话结论 -Match3D 首版不是临时前端 demo,而是以“抓大鹅”模板为外壳、以后端规则裁决为真相源、以独立玩法域为工程边界的单局经典消除玩法链路;首轮先跑通题材创作、结果页、试玩、发布和单局清空胜负闭环。 +Match3D 首版不是临时前端 demo,而是以“抓大鹅”模板为外壳、以前端即时反馈保证手感、以后端权威确认保证规则可信、以独立玩法域为工程边界的单局经典消除玩法链路;首轮先跑通题材创作、结果页、试玩、发布和单局清空胜负闭环。