[UE4]优先级与相关性
一、优先级

每个 Actor 都有一个名为 NetPriority 的浮点变量。这个变量的数值越大,Actor 相对于其他“同伴”的带宽就越多。和优先级为 1.0 的 Actor 相比,优先级是 2.0 的 Actor 可以得到两倍的更新频度。唯一影响优先顺序的就是它们的比值;所以很显然,您无法通过提高所有优先级的数值来增加虚幻引擎的 网络性能。下面是我们在性能调整中分配的部分 NetPriority 值:
Actor = 1.0
Matinee = 2.7
Pawn = 3.0
PlayerController = 3.0
计算 Actor 的当前优先级时使用了虚拟函数 AActor::GetNetPriority()。为避免出现饥荒(starvation),AActor::GetNetPriority() 使用 Actor 上次复制后经过的时间 去乘以 NetPriority。同时,GetNetPriority 函数还考虑了 Actor 与观察者的相对位置以及两者之间的距离。
二、相关性
场景的规模可能非常大,在特定时刻某个玩家只能看到关卡中的一小部分 Actor,作为玩家并不能看到场景中所有的玩家,只能看到自己周围的一部分玩家,对于距离当前玩家比较远的玩家,引擎会认为是不重要的,因此引入了相关性的概念。
也就是说,在当前玩家周围的所有Actor是跟这个玩家相关的,可以设置一个距离,在这个距离范围之内的所有Actor的更新都会通知到当前玩家。
任何一个Actor都可以设置相关性距离。

Net Cull distance Squared:相关性平方。如果要设置相关性距离为4米,则 Net Cull distance Squared的值就是160000(4米等于400厘米,400厘米的平方是160000)。
现在把相关性距离设置为4米:


把“运行专用服务器”勾选上(相关性对服务器来说是无效的,服务器能看到所有对象。),然后运行游戏:

两个角色在4米以内是可以相互看到对方。
超过4米后,原地等待大概5秒钟,就看不到对方了。

如图所示:这个时候第一个窗口开火,如果能打到第二个窗口的角色对方,第二个窗口角色也是会掉血的,但第一个玩家不会收到第二个玩家掉血的服务器通知,因为两者已经超出了相关性距离。如果2个玩家再次靠近在4米内,第一个玩家就会重新收到第二个玩家掉血的更新通知“多路传送(广播)”则不会重新收到第二个玩家的掉血通知。
“更新通知”和“多路传送(广播)”的一个区别就是:如果事件发生的时候不在相关性距离内,“更新通知”会重新在相关距离内的时候重新进行“更新通知”,而“多路传送”则就算再次进入相关性距离也不会收到通知。

再往前走,距离4米内,又可以看到对方了。看不到对方的时候,对方的相关变化不会通知到另外一方。
[UE4]优先级与相关性的更多相关文章
- 深入浅出UE4网络
UE4中的官方文档结构比较混乱,且有部分错误,不方便学习.笔者试图通过本文,整理出一篇关于UE4网络的文章,方便朋友们对UE4中的网络同步部分的认识,并有进一步理解.如有讲得不清楚明白的地方,还望批评 ...
- 为什么非全站升级HTTPS不可?
升级HTTPS已经是大势所趋,但仍有大量互联网企业犹豫是否要全站升级HTTPS,为此本文梳理了全站升级HTTPS与部分升级HTTPS的优劣势对比,来判断是否真的有必要进行全站HTTPS升级. HTTP ...
- C#6.0语言规范(十八) 不安全代码
前面章节中定义的核心C#语言与C和C ++的区别在于它省略了作为数据类型的指针.相反,C#提供了引用和创建由垃圾收集器管理的对象的能力.这种设计与其他功能相结合,使C#成为比C或C ++更安全的语言. ...
- ue4 plugin的编译加载
插件Plugin: 本来应该是指一种纯以接口与外界打交道的程序模块,在同一接口背后可以有多种实现,更换实现完全不影响客户端代码(不用重编). 但是在ue4的世界里,插件似乎不是这个意思,仅仅是一种可以 ...
- 《Inside UE4》-0-开篇
<Inside UE4>-0-开篇 InsideUE4 前言 VR行业发展是越来越火热了,硬件设备上有HTC VIVE,Oculus rift,PS VR,各种魔镜:平台上有Steam ...
- UE4网络同步属性笔记
GameMode只有服务端有,适合写游戏逻辑.PlayerController每个客户端拥有一个,并拥有主控权.GameState在服务端同步到全端. CLIENT生成的Actor对其有Authori ...
- Houdini 过程化地形系统(二):基于UE4的FC5植被系统(1)
背景 通过之前的几篇分析实践,已经基本打通了UE4的Houdini植被管线部分,并对Far Cry5(简称FC5)的植被系统的需求做了整理,在接下来的几节中,会关注于如何使用Houdini基于UE4来 ...
- 《Exploring in UE4》多线程机制详解[原理分析]
转自:https://zhuanlan.zhihu.com/c_164452593 目录一.概述二."标准"多线程三.AsyncTask系统3.1 FQueuedThreadPoo ...
- Epic Games工程师分享:如何在移动平台上做UE4的UI优化?
转自:https://blog.csdn.net/debugconsole/article/details/79281290 随着技术的不断升级,高性能的引擎逐渐受到越来越多研发商的青睐,UE4就是其 ...
随机推荐
- ZOJ2112 Dynamic Rankings
题意 Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings ...
- Axure RP chrome插件显示已损坏或者无法安装的解决方法
http://www.cnplugins.com/zhuanti/arux-rp-bug.html 1.Axure RP chrome插件无法安装的解决方法. 首先Axure RP chrome插件的 ...
- apache常用配置文件讲解
apache 的httpd.conf常用配置说明 # ServerRoot: The top of the directory tree under which the server's # conf ...
- highcharts 知识点
去掉版权: credits:{ enabled:true // 默认值,如果想去掉版权信息,设置为false即可 }
- Eclipse配置问题
1.eclipse中通过search打开第二个文件时第一个文件自动关闭问题: 解决方案: window-preferences-general-search找到第一行的一个选项 reuse edit ...
- @RequestMapping、@Responsebody、@RequestBody和@PathVariable详解(转)
一.预备知识:@RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @Requ ...
- Spring Schedule实现定时任务
applicationContext.xml 1. 增加配置 <!-- 开启定时任务 --> <task:annotation-driven /> <!-- 开启注解 - ...
- C# 结构和类
不同点: 1.结构是值类型,而类是引用类型:2.结构不支持继承,而类支持继承:3.结构不能定义构造函数,编译器会定义. 适用场合: 结构:分配内存快,作用域结束即被删除,不需要垃圾回收,适用于小型数据 ...
- Hadoop 目录分析及存储机制
NameNode元数据目录分析 在第一次部署好Hadoop集群的时候,我们需要在NameNode(NN)节点上格式化磁盘: $HADOOP_HOME/bin/hdfs namenode -format ...
- 推荐四款 Bug 管理系统,最适合你的才是最好的!
转载自:https://www.jianshu.com/p/e7d3121eaaec 在这个移动互联网的时代,每天都会涌入大量新的 App,想要留住你的用户,必须时刻保持产品创新与系统的稳定.对于 ...