研发实战:用『日志+控制台命令』辅助开发移动VR应用
作者:CQITer小编 时间:2019-07-18 21:19
Turtle Rock是一家老牌游戏工作室,著名作品包括《求生之路》和《进化》,以及《反恐精英》系列等等。随着虚拟现实的兴起,这家工作室同样有涉足其中,并为社区带来了《Journey of the Gods》和《Face Your Fears 2》等热门游戏。
日前,Turtle Rock工作室的Brock Heinz介绍了利用Ureal 4引擎来开发VR应用的一系列建议。下面是映维网的具体整理,希望能够给你带来一定的借鉴参考。

如果你是刚开始涉足Quest,Go或Gear VR,你在开发UE4游戏时或许不知道所有可用的标准开发工具。对于这篇博文,我将向你说明在为基于Android的移动VR游戏时应如何选择获取这种工具。我们在为Oculus Quest带来《Journey of the Gods》和《Face Your Fears 2》时都是利用了这些相同的工具。
1. 利用ADB来控制设备
你会用到Android Debug Bridge(adb)命令行工具。要使用它,请打开命令提示符并键入“adb”,然后键入所需的命令:
C:\Temp>adb devices
List of devices attached
e6555e96 device
1.1 检索日志
你可以通过adb“pull”命令来从设备中检索文件。只要你知道完整路径,就可以使用它来提取日志和其他文件:
adb pull /sdcard/UE4Game/ProjectName/ProjectName/Saved/Logs
1.2 截图
你可以直接通过命令行来获取截图,然后再将它从设备拿到PC。
adb shell screencap -p /sdcard/screencap.png
adb pull /sdcard/screencap.png
1.3 安装应用程序
UE4的软件包构建过程将生成可用于安装/卸载应用程序的.bat文件,但如果需要,你可以通过adb手动完成。 你可以用文件名进行安装,并提供“-g” flag以授予应用程序所有权限。你可以通过指定APK文件名来安装:
adb install -g ProjectName-armv7-es2.apk
1.4 卸载应用程序
你可以通过指定APK文件名来卸载:
adb uninstall com.yourcompany.yourproject
1.5 启动应用程序
你可以通过向应用程序管理器发出命令,并提供应用程序的程序包名称来启动应用程序:
adb shell am start -n
com.yourcompany.yourproject/com.epicgames.ue4.GameActivity
1.6 停止应用程序
adb shell am force-stop com.yourcompany.yourproject
2. 实时获取日志
利用Android的实时日志获取功能,你可以获得大量有用的信息,亦即所谓的Logcat。打开命令提示符并运行以下命令:
adb logcat
这时你会看到:

这通常包括与你当前重点无关的信息。你可以使用过滤器来显示所需的信息。例如,这些Logcat过滤器将显示VrApi性能统计信息:
adb logcat VrApi:I –regex=”FPS=”

我们发现使用Android Device Monitor实用程序更容易从Quest获取实时日志记录数据。除了易于使用的UI之外,它同时包含许多其他有用的开发工具。
要访问Android Device Monitor,请使用指向这一批处理文件的快捷方式:
C:\NVPACK\android-sdk-windows\tools\monitor.bat
启动之后,你会看到类似这样的窗口。要从Quest看到Logcat信息,你需要在Devices列表中进行选择。

你要做的第一件事是进入首选项并增加消息缓冲区的大小:

现在创建几个过滤器。当你添加下面的过滤器时,你只会看到运行在Quest的UE4应用程序的日志消息。

3. 控制台命令
UE4提供了一种通过Broadcast Intent向运行在Android设备的游戏发送控制台命令的方法:
adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘CONSOLE COMMAND GOES HERE’”
例如,这个命令将打开游戏内的帧时间显示:
adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘stat unit’”
但是,它用起来有点繁琐。兴趣的是,你可以使用doskey命令来创建宏:
doskey com=adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘$*’”
com stat unit
4. 诊断崩溃




