这是一个基于 Unity 2022.3 LTS 的轻量级帧同步客户端示例,面向 1v1 对战场景,采用 TCP + KCP + Protobuf 的双通道通信方案。
TCP负责登录、建房、加房等大厅逻辑KCP负责战斗连接、准备、心跳、输入帧同步、校验Protobuf负责协议定义与序列化FrameEngine + BattleController负责本地预测、确认、回滚与显示同步BattleRecordManager + ReplayController负责战斗记录与离线回放
Unity 2022.3.62f2URPUGUI
TCP用于大厅和房间逻辑KCP用于战斗实时消息ProtoBuf用于逻辑协议与战斗协议
FrameEngine驱动网络帧、逻辑帧、回放帧循环BattleController负责输入发送、预测推进、确认同步、回滚重演FrameBuffer缓存服务端返回的权威输入帧ConfirmBattleEntity / PredictBattleEntity / DisplayBattleEntity分别承担确认态、预测态、显示态
Assets/Runtime/全局入口与各类管理器,如Main、GameManager、NetworkManagerAssets/Battle/帧同步战斗核心,包括BattleController、FrameEngine、FrameBuffer、状态机、系统与视图层Assets/NetCore/TCP/KCP 传输层、缓冲区、包结构与底层网络封装Assets/ProtoGen/.proto协议定义与生成代码Assets/Resources/运行时动态加载资源Assets/Scenes/入口场景Main.unity与战斗场景World.unity
- 客户端启动后初始化
GameManager、NetworkManager、InputManager、CameraManager、BattleRecordManager - 通过
TCP完成登录、建房、加房 - 房间就绪后切换到战斗场景,通过
KCP建立战斗连接 FrameEngine同时驱动:NetUpdate:发送输入帧与心跳LogicUpdate:处理服务端权威输入帧并执行本地预测
BattleController维护三套实体:ConfirmBattleEntity:最近一次已确认的逻辑状态PredictBattleEntity:在确认态基础上继续向前预测的状态DisplayBattleEntity:直接用于渲染的状态
- 如果服务端返回的输入帧与本地预测帧一致,则直接复用预测结果
- 如果不一致,则从确认态开始按权威输入重新推进,完成回滚修正
- 确认后的状态由
BattleRecordManager记录,供ReplayController离线回放
- Unity 帧同步客户端原型验证
- 本地预测 + 回滚修正 Demo
- TCP 大厅 + KCP 战斗 的客户端拆分示例
- ProtoBuf 驱动的轻量级联机客户端样例