本文档用于整理 当前客户端已经消费或已经预留承载的配置项,作为事件配置、后台配置和联调时的统一参考。
目标:
说明:
当前推荐结构:
{
"schemaVersion": "1",
"version": "2026.03.27",
"app": {},
"map": {},
"playfield": {},
"game": {},
"resources": {},
"debug": {}
}
schemaVersionstring"1"versionstring2026.03.27appobjectmapobjectplayfieldobjectgameobjectresourcesobjectdebugobjectapp 字段app.idstring"sample-classic-001"app.titlestring"顺序赛示例"app.localestring"zh-CN"map 字段map.tilesstringmap.mapmetastringmap.declinationnumber6.91map.initialView.zoomnumber17playfield 字段playfield.kindstringcoursecontrol-setplayfield.source.typestringkmlplayfield.source.urlstringplayfield.CPRadiusnumber6playfield.metadata.titlestringplayfield.metadata.codestringplayfield.controlOverridesplayfield.controlOverrides 用于对起点、检查点、终点做内容或分值覆盖。
start-1control-1、control-2、control-3finish-1scorenumbertitlestringtemplatestringminimalstoryfocusfocusstorybodystringclickTitlestringtitleclickBodystringbodyautoPopupbooleantruegame.punch.policy = "enter",则无论这里如何配置,都不自动弹出oncebooleanfalseprioritynumber12contentExperienceobjectnativeh5contentExperience.typestringnativeh5contentExperience.urlstringtype = "h5" 时对应的 H5 页面地址contentExperience.bridgestring"content-v1"contentExperience.presentationstringsheetdialogfullscreensheetclickExperienceobjectnativeh5clickExperience.typestringnativeh5clickExperience.urlstringtype = "h5" 时对应的 H5 页面地址clickExperience.bridgestring"content-v1"clickExperience.presentationstringsheetdialogfullscreensheet"controlOverrides": {
"start-1": {
"template": "focus",
"title": "比赛开始",
"body": "从这里出发,先熟悉地图方向。",
"autoPopup": true,
"once": true,
"priority": 1,
"clickTitle": "起点说明",
"clickBody": "点击起点可再次查看起跑说明。"
},
"control-2": {
"template": "minimal",
"score": 20,
"title": "教学楼南侧",
"body": "这里是重要转折点。",
"autoPopup": false,
"once": true,
"priority": 1,
"clickTitle": "教学楼南侧",
"clickBody": "这个点配置成点击查看。",
"contentExperience": {
"type": "h5",
"url": "https://example.com/content/control-2",
"bridge": "content-v1",
"presentation": "sheet"
},
"clickExperience": {
"type": "h5",
"url": "https://example.com/content/control-2-click",
"bridge": "content-v1",
"presentation": "dialog"
}
},
"finish-1": {
"template": "focus",
"title": "比赛结束",
"body": "恭喜完成本次路线。",
"autoPopup": true,
"once": true,
"priority": 2,
"clickTitle": "终点说明",
"clickBody": "点击终点可再次查看结束说明。"
}
}
game 字段game.modestringclassic-sequentialscore-ogame.rulesVersionstring"1"game.sessiongame.session.startManuallybooleantruegame.session.requiresStartPunchbooleantruetruegame.session.requiresFinishPunchbooleantruefalsegame.session.autoFinishOnLastControlbooleanfalsegame.session.maxDurationSecnumber5400game.punchgame.punch.policystringenter-confirmenterenter-confirmgame.punch.radiusMetersnumber5game.punch.requiresFocusSelectionbooleanfalsefalsegame.sequence.skip仅顺序赛相关。
game.sequence.skip.enabledbooleanfalsegame.sequence.skip.radiusMetersnumber30game.sequence.skip.requiresConfirmbooleantruegame.scoringgame.scoring.typestringscoregame.scoring.defaultControlScorenumber10game.guidancegame.guidance.showLegsbooleantruefalsegame.guidance.legAnimationbooleantruefalsegame.guidance.allowFocusSelectionbooleanfalsetruegame.visibilitygame.visibility.revealFullPlayfieldAfterStartPunchbooleantruegame.finishgame.finish.finishControlAlwaysSelectablebooleanfalsetruegame.telemetry.heartRateagenumber30restingHeartRateBpmnumber62userWeightKgnumber65game.feedbackgame.feedback.audioProfilestringdefaultgame.feedback.hapticsProfilestringdefaultgame.feedback.uiEffectsProfilestringdefaultresourcesresources.audioProfilestringdefaultresources.contentProfilestringdefaultresources.themeProfilestringdefault-racedebugdebug.allowModeSwitchbooleanfalsedebug.allowMockInputbooleanfalsedebug.allowSimulatorbooleanfalse当前客户端对配置的处理原则是:
clickTitle/clickBody 缺失时回退到 title/body1、终点 2也就是说:
大部分配置项都不是强制必填,先保证主骨架完整即可。
后续每次新增配置项时,应同步更新:
event 目录下的配置样例这样可以保证: