帧同步扫盲帖

帧同步:

目的:

这里写图片描述

实际:

这里写图片描述

理解:

各客户端每deltatime周期上传操作指令集(eg:左摇杆xy值,右摇杆xy值,按下哪个按钮,抬起哪个按钮);
服务端保存这些操作指令集,并在下一帧将其广播给所有客户端;
客户端收到指令集后分别按帧序执行指令集中的操作。

资料:

Unity3D中实现帧同步(Part 1和Part 2)
介绍了帧同步的思想,基于unity实现了客户端处理服务器发送来关键帧的例子
帧同步在竞技类网络游戏中的应用
这里写图片描述
介绍了帧同步的思想,文中还提到了客户端设计,与锁帧延迟的同步技术

帧同步同步技术:

目的:

消除网络波动性带给玩家的卡顿,忽快忽慢的不良体验
这里写图片描述

理解:

客户端逻辑层缓存0-2个关键帧,保证每一个客户端每个deltatime都有关键帧可以操纵,
其他角色表现层延迟0-1个deltatime,表现层追逐逻辑层的数据
本机预先模拟

资料:

再谈网游同步技术:http://www.skywind.me/blog/archives/1343
一篇帧同步的总结帖,期间有帧间同步模式、玩法规避模式、预测插值模式基于当前中国网络环境的分析,总结

定点数:

目的:

消除不同设备上浮点数计算过程中精度丢失导致的蝴蝶效应

首先如果使用帧同步就意味着所有计算是客户端计算的,服务端只转发操作。
在这种情况下要保证各个终端的表现相同就必须确保相同输入的情况下有相同输出。不止是移动偏差的问题,如果只是移动偏差,靠拟合也能看不太出来。更严重的是一个伤害打出去如果就是差这一点,死亡跟没死亡的区别出来了,之后就麻烦了。
浮点数只是其中一个注意点,包括但不限于随机数生成算法以及所有排序算法都得是可靠排序等等。

资料:

《王者荣耀》网络使用帧同步,底层计算是FixedPoint Math么?
通过在知乎问答的形式,知道帧同步定点数的必要性

可靠协议:

目的:

帧同步过程中,每个玩家每一个逻辑帧收到的消息必须有序且连续

快速重传:发送端发送了1,2,3,4,5几个包,然后收到远端的ACK: 1, 3, 4, 5,当收到ACK3时,KCP知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度。

资料:KCP、RUDP

Kcp:http://www.skywind.me/blog/archives/1048
kcp协议的原作者对kcp的介绍
Kcp协议详解: http://www.cnblogs.com/yuanyifei1/p/6846310.html
其他作者对kcp协议更加详细的介绍

猜你喜欢

转载自blog.csdn.net/tj134679258/article/details/77887179
今日推荐