所有Unreal网游开发者都应该看的文章:使用虚幻引擎4年,再谈UE的网络架构( 三 )
移动组件很复杂 , 他需要考虑到各种情况的延迟、抖动 , 需要解决不同客户端不同角色的流畅性问题 , 需要实现各种插值手段 。 在网络同步中 , 始终存在三种形式的角色 , 分别是本地玩家控制的、服务器控制的以及其他玩家控制的 , 在unreal中分别对应着Autonomous、Authority与Simulate 。 这三种类型的存在本质上代表着角色的控制者是谁(哪个端可以直接通过命令操作他) , 而从另一个角度讲这种分类其实是代表着玩家的操作是否有网络延迟以及延迟的大小 。 对于本地控制的Autonomous角色 , 他可以在本地直接响应你的操作 , 如果想把操作发给服务器 , 则需要经历一个client——server的延迟 , 而服务器想把这个操作同步给其他客户端又需要一个server——client的延迟 。
文章图片
同步中最难的其实就是如何有效的对抗这种延迟 。 所以 , 会诞生诸如延迟补偿这种同步策略 , 即服务器收到其他客户端射击消息的时候将本地的所有角色回滚到【当前时间 - 网络延迟时间】时的位置再进行消息的处理和计算 。 (UE4默认引擎里面没有这种操作 , 虚幻竞技场里面有 。 如下图) 。
文章图片
红色是当前端的具体位置 , 黄色是回滚预测的位置
移动组件本地客户端到服务器采用的是不可靠的RPC , 而服务器到其他客户端采用的是属性同步 。 为什么使用RPC?因为客户端向服务器发送消息只能通过RPC , 属性同步只是用来服务器同步给客户端用的 。 unreal在同步位置时记录了各个客户端以及服务器的时间戳 , 通过位置buffer缓存、每帧不停的发送位置、判断时间戳调整位置与回滚等操作实现比较理想的效果 , 本质上守望先锋的帧同步(严谨点来说是借用帧同步的命令帧)+状态同步
是相同的(详见:守望先锋架构与网络同步)[1] 。 不过虚幻并没有采用ECS , 并不能在架构上很好的支持所有逻辑的回滚 。 网络同步发展至今 , 其实基本已经成型 。 从早期的Lockstep到指令流水线化再到预测回滚TimeWarp , 大体的同步优化手段都是这些 , 现在的趋势就是状态同步与帧同步里的各种机制互相借鉴互相促进 。 除了移动同步 , 其他的诸如动作同步和隐藏显示我们一般要求不那么苛刻 , 因为他们不需要每帧都做处理 , 一般采用RPC做一次性的通知修改就可以了 。 关于同步 , 还有一个大家平时不是很在意的细节 , 那就是同步频率 。 前面提到了UE4会按照尽可能快的速度去发送同步数据 , 如果客户端的性能非常好帧数非常高 , 那么一帧就会产生非常多的移动RPC 。 理论上来说 , 如果没有丢包的话 , 即使服务器帧率很低 , 服务器也会按照客户端发来数据逐个模拟 , 最后两端结果相同 , 仍然是流畅的 。 但是 , 如果中间丢失了部分移动的RPC(引擎内部就会对发送进行限流) , 就可能造成服务器计算结果与客户端不同进而不断拉回客户端 , 造成卡顿 。
总的来说 , RPC与属性同步有些场景是可以相互替代的 。 对于简单且实时性要求不高的使用RPC就可以 , 而对于需要服务器实时保有主控权且持续性同步的状态我们就可以使用属性同步 。 属性同步本身已经做了优化消耗没有那么大 , 你可以通过各种条件来设置他的同步规则 。 但是注意 , 量变产生质变 , 如果不加节制的全部使用属性同步 , 那么actor(以及属性)遍历的开销与会相当可观 , 所以还是合理的使用还是非常重要的 。 这块理论上有很多可以优化的地方 , 比如Actor可以设置同步的范围(类似AOI) , 距离玩家很远的对象不需要同步;Actor可以根据一些规则关闭对某些客户端的属性复制功能(Dormancy) , 同时关闭ActorChannel并从NetConnection里移除;采用replicationgraph对空间进行划分 , 剔除相关性不强的对象从而减少带宽的占用(但是这个方案只适合大世界类型的游戏) 。 理论上 , 我们还可以添加更多的优化方式以及更细的粒度来进行调整 , 不过具体方案就要根据游戏类型来灵活处理了 。
推荐阅读
- 国际乒联:暂停8月所有赛事活动,中国香港公开赛今年内无法重新安排
- 花乡|花乡降为低风险!全市所有街乡均为低风险地区
- 青春浙江|2020上半年,我所有眼泪都给了这39组照片。
- 南京官方回应所有住宅小区物业费涨价:新标准适用于新建普通住宅
- |澧水河畔,所有人转移后,洪水淹至一楼
- 毕业论文|毕业论文PDF转换有困难?免费pdf转word小程序解决所有问题
- 影院开展全面消杀,厅内设置“隔座观影带”,经理:所有汗水都是值得的
- 不敢|令所有人都不敢相信的噩耗 “段子手鼻祖”赖宝突发心梗去世
- “妈妈比较重要”!15岁男生放弃中考,背后原因感动所有人
- 雷佳音|《极限挑战》开始有规则 贾乃亮和雷佳音承包了节目的所有笑点
