[UE4]優先順序與相關性
阿新 • • 發佈:2018-11-01
一、優先順序
每個 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()
GetNetPriority
函式還考慮了 Actor 與觀察者的相對位置以及兩者之間的距離。
二、相關性
場景的規模可能非常大,在特定時刻某個玩家只能看到關卡中的一小部分 Actor,作為玩家並不能看到場景中所有的玩家,只能看到自己周圍的一部分玩家,對於距離當前玩家比較遠的玩家,引擎會認為是不重要的,因此引入了相關性的概念。
也就是說,在當前玩家周圍的所有Actor是跟這個玩家相關的,可以設定一個距離,在這個距離範圍之內的所有Actor的更新都會通知到當前玩家。
任何一個Actor都可以設定相關性距離。
Net Cull distance Squared:相關性平方。如果要設定相關性距離為4米,則 Net Cull distance Squared的值就是160000(4米等於400釐米,400釐米的平方是160000)。