火炬之光 2 的移动底层由「目标点派发 + 网格 A* 寻路」驱动:玩家点击地面后,引擎接收到一条“移动至目标点”的指令,后续的路径规划、障碍规避、模型转向与行走动画均由引擎原生系统接管。原版 PC 端并未提供手柄支持,亦未暴露“摇杆/方向移动”的直接输入接口,键盘按键仅用于技能与界面交互。

因此,实现 WASD 移动的核心思路并非直接修改玩家坐标,而是顺应引擎原生的移动机制:每帧根据键盘方向键输入(结合当前摄像机视角朝向)计算出一个近距离的目标坐标点,再向引擎派发一条“移动至目标点”的原生指令。采用派发移动指令方案的优势十分明显:

  • 寻路、碰撞、地面贴合、朝向旋转与移动动画全部复用引擎成熟的原生逻辑,无需从零自行开发与维护;
  • 保障联机一致性:移动指令属于底层网络同步的原生数据流,若暴力改写世界坐标必然引发严重的位置不同步(Desync)。

核心底层锚点已通过 IDA 逆向实证:

  • 本地玩家实例获取:全局共享的 game-state 单例被 2000 多处底层逻辑引用,本地玩家单位指针稳定保存在其固定槽位中,其有效性经触发区系统“是否为本地玩家”的校验逻辑交叉确认,判定可靠稳定。
  • 寻路指令派发入口:引擎内部存在一个逐单位调用的寻路派发函数,自动以当前单位坐标为起点,传入目标 XZ 平面坐标即可触发 A* 寻路并同步设置移动状态与朝向 —— 这正是 WASD 移动逻辑每帧需要调用的关键入口。

功能交付载体为已有的 Mikuro Runtime(d3d9 代理层,冷却缩减与掉落过滤模块均运行于此),WASD 移动将作为其扩展组件加入。后续需重点调优的关键环节包括:连续指令派发下行走动画的平滑度、按键节流与松键急停的响应手感,以及摄像机俯仰视角与按键矢量的合成校准。

在经历了长达十余年的鼠标寻路点击后,是时候为键盘移动赋予丝滑的原生级体验了。