[程式] UE4 Network Profiler介紹 (一)

作者: yekdniw (yekdniw)   2019-04-16 20:16:25
網頁版
https://yekdniwunrealengine.blogspot.com/2019/04/ue4-network-profiler.html
Network profiler是UE4的一個外部工具
用來分析UE4原生的網路傳輸量,包含RPC, Replicated property等等。
1. 如何使用
1.1. 建立資料檔
首先在你要分析的對象(一般是Server)
執行console command netprofile enable開始紀錄
然後一段時間後再執行netprofile disable結束錄製
結束後在[project path]/Saved/Profiling 資料夾中會看到.nprof檔
就是network profiler錄下來的資料
1.2. 執行Network profiler
network Profiler的執行檔直到4.22都沒有辦法在Editor內叫起來
必須自己到[Engine path]/Binaries/DotNET/NetworkProfiler.exe 執行
打開後點open 選擇剛剛錄好的檔案就可開始分析
2. Network profiler介面介紹
2.1. 折線圖與Summary
預設打開會列出好幾個數據的折線圖
可以先了解一下平均傳輸的級距大概在哪裡,以及是否有特別不平均的現象要注意
(有很多突峰)。
左下方Summary頁面列一些影格與秒數資訊,以及總傳輸與每秒傳輸的各細項數據,
一開始建議看總傳輸量與每秒傳輸量就好。
[圖1.]
2.2. Actors頁面
Actors頁面預設會列出整段資料所有replicate actor的資訊。
單點某一段時間的話就是改為列出這段時間replicate actor的資訊。
MS欄位代表Server花了多少時間在計算處理這個actor的replication
KB/s以及Bytes就是這個actor property的總/每秒傳輸量
Count是傳輸次數(接近Property count的總和)
UpdateHz是ServerCPU計算處理這個actor要replicate的頻率
RepHz則是實際上有replicate東西出去的頻率
Waste=(UpdateHz-RepHz)/UpdateHz
官方的影片有提到Waste高代表Server的CPU有浪費的情況,
等於server一直在計算這個actor,但是這個actor都沒有變動需要replicate。
這個時候會建議降低這個actor的update net frequently。
[圖2.]
一般來說這個Actors分頁是最最最常用的部分,通常就是看哪些Actor的Bytes太高,
然後哪些Property傳的次數太多或是量太大。
如果次數太多就考慮降低次數(修改update net frequently,或是修改邏輯),
如果量太大就要想想這些變數是不是真的需要,可不可以不要傳或是修改類型
(integer改enum、uint8、bool之類的)
此外Property的Count欄位計算方式是要注意的
如果一個Actor有1個structure,內含2個float+1個uint8,
並且structure內的值都有變動的話,欄位上會顯示count=3,Bytes=9(2*4+1)。
意思是不能單純的用Bytes/Count來推斷傳一次的Bytes
(因為實際上傳一次是9Bytes不是3Bytes)。
也不能單純看Count很高就急於降低頻率,
有的時候是因為structure內property數量多的關係。
2.3. AllActors分頁
AllActors分頁就是單純的列出整段時間所有actor的傳輸以及所耗CPU時間等資訊,
一般就是直接對TotalSize從大到小排序,記住比較大的項目回Actors一一檢討即可。
[圖3.]
2.4. AllProperties分頁
AllProperties分頁用來看有沒有哪個系列的property特別高需要注意,
一般應該是ReplicatedMovement最高,
如果自己的gameplay系統有特別高的部分就要注意。
[圖4.]
2.5. AllRPCs分頁
AllRPCs分頁列出有送出的RPC資訊,一般來說不建議使用RPC來遞送資料,
請盡可能的使用replicated property取代RPC。所以以我個人來說,
這個項目是讓我用來檢查哪些gamelay程式有用RPC,需要移除的。
[圖5.]
3. 追蹤特定Actor
通常鎖定某個傳輸最高的Actor之後,就是要開始了解這個Actor的細節,
這時候就要用上Filter功能。
在Network Profiler的右下角有ActorFilter可以選擇你只想看的Actor,
然後按下Apply Filters作用。
通常在這樣的情境,我會把view改為只有看Property Bytes,如下圖。
[圖6.]
這樣就可以一目瞭然這個Actor的傳送狀況,如果要更細部知道PropertyFilter的話
可以繼續選擇Property來過濾。
4. 參考資訊
官方文件
https://docs.unrealengine.com/en-us/Gameplay/Tools/NetworkProfiler
官方影片
https://youtu.be/mT8VUVuk-CY?t=1054
5. 下回預告 (時間未定)
調整觀看折線圖的橫軸縱軸
折線圖無法顯示的項目
Bunch Overhead
Network Profiler Source Code
作者: coolrobin (泳圈)   2019-04-16 21:07:00
推推
作者: damody (天亮damody)   2019-04-17 02:01:00
作者: Lhmstu (lhmstu)   2019-04-17 09:42:00
推推
作者: elfkiller (沒有暱稱)   2019-04-23 00:08:00

Links booklink

Contact Us: admin [ a t ] ucptt.com