Profiling for UE

Editor

UE4Editor.exe 启动项目时添加 -Trace=CPU -tracehost=127.0.0.1 参数:

1
UE4Editor.exe Client.uproject -Trace=CPU -tracehost=127.0.0.1

Insight 中就会自动捕获:

Unreal Insights 实时分析

上一节提到了使用 SessionFrontEnd 实时分析 Android 的方法,在实际的测试当中发现不太稳定,会造成游戏的 Crash,UE 在新的引擎版本中也提供了新的性能分析工具 Unreal Insights,可以更方便和直观地进行 Profile。
文档:

同样也需要端口映射,需要把 PC 的 1980 端口映射到设备上:

1
adb reverse tcp:1980 tcp:1980 

然后需要给 Android 设备添加启动命令:

1
../../../FGame/FGame.uproject -Messaging -SessionOwner="lipengzha" -SessionName="Launch On Android Device" -iterative -tracehost=127.0.0.1 -Trace=CPU 

在 PC 上开启 Unreal Insights,在手机上启动游戏,即可实时捕获:

Unreal Insights 也可以实时捕获 PIE 的数据,需要在 Editor 启动时添加 -trace 参数:

1
UE4Editor.exe PROJECT_NAME.uproject -trace=counters,cpu,frame,bookmark,gpu

在启动游戏后在 Unreal Insights 里通过 New Connection 监听 127.0.0.1 即可。

SessionFrontEnd 实时分析

有几个条件:

  1. 需要 USB 连接 PC 和手机
  2. 需要安装 adb

首先需要映射端口,因为 SessionFrontEnd 是通过监听端口的方式来与游戏内通信的,手机和 PC 并不在同一个网段,所以需要以 adb 的形式把 PC 的监听端口转发给手机的端口。

SessionFrontEnd 的监听端口可以通过对 UE4Editor.exe 的端口分析获取:

1
2
3
4
5
6
7
8
9
C:\Users\lipengzha>netstat -ano | findstr "231096"  
TCP 0.0.0.0:1985 0.0.0.0:0 LISTENING 231096
TCP 0.0.0.0:3961 0.0.0.0:0 LISTENING 231096
TCP 0.0.0.0:3963 0.0.0.0:0 LISTENING 231096
TCP 127.0.0.1:4014 127.0.0.1:12639 ESTABLISHED 231096
TCP 127.0.0.1:4199 127.0.0.1:12639 ESTABLISHED 231096
UDP 0.0.0.0:6666 *:* 231096
UDP 0.0.0.0:24024 *:* 231096
UDP 0.0.0.0:58101 *:* 231096

需要把 PC 的 1985 端口映射到 Android 的 1985 端口,这样手机上 APP 启动时,连接 0.0.0.01985端口就可以连接到 PC 上的端口。

通过 adb 命令来执行:

1
adb reverse tcp:1985 tcp:1985 

然后需要给手机上 App 指定启动参数:

1
../../../FGame/FGame.uproject -Messaging -SessionOwner="lipengzha" -SessionName="Launch On Android Device"  

把这些文本保存为 UE4Commandline.txt 文件,放到项目的数据目录下即可,具体路径为:

1
/sdcard/UE4Game/PROJECT_NAME/ 

之后直接启动 App,在 PC 上的 SessionFrontEnd 中就可以看到设备的数据了。