看板 GameDesign 關於我們 聯絡資訊
網頁版 https://yekdniwue.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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.148.76 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1555416989.A.00F.html
coolrobin: 推推 04/16 21:07
damody: 推 04/17 02:01
Lhmstu: 推推 04/17 09:42
dreamnook: 04/17 20:53
elfkiller: 推 04/23 00:08
※ 編輯: yekdniw (59.120.146.90 臺灣), 07/15/2020 11:06:40