战斗仿真以 60 Hz 推进。运动、瞄准、弹道、装甲、伤害、装填、点亮与比赛结果都由权威状态解算——而不是由渲染帧解算。
固定步长战斗循环
权威步使用米、秒、弧度,并采用固定的 1/60 秒间隔。输入先被采样为显式的车辆控制,再按稳定的顺序执行运动、战斗、点亮与结果评估。渲染速率的改变不会影响仿真步的数量与顺序。
帧时间尖峰会被累积为有界固定步。权威随机性使用种子或注入的随机源。影响射击、装填、模块状态或比赛结果的规则会排除挂钟时间和 Math.random()。
房主运行对局
房间 Worker 协调发现和信令,不运行每秒六十步的战斗模拟。房主浏览器运行权威对局,通过 WebRTC 与其他玩家交换数据。访客发送输入,房主处理运动、射击、装填、碰撞、伤害、机器人及结果。这与历史文档中的旧专用服务器架构不同。
本地车辆预测运动,并根据房主确认的状态校正;远端车辆在快照间插值。附近及近期交战的敌人比远处可见对象更频繁更新。战斗事件独立于这些距离分级保持有序。预测改善响应,但不能自行判定命中或改变权威结果。

可见性与信任边界
访客快照仅包含观察者有权看见的敌人。过滤发生在编码之前,不会仅把隐藏坐标发给客户端后再由渲染器隐藏。队伍视野及观战视角也控制名称、小地图与表现层。
浏览器房主仍是某位玩家的设备,必须持有权威世界状态。点对点房主不能被描述为与独立专用服务器拥有相同信任边界。协议检查输入顺序和消息结构,但不能将不可信房主变成可信赛事基础设施。
地形与机动
高度场回答车辆支撑、弹丸碰撞、相机净空与道具布置。地表类别影响抓地力与表现。道路、坡地、山脊、水边与半埋射击位围绕预期的装甲路线组合而成。
车辆悬挂对地面的采样与运动、弹道地形查询共用同一份地表。

验证
可在 Node 运行的自测覆盖运动、战斗、点亮、导弹制导、特殊动作、AI 瞄准以及完整的权威比赛。浏览器探针再补充炮口贯通、弹丸飞行、实景撞击特效与 HUD 对齐。
改动共享战斗规则后,请运行 node src/sim/combat.selftest.mjs、node src/sim/authoritativeMatch.selftest.mjs 与 npm test。
驾驶、腾空与着陆损伤
运动模拟固定每秒六十步。发动机功率、重量、前进及倒车上限、履带状况、地形阻力和车体转速共同决定操控。渲染对状态进行插值,不应让帧率改变移动速度。手刹作用于接地状态,跳跃着陆不应自动锁住手刹。
坠落属于物理碰撞,不只是高度阈值。质量、碰撞速度、姿态及模式物理参数都会影响结果。低重力既改变抛物线,也改变可安全到达的地形。避免从桥台或悬崖盲跳,应选择能看清落点并有足够缓冲空间的路线。
