Unreal Engine 4 Network Profiler (2)

windkey
NeoBards
Published in
4 min readJul 17, 2019
“ green, blue, and pink textile” by Jack B on Unsplash

3. 調整觀看折線圖的橫軸縱軸

3.1 只看某個時間區段的數據(橫軸)

這個功能比較直覺,就是滑鼠左鍵按著選擇到想看的範圍放開滑鼠左鍵(如圖 1)就是了。

圖1. 選擇時間區段

選擇範圍之後,就會只顯示這個時間範圍內的數據,如圖 2。

圖2. Actors 分頁內只會顯示這個時間範圍的數據

3.2 只看折線圖縱軸的某個區間

這個功能沒有文件也沒有 UI 提示,是偶然發現的,不過有時候的確會用到這個功能。通常是某單一影格傳輸的尖峰值太高,但是當下只想看平均傳輸的時候會需要。

支援選擇縱軸區段的作法就是在折線圖上面按一下滑鼠右鍵… 就會從選擇橫軸區段切換到選擇縱軸區段切記這個切換沒有任何提示…)。然後一樣滑鼠左鍵按著,選擇想看的範圍再放開滑鼠左鍵,如圖 3。

圖3. 選擇縱軸區段

不過這個模式只會影響到折線圖內,畢竟縱軸是傳輸的資料量或是數目,這些值是不會受到顯示範圍而改變的。 例如圖 4 與圖 2,Actors 內的數據因為時間範圍沒改變,所以一樣。

圖4. 選擇縱軸不影響 Actors 內顯示的數值

3.3 折線圖無法顯示的項目

撰寫這篇文章所使用的版本是 UE 4.22,發現如果 property 傳輸低於 1 個 byte 的話,折線圖是不會顯示的, 即使你把縱軸放大到可以看到 0~1 的區間也是不會顯示。在分析的時候要稍微注意一下這個小問題。

圖5. 示範在 BP 內定期改變 enum 與 integer 的範例。

圖 5 是一個 blueprint 範例,每 0.5 秒改變一次 enum 的內容(這個 enum 傳輸會低於 1 個 byte);另外每 1 秒改變一次 inispeed 的內容,因為是 integer,所以改變一次是 4 Bytes 的傳輸。

我們用 Profiler 看結果會發現,smallEnum 因為傳一次低於 1 Byte (3/9),在折線圖上完全看不到,如圖 6。

圖6. 從Actors頁面可以看到smallEnum是有傳的,但是在折線圖看不到。

4. Network Profiler Source Code

Network Profiler 的程式碼分為引擎輸出資料端,跟 Network Profiler 主程式顯示端兩大部分。
引擎輸出 .nprof 的程式碼放在

Engine/Source/Runtime/Engine/Public/Net/NetworkProfiler.h Engine/Source/Runtime/Engine/Private/NetworkProfiler.cpp

上述檔案在 UE4 的 solution 內就可以找的到

Network Profiler 主程式的顯示跟 Parser 端則是沒有放進 UE4.sln 裡面,路徑為

Engine/Source/Programs/NetworkProfiler/NetworkProfiler.sln 

主程式的專案路徑因為沒有在 UE4 的 solution 內,如果沒有記起來,突然要找會找不到。所以直接寫了這段記起來,畢竟找到程式碼後要追問題或數據就容易多了。

下回預告

本來要把 Bunch Overhead 也寫進這篇文章,後來發現其實 Overhead 的部份跟 Network Profiler 工具本身沒有關係,大多都是用了 Profiler 想降低傳輸,發現一些問題後,持續追查 source code 得到的心得。所以有可能下一篇系列文章的標題不會是 Network Profiler (3),而是 Bunch Overhead 相關的文章。

--

--

windkey
NeoBards

位於台灣遊戲業的程式設計師,樂於分享遊戲引擎相關的心得與開發技術。