posts

在线联机原型全集第 17 章导读:战棋对战的战术锁步与命令缓冲区

本页是《在线联机原型全集》第 17 章的章节导读,聚焦回合制战术对战原型 proto-017-tactic-lockstep。该章把第 16 章的实时帧同步替换为回合步,把自由输入抽象为高层命令,用命令缓冲区作为唯一权威输入,串起「计划-冻结-结算-广播-清理」五相位,并在此基础上实现事件溯源、悔棋分支回放与观战。导读提炼了六个核心验证目标(命令缓冲区版本冻结、确定性解释器与事件日志、双层冲突裁定、战争迷雾、断线恢复、悔棋与分支回放)、技术栈建议与相邻章节脉络,帮助读者理解锁步一致性如何替代实时帧同步成为回合制对战的一致基石。

第 17 章回答的是「当玩家不需要抢毫秒、只需要抢回合时,一致性该怎么做」。答案是把实时帧同步换成战术锁步:客户端在计划阶段离线规划,服务器在冻结瞬间一次性裁定并发冲突,再用确定性解释器产出事件日志。这一章的价值在于,它把第 16 章的关键帧与增量恢复经验迁移到回合语义上,同时第一次引入「悔棋」与「分支回放」——这两项能力只有在事件溯源架构下才成立。

本章定位

核心验证目标

  1. 五相位回合结构:PLAN(离线规划)→ LOCK(命令缓冲区冻结)→ RESOLVE(确定性解释器结算)→ SYNC(广播事件流与回合哈希)→ CLEANUP(刷新冷却、增益与地形效果)。
  2. 命令缓冲区版本化:客户端提交 cmd_buf(ver=n),冻结时写入 frozen_ver=n+1;计划阶段可多次覆盖以最后版本为准,LOCK 之后一律拒绝。
  3. 命令抽象层次:原子命令(移动、朝向、攻击、技能、守望、交互)、复合命令(路径、条件分支、序列)与应急条件(接触时停靠/闪避/交战),禁止客户端直接写入坐标与属性。
  4. 确定性结算:随机数来自服务器同一 RNG 种子,结算顺序固定,锁步期间不接收新命令,计划阶段的并发冲突在冻结瞬间一次裁定。
  5. 双层冲突裁定:合法性过滤(预算不足、目标非法、前置条件不满足直接删除并留错误事件)与竞争决胜(优先级序、敏捷值降序、单位 ID 升序、同格抢占、资源抢占锁)。
  6. 事件溯源衍生能力:悔棋与分支回放、断线恢复、观战与回放共享同一份事件日志,回放即重放事件流。

技术栈建议

层次推荐选型说明
服务端Go 优先,Java 备选承载冻结、解释器与事件日志
客户端TypeScript 或 Unity计划阶段的路径与技能预览
规则共享可选 WASM前后端共享确定性规则库
协议HTTP 加 WebSocketHTTP 用于配对与断线恢复,WebSocket 用于指令与状态广播
时钟Tick 即回合步与实时帧不同,无需高频心跳

本章文章

文章核心内容
在线联机原型全集:第 17 章 战棋对战六边格棋盘、计划-锁步-结算三阶段、命令缓冲区、冲突裁定、战争迷雾、悔棋与分支回放

与相邻章节的关系

相关专题

全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev Products Lua 写作