一、优先级

每个 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]优先级与相关性的更多相关文章

  1. 深入浅出UE4网络

    UE4中的官方文档结构比较混乱,且有部分错误,不方便学习.笔者试图通过本文,整理出一篇关于UE4网络的文章,方便朋友们对UE4中的网络同步部分的认识,并有进一步理解.如有讲得不清楚明白的地方,还望批评 ...

  2. 为什么非全站升级HTTPS不可?

    升级HTTPS已经是大势所趋,但仍有大量互联网企业犹豫是否要全站升级HTTPS,为此本文梳理了全站升级HTTPS与部分升级HTTPS的优劣势对比,来判断是否真的有必要进行全站HTTPS升级. HTTP ...

  3. C#6.0语言规范(十八) 不安全代码

    前面章节中定义的核心C#语言与C和C ++的区别在于它省略了作为数据类型的指针.相反,C#提供了引用和创建由垃圾收集器管理的对象的能力.这种设计与其他功能相结合,使C#成为比C或C ++更安全的语言. ...

  4. ue4 plugin的编译加载

    插件Plugin: 本来应该是指一种纯以接口与外界打交道的程序模块,在同一接口背后可以有多种实现,更换实现完全不影响客户端代码(不用重编). 但是在ue4的世界里,插件似乎不是这个意思,仅仅是一种可以 ...

  5. 《Inside UE4》-0-开篇

    <Inside UE4>-0-开篇 InsideUE4   前言 VR行业发展是越来越火热了,硬件设备上有HTC VIVE,Oculus rift,PS VR,各种魔镜:平台上有Steam ...

  6. UE4网络同步属性笔记

    GameMode只有服务端有,适合写游戏逻辑.PlayerController每个客户端拥有一个,并拥有主控权.GameState在服务端同步到全端. CLIENT生成的Actor对其有Authori ...

  7. Houdini 过程化地形系统(二):基于UE4的FC5植被系统(1)

    背景 通过之前的几篇分析实践,已经基本打通了UE4的Houdini植被管线部分,并对Far Cry5(简称FC5)的植被系统的需求做了整理,在接下来的几节中,会关注于如何使用Houdini基于UE4来 ...

  8. 《Exploring in UE4》多线程机制详解[原理分析]

    转自:https://zhuanlan.zhihu.com/c_164452593 目录一.概述二."标准"多线程三.AsyncTask系统3.1 FQueuedThreadPoo ...

  9. Epic Games工程师分享:如何在移动平台上做UE4的UI优化?

    转自:https://blog.csdn.net/debugconsole/article/details/79281290 随着技术的不断升级,高性能的引擎逐渐受到越来越多研发商的青睐,UE4就是其 ...

随机推荐

  1. MCU ADC 进入 PD 模式后出现错误的值?

    MCU ADC 进入 PD 模式后出现错误的值? 在调试一款 MCU,最开始问题是无法读到 ADC 的值,应该是读到的值是异常高. 怀疑问题 可能是主频太低,为了降低功耗,这个 MCU 主频被我降了很 ...

  2. python生成随机数、随机字符串

    python生成随机数.随机字符串 import randomimport string # 随机整数:print random.randint(1,50) # 随机选取0到100间的偶数:print ...

  3. xshell 5中文破解版下载

    xshell 5破解版是一款功能强大的终端模拟软件,支持Telnet.Rlogin.SSH.SFTP.Serial等远程协议,让用户能通过互联网直接连接远程主机.用户通过xshell 5破解版能轻松和 ...

  4. 排序算法<No.2>【快速排序】

    最近因为项目需要,研究AI相关的东西,主要是算法相关的. 有感触,所以决定,来一个系列的博文,可能会耗时很久,那就是要完成算法系列.起点,从最常用最基本的排序开始.后续会跟进其他类型的,比如树,图等领 ...

  5. phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码

    以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...

  6. VGA原理

    VGA原理 1.VGA时序 2.不同的显示标准,有不同的水平段和垂直段 3.像素时钟和帧频的关系 联系目前调试的1080i 50Hz: 像素时钟为148.5MHz, 水平段周期 = 2640 X (1 ...

  7. Avalon总线学习 ---Avalon Interface Specifications

    Avalon总线学习 ---Avalon Interface Specifications 1.Avalon Interfaces in a System and Nios II Processor ...

  8. python cntl使用

    import sys 2 import time 3 import fcntl 4 5 class FLOCK(object): 6 7 def __init__(self, name): 8 sel ...

  9. ArrayBlcokingQueue,LinkedBlockingQueue与Disruptor三种队列对比与分析

    一.基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1.底层实现机制不同,ArrayBlco ...

  10. linux 如何运行rpm

    rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm