网络游戏帧同步技术理论知识梳理

首先感谢同行大佬们的分享,这里只是收集总结一下理论知识,后面会以代码实现。

先简单说一下状态同步:

假如有A,B,C三个玩家在同一个屏幕上

  1. A发技能攻击B,A会将请求发送到服务器
  2. 服务器计算A是否要以攻击成功B
  3. 将计算结果直接同步给A,B,C三方
  4. A正常攻击到B,B看到自己被攻击了,C看到A攻击了B。

可以看出来,状态同步的计算是服务器计算的,而帧同步的计算是客户端执行的,A攻击B之后,会将攻击指令直接同步给A,B,C,由A,B,C客户端自己计算并展示效果。

一般服务器同步帧频率是15帧/秒(实际上可以根据自己游戏的测试结束确定),15帧/秒是根据很多成熟的游戏实际操作测试得出来的一个值,游戏感比较好的一个值。因为人的操作是达不到这个值的,而客户端展示的帧率一般都是在60帧/秒及以上的。帧同步的另一个优点是同步的网络数据量比较少。SLG也大多数使用帧同步,但是它的帧率可以低一些,比如10帧/秒也可以接受。

状态同步与帧同步的对比:

帧同步一般会选择UDP的连接方式:

DUP里面的时序性,重传机制,应答机制,是需要自己去实现的。UDP没有最小延迟。

实现帧调度机制:

客户端以一定的频率向服务器同步指令,比如每秒20帧,就是50ms请求一次服务器,服务器会收集所有客户端请求过来的帧数据,然后服务器以一定的帧率同步给各个客户端。比如50ms循环一次,把50ms内收集到的所有客户端指令同步给所有的客户端。

相关推荐
wenzhangli718 小时前
OoderAgent SDK(0.6.6) UDP通讯与协议测试深度解析
网络·网络协议·udp
Trouvaille ~1 天前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
郝亚军1 天前
ubuntu启一个udp server,由一个client访问
linux·ubuntu·udp
Trouvaille ~1 天前
【Linux】UDP Socket编程实战(二):网络字典与回调设计
linux·运维·服务器·网络·c++·udp·操作系统
Trouvaille ~1 天前
【Linux】UDP Socket编程实战(三):多线程聊天室与线程安全
linux·服务器·网络·c++·安全·udp·socket
Trouvaille ~1 天前
【Linux】UDP Socket编程实战(四):地址转换函数深度解析
linux·服务器·网络·c++·udp·socket·地址转换函数
中议视控1 天前
浅谈Modbus,CRC,kNX,DMX512,KNZ,TCP/UDP等协议算法在可编程网络中央控制系统主机中的重要性
网络·tcp/ip·udp
Beaman08281 天前
第二章 传输层TCP UDP
网络协议·tcp/ip·udp
四维碎片2 天前
【Qt】UDP跨平台调试工具
qt·学习·udp
Bear on Toilet2 天前
腾讯云服务器开放UDP端口操作手册_2026最新
服务器·udp·腾讯云