1. 程式人生 > >[UE4]優先順序與相關性

[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)。