# 程序默认规则基线 本文档用于定义当前客户端在**不依赖活动配置细项**时,程序层应该内建的默认规则。 目标: - 先把程序能力层的默认行为定住 - 让代码实现优先对齐这一套基线 - 等默认行为稳定后,再决定哪些能力值得开放成配置 说明: - 本文档讲的是**程序默认规则** - 它先于活动配置存在 - 它不讨论后台录入方式 - 它不追求一次把所有参数开放出去 - 当前这批玩法默认值已开始集中收口到 [gameModeDefaults.ts](D:/dev/cmr-mini/miniprogram/game/core/gameModeDefaults.ts) - 设置页默认值与锁态已开始集中收口到 [systemSettingsState.ts](D:/dev/cmr-mini/miniprogram/game/core/systemSettingsState.ts) --- ## 1. 总体原则 当前规则收敛顺序固定为: 1. 先定程序默认能力 2. 再定玩法默认差异 3. 最后才开放活动配置覆盖 程序层默认规则要满足 3 个要求: - 默认可玩:不给额外配置也能顺畅跑完一局 - 默认统一:相同类型行为在不同玩法下表达一致 - 默认克制:不把调试、测试、历史试验行为带进最小流程 补充一条设置页原则: - 设置值和锁态分离管理,避免运行时状态被历史缓存污染 --- ## 2. 程序默认层次 前台默认只保留 5 类可见反馈层。 同时,程序默认值分成两条并行基线: - 对局规则默认值 - 系统设置默认值 ### 2.1 黑底引导提示条 职责: - 只负责告诉玩家“下一步该做什么” 规则: - 自动消失 - 可手动关闭 - 文案变化时可有轻动画 - 默认只配轻震动 - 不承担结果反馈 - 不承担内容说明 ### 2.2 彩色短反馈条 职责: - 只负责告诉玩家“刚刚发生了什么” 规则: - 短暂出现 - 不带按钮 - 不显示长说明 - 不承担下一步引导 ### 2.3 白色内容卡 职责: - 只承载显式配置的点位内容 规则: - 默认不进入最小流程 - 默认关闭 - 仅当某个点位明确启用时才参与流程 - 浏览型卡片默认短时自动消失 - 交互型卡片只在显式开启时出现 ### 2.4 答题卡 职责: - 承载显式启用的答题玩法 规则: - 属于强交互层 - 最小模板下默认关闭 - 仅当点位显式配置 `quiz` CTA 时才进入 - 不依赖白色内容卡作为前置 ### 2.5 成绩总览页 职责: - 承载结算结果 规则: - 终点完成后直接进入 - 不再额外叠终点白卡 --- ## 3. 打点默认规则 ### 3.1 开始点 程序默认行为: - 必须先打开始点才能正式开赛 - 成功打开始点后开始计时 - 起点完成后只给短反馈,并更新引导和 HUD - 默认不弹白色开始卡 - 默认不弹答题卡 ### 3.2 普通点 程序默认行为: - 成功打点后先完成基础结算 - 最小模板下默认不弹答题卡 - 如需答题,必须显式配置点位 CTA - 默认不先弹白色内容卡 - 默认不重复得分 - 默认不重复出题 ### 3.3 结束点 程序默认行为: - 成功打终点后先给完成短反馈 - 随后直接进入结果页 - 默认不弹白色终点卡 - 默认不弹答题卡 ### 3.4 关门时间 程序默认行为: - 默认关门时间为开赛后 `2` 小时 - 距离关门时间小于等于 `10` 分钟时,HUD 第 1 页时间区切换为倒计时显示 - 倒计时显示需有区别于正常计时的强调样式 - 到达关门时间后,系统自动结束当前对局 - 超时结束必须和正常完赛、主动退出区分开 --- ## 4. 玩法默认差异 程序只内建少量玩法差异,不把所有东西做成配置。 ### 4.1 顺序打点 `classic-sequential` 默认差异: - 按顺序推进 - 默认允许跳点 - 默认跳点半径 = 打点半径的 2 倍 - 默认跳点前弹出确认 - 当前目标点由系统自动推进 - 终点默认需要在中间点都“成功或跳过”后才生效 - 普通点基础分默认 `1` - 普通点默认不附带答题奖励 ### 4.2 积分赛 `score-o` 默认差异: - 自由打点 - 默认不存在跳点 - 默认不要求先选中目标点 - 点击某个积分点时,默认只更新当前目标和 HUD 信息 - 未点击选中时,也允许直接进入任意积分点范围完成打点 - 默认至少完成 `1` 个普通积分点后,终点才解锁 - 普通点基础分默认取该点分值 - 普通点默认不附带答题奖励 --- ## 5. HUD 默认规则 HUD 属于公共程序能力,不属于某个玩法专属实现。 ### 5.1 固定结构 - HUD 固定为 2 页 - 第 1 页为比赛主信息页 - 第 2 页为心率 / 遥测页 - 异型壳子布局固定,不因玩法改变结构 ### 5.2 第 1 页默认职责 - 时间 - 里程 - 动作标签 - 目标摘要 - 目标距离 - 进度摘要 - 速度 - 临近关门时间时,时间槽位切换为倒计时 ### 5.3 第 2 页默认职责 - 心率 - 卡路里 - 平均速度 - 精度或相关遥测值 ### 5.4 遥测身体数据来源 程序默认口径: - HUD 第 2 页使用统一遥测运行时 - 活动配置里的 `game.telemetry.*` 只作为活动默认值 - 玩家年龄、静息心率、体重等身体数据,后续允许由线上接口覆盖 - 线上身体数据一旦到位,应高于活动配置生效 默认优先级: `系统默认值 -> 活动遥测默认值 -> 玩家线上身体数据` ### 5.5 玩法映射默认口径 - 顺序打点: - 目标摘要显示当前目标点 - 进度摘要显示完成进度和跳点数 - 积分赛: - 目标摘要显示当前选中目标点 - 进度摘要显示总分和收集进度 ### 5.6 目标角色默认口径 程序默认把目标拆成 4 类: - 可打目标:当前进入范围后可真正完成打点的对象 - 引导目标:用于距离音效、接近提示和弱引导的对象 - HUD 目标:用于底部信息面板距离与摘要显示的对象 - 展示高亮目标:用于地图上重点高亮的对象 约束: - 这 4 类目标不能再混用 - 积分赛里“选中目标”默认只影响 HUD 目标 - 距离音效默认只跟随引导目标,不跟随选中状态 --- ## 6. 距离反馈默认规则 距离反馈和黑底引导提示条分离管理。 ### 6.1 黑底引导提示条 - 默认只走轻震动 - 不绑定提示音 ### 6.2 距离提示 默认分为 3 档: 1. `distant` 2. `approaching` 3. `ready` 默认口径: - `ready`:进入可打点范围 - `approaching`:接近目标 - `distant`:较远但仍处于有效提醒范围 - 更远距离默认静默 默认阈值: - `distantDistanceMeters = 80` - `approachDistanceMeters = 20` - `readyDistanceMeters = 5` 默认节奏: - `distant`:弱提醒,默认间隔 `4800ms` - `approaching`:较明确提醒,默认间隔 `950ms` - `ready`:确认提醒,默认间隔 `650ms` --- ## 7. 系统设置默认规则 设置页属于程序公共能力,不属于某个玩法专属逻辑。 ### 7.1 设置项结构 每个设置项默认由两部分组成: - `value`:设置值 - `isLocked`:是否允许玩家修改 ### 7.2 默认值规则 程序默认要求: - 每个设置项都必须有系统默认值 - 玩家未手动修改时,直接使用系统默认值 - 默认值应集中维护,不散落在页面逻辑里 ### 7.3 持久化规则 程序默认要求: - `value` 需要持久化 - `isLocked` 不持久化 - 页面每次进入时,锁态都应重新按当前运行时规则计算 - 锁态只受系统默认值与活动配置影响,玩家不能在页面中修改锁态 - 设置页中的锁态徽标只做状态展示,不提供点按切换能力 - 锁态生存期:从当前游戏配置载入并进入该局开始,到本局正常结束、超时结束或主动退出为止 默认优先级: `系统设置默认值 -> 玩家本地持久化值` 锁态优先级: `系统锁态默认值 -> 当前运行时或活动规则覆盖` ### 7.4 当前已集中维护的设置基线 当前已在 [systemSettingsState.ts](D:/dev/cmr-mini/miniprogram/game/core/systemSettingsState.ts) 集中维护: - 轨迹显示 - GPS 点显示 - 侧边按钮习惯 - 自动旋转 - 指北针调校 - 北向参考 - 中央标尺显示与锚点 - 各设置项的默认锁态 --- ## 8. 最小流程基线 ### 8.1 顺序打点最小流程 1. 进入游戏,只显示开始点 2. 打开始点,开赛并显示全场 3. 按顺序推进普通点 4. 普通点打点后默认只做基础结算 5. 可触发跳点 6. 打终点后直接进入结果页 7. 如果超过 `2` 小时仍未结束,系统按超时结束处理 ### 8.2 积分赛最小流程 1. 进入游戏,只显示开始点 2. 打开始点,开赛并显示全部积分点和终点 3. 可直接前往任意积分点,或点击某个点更新当前目标 4. 进入积分点范围后成功打点 5. 普通点打点后默认只做基础结算 6. 默认至少完成 `1` 个普通积分点后可打终点结束 7. 如果超过 `2` 小时仍未结束,系统按超时结束处理 --- ## 9. 暂不开放为配置的内容 当前先不优先配置化的内容: - 弹层体系层级 - 起点是否弹白卡 - 普通点是否先白卡后答题 - 终点是否白卡后结算 - HUD 是否双页 - HUD 异型壳子结构 - 黑条提示与距离反馈的职责边界 这些内容应先作为程序默认能力稳定下来。 --- ## 10. 故障恢复基线 当前故障恢复按“轻量快照恢复”处理: - 仅恢复进行中的对局 - 仅恢复核心赛局状态、遥测累计值和地图基础视口 - 不恢复白卡、答题卡、临时动效、短反馈和提示层 - 恢复后由规则层和展示层重新计算 HUD、按钮文案、目标提示和音效状态 当前默认恢复内容: - 当前配置入口 - `startedAt / completedControlIds / skippedControlIds / currentTargetControlId / score / modeState` - 累计里程、基础心率/卡路里累计、最后 GPS 点 - `zoom / centerTile / rotation / gpsLock` 当前默认不恢复内容: - 详情卡 - 答题中间态 - 待查看内容入口 - 所有瞬时动效和提示队列 --- ## 11. 后续开放配置的原则 后续只有满足以下条件的内容,才建议开放成配置: - 运营确实会频繁改 - 改动不会破坏主流程一致性 - 改完不会引入一组新的层级冲突 优先可配置的内容应是: - 点位分值 - 点位内容是否启用 - 点位样式 - 三档距离提示阈值 - 三档距离提示间隔 --- ## 12. 一句话结论 当前阶段应以这份文档作为**程序默认能力基线**:先把最小流程、弹层职责、HUD 结构和距离反馈定死,再决定哪些内容值得进入配置层。