C++ 引擎接口到 mock 的映射(INTERFACE_MAP)
第0条(基线)依据=C++ 绑定与注册清单(Luna 机制、全局函数、各服务器 KScriptFuncList、闭源 UI 引擎头文件)加 Lua 使用矩阵(
tools/scan_framework_usage.lua,扫描根为modules/与scripts/,共 2525 个 Lua 文件,20260918 实测)。新增或缺失接口必须先查本表;未实现的必须补入 mock 并登记本表。
第1条(引擎全局函数)被 Lua 使用的 224 个引擎导出 API 必须全部实现(tools/compare_engine_usage.lua 校验零缺失;运行时门禁为 tests/harness/run_framework_engine_completeness_test.lua)。分类与覆盖:
类别(实现位置 framework_engine.lua 章节) |
覆盖 |
|---|---|
| 时间与时钟 | 服务器时间、逻辑帧、循环、微秒、纳秒、毫秒、时区与偏差、日期互转、时间调整、循环时间 |
| 服务器身份与拓扑 | 中心 ID、中心名与信息、已连接中心系、已连接场景服系、本地场景服 ID、服务器索引与名、程序名、连接索引、世界索引、GS 信息系、随机 GS、控制服 ID、队列计数 |
| 服务器设置 | 开服与合服时间、世界等级、人数上限、跨服开关、建角校验、等级上限、开关类、URL 类 |
| 实体与玩家 | 玩家、在局玩家、NPC、机关、角色实体、遍历系、计数系、批量系、判定系、方向 |
| 角色 | 按 ID 或名查询、账号角色列表、全角色、在线角色系、踢出、冻结、改名、团队 ID、账号切换、白名单、类型掩码 |
| 数值与杂项 | 整数运算、目录创建、GUID、文件名哈希、文本过滤系、名称过滤系、封禁文本系、调试与平台判定、模块 ID、语言、日志文件、设备 ID、本地 IP、打开 URL、运行外部程序、资源包、易盾与 TMG 语音 SDK |
| 序列化 | 严格版序列化与反序列化(确定性文本、可往返、循环引用保护、非法输入返回空) |
| 网络全局 | Send 系、广播系、Call 系、UI 事件系、HTTP 结果下发、世界激活、AI 剧情注册(全部经消息总线,无路由时安全返回) |
| HTTP | 请求发送、HttpPost、请求计数、Curl 池、帧配额(请求记录可模拟响应) |
| 地图与场景 | 场景与地图信息、副本创建与重置、相邻与网络距离、同场景判定、飞行距离 |
| 战斗与技能 | 技能、Buff、NPC 模板、属性与关系力、设置重载 |
| 配置与存档 | 配置表加载、脚本重载、脚本 DB 表、角色与账号存取、数据获取、序列号、备份信息 |
| 市场与畅游点 | 市场商品、摆摊、购买、畅游点兑换与发放与查询与日志 |
| 日志服与合服工具 | LC 信息、目录操作、空闲帧、日志服关闭、合服工具退出与重命名 |
| 引擎全局 | 性能日志、内存转储、内存池、错误处理、栈信息、默认对齐、平台位数、LightUserData |
配置注入:Mock.tEngineConfig 全字段必须可注入与断言;实体注册必须经 Mock_RegisterEntity、Mock_RegisterNpc、Mock_RegisterDoodad。
第2条(全局函数)
| C++ 全局接口 | mock 实现位置 | 语义 |
|---|---|---|
| MJLOG 分级日志 | framework.lua |
分级 stub,可覆盖输出 |
| 富文本日志 | framework.lua |
stub;产品以 local 引用捕获,覆盖必须在加载前完成 |
| GetCurrentTime/GetMilliSecond | framework.lua |
返回虚拟时钟毫秒 |
| GetServerTime | framework_engine.lua |
等于 GetCurrentTime |
| GetLogicFrame/GetCurrentLoop | framework_engine.lua |
逻辑帧计数,Tick 推进 |
| Random | framework.lua |
确定性种子 |
| Include | framework.lua |
模块缓存 stub |
| FireEvent | loader.lua |
真实分发:订阅表加 pcall 保护 |
| FireModuleEvent | framework.lua |
真实分发:module 订阅者加全局 param,可关闭 |
| 语音播放系 | framework.lua |
stub,播放行为纳入追踪 |
| GetPlayingRole/GetRole/GetPlayer | framework.lua |
玩家注册表;GetPlayer 按本服在局判定 |
| 实体查询系 | framework_engine.lua |
实体注册表 |
| Framework_RegisterPlayer | framework.lua |
注册玩家并补属性容器、方法、场景与实体表 |
| L2CGetAttrValue | framework.lua |
玩家属性读取 |
| GetWnd/GetStringEx | framework_ui.lua |
虚拟控件树与文本资源 |
| PlayPositionAnimate | framework.lua |
虚拟动画,定时器驱动回调 |
| 配置加载系 | framework.lua |
GetGlobalTable、GetRuleTable(测试注入优先)、GetParamTable |
第3条(网络层)
| 接口 | mock 实现 | 路由 |
|---|---|---|
| CallServer | framework.lua |
客户端到服务器 |
| CallClient | framework.lua 与 node_ps.lua |
按 dwID 到对应客户端节点 |
| CallCenter | node_ps.lua |
转发链;冒号调用存在 self 偏移,必须核对 |
| CallCenterByCenterID 等 | framework.lua |
按节点路由 |
| Broadcast 与 CenterBroadcast 系 | framework.lua |
全量实现,广播等于全客户端投递 |
| RegisterEvent/UnRegisterEvent | framework.lua |
真实注册表,env 捕获防重,经 FireModuleEvent 分发 |
| SavedData 与 UserData 系 | framework.lua |
按调用者 env 隔离存储 |
| GetEnv | framework.lua |
返回调用者 env |
| StartActivate/StopActivate | framework.lua |
帧回调注册,默认不驱动 |
| RegisterDataDealFunc 与 RegisterProtocol 与 RegisterFunction | framework.lua |
登记表 |
| 客户端路由表 | node_client.lua |
C2S 路由与 MC 桩节点 |
第4条(定时器)
| C++ 接口 | mock 实现 | 说明 |
|---|---|---|
| CreateTimer | Mock.TimerCreate |
虚拟定时器;0 与负延迟强制 1ms;房间 ID 必须伴随存储与 trace |
| CloseTimer/StopTimer/CancelTimer | Mock.TimerClose |
单定时器置死 |
| RemoveTimersByRoom | Mock.TimerRemoveByRoom |
批量置死、输出事件、返回清除数;他房不受影响 |
| DoEvents | stub | trace 化 |
| GetRemainingTime/GetTimerCount | Mock.TimerRemaining |
剩余时间与计数 |
第5条(控件系统)闭源 UI 引擎由 framework_ui.lua 的 VirtualWindow 虚拟化(247 方法,20260918 实测),分类:
| 类别 | 方法 |
|---|---|
| 树操作 | 深度查找与自动创建、模板创建、子窗口管理、销毁、挂接 |
| 显隐 | 显示、隐藏、查询、设置;级联语义见 ARCHITECTURE.md 第9条 |
| 文字 | 文本读写、字体、行数与多行、显示文本 |
| 资源与纹理 | 纹理、图片、图标、影片、视频、声音、音乐、字符串资源 |
| 动画 | 淡入淡出、透明度、播放与停止、动画与控制、特效、缓动与时长与循环与速度、位置动画 |
| 位置与尺寸 | 坐标读写、尺寸、锚点、Z 序、偏移、缩放、旋转、角度 |
| 事件 | 窗口事件注册与查询、事件触发 |
| 列表与选项 | 项增删改查、选项、选择、勾选、展开、滚动 |
| 状态 | 可用、焦点、灰度、数据与值、帧、时间、选中、棋盘 |
| 批处理 | 批处理起止 |
| 布局 | 布局加载、设置、自适应 |
Mock.cfg 开关与引擎枚举(窗口事件类型 107 项,20260918 实测)必须由 loader.lua 全量注入;开关语义见 ARCHITECTURE.md 第9条。
第6条(已知缺口)
(一)Mock.cfg.bDriveActivate 默认关闭,帧回调不驱动。
(二)node_ps.lua 缺 PlayServer2MatchCenter_PullResult 路由;拉取类测试必须自包装转发或补路由。
(三)Mock.cfg.nPrimaryPlayerID 必须可配置;未设置时零行为变化。
(四)断线重连、丢包重试、帧驱动能力由 frame_driver.lua 提供;缺口必须随用随补,禁止降级测试。