# 全局规则与配置维度清单 > 文档版本:v1.0 > 最后更新:2026-04-02 08:28:05 本文档用于定义当前系统中**跨玩法共用**的全局规则块和配置维度,作为后续所有玩法设计文档、配置文件设计、后台录入和联调的统一骨架。 目标: - 统一“一个玩法设计文档至少要覆盖哪些公共规则块” - 统一“一个游戏配置文件通常会包含哪些跨玩法公共配置” - 为后续新增系统能力时提供持续维护入口 说明: - 本文档讲的是**全局规则块** - 它不替代具体玩法规则文档 - 它也不替代具体玩法的可配置项清单 - 推荐和 [顺序打点规则说明文档](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..template` | 点位完成后默认卡片模板 | `minimal` `story` `focus` | 起终点常用 `focus`,普通点常用 `story` | | 自动弹窗开关 | `playfield.controlOverrides..autoPopup` | 完成点位后是否自动弹内容 | `true` `false` | 最小模板默认 `false` | | 自动内容仅一次 | `playfield.controlOverrides..once` | 本局是否只自动展示一次 | `true` `false` | `false` | | 内容承载方式 | `playfield.controlOverrides..contentExperience.type` | 自动内容使用原生还是 H5 | `native` `h5` | 当前按点位配置 | | 内容展示形态 | `playfield.controlOverrides..contentExperience.presentation` | H5 内容如何呈现 | 运行建议 `fullscreen`;兼容历史值 `sheet` `dialog` | `fullscreen` | | 点击承载方式 | `playfield.controlOverrides..clickExperience.type` | 点击点位时使用原生还是 H5 | `native` `h5` | 当前按点位配置 | | 点击展示形态 | `playfield.controlOverrides..clickExperience.presentation` | 点击 H5 如何呈现 | 运行建议 `fullscreen`;兼容历史值 `sheet` `dialog` | `fullscreen` | 说明: - 最小模板下,点击检查点默认不弹任何详情卡,也不直接打开答题卡。 - 最小模板下,起点和普通点完成后默认不弹白色内容卡。 - 点击内容能力改为显式配置能力;只有配置了 `clickTitle` / `clickBody` / `clickExperience` 之一时,点击点位才会产生内容反馈。 - 完成后自动弹白卡也改为显式配置能力;只有明确开启 `autoPopup = true` 时,完成点位后才会弹出白色内容卡。 - 点击详情卡片当前默认不展示 H5 详情按钮,但 `clickExperience` 和 CTA 能力保留。 - 当前真机约束下,`web-view` 不再承担局部弹窗职责;原生内容卡负责即时弹出,H5 详情统一按整页承载。 - 连续点击不同检查点时,新的点击卡片会直接替换当前卡片,不进入手动关闭队列。 - 黑色顶部提示条只承担操作引导,不承载点位内容或结果信息。 - 当白色内容卡、答题卡或结果页出现时,黑色顶部提示条默认让位,不与内容层抢注意力。 - 白色内容卡当前分为两类: - 浏览型:点击点位查看说明,无按钮,默认约 `4` 秒自动消失,点击屏幕任意位置可关闭。 - 交互型:打点完成后的即时内容卡,可带 CTA 或进入答题流程。 - 终点完成默认直接进入原生成绩总览页,不再额外叠加终点白色内容卡;如需再次查看终点说明,需显式配置点击内容能力。 ### 4.12 点位表现 | 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 | | --- | --- | --- | --- | --- | | 点位样式 | `game.presentation..controls..style` | 控制点形状和结构 | `classic-ring` `solid-dot` `double-ring` `badge` `pulse-core` | 由玩法状态决定 | | 点位主色 | `game.presentation..controls..colorHex` | 控制点颜色 | 十六进制颜色字符串 | 顺序赛默认参考传统定向紫红色 | | 点位尺寸倍率 | `game.presentation..controls..sizeScale` | 控制点大小缩放 | `number` | `1` 或按状态定制 | | 强调环倍率 | `game.presentation..controls..accentRingScale` | 外环强调强度 | `number` | 按状态定制 | | 光晕强度 | `game.presentation..controls..glowStrength` | 点位光晕表现 | 建议 `0 ~ 1` | 按状态定制 | | 标签倍率 | `game.presentation..controls..labelScale` | 点位编号大小 | `number` | `1` 或按状态定制 | | 标签颜色 | `game.presentation..controls..labelColorHex` | 点位编号颜色 | 十六进制颜色字符串 | 按状态定制 | 状态建议至少考虑: - `default` - `current` - `completed` - `skipped` - `start` - `finish` ### 4.13 腿线表现 | 名称 | 字段 | 说明 | 可选项 / 取值 | 默认值 | | --- | --- | --- | --- | --- | | 腿线样式 | `game.presentation..legs..style` | 连接线风格 | `classic-leg` `dashed-leg` `glow-leg` `progress-leg` | 顺序赛默认建议 `classic-leg` | | 腿线主色 | `game.presentation..legs..colorHex` | 连接线颜色 | 十六进制颜色字符串 | 顺序赛默认建议传统定向紫红色 | | 腿线宽度倍率 | `game.presentation..legs..widthScale` | 连接线粗细 | `number` | 视玩法决定 | | 腿线光晕强度 | `game.presentation..legs..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. 至少一个玩法的配置样例 这样可以保证: - 玩法设计有统一骨架 - 配置字段有统一归档 - 后台配置管理有明确输入目标 - 后续扩展不会只长代码、不长文档