Skip to main content
 首页 » 资源教程

利用Ureal 4引擎来开发移动VR应用基础教程讲解

2019年07月16日 08:43:18330080网络

Turtle Rock是一家老牌游戏工作室,著名作品包括《求生之路》和《进化》,以及《反恐精英》系列等等。随着虚拟现实的兴起,这家工作室同样有涉足其中,并为社区带来了《Journey of the Gods》和《Face Your Fears 2》等热门游戏。

日前,Turtle Rock工作室的Brock Heinz介绍了利用Ureal 4引擎来开发VR应用的一系列建议。下面是中国AR网的具体整理,希望能够给你带来一定的借鉴参考。

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第1张

如果你是刚开始涉足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

这时你会看到:

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第2张

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

adb logcat VrApi:I –regex=”FPS=”

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第3张

我们发现使用Android Device Monitor实用程序更容易从Quest获取实时日志记录数据。除了易于使用的UI之外,它同时包含许多其他有用的开发工具。

要访问Android Device Monitor,请使用指向这一批处理文件的快捷方式:

C:\NVPACK\android-sdk-windows\tools\monitor.bat

启动之后,你会看到类似这样的窗口。要从Quest看到Logcat信息,你需要在Devices列表中进行选择。

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第4张

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

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第5张

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

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第6张

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. 诊断崩溃

如果需要调查崩溃,你有几个选择。如果崩溃容易重复出现,你可以使用Android Device Monitor来获取实时日志记录,然后触发崩溃。只要你是用Symbols安装了开发或调试版本,你就会看到一个Callstack,包括导致崩溃的函数和其他相关的信息:

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第7张

如果你在游戏崩溃时没有运行Android Device Monitor,或者你需要QA团队正在使用的头显的崩溃数据,你可以通过adb从设备检索错误报告信息:

adb bugreport
/data/user_de/0/com.android.shell/files/bugreports/bugrepo…39.zip: 1 file pulled. 37.2 MB/s (1393690 bytes in 0.036s)

如果你打开zip文件,你将找到有关设备状态的大量日志和其他数据。我们需要的信息位于“data/tombstones”文件夹中。查找包含发生崩溃时对应的时间和日期戳的tombstone文件,并在文本编辑器中将其打开。只要版本包含Symbols,你应该能看到导致崩溃的函数调用,类似于Android Device Monitor的输出。

5. 发送Command Line Switches

UE4无法直接将command line switch发送给应用程序,但你可以通过一定的代码改动来添加这项功能。这是通过UE 4.21实现,但应该很容易适配其他引擎版本。

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第8张

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第9张

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第10张

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第11张

有了这个代码,当用adb启动游戏时你就可以将命令行参数发送给游戏。例如,下面的代码将启动游戏并Garbage Collection验证,这有助于减少开发中的阻碍:

adb shell am start -e extraArg -NoVerifyGC -n gg.trs.porter/com.epicgames.ue4.GameActivity

我们稍稍简化了这个过程,我们在UE4打包过程生成安装和卸载批处理文件时生成了“Launch.bat”文件。 如果你希望对项目进行相同的更改,你可以轻松通过AndroidPlatform.Automation.cs进行改动。

6. 基本的性能分析

当游戏运行在Quest或Go时,我们可以开始使用以下工具从游戏中获取一定的基本分析信息。

6.1 实时性能统计数据

你可以使用“stat unit”命令获取实时性能统计信息的屏幕显示:

com stat unit

  1. 帧:总帧时间,以毫秒为单位。你希望它是16@60fps,13@72 fps。

  2. 游戏:主要游戏线程CPU帧时间

  3. 调用:渲染线程CPU时间

  4. GPU:GPU帧时间。

  5. RHIT:如果你启用了OpenGL RHI线程,这将是每帧在所述线程中花费的时间。

  6. 内存:游戏使用的内存。这不是100%准确,因为分配给OS,视频驱动程序等的某些内存不会反映出来。

  7. 调用:每帧绘制的对象数。

  8. Prims:每帧绘制的三角形数。

6.2 内存使用情况

你可以随时生成内存报告。我们将在以后的帖文中进一步讨论这个问题:

com memreport -full
adb pull /sdcard/UE4Game/Redwood/Redwood/Saved/

6.3 CPU性能分析

这个Profiler工具可以帮助你捕获设备的性能分析统计信息,并将其导入至编辑器中。 你可以打开统计数据记录,打开一会游戏,然后关闭记录,并使用以下代码来获取数据:

com stat startfile
< play the game for a bit >
com stat stopfile
adb pull /sdcard/UE4Game/Redwood/Redwood/Saved/

7. 在发行版本中启用日志获取

UE4禁用发行版本的日志。这大体上是一个很好的策略,但有时你需要从发行版本中获取日志。幸运的是,你只需进行一定的更改即可启用发行版本中的日志记录。

首先你需要打开YourProject.Target.cs文件,并添加以下命令行:

bUseLoggingInShipping = true;

其次,你需要打开AndroidMisc.cpp,并进行以下更改:

利用Ureal 4引擎来开发移动VR应用基础教程讲解 资源教程 第12张

这将重新启用Windows和Android版本的日志记录功能。请注意,如果要在Windows查找发行版本的日志,它们将位于不同的位置:

C:\Users\UserName\AppData\Local\YourProject\Saved\LogsUseful Links

8. 有用的链接

  1. Oculus Logcat Troubleshooting Documentation

  2. Android Logcat Documentation

  3. Oculus Mobile ADB Documentation

  4. Android Debug Bridge Documentation

  5. Android Device Monitor Documentation

  6. Explanation of values in the VrApi performance stats

  7. Debugging Native Android Platform Code

评论列表暂无评论
发表评论