325 lines
9.1 KiB
Markdown
325 lines
9.1 KiB
Markdown
# 积分赛规则说明文档
|
||
> 文档版本:v1.1
|
||
> 最后更新:2026-04-03 20:40:00
|
||
|
||
|
||
本文档用于定义 `score-o` 在**最小模板**下的系统默认规则,作为后续实现、联调和配置扩展的共同基线。
|
||
|
||
目标:
|
||
|
||
- 明确积分赛在“不额外写规则字段”时应该怎么跑
|
||
- 把开局、目标点选择、打点、答题、结束和结算流程写清楚
|
||
- 为后续配置化拆分提供规则依据
|
||
|
||
如果后续要继续扩写更多正式玩法文档,建议统一使用:
|
||
|
||
- [玩法设计文档模板](D:/dev/cmr-mini/doc/gameplay/玩法设计文档模板.md)
|
||
|
||
---
|
||
|
||
## 1. 适用范围
|
||
|
||
本文默认规则适用于:
|
||
|
||
- `game.mode = "score-o"`
|
||
- 使用最小积分赛模板启动
|
||
- 未显式覆盖开局流程、目标点规则、答题、结算和默认表现规则
|
||
|
||
本文定义的是**系统默认行为**,不是所有字段都必须先配置出来。
|
||
|
||
---
|
||
|
||
## 2. 一句话规则
|
||
|
||
玩家进入游戏后先看到起点,完成起点打卡后正式开赛;玩家可自由前往任意积分点,进入其打点半径后成功打点并获得该点基础分;玩家也可点击任意积分点将其设为当前目标点,用于 HUD 距离引导;最小模板下默认不带答题;默认至少完成 `1` 个普通积分点后,结束点才解锁并可结束比赛。
|
||
|
||
---
|
||
|
||
## 3. 默认流程总览
|
||
|
||
### 3.1 进入游戏
|
||
|
||
- 系统进入“待起跑”状态
|
||
- 地图默认只显示:
|
||
- 起点
|
||
- 玩家当前位置
|
||
- 基础 HUD
|
||
- 所有积分点和结束点默认不显示
|
||
- 页面提示玩家:需要先打开始点,比赛才会正式开始并开始计时
|
||
- 从准备页进入地图即视为进入本局,不再额外要求点击开始按钮
|
||
|
||
### 3.2 打开始点
|
||
|
||
- 玩家首次成功打开始点后,比赛正式开始
|
||
- 系统立即初始化本局数据
|
||
- 系统开始计时
|
||
- 系统显示全部积分点和结束点
|
||
- 默认只给出“比赛开始”短反馈,并同步更新引导提示和 HUD
|
||
- 最小模板下,开始点完成后默认不弹白色内容卡
|
||
- 默认关门时间为开赛后 `2` 小时
|
||
- 当距离关门时间小于等于 `10` 分钟时,HUD 时间区默认切换为倒计时强调样式
|
||
|
||
### 3.3 进行中自由打点
|
||
|
||
- 玩家可自由前往任意未收集积分点完成打点
|
||
- 玩家也可点击任意未收集积分点,将其设为当前目标点
|
||
- 当前目标点设定后,底部 HUD 信息面板更新该点相关信息
|
||
- 最小模板下,点击积分点默认只做目标选择,不弹详情卡
|
||
- 默认不要求先选中目标点
|
||
- 任意未收集积分点进入打点半径后都可成功打点
|
||
- 成功打点后:
|
||
- 获得该点基础分
|
||
- 该点记为已收集
|
||
- 最小模板下默认不弹答题卡
|
||
- 如显式配置答题 CTA,则在该点完成后进入答题
|
||
|
||
### 3.4 打结束点
|
||
|
||
- 默认至少完成 `1` 个普通积分点后,结束点才解锁
|
||
- 结束点不需要先被设为当前目标点
|
||
- 成功打结束点后:
|
||
- 系统停止计时
|
||
- 先给出完成短反馈
|
||
- 直接进入默认成绩结算页
|
||
- 默认不再额外叠加终点白色内容卡
|
||
|
||
---
|
||
|
||
## 4. 局状态与数据初始化
|
||
|
||
### 4.1 默认局状态
|
||
|
||
积分赛默认包含以下状态:
|
||
|
||
1. `ready`
|
||
2. `running`
|
||
3. `finished`
|
||
4. `settled`
|
||
|
||
### 4.2 起点打卡后的初始化数据
|
||
|
||
首次成功打开始点时,系统至少初始化以下运行时数据:
|
||
|
||
- `startTime`
|
||
- `elapsedTime`
|
||
- `currentTargetId`
|
||
- `collectedControls`
|
||
- `availableControls`
|
||
- `score`
|
||
- `baseScore`
|
||
- `quizBonusScore`
|
||
- `quizCorrectCount`
|
||
- `quizWrongCount`
|
||
- `quizTimeoutCount`
|
||
- `finishTime`
|
||
|
||
---
|
||
|
||
## 5. 打点与目标点规则
|
||
|
||
### 5.1 开始点
|
||
|
||
- 开始点必须打卡
|
||
- 开始点不弹答题卡
|
||
- 开始点默认只给短反馈和引导更新
|
||
- 开始点默认不弹白色内容卡
|
||
- 未打开始点前,积分点和结束点不触发正式打点逻辑
|
||
|
||
### 5.2 积分点
|
||
|
||
- 积分点自由选择,不按顺序推进
|
||
- 玩家默认不需要先点击某个积分点
|
||
- 点击某个积分点时,会把它设为当前目标点,主要用于 HUD 和距离引导
|
||
- 最小模板下,点击点位本身不产生额外内容反馈
|
||
- 任意未收集积分点进入打点半径后都可成功打点
|
||
- 已成功打过的积分点不可重复得分,不可重复出题
|
||
- 已成功打过的积分点再次进入范围时,只保留已收集状态展示
|
||
|
||
### 5.3 非目标点进入半径
|
||
|
||
- 如果玩家进入某个未选中的积分点打点半径:
|
||
- 默认仍然可以正式打点
|
||
- 默认获得基础分
|
||
- 最小模板下默认不进入答题
|
||
- “当前目标点”只影响 HUD 和距离引导,不影响默认打点资格
|
||
|
||
### 5.4 目标点切换
|
||
|
||
- 玩家在比赛进行中可随时点击其他未收集积分点,切换当前目标点
|
||
- 切换后底部 HUD 信息面板应更新为新目标点信息
|
||
|
||
### 5.5 结束点
|
||
|
||
- 结束点默认在至少完成 `1` 个普通积分点后生效
|
||
- 结束点不需要先设为目标点
|
||
- 结束点不弹答题卡
|
||
- 结束点默认只给完成短反馈并直接进入结果页
|
||
- 结束点默认不弹白色内容卡
|
||
- 如果超过关门时间仍未结束,系统按“超时结束”处理
|
||
- “超时结束”需与正常完赛、主动退出明确区分
|
||
|
||
---
|
||
|
||
## 6. 计分与答题规则
|
||
|
||
### 6.1 基础分
|
||
|
||
- 成功打到某个积分点后,立即获得该点标注分值作为基础分
|
||
- 如果该点未单独配置分值,则走默认分值逻辑
|
||
|
||
### 6.2 默认答题规则
|
||
|
||
- 最小模板下默认不启用答题
|
||
- 如需答题,需显式为对应点位配置 `quiz` CTA
|
||
- 显式启用后,答题时比赛继续计时,不暂停比赛时间
|
||
|
||
### 6.3 奖励分
|
||
|
||
- 最小模板下默认不存在答题奖励分
|
||
- 如显式启用答题,则可按题卡配置再获得奖励分
|
||
|
||
### 6.4 不弹题对象
|
||
|
||
- 开始点不弹题
|
||
- 结束点不弹题
|
||
- 未成功打点的非目标点不弹题
|
||
|
||
### 6.5 排名与结算默认口径
|
||
|
||
- 第一排序:总分高者优先
|
||
- 第二排序:同分时总用时短者优先
|
||
|
||
---
|
||
|
||
## 7. HUD 默认规则
|
||
|
||
### 7.1 HUD 基础信息
|
||
|
||
比赛期间底部 HUD 信息面板默认可承载以下信息:
|
||
|
||
- 当前比赛时间
|
||
- 当前总分
|
||
- 当前目标点摘要
|
||
- 当前目标点分值
|
||
- 玩家与当前目标点的距离
|
||
|
||
### 7.2 未选择目标点
|
||
|
||
- 如果当前还未选择目标点:
|
||
- HUD 显示“请选择目标点”类提示
|
||
- HUD 目标摘要区域显示“请选择目标点”
|
||
- 不显示目标距离
|
||
- 仍显示比赛时间和总分等基础信息
|
||
|
||
### 7.3 已选择目标点
|
||
|
||
- 选择目标点后,HUD 更新为该点信息
|
||
- HUD 目标摘要区域显示当前点名称与分值摘要
|
||
- 玩家切换目标点后,HUD 立即切换为新目标点信息
|
||
|
||
---
|
||
|
||
## 8. 地图与表现默认规则
|
||
|
||
### 8.1 起跑前显示
|
||
|
||
- 起跑前仅显示开始点
|
||
- 所有积分点和结束点隐藏
|
||
|
||
### 8.2 起跑后显示
|
||
|
||
- 打完开始点后显示全部积分点和结束点
|
||
- 当前目标点需要有明确高亮态
|
||
- 所有积分点默认建议显示分值标签
|
||
|
||
### 8.3 点位默认表现
|
||
|
||
- 未选中的积分点显示基础分值和基础样式
|
||
- 积分点默认显示分值,而不是序号
|
||
- 积分点分值默认绘制在圆圈内
|
||
- 积分点默认按分值分档显示不同颜色
|
||
- 积分点默认半径保持一致,不因分值高低自动变大
|
||
- 当前目标点需要有更强的动效和高亮
|
||
- 已收集积分点默认变灰
|
||
- 结束点始终可见,但视觉权重默认低于当前目标点
|
||
|
||
### 8.4 腿线默认表现
|
||
|
||
- 积分赛默认不显示腿线
|
||
- 也不启用腿线动效
|
||
|
||
---
|
||
|
||
## 9. 反馈与结算页默认规则
|
||
|
||
### 9.1 开始反馈
|
||
|
||
- 开始点成功后默认给出“比赛开始”类短反馈
|
||
- 同时更新黑色引导提示条和 HUD 目标摘要
|
||
- 最小模板下默认不弹开始白卡
|
||
- 如需开始点完成后展示白色内容卡,需显式开启对应点位的 `autoPopup = true`
|
||
|
||
### 9.2 结束反馈
|
||
|
||
- 结束点成功后默认先给短反馈
|
||
- 随后直接进入默认成绩结算页
|
||
- 默认不再额外弹出终点白色内容卡
|
||
- 如需再次查看终点说明,需显式配置点击内容能力
|
||
|
||
### 9.3 默认成绩结算页
|
||
|
||
默认结算页至少显示:
|
||
|
||
- 总分
|
||
- 基础积分
|
||
- 答题奖励积分
|
||
- 已收集点数
|
||
- 答题正确数
|
||
- 答题错误数
|
||
- 答题超时数
|
||
- 总用时
|
||
- 是否打终点完赛
|
||
|
||
---
|
||
|
||
## 10. 边界与容错默认规则
|
||
|
||
### 10.1 GPS 防重复触发
|
||
|
||
- 同一点成功结算后,系统应有短暂防抖或冷却,避免 GPS 抖动导致重复触发
|
||
|
||
### 10.2 重复进入已收集点
|
||
|
||
- 已收集点再次进入范围时不重复得分、不重复答题、不重复弹完成提示
|
||
|
||
### 10.3 切换目标点
|
||
|
||
- 切换目标点只改变当前目标和 HUD 信息,不回滚已有得分和已收集状态
|
||
|
||
### 10.4 页面中断恢复
|
||
|
||
- 小程序切后台或页面重进后,默认应恢复当前比赛状态
|
||
- 已开始的比赛默认不应自动重开
|
||
|
||
---
|
||
|
||
## 11. 与最小模板的关系
|
||
|
||
积分赛最小模板只需要保证以下骨架存在:
|
||
|
||
- `playfield.kind = "control-set"`
|
||
- `game.mode = "score-o"`
|
||
- `game.punch.policy`
|
||
- `game.punch.radiusMeters`
|
||
|
||
其余流程默认按本文档执行。
|
||
|
||
也就是说,本文档定义的是:
|
||
|
||
- 最小模板下的系统默认局流程
|
||
- 后续配置化扩展前的默认产品行为
|
||
- 积分赛样例配置和实现验收时的基准口径
|
||
|
||
|
||
|