作者yekdniw (yekdniw)
看板GameDesign
标题[程式] UE4 Network Profiler介绍 (一)
时间Tue Apr 16 20:16:25 2019
网页版
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://webptt.com/cn.aspx?n=bbs/GameDesign/M.1555416989.A.00F.html
1F:推 coolrobin: 推推 04/16 21:07
2F:推 damody: 推 04/17 02:01
3F:推 Lhmstu: 推推 04/17 09:42
4F:推 dreamnook: 04/17 20:53
5F:推 elfkiller: 推 04/23 00:08
※ 编辑: yekdniw (59.120.146.90 台湾), 07/15/2020 11:06:40