本文档用于定义当前项目推荐的“运行时编译层”结构,也就是把系统默认值、玩法默认值、活动配置、玩家设置编译成统一运行时 profile 的中间层。
目标:
说明:
当前系统里至少有 4 类来源:
如果页面、引擎、规则层分别自己去判断这些来源,问题会很快出现:
所以推荐做法是:
先编译,再运行。
也就是:
默认值 / 配置 / 玩家设置 -> Runtime Profile -> MapEngine / Rule / HUD
推荐顺序:
系统默认值 -> 玩法默认值 -> 活动配置
适用:
推荐顺序:
系统设置默认值 -> 活动 settings 默认值 -> 玩家本地设置值
锁态单独处理:
系统默认锁态 -> 活动 settings 锁态 -> 本局锁态生命周期
说明:
推荐顺序:
系统遥测默认值 -> 活动 telemetry 默认值 -> 玩家身体数据
适用:
当前建议至少编译成以下几块:
map负责地图底座级运行参数:
game负责玩法与规则层运行参数:
settings负责系统设置页相关运行参数:
telemetry负责遥测层运行参数:
presentation负责表现层 profile:
feedback负责反馈层 profile:
第一版运行时编译骨架已落在:
当前已经开始编译的内容:
gamesettingstelemetrypresentationfeedbackmap当前已接入页面 / 引擎的部分:
game profile 字段当前接入说明:
settings / telemetry / feedback 已开始作为日常运行入口使用settings profile 回灌 MapEngine”settings profile 现已通过 MapEngine.applyCompiledSettingsProfile(...) 统一应用,不再由页面逐项调用各类 handleSet...presentation 已开始通过编译层回写 MapEngine 表现参数game 当前已先接入模式、关门时间、打点和跳点这组核心字段map 已开始接入地图底座参数和配置状态文本这组基础字段MapEngine.applyRemoteMapConfig(...) 已开始退回为原始场地与资源入口,不再继续双写已编译字段后续建议继续并入:
MapEngine.applyRemoteMapConfig(...) 的配置归一入口map profilegame profile 字段courseToGameDefinition建议按以下顺序继续收代码:
settings profiletelemetry profilefeedback profile补充:
这样风险最小,也最容易逐步验证。
运行时编译层应该只做两件事:
不应该做的事:
也就是说:
后续推荐统一按这条链走:
系统默认值 -> 玩法默认值 -> 活动配置 -> 玩家设置 -> 运行时编译层 -> 引擎 / 页面 / 规则
这样配置越多,系统越不容易乱;后续后台做复杂了,也还是有一层中间结构兜住。