[程式] UE4 Network Profiler介绍 (二)

楼主: yekdniw (yekdniw)   2019-06-08 18:32:10
网页版
https://yekdniwunrealengine.blogspot.com/2019/06/ue4-network-profiler.html
此篇是延伸UE4 Network Profiler介绍 (一)的后续,有需要的可以先看完
前篇再看这篇。
https://yekdniwunrealengine.blogspot.com/2019/04/ue4-network-profiler.html
调整观看折线图的横轴纵轴
只看某个时间区段的数据(横轴)
这个功能比较直觉,就是鼠标左键按著选择到想看的范围放开鼠标左键就是了
如图1,选择范围之后,就会只显示这个时间范围内的数据,如图2。
[图1.]
图1. 选择时间区段
[图2.]
图2. Actors内只会显示这个时间范围的数据
只看折线图纵轴的某个区间
这个功能没有文件也没有UI提示,我也是偶然测到发现的,
不过有的时候的确会用到这个功能。
通常是某单一影格传输的尖峰值太高,但是当下只想看平均传输的时候会需要
支援选择纵轴区段的作法就是在折线图上面按一下鼠标右键...
就会从"选择横轴区段"切换到"选择纵轴区段"
然后一样鼠标左键按著,选择想看的范围再放开鼠标左键,如图3
[图3.]
图3. 选择纵轴区段
不过这个模式只会影响到折线图内,毕竟纵轴是传输的资料量或是数目,
这些值是不会受到显示范围而改变的。
例如图4与图2Actors内的数据因为时间范围没改变,所以一样。
[图4.]
图4. 选择纵轴不影响Actors内显示的数值
折线图无法显示的项目
我现在的版本是UE4.22 我有发现如果property传输低于1个byte的话,
折线图是不会显示的,即使你把纵轴放大到可以看到0~1的区间也是不会显示。
在分析的时候要稍微注意一下这个小问题。
[图5.]
图5. 示范在BP内定期改变enum与integer的范例。
图5是一个blueprint范例,每0.5秒改变一次enum的内容
(这个enum传输会低于一个byte)
每1秒改变一次inispeed的内容,因为是integer,所以改变一次是4Bytes的传输。
我们用Profiler看的结果会发现,smallEnum因为传一次低于1 Byte (3/9),
就直接不显示在折线图上面了,如图6。
[图6.]
图6. 从Actors页面可以看到smallEnum是有传的,但是在折线图看不到。
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的sln内,如果没有记起来,
突然要找会找不到,浪费时间。
所以我直接写了这段记起来,找到sln后要追程式码就容易多了。
下回预告 (时间未定)
本来要把Bunch Overhead也写进这篇文章,后来发现
其实Overhead的部份跟Profiler工具本身比较没有关系,
大多都是靠追查source code得到的结果。
所以有可能下一篇系列文章的标题不会是Network Profiler介绍(三),
而是了解Bunch Overhead之类的~
作者: coolrobin (泳圈)   2019-06-08 19:49:00
未看先推
作者: nickchu35 (尼克邱)   2019-06-09 14:03:00
推个

Links booklink

Contact Us: admin [ a t ] ucptt.com