文档版本:v1.0 最后更新:2026-04-02 08:28:05
本文档用于整理 当前客户端已经消费或已经预留承载的配置项,作为事件配置、后台配置和联调时的统一参考。
目标:
说明:
当前推荐结构:
{
"schemaVersion": "1",
"version": "2026.03.31",
"app": {},
"settings": {},
"map": {},
"playfield": {},
"game": {},
"resources": {},
"debug": {}
}
schemaVersionstring"1"versionstring2026.03.27appobjectsettingsobjectmapobjectplayfieldobjectgameobjectresourcesobjectdebugobjectsettings 字段补充推荐结构:
{
"settings": {
"autoRotateEnabled": {
"value": true,
"isLocked": false
},
"trackDisplayMode": {
"value": "tail",
"isLocked": true
},
"gpsMarkerStyle": {
"value": "beacon",
"isLocked": false
}
}
}
规则:
value 表示该设置项的活动默认值isLocked 表示该设置项是否允许玩家修改value 会和玩家本地持久化值一起参与解析isLocked 不持久化,只受系统默认值和活动配置控制isLocked 只在当前游戏配置运行生命周期内生效;本局结束或主动退出后失效app 字段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.controlDefaults / playfield.controlOverrides推荐优先使用:
playfield.controlDefaults:活动级默认playfield.controlOverrides:单点重载默认覆盖顺序:
系统默认值 -> 玩法默认值 -> playfield.controlDefaults -> playfield.controlOverrides
playfield.controlDefaultsobject当前支持字段:
scoretemplatetitlebodyclickTitleclickBodyautoPopuponcepriorityctascontentExperienceclickExperiencepointStylepointColorHexpointSizeScalepointAccentRingScalepointGlowStrengthpointLabelScalepointLabelColorHexplayfield.controlOverridesplayfield.controlOverrides 用于对起点、检查点、终点做单点覆盖。
start-1control-1、control-2、control-3finish-1scorenumberplayfield.controlDefaults.score,则当前点以单点值为准titlestringtemplatestringminimalstoryfocusfocusstorybodystringclickTitlestringclickBodystringautoPopupbooleanfalsegame.punch.policy = "enter",则无论这里如何配置,都不自动弹出autoPopup 时,起点和普通点完成后不弹白卡oncebooleanfalseprioritynumber12contentExperienceobjectnativeh5contentExperience.typestringnativeh5contentExperience.urlstringtype = "h5" 时对应的 H5 页面地址contentExperience.bridgestring"content-v1"contentExperience.presentationstringfullscreensheetdialogfullscreenweb-view 不再承担局部弹窗职责;当前应按“原生内容卡 + H5 全屏详情页/任务页”理解。clickExperienceobjectnativeh5clickExperience.typestringnativeh5clickExperience.urlstringtype = "h5" 时对应的 H5 页面地址clickExperience.bridgestring"content-v1"clickExperience.presentationstringfullscreensheetdialogfullscreenweb-view 作为局部弹窗承载。pointStylestringclassic-ringsolid-dotdouble-ringbadgepulse-corepointColorHexstring#27ae60pointStyle 一起使用,未配置时回退到玩法样式 profilepointSizeScalenumber0.6 ~ 1.411 会放大点位,小于 1 会缩小点位pointAccentRingScalenumber1.0 ~ 1.6pointGlowStrengthnumber0 ~ 100 为无光晕,越接近 1 光晕越明显pointLabelScalenumber0.7 ~ 1.31pointLabelColorHexstring#ffffff"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": "fullscreen"
},
"clickExperience": {
"type": "h5",
"url": "https://example.com/content/control-2-click",
"bridge": "content-v1",
"presentation": "fullscreen"
}
},
"finish-1": {
"template": "focus",
"title": "比赛结束",
"body": "恭喜完成本次路线。",
"autoPopup": false,
"once": true,
"priority": 2,
"clickTitle": "终点说明",
"clickBody": "点击终点可再次查看结束说明。"
}
}
game 字段game.modestringclassic-sequentialscore-ogame.rulesVersionstring"1"game.sessiongame.session.startManuallybooleanfalsefalsegame.session.requiresStartPunchbooleantruetruegame.session.requiresFinishPunchbooleantruefalsegame.session.autoFinishOnLastControlbooleanfalsegame.session.minCompletedControlsBeforeFinishnumber01game.session.maxDurationSecnumber5400game.punchgame.punch.policystringenter-confirmenterenter-confirmgame.punch.radiusMetersnumber5game.punch.requiresFocusSelectionbooleanfalsefalsegame.sequence.skip仅顺序赛相关。
game.sequence.skip.enabledbooleantruefalsegame.sequence.skip.radiusMetersnumbergame.punch.radiusMeters * 2game.sequence.skip.requiresConfirmbooleanfalsegame.scoringgame.scoring.typestringscoregame.scoring.defaultControlScorenumber110game.guidancegame.guidance.showLegsbooleantruefalsegame.guidance.legAnimationbooleantruefalsegame.guidance.allowFocusSelectionbooleanfalsetruegame.visibilitygame.visibility.revealFullPlayfieldAfterStartPunchbooleantruegame.finishgame.finish.finishControlAlwaysSelectablebooleanfalsetruegame.telemetry.heartRateagenumber30restingHeartRateBpmnumber62userWeightKgnumber65game.feedbackgame.feedback.audioProfilestringdefaultgame.feedback.hapticsProfilestringdefaultgame.feedback.uiEffectsProfilestringdefaultgame.audio.distantDistanceMetersnumber80game.audio.approachDistanceMetersnumber20game.audio.readyDistanceMetersnumber5game.punch.radiusMetersgame.audio.cues["guidance:distant"].loopGapMsnumber4800game.audio.cues["guidance:approaching"].loopGapMsnumber950game.audio.cues["guidance:ready"].loopGapMsnumber650game.audio.cues["guidance:distant" | "guidance:approaching" | "guidance:ready"].volumenumber0 ~ 1resourcesresources.audioProfilestringdefaultresources.contentProfilestringdefaultresources.themeProfilestringdefault-racedebugdebug.allowModeSwitchbooleanfalsedebug.allowMockInputbooleanfalsedebug.allowSimulatorbooleanfalsegame.presentationgame.presentation.sequential.controls.defaultobjectstyle:classic-ring | solid-dot | double-ring | badge | pulse-corecolorHex:十六进制颜色,例如 #cc006bsizeScale:点位尺寸倍率accentRingScale:强调环尺寸倍率glowStrength:点位光晕强度labelScale:编号文字尺寸倍率labelColorHex:编号文字颜色game.presentation.sequential.controls.currentobjectgame.presentation.sequential.controls.completedobjectgame.presentation.sequential.controls.skippedobjectgame.presentation.sequential.controls.startobjectgame.presentation.sequential.controls.finishobjectgame.presentation.sequential.legs.defaultobjectstyle:classic-leg | dashed-leg | glow-leg | progress-legcolorHex:十六进制颜色widthScale:路线腿宽度倍率glowStrength:路线腿光晕强度game.presentation.sequential.legs.completedobjectplayfield.legOverridesobjectplayfield.legDefaults 写整场腿线默认,再用 legOverrides 写单腿例外playfield.legDefaultsobjectstylecolorHexwidthScaleglowStrength键名建议:
leg-1leg-2leg-3字段:
style:classic-leg | dashed-leg | glow-leg | progress-legcolorHex:十六进制颜色widthScale:路线腿宽度倍率glowStrength:路线腿光晕强度示例:
"legOverrides": {
"leg-2": {
"style": "glow-leg",
"colorHex": "#27ae60"
}
}
game.presentation.scoreO.controls.defaultobjectgame.presentation.scoreO.controls.focusedobjectgame.presentation.scoreO.controls.collectedobjectgame.presentation.scoreO.controls.startobjectgame.presentation.scoreO.controls.finishobjectgame.presentation.scoreO.controls.scoreBandsarray数组项字段:
min:分值下界,含max:分值上界,含style:classic-ring | solid-dot | double-ring | badge | pulse-corecolorHex:十六进制颜色sizeScale:该积分档位的点位尺寸倍率accentRingScale:该积分档位的强调环倍率glowStrength:该积分档位的光晕强度labelScale:该积分档位的编号文字尺寸倍率labelColorHex:该积分档位的编号文字颜色示例:
"presentation": {
"scoreO": {
"controls": {
"scoreBands": [
{ "min": 0, "max": 19, "style": "classic-ring", "colorHex": "#56ccf2" },
{ "min": 20, "max": 49, "style": "classic-ring", "colorHex": "#f2c94c" },
{ "min": 50, "max": 999999, "style": "double-ring", "colorHex": "#eb5757" }
]
}
}
}
game.presentation.trackobjectgame.presentation.track.modestringnone:不显示轨迹tail:彗尾拖尾full:全轨迹fulltailgame.presentation.track.stylestringclassicneonneongame.presentation.track.tailLengthstringshortmediumlonggame.presentation.track.colorPresetstringmintcyanskybluevioletpinkorangeyellowgame.presentation.track.tailMetersnumbertailLength 自动映射game.presentation.track.tailMaxSecondsnumbergame.presentation.track.fadeOutWhenStillbooleangame.presentation.track.stillSpeedKmhnumbergame.presentation.track.fadeOutDurationMsnumbergame.presentation.track.colorHexstringcolorPreset 自动映射game.presentation.track.headColorHexstringcolorPreset 自动映射game.presentation.track.widthPxnumbergame.presentation.track.headWidthPxnumbergame.presentation.track.glowStrengthnumberstandard / lite 会自动做 glow 强度降级game.presentation.gpsMarkerobjectgame.presentation.gpsMarker.visiblebooleantruegame.presentation.gpsMarker.stylestringdotbeacondiscbadgebeacongame.presentation.gpsMarker.sizestringsmallmediumlargemediumgame.presentation.gpsMarker.colorPresetstringmintcyanskybluevioletpinkorangeyellowcyangame.presentation.gpsMarker.colorHexstringcolorPreset 自动映射game.presentation.gpsMarker.ringColorHexstringcolorPreset 自动映射game.presentation.gpsMarker.indicatorColorHexstringcolorPreset 自动映射game.presentation.gpsMarker.showHeadingIndicatorbooleantruegame.presentation.gpsMarker.animationProfilestringminimaldynamic-runnerwarning-reactivedynamic-runnergame.presentation.gpsMarker.logoUrlstringgame.presentation.gpsMarker.logoModestringcenter-badge当前客户端对配置的处理原则是:
clickTitle/clickBody 在最小模板下默认关闭,不再回退到 title/body1、终点 2也就是说:
大部分配置项都不是强制必填,先保证主骨架完整即可。
如果只提供顺序赛最小模板,系统默认按以下流程处理:
2 倍1 分基础分quiz CTA如果只提供积分赛最小模板,系统默认按以下流程处理:
quiz CTA1 个普通积分点后,结束点才解锁,且不需要先设为目标点后续每次新增配置项时,应同步更新:
event 目录下的配置样例这样可以保证: