411 lines
23 KiB
Markdown
411 lines
23 KiB
Markdown
# 全局规则与配置维度清单
|
||
> 文档版本:v1.0
|
||
> 最后更新:2026-04-02
|
||
|
||
|
||
本文档用于定义当前系统中**跨玩法共用**的全局规则块和配置维度,作为后续所有玩法设计文档、配置文件设计、后台录入和联调的统一骨架。
|
||
|
||
目标:
|
||
|
||
- 统一“一个玩法设计文档至少要覆盖哪些公共规则块”
|
||
- 统一“一个游戏配置文件通常会包含哪些跨玩法公共配置”
|
||
- 为后续新增系统能力时提供持续维护入口
|
||
|
||
说明:
|
||
|
||
- 本文档讲的是**全局规则块**
|
||
- 它不替代具体玩法规则文档
|
||
- 它也不替代具体玩法的可配置项清单
|
||
- 推荐和 [顺序打点规则说明文档](D:/dev/cmr-mini/doc/games/顺序打点/规则说明文档.md)、[顺序打点游戏配置项](D:/dev/cmr-mini/doc/games/顺序打点/游戏配置项.md)、[配置选项字典](D:/dev/cmr-mini/doc/config/配置选项字典.md) 配合阅读
|
||
- 后续玩法设计建议统一使用 [玩法设计文档模板](D:/dev/cmr-mini/doc/gameplay/玩法设计文档模板.md)
|
||
|
||
---
|
||
|
||
## 1. 设计原则
|
||
|
||
后续每个玩法设计文档,至少建议覆盖以下三层:
|
||
|
||
1. 玩法专属规则
|
||
2. 全局规则块选型
|
||
3. 配置落点与默认值
|
||
|
||
也就是说,后续写一个新玩法时,不应该只写:
|
||
|
||
- 怎么玩
|
||
- 怎么赢
|
||
|
||
还应该明确:
|
||
|
||
- 用哪套定位点样式
|
||
- 用哪套轨迹策略
|
||
- 是否启用腿线动画
|
||
- 是否启用内容弹层
|
||
- 是否启用音效、震动和 HUD 反馈
|
||
- 哪些沿用系统默认值,哪些做玩法覆盖
|
||
|
||
---
|
||
|
||
## 2. 推荐公共骨架
|
||
|
||
当前推荐所有玩法配置继续沿用以下顶层骨架:
|
||
|
||
```json
|
||
{
|
||
"schemaVersion": "1",
|
||
"version": "2026.03.31",
|
||
"app": {},
|
||
"map": {},
|
||
"playfield": {},
|
||
"game": {},
|
||
"resources": {},
|
||
"debug": {}
|
||
}
|
||
```
|
||
|
||
其中:
|
||
|
||
- `app` 管活动级基础信息
|
||
- `map` 管地图底图和视口底座
|
||
- `playfield` 管场地对象、路线和点位内容
|
||
- `game` 管玩法规则和全局运行规则
|
||
- `resources` 管资源档和主题档
|
||
- `debug` 管调试与模拟能力
|
||
|
||
---
|
||
|
||
## 3. 全局规则块总表
|
||
|
||
| 规则块 | 建议落点 | 作用 | 是否建议每个玩法都明确 |
|
||
| --- | --- | --- | --- |
|
||
| 活动基础信息 | `app.*` | 定义活动身份、标题和语言环境 | 是 |
|
||
| 地图底座 | `map.*` | 定义地图来源、磁偏角和初始视口 | 是 |
|
||
| 场地对象 | `playfield.*` | 定义路线、控制点、对象集和内容覆盖 | 是 |
|
||
| 对局流程 | `game.session.*` | 定义开局、结束、时长和起终点要求 | 是 |
|
||
| 打点判定 | `game.punch.*` | 定义打点触发方式和判定半径 | 是 |
|
||
| 顺序推进 / 跳点 | `game.sequence.*` | 定义顺序赛推进和跳点规则 | 顺序类玩法必须明确 |
|
||
| 计分模型 | `game.scoring.*` | 定义分值模型和点位得分规则 | 有计分时必须明确 |
|
||
| 引导显示 | `game.guidance.*` | 定义腿线、目标聚焦和地图引导 | 是 |
|
||
| 可见性策略 | `game.visibility.*` | 定义开局是否隐藏对象、何时揭示全场 | 是 |
|
||
| 完赛规则 | `game.finish.*` | 定义终点生效条件和结束逻辑 | 是 |
|
||
| 内容体验 | `playfield.controlOverrides.*` | 定义点位弹窗、H5、点击内容 | 有内容玩法建议明确 |
|
||
| 点位表现 | `game.presentation.*.controls` | 定义控制点不同状态样式 | 是 |
|
||
| 腿线表现 | `game.presentation.*.legs` | 定义路线连接线样式和动效 | 有路线玩法建议明确 |
|
||
| 轨迹表现 | `game.presentation.track.*` | 定义玩家轨迹展示策略 | 是 |
|
||
| 定位点表现 | `game.presentation.gpsMarker.*` | 定义 GPS 点样式和动画 | 是 |
|
||
| 遥测参数 | `game.telemetry.*` | 定义心率等计算参数,作为活动默认值 | 用到相关能力时明确 |
|
||
| 反馈系统 | `game.feedback.*` | 定义音效、震动、UI 动效 | 是 |
|
||
| 资源档 | `resources.*` | 定义音频、主题、内容资源档 | 是 |
|
||
| 调试能力 | `debug.*` | 定义模拟输入和调试开关 | 开发阶段建议明确 |
|
||
|
||
---
|
||
|
||
## 4. 各规则块说明
|
||
|
||
### 4.1 活动基础信息
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 活动 ID | `app.id` | 活动或配置实例唯一标识 | 任意字符串 | 无,建议必填 |
|
||
| 活动标题 | `app.title` | 页面展示和结算展示的标题 | 任意字符串 | 无,建议必填 |
|
||
| 语言环境 | `app.locale` | 文案和内容环境 | 当前常用:`zh-CN` | `zh-CN` |
|
||
|
||
### 4.2 地图底座
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 瓦片路径 | `map.tiles` | 地图瓦片资源位置 | 路径字符串 | 无,建议必填 |
|
||
| 地图元数据 | `map.mapmeta` | 地图 meta 文件 | 路径字符串 | 无,建议必填 |
|
||
| 磁偏角 | `map.declination` | 影响真北/磁北换算 | `number` | `0` |
|
||
| 初始缩放 | `map.initialView.zoom` | 地图初始缩放级别 | `number` | 由客户端初始视口逻辑接管,建议 `17` |
|
||
|
||
### 4.3 场地对象
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 场地类型 | `playfield.kind` | 定义玩法使用的对象集合类型 | `course` `control-set` | 由玩法决定,顺序赛常用 `course` |
|
||
| 场地来源类型 | `playfield.source.type` | 定义空间底稿来源 | 当前支持:`kml` | `kml` |
|
||
| 场地来源地址 | `playfield.source.url` | KML 或其他空间资源地址 | 路径字符串 | 无,建议必填 |
|
||
| 控制点绘制半径 | `playfield.CPRadius` | 影响地图上控制点圈的展示大小 | `number` | `6` |
|
||
| 路线标题 | `playfield.metadata.title` | 路线或对象集标题 | 任意字符串 | 无 |
|
||
| 路线编码 | `playfield.metadata.code` | 路线或对象集编码 | 任意字符串 | 无 |
|
||
|
||
### 4.4 对局流程
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 手动开始 | `game.session.startManually` | 是否需要玩家主动点开始按钮 | `true` `false` | 顺序赛默认 `false` |
|
||
| 必须打起点 | `game.session.requiresStartPunch` | 是否要求起点打卡后才正式开赛 | `true` `false` | 顺序赛默认 `true` |
|
||
| 必须打终点 | `game.session.requiresFinishPunch` | 是否要求终点打卡才能完赛 | `true` `false` | 顺序赛默认 `true` |
|
||
| 最后点自动结束 | `game.session.autoFinishOnLastControl` | 最后一个普通点完成后是否直接结束 | `true` `false` | `false` |
|
||
| 最大时长 | `game.session.maxDurationSec` | 单局允许的最大比赛时长 | `number` | `5400` |
|
||
|
||
### 4.5 打点判定
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 打点策略 | `game.punch.policy` | 控制进入范围后如何完成打点 | `enter-confirm` `enter` | `enter-confirm` |
|
||
| 打点半径 | `game.punch.radiusMeters` | 打点命中的半径阈值 | `number` | `5` |
|
||
| 必须先聚焦目标 | `game.punch.requiresFocusSelection` | 是否必须先选中目标点才能打卡 | `true` `false` | 顺序赛默认 `false`,积分赛默认 `true` |
|
||
|
||
### 4.6 顺序推进 / 跳点
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 是否允许跳点 | `game.sequence.skip.enabled` | 顺序玩法是否允许跳过当前目标点 | `true` `false` | 顺序赛默认 `true` |
|
||
| 跳点半径 | `game.sequence.skip.radiusMeters` | 触发跳点的距离阈值 | `number` | `game.punch.radiusMeters * 2` |
|
||
| 跳点确认 | `game.sequence.skip.requiresConfirm` | 触发跳点时是否需要二次确认 | `true` `false` | `false` |
|
||
|
||
### 4.7 计分模型
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 计分模型 | `game.scoring.type` | 定义玩法采用哪种积分模型 | 当前建议:`score` | `score` |
|
||
| 默认控制点分值 | `game.scoring.defaultControlScore` | 普通点未单独配置时的默认分值 | `number` | 顺序赛默认 `1`,积分赛默认 `10` |
|
||
|
||
备注:
|
||
|
||
- 顺序赛当前基础分、答题奖励分等更细规则仍以玩法规则文档为准,但系统默认基础分已按 `1` 落地
|
||
- 后续如果顺序赛积分逻辑进一步配置化,应优先补到 `game.scoring` 下
|
||
|
||
### 4.8 引导显示
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 显示腿线 | `game.guidance.showLegs` | 是否绘制路线连接线 | `true` `false` | 顺序赛默认 `true` |
|
||
| 腿线动画 | `game.guidance.legAnimation` | 是否启用腿线动画效果 | `true` `false` | 顺序赛默认 `true` |
|
||
| 允许地图选点 | `game.guidance.allowFocusSelection` | 是否允许用户点击地图切换目标 | `true` `false` | 顺序赛默认 `false` |
|
||
|
||
补充说明:
|
||
|
||
- 黑色顶部引导提示条属于公共引导层。
|
||
- 当前默认在引导文案发生有效变化时,提示条会播放一次轻量入场动画,并辅以一次轻震动。
|
||
- 当内容卡、答题卡或结果页出现时,引导提示条默认让位。
|
||
- 顶部引导提示条的反馈与距离引导反馈分离管理,不能互相替代。
|
||
- 当前距离引导反馈默认分为三档:
|
||
- 远距离:弱提醒,间隔更长
|
||
- 接近目标:提醒频率提升
|
||
- 可打点:高频确认提醒
|
||
|
||
### 4.9 可见性策略
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 起点后揭示全场 | `game.visibility.revealFullPlayfieldAfterStartPunch` | 打完起点后是否显示全部控制点与路线 | `true` `false` | `true` |
|
||
|
||
### 4.10 完赛规则
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 终点始终可选 | `game.finish.finishControlAlwaysSelectable` | 终点是否无条件可生效 | `true` `false` | 顺序赛默认 `false` |
|
||
|
||
### 4.11 内容体验
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 自动弹窗模板 | `playfield.controlOverrides.<key>.template` | 点位完成后默认卡片模板 | `minimal` `story` `focus` | 起终点常用 `focus`,普通点常用 `story` |
|
||
| 自动弹窗开关 | `playfield.controlOverrides.<key>.autoPopup` | 完成点位后是否自动弹内容 | `true` `false` | 最小模板默认 `false` |
|
||
| 自动内容仅一次 | `playfield.controlOverrides.<key>.once` | 本局是否只自动展示一次 | `true` `false` | `false` |
|
||
| 内容承载方式 | `playfield.controlOverrides.<key>.contentExperience.type` | 自动内容使用原生还是 H5 | `native` `h5` | 当前按点位配置 |
|
||
| 内容展示形态 | `playfield.controlOverrides.<key>.contentExperience.presentation` | H5 内容如何呈现 | 运行建议 `fullscreen`;兼容历史值 `sheet` `dialog` | `fullscreen` |
|
||
| 点击承载方式 | `playfield.controlOverrides.<key>.clickExperience.type` | 点击点位时使用原生还是 H5 | `native` `h5` | 当前按点位配置 |
|
||
| 点击展示形态 | `playfield.controlOverrides.<key>.clickExperience.presentation` | 点击 H5 如何呈现 | 运行建议 `fullscreen`;兼容历史值 `sheet` `dialog` | `fullscreen` |
|
||
|
||
说明:
|
||
|
||
- 最小模板下,点击检查点默认不弹任何详情卡,也不直接打开答题卡。
|
||
- 最小模板下,起点和普通点完成后默认不弹白色内容卡。
|
||
- 点击内容能力改为显式配置能力;只有配置了 `clickTitle` / `clickBody` / `clickExperience` 之一时,点击点位才会产生内容反馈。
|
||
- 完成后自动弹白卡也改为显式配置能力;只有明确开启 `autoPopup = true` 时,完成点位后才会弹出白色内容卡。
|
||
- 点击详情卡片当前默认不展示 H5 详情按钮,但 `clickExperience` 和 CTA 能力保留。
|
||
- 当前真机约束下,`web-view` 不再承担局部弹窗职责;原生内容卡负责即时弹出,H5 详情统一按整页承载。
|
||
- 连续点击不同检查点时,新的点击卡片会直接替换当前卡片,不进入手动关闭队列。
|
||
- 黑色顶部提示条只承担操作引导,不承载点位内容或结果信息。
|
||
- 当白色内容卡、答题卡或结果页出现时,黑色顶部提示条默认让位,不与内容层抢注意力。
|
||
- 白色内容卡当前分为两类:
|
||
- 浏览型:点击点位查看说明,无按钮,默认约 `4` 秒自动消失,点击屏幕任意位置可关闭。
|
||
- 交互型:打点完成后的即时内容卡,可带 CTA 或进入答题流程。
|
||
- 终点完成默认直接进入原生成绩总览页,不再额外叠加终点白色内容卡;如需再次查看终点说明,需显式配置点击内容能力。
|
||
|
||
### 4.12 点位表现
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 点位样式 | `game.presentation.<mode>.controls.<state>.style` | 控制点形状和结构 | `classic-ring` `solid-dot` `double-ring` `badge` `pulse-core` | 由玩法状态决定 |
|
||
| 点位主色 | `game.presentation.<mode>.controls.<state>.colorHex` | 控制点颜色 | 十六进制颜色字符串 | 顺序赛默认参考传统定向紫红色 |
|
||
| 点位尺寸倍率 | `game.presentation.<mode>.controls.<state>.sizeScale` | 控制点大小缩放 | `number` | `1` 或按状态定制 |
|
||
| 强调环倍率 | `game.presentation.<mode>.controls.<state>.accentRingScale` | 外环强调强度 | `number` | 按状态定制 |
|
||
| 光晕强度 | `game.presentation.<mode>.controls.<state>.glowStrength` | 点位光晕表现 | 建议 `0 ~ 1` | 按状态定制 |
|
||
| 标签倍率 | `game.presentation.<mode>.controls.<state>.labelScale` | 点位编号大小 | `number` | `1` 或按状态定制 |
|
||
| 标签颜色 | `game.presentation.<mode>.controls.<state>.labelColorHex` | 点位编号颜色 | 十六进制颜色字符串 | 按状态定制 |
|
||
|
||
状态建议至少考虑:
|
||
|
||
- `default`
|
||
- `current`
|
||
- `completed`
|
||
- `skipped`
|
||
- `start`
|
||
- `finish`
|
||
|
||
### 4.13 腿线表现
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 腿线样式 | `game.presentation.<mode>.legs.<state>.style` | 连接线风格 | `classic-leg` `dashed-leg` `glow-leg` `progress-leg` | 顺序赛默认建议 `classic-leg` |
|
||
| 腿线主色 | `game.presentation.<mode>.legs.<state>.colorHex` | 连接线颜色 | 十六进制颜色字符串 | 顺序赛默认建议传统定向紫红色 |
|
||
| 腿线宽度倍率 | `game.presentation.<mode>.legs.<state>.widthScale` | 连接线粗细 | `number` | 视玩法决定 |
|
||
| 腿线光晕强度 | `game.presentation.<mode>.legs.<state>.glowStrength` | 连接线发光程度 | 建议 `0 ~ 1` | 视玩法决定 |
|
||
|
||
状态建议至少考虑:
|
||
|
||
- `default`
|
||
- `completed`
|
||
|
||
### 4.14 轨迹表现
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 轨迹模式 | `game.presentation.track.mode` | 决定是否显示轨迹以及显示方式 | `none` `tail` `full` | 顺序赛建议 `full` |
|
||
| 轨迹风格 | `game.presentation.track.style` | 整体视觉风格 | `classic` `neon` | 当前默认 `neon` |
|
||
| 拖尾档位 | `game.presentation.track.tailLength` | 拖尾长度档位 | `short` `medium` `long` | 视玩法决定 |
|
||
| 预设色盘 | `game.presentation.track.colorPreset` | 轨迹预设颜色方案 | `mint` `cyan` `sky` `blue` `violet` `pink` `orange` `yellow` | 按玩法决定 |
|
||
| 拖尾长度 | `game.presentation.track.tailMeters` | 实际拖尾长度 | `number` | 可覆盖档位映射 |
|
||
| 拖尾时窗 | `game.presentation.track.tailMaxSeconds` | 最大拖尾时间窗口 | `number` | 选填 |
|
||
| 静止淡出 | `game.presentation.track.fadeOutWhenStill` | 静止时是否逐步淡出 | `true` `false` | 选填 |
|
||
| 静止阈值 | `game.presentation.track.stillSpeedKmh` | 判定静止的速度阈值 | `number` | 选填 |
|
||
| 淡出时长 | `game.presentation.track.fadeOutDurationMs` | 静止后淡出时长 | `number` | 选填 |
|
||
| 轨迹主色 | `game.presentation.track.colorHex` | 主体轨迹颜色 | 十六进制颜色字符串 | 未配时回退到预设色盘 |
|
||
| 轨迹头部色 | `game.presentation.track.headColorHex` | 轨迹头部高亮颜色 | 十六进制颜色字符串 | 未配时回退到预设色盘 |
|
||
| 轨迹宽度 | `game.presentation.track.widthPx` | 主体轨迹宽度 | `number` | 选填 |
|
||
| 头部宽度 | `game.presentation.track.headWidthPx` | 头部高亮宽度 | `number` | 选填 |
|
||
| 轨迹光晕 | `game.presentation.track.glowStrength` | 轨迹光晕强度 | 建议 `0 ~ 1` | 选填 |
|
||
|
||
### 4.15 定位点表现
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 是否显示定位点 | `game.presentation.gpsMarker.visible` | 控制 GPS 点是否可见 | `true` `false` | `true` |
|
||
| 定位点样式 | `game.presentation.gpsMarker.style` | GPS 点基础形态 | `dot` `beacon` `disc` `badge` | `beacon` |
|
||
| 定位点尺寸 | `game.presentation.gpsMarker.size` | GPS 点大小档位 | `small` `medium` `large` | `medium` |
|
||
| 定位点预设色盘 | `game.presentation.gpsMarker.colorPreset` | GPS 点默认色彩方案 | `mint` `cyan` `sky` `blue` `violet` `pink` `orange` `yellow` | `cyan` |
|
||
| 定位点主色 | `game.presentation.gpsMarker.colorHex` | GPS 点主体颜色 | 十六进制颜色字符串 | 未配时回退到预设色盘 |
|
||
| 外环颜色 | `game.presentation.gpsMarker.ringColorHex` | GPS 点外环颜色 | 十六进制颜色字符串 | 未配时回退到预设色盘 |
|
||
| 朝向指示颜色 | `game.presentation.gpsMarker.indicatorColorHex` | 小三角或朝向指示颜色 | 十六进制颜色字符串 | 未配时回退到预设色盘 |
|
||
| 显示朝向指示 | `game.presentation.gpsMarker.showHeadingIndicator` | 是否显示跟随朝向旋转的指示三角 | `true` `false` | `true` |
|
||
| 定位点动画档 | `game.presentation.gpsMarker.animationProfile` | GPS 点动画风格 | `minimal` `dynamic-runner` `warning-reactive` | `dynamic-runner` |
|
||
| 中心 logo 地址 | `game.presentation.gpsMarker.logoUrl` | 品牌中心贴片资源 | URL 字符串 | 选填 |
|
||
| logo 嵌入方式 | `game.presentation.gpsMarker.logoMode` | 品牌贴片嵌入方式 | `center-badge` | 当前支持该值 |
|
||
|
||
### 4.16 遥测参数
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 年龄 | `game.telemetry.heartRate.age` | 心率估算的年龄参数 | `number` | `30` |
|
||
| 静息心率 | `game.telemetry.heartRate.restingHeartRateBpm` | 心率估算基础参数 | `number` | `62` |
|
||
| 体重 | `game.telemetry.heartRate.userWeightKg` | 卡路里或体征估算参数 | `number` | `65` |
|
||
|
||
说明:
|
||
|
||
- 这里定义的是活动级默认值
|
||
- 如果后续接入线上玩家身体数据接口,线上数据应覆盖这里的同名字段
|
||
|
||
### 4.17 HUD 信息面板
|
||
|
||
| 名称 | 字段 / 归属 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| HUD 页数 | 公共 UI 壳子 | 当前 HUD 固定为 `2` 页 | `2` | `2` |
|
||
| HUD 第 1 页 | 公共 UI 壳子 | 比赛主信息页,承载动作、时间、里程、目标距离、进度等异型槽位 | 固定结构 | 启用 |
|
||
| HUD 第 2 页 | 公共 UI 壳子 | 心率 / 遥测页,承载心率、卡路里、均速、精度等异型槽位 | 固定结构 | 启用 |
|
||
| HUD 项目映射 | 玩法映射 | 不同玩法可将不同数据映射到相同 HUD 槽位 | 按玩法定义 | 按玩法默认 |
|
||
| HUD 目标摘要 | 玩法映射 | 第 1 页动作区下方的摘要文案,用于显示当前目标或提示信息 | `string` | 按玩法默认 |
|
||
| HUD 进度摘要 | 玩法映射 | 第 1 页进度区显示的核心摘要,不同玩法可映射为总分、完成进度、跳点数等 | `string` | 按玩法默认 |
|
||
|
||
说明:
|
||
|
||
- HUD 属于公共层能力,不属于某一个玩法专属规则。
|
||
- 当前系统采用“公共 HUD 壳子 + 玩法项目映射”的方式。
|
||
- 例如:
|
||
- 积分赛可将进度位映射为“总分 + 收集进度”
|
||
- 顺序打点可将进度位映射为“完成进度 + 跳点数”
|
||
|
||
### 4.18 反馈系统
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 音效反馈档 | `game.feedback.audioProfile` | 控制音效方案 | `string` | `default` |
|
||
| 震动反馈档 | `game.feedback.hapticsProfile` | 控制震动策略 | `string` | `default` |
|
||
| UI 动效档 | `game.feedback.uiEffectsProfile` | 控制 UI 动效策略 | `string` | `default` |
|
||
| 距离提示音阈值 | `game.audio.*DistanceMeters` | 控制远距离 / 接近 / 可打点三档距离提示的生效距离 | `number` | 远距离 `80`,接近 `20`,可打点 `5` |
|
||
| 距离提示音间隔 | `game.audio.cues.guidance:*.*` | 控制三档距离提示音的循环间隔、音量和音源 | `number` / `string` / `boolean` | 远距离 `4800ms`,接近 `950ms`,可打点 `650ms` |
|
||
|
||
说明:
|
||
|
||
- 系统当前已支持音效反馈能力。
|
||
- 默认答题正确复用控制点完成音效,答题错误和答题超时复用警告音效。
|
||
- 引导提示条当前默认改用轻震动,不再播放引导提示音。
|
||
- 目标距离引导当前默认分为 `distant / approaching / ready` 三档,作为独立反馈链路,可使用距离提示音,不与顶部引导提示绑定。
|
||
- 当前三档距离提示已支持分别配置距离阈值与循环间隔。
|
||
|
||
### 4.19 资源档
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 音效资源档 | `resources.audioProfile` | 选择音频资源包 | `string` | `default` |
|
||
| 内容资源档 | `resources.contentProfile` | 选择内容资源包 | `string` | `default` |
|
||
| 主题资源档 | `resources.themeProfile` | 选择主题和视觉资源包 | `string` | `default-race` |
|
||
|
||
### 4.20 调试能力
|
||
|
||
| 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 允许玩法切换 | `debug.allowModeSwitch` | 是否允许在调试时切玩法 | `true` `false` | `false` |
|
||
| 允许模拟输入 | `debug.allowMockInput` | 是否允许用模拟数据代替真实输入 | `true` `false` | `false` |
|
||
| 允许模拟器 | `debug.allowSimulator` | 是否开放调试模拟器面板 | `true` `false` | `false` |
|
||
|
||
---
|
||
|
||
## 5. 后续所有玩法设计文档的建议结构
|
||
|
||
后续每新增一种玩法,设计文档建议至少包含以下章节:
|
||
|
||
1. 玩法目标与一句话规则
|
||
2. 开局流程与结束流程
|
||
3. 核心判定与胜负条件
|
||
4. 计分规则
|
||
5. 对象模型与场地对象要求
|
||
6. 全局规则块选型
|
||
7. 默认值与玩法覆盖项
|
||
8. 最小可跑配置示例
|
||
|
||
其中第 6 节“全局规则块选型”建议至少回答:
|
||
|
||
- 用哪套定位点样式
|
||
- 用哪套轨迹显示策略
|
||
- 是否显示腿线和腿线动画
|
||
- 起点后是否揭示全场
|
||
- 是否需要内容弹层和 H5 承载
|
||
- 用哪套反馈档
|
||
- 是否依赖心率等遥测参数
|
||
|
||
---
|
||
|
||
## 6. 维护约定
|
||
|
||
后续每次新增全局系统能力时,建议至少同步更新以下文档:
|
||
|
||
1. 本文档
|
||
2. [配置选项字典](D:/dev/cmr-mini/doc/config/配置选项字典.md)
|
||
3. [当前最全配置模板](D:/dev/cmr-mini/doc/config/当前最全配置模板.md)
|
||
4. 对应能力的专项文档
|
||
- 例如轨迹、GPS 点样式、GPS 点动画、内容体验、反馈系统
|
||
5. 至少一个玩法的配置样例
|
||
|
||
这样可以保证:
|
||
|
||
- 玩法设计有统一骨架
|
||
- 配置字段有统一归档
|
||
- 后台配置管理有明确输入目标
|
||
- 后续扩展不会只长代码、不长文档
|
||
|
||
|