This commit is contained in:
@@ -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,而是以“抓大鹅”模板为外壳、以前端即时反馈保证手感、以后端权威确认保证规则可信、以独立玩法域为工程边界的单局经典消除玩法链路;首轮先跑通题材创作、结果页、试玩、发布和单局清空胜负闭环。
|
||||
|
||||
Reference in New Issue
Block a user