本文档用于给服务端和后台配置设计提供一份可直接落地的积分赛基础模板。
目标是先把积分赛入口结构定稳,后续程序功能再逐步细化。
适用于最基础的积分赛玩法:
推荐主配置结构如下:
{
"schemaVersion": "1",
"version": "2026.03.25",
"app": {},
"map": {},
"playfield": {},
"game": {},
"resources": {},
"debug": {}
}
{
"schemaVersion": "1",
"version": "2026.03.25",
"app": {
"id": "lxcb-001",
"title": "雪熊领秀城区积分赛",
"locale": "zh-CN"
},
"map": {
"tiles": "lxcb-001/tiles/",
"mapmeta": "lxcb-001/tiles/meta.json",
"declination": 6.91,
"initialView": {
"zoom": 17
}
},
"playfield": {
"kind": "control-set",
"source": {
"type": "kml",
"url": "lxcb-001/course/c01.kml"
},
"CPRadius": 6,
"controlOverrides": {
"control-1": {
"score": 10
},
"control-2": {
"score": 20
},
"control-3": {
"score": 30
},
"control-4": {
"score": 40
}
},
"metadata": {
"title": "校园积分赛控制点集",
"code": "score-o-c01"
}
},
"game": {
"mode": "score-o",
"rulesVersion": "1",
"session": {
"startManually": true,
"requiresStartPunch": true,
"requiresFinishPunch": false,
"autoFinishOnLastControl": false,
"maxDurationSec": 5400
},
"punch": {
"policy": "enter-confirm",
"radiusMeters": 10,
"requiresFocusSelection": true
},
"scoring": {
"type": "score",
"defaultControlScore": 10
},
"guidance": {
"showLegs": false,
"legAnimation": false,
"allowFocusSelection": true
},
"visibility": {
"revealFullPlayfieldAfterStartPunch": true
},
"finish": {
"finishControlAlwaysSelectable": true
},
"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
}
}
appid
活动或配置实例 idtitle
活动标题locale
语言环境maptiles
瓦片根路径mapmeta
地图 meta 地址declination
磁偏角initialView.zoom
初始缩放级别playfieldkind
当前推荐 control-setsource.type
当前推荐 kmlsource.url
KML 地址CPRadius
检查点绘制半径controlOverrides
每个控制点的积分和后续扩展元数据playfield.controlOverrides当前阶段最推荐至少放:
score示例:
"control-1": {
"score": 10
}
这样可以保证:
game.sessionstartManually
是否手动开始requiresStartPunch
是否必须先打开始点requiresFinishPunch
是否必须打终点autoFinishOnLastControl
积分赛通常为 falsemaxDurationSec
最大时长game.punchpolicy
当前推荐 enter-confirmradiusMeters
打点半径requiresFocusSelection
是否必须先选中目标点后才能打卡game.scoringtype
当前推荐 scoredefaultControlScore
如果某个点没单独配置分数时的默认值game.guidanceshowLegs
积分赛基础版建议 falselegAnimation
积分赛基础版建议 falseallowFocusSelection
建议 truegame.visibilityrevealFullPlayfieldAfterStartPunch
开始点打卡后是否显示完整控制点集合game.finishfinishControlAlwaysSelectable
积分赛建议支持随时选终点结束时,设为 truegame.telemetry通用体能参数。
game.feedback反馈 profile 绑定。
resources资源 profile 绑定。
debug调试相关开关。
积分赛当前阶段建议至少保证以下字段存在:
map.tilesmap.mapmetamap.declinationplayfield.kindplayfield.source.typeplayfield.source.urlplayfield.CPRadiusgame.modegame.punch.policygame.punch.radiusMetersgame.punch.requiresFocusSelectiongame.scoring.type如果服务端还没有全部细项,建议先采用以下默认值:
{
"game": {
"session": {
"startManually": true,
"requiresStartPunch": true,
"requiresFinishPunch": false,
"autoFinishOnLastControl": false
},
"punch": {
"policy": "enter-confirm",
"radiusMeters": 10,
"requiresFocusSelection": true
},
"scoring": {
"type": "score",
"defaultControlScore": 10
},
"guidance": {
"showLegs": false,
"legAnimation": false,
"allowFocusSelection": true
},
"finish": {
"finishControlAlwaysSelectable": true
}
}
}
当前阶段建议坚持以下边界:
也就是说:
playfield.kind = control-setcontrolOverrides.score 负责分值game.guidance.allowFocusSelection = true 负责选中目标逻辑当前客户端迁移时,建议服务端先完成:
playfield.controlOverridesgame.session / game.punch / game.scoring / game.guidance / game.finish先把静态积分赛入口结构定稳,再逐步扩展动态积分和高级玩法能力。
积分赛配置当前阶段建议:
playfield.kind = control-setplayfield.controlOverrides 承载点位分值game.scoring / game.punch / game.guidance / game.finish 承载玩法规则