# 游戏配置全量模板(当前开发实现版) 本文档提供一份 **截至当前开发状态,客户端已实现或已正式消费的较完整配置模板**。 目标: - 给后端、后台、联调一份“当前最全可用模板” - 帮助梳理哪些字段已经生效 - 后续新增字段时,以这份模板持续补充 说明: - 本模板优先以**当前客户端代码真实实现**为准 - 不是未来终态,只代表“当前这一版已经能消费的字段” - 以顺序赛为主模板,同时说明积分赛差异点 --- ## 1. 当前最全模板 ```json { "schemaVersion": "1", "version": "2026.03.30", "app": { "id": "sample-full-001", "title": "完整配置示例", "locale": "zh-CN" }, "map": { "tiles": "../map/lxcb-001/tiles/", "mapmeta": "../map/lxcb-001/tiles/meta.json", "declination": 6.91, "initialView": { "zoom": 17 } }, "playfield": { "kind": "course", "source": { "type": "kml", "url": "../kml/lxcb-001/10/c01.kml" }, "CPRadius": 6, "metadata": { "title": "完整路线示例", "code": "full-001" }, "controlOverrides": { "start-1": { "template": "focus", "title": "比赛开始", "body": "从这里触发,先熟悉地图方向。", "clickTitle": "起点说明", "clickBody": "点击起点可再次查看起跑说明。", "autoPopup": true, "once": true, "priority": 1, "contentExperience": { "type": "h5", "url": "https://example.com/content/start-1", "bridge": "content-v1", "presentation": "dialog" }, "clickExperience": { "type": "h5", "url": "https://example.com/content/start-1-click", "bridge": "content-v1", "presentation": "dialog" } }, "control-1": { "template": "story", "score": 10, "title": "第一检查点", "body": "完成该点后继续推进。", "clickTitle": "第一检查点", "clickBody": "点击查看该点的补充说明。", "autoPopup": true, "once": false, "priority": 1, "contentExperience": { "type": "h5", "url": "https://example.com/content/control-1", "bridge": "content-v1", "presentation": "dialog" }, "clickExperience": { "type": "h5", "url": "https://example.com/content/control-1-click", "bridge": "content-v1", "presentation": "dialog" } }, "control-2": { "template": "minimal", "title": "第二检查点", "body": "这个点配置成手动查看内容。", "clickTitle": "第二检查点", "clickBody": "点击查看手动内容。", "autoPopup": false, "once": true, "priority": 1 }, "finish-1": { "template": "focus", "title": "比赛结束", "body": "恭喜完成本次路线。", "clickTitle": "终点说明", "clickBody": "点击终点可再次查看结束说明。", "autoPopup": true, "once": true, "priority": 2, "clickExperience": { "type": "h5", "url": "https://example.com/content/finish-1-click", "bridge": "content-v1", "presentation": "dialog" } } } }, "game": { "mode": "classic-sequential", "rulesVersion": "1", "session": { "startManually": true, "requiresStartPunch": true, "requiresFinishPunch": true, "autoFinishOnLastControl": false, "maxDurationSec": 5400 }, "punch": { "policy": "enter-confirm", "radiusMeters": 5, "requiresFocusSelection": false }, "sequence": { "skip": { "enabled": true, "radiusMeters": 30, "requiresConfirm": true } }, "scoring": { "type": "score", "defaultControlScore": 10 }, "guidance": { "showLegs": true, "legAnimation": true, "allowFocusSelection": false }, "visibility": { "revealFullPlayfieldAfterStartPunch": true }, "finish": { "finishControlAlwaysSelectable": false }, "telemetry": { "heartRate": { "age": 30, "restingHeartRateBpm": 62, "userWeightKg": 65 } }, "feedback": { "audioProfile": "default", "hapticsProfile": "default", "uiEffectsProfile": "default" } }, "resources": { "audioProfile": "default", "contentProfile": "default", "themeProfile": "default-race" }, "debug": { "allowModeSwitch": false, "allowMockInput": false, "allowSimulator": false } } ``` --- ## 2. 顶层字段说明 ### `schemaVersion` - 类型:`string` - 必填:是 - 说明:配置结构版本 - 当前建议值:`"1"` ### `version` - 类型:`string` - 必填:是 - 说明:配置内容版本号 ### `app` - 类型:`object` - 必填:是 - 说明:活动级基础信息 ### `map` - 类型:`object` - 必填:是 - 说明:地图底座信息 ### `playfield` - 类型:`object` - 必填:是 - 说明:点位空间、内容覆盖、点位元信息 ### `game` - 类型:`object` - 必填:是 - 说明:玩法规则与对局流程 ### `resources` - 类型:`object` - 必填:否 - 说明:资源 profile 引用 ### `debug` - 类型:`object` - 必填:否 - 说明:调试开关 --- ## 3. `app` 字段说明 ### `app.id` - 类型:`string` - 说明:活动配置 ID ### `app.title` - 类型:`string` - 说明:活动标题 / 比赛名称 ### `app.locale` - 类型:`string` - 说明:语言环境 - 当前常用值:`zh-CN` --- ## 4. `map` 字段说明 ### `map.tiles` - 类型:`string` - 必填:是 - 说明:瓦片根路径 ### `map.mapmeta` - 类型:`string` - 必填:是 - 说明:地图 meta 文件路径 ### `map.declination` - 类型:`number` - 必填:否 - 说明:磁偏角 - 影响:真北 / 磁北换算 ### `map.initialView.zoom` - 类型:`number` - 必填:否 - 说明:初始缩放级别 - 建议默认值:`17` --- ## 5. `playfield` 字段说明 ### `playfield.kind` - 类型:`string` - 说明:空间对象类型 - 当前常用值: - `course` - `control-set` ### `playfield.source.type` - 类型:`string` - 说明:空间来源类型 - 当前推荐值:`kml` ### `playfield.source.url` - 类型:`string` - 说明:KML 路径 ### `playfield.CPRadius` - 类型:`number` - 说明:检查点绘制半径 - 建议默认值:`6` ### `playfield.metadata.title` - 类型:`string` - 说明:路线标题 ### `playfield.metadata.code` - 类型:`string` - 说明:路线编码 --- ## 6. `playfield.controlOverrides` 字段说明 ### key 命名规则 - 起点:`start-1` - 普通点:`control-1`、`control-2`、`control-3` - 终点:`finish-1` ### 当前支持字段 #### `template` - 类型:`string` - 说明:原生内容卡模板 - 当前支持: - `minimal` - `story` - `focus` #### `score` - 类型:`number` - 说明:积分赛点位分值 #### `title` - 类型:`string` - 说明:打点完成后自动弹出的标题 #### `body` - 类型:`string` - 说明:打点完成后自动弹出的正文 #### `clickTitle` - 类型:`string` - 说明:点击点位时弹出的标题 - 默认逻辑:未配置时回退到 `title` #### `clickBody` - 类型:`string` - 说明:点击点位时弹出的正文 - 默认逻辑:未配置时回退到 `body` #### `autoPopup` - 类型:`boolean` - 说明:打点完成后是否自动弹出 - 默认逻辑:`true` - 特殊逻辑:`game.punch.policy = "enter"` 时不自动弹原生内容 #### `once` - 类型:`boolean` - 说明:本局只展示一次 - 默认逻辑:`false` #### `priority` - 类型:`number` - 说明:内容优先级,越大越高 - 默认逻辑: - 普通点:`1` - 终点:`2` #### `contentExperience` - 类型:`object` - 说明:打点完成后的 H5 详情/互动扩展配置 - 注意:当前不是直接顶替原生弹窗,而是通过原生卡片 CTA 进入 #### `contentExperience.type` - 类型:`string` - 说明:内容扩展承载类型 - 当前支持: - `native` - `h5` #### `contentExperience.url` - 类型:`string` - 说明:H5 详情页地址 #### `contentExperience.bridge` - 类型:`string` - 说明:Bridge 协议版本 - 当前推荐值:`content-v1` #### `contentExperience.presentation` - 类型:`string` - 说明:H5 内容页展示形态 - 当前支持值: - `dialog` - `fullscreen` #### `clickExperience` - 类型:`object` - 说明:点击点位时的 H5 详情/互动扩展配置 - 规则同 `contentExperience` --- ## 7. `game` 字段说明 ### `game.mode` - 类型:`string` - 说明:玩法模式 - 当前常用值: - `classic-sequential` - `score-o` ### `game.rulesVersion` - 类型:`string` - 说明:规则版本号 ### `game.session.startManually` - 类型:`boolean` - 说明:是否手动开始 ### `game.session.requiresStartPunch` - 类型:`boolean` - 说明:是否必须打起点 ### `game.session.requiresFinishPunch` - 类型:`boolean` - 说明:是否必须打终点 ### `game.session.autoFinishOnLastControl` - 类型:`boolean` - 说明:最后一个目标完成后是否自动结束 ### `game.session.maxDurationSec` - 类型:`number` - 说明:最大对局时长,单位秒 ### `game.punch.policy` - 类型:`string` - 说明:打点策略 - 当前常用值: - `enter-confirm` - `enter` ### `game.punch.radiusMeters` - 类型:`number` - 说明:打点半径,单位米 ### `game.punch.requiresFocusSelection` - 类型:`boolean` - 说明:是否需要先聚焦/选中目标再打点 ### `game.sequence.skip.enabled` - 类型:`boolean` - 说明:顺序赛是否允许跳点 ### `game.sequence.skip.radiusMeters` - 类型:`number` - 说明:跳点可用半径 ### `game.sequence.skip.requiresConfirm` - 类型:`boolean` - 说明:跳点是否需要二次确认 ### `game.scoring.type` - 类型:`string` - 说明:积分模式类型 - 当前常用值:`score` ### `game.scoring.defaultControlScore` - 类型:`number` - 说明:默认控制点分值 ### `game.guidance.showLegs` - 类型:`boolean` - 说明:是否显示路线腿段 ### `game.guidance.legAnimation` - 类型:`boolean` - 说明:是否开启路线腿段动画 ### `game.guidance.allowFocusSelection` - 类型:`boolean` - 说明:是否允许点击点位选中目标 ### `game.visibility.revealFullPlayfieldAfterStartPunch` - 类型:`boolean` - 说明:打完起点后是否显示完整场地 ### `game.finish.finishControlAlwaysSelectable` - 类型:`boolean` - 说明:终点是否始终可选 ### `game.telemetry.heartRate.age` - 类型:`number` - 说明:用户年龄 ### `game.telemetry.heartRate.restingHeartRateBpm` - 类型:`number` - 说明:静息心率 ### `game.telemetry.heartRate.userWeightKg` - 类型:`number` - 说明:体重,单位公斤 ### `game.feedback.audioProfile` - 类型:`string` - 说明:音效 profile ### `game.feedback.hapticsProfile` - 类型:`string` - 说明:震动 profile ### `game.feedback.uiEffectsProfile` - 类型:`string` - 说明:UI 动效 profile --- ## 8. `resources` 字段说明 ### `resources.audioProfile` - 类型:`string` - 说明:资源音效配置档 ### `resources.contentProfile` - 类型:`string` - 说明:内容资源配置档 ### `resources.themeProfile` - 类型:`string` - 说明:主题配置档 --- ## 9. `debug` 字段说明 ### `debug.allowModeSwitch` - 类型:`boolean` - 说明:是否允许玩法切换调试 ### `debug.allowMockInput` - 类型:`boolean` - 说明:是否允许模拟输入 ### `debug.allowSimulator` - 类型:`boolean` - 说明:是否允许模拟器调试 --- ## 10. 积分赛差异点 如果使用积分赛,通常要修改这几项: ```json { "playfield": { "kind": "control-set" }, "game": { "mode": "score-o", "guidance": { "showLegs": false, "legAnimation": false, "allowFocusSelection": true }, "finish": { "finishControlAlwaysSelectable": true } } } ``` 并在 `playfield.controlOverrides` 中为普通点补: - `score` --- ## 11. 推荐配套阅读 - [D:\dev\cmr-mini\doc\config-template-minimal-game.md](D:/dev/cmr-mini/doc/config-template-minimal-game.md) - [D:\dev\cmr-mini\doc\config-option-dictionary.md](D:/dev/cmr-mini/doc/config-option-dictionary.md) - [D:\dev\cmr-mini\doc\config-docs-index.md](D:/dev/cmr-mini/doc/config-docs-index.md)