TurtleRock是一家老牌游戏工作室,著名作品包括《求生之路》和《进化》,以及《反恐精英》系列等等。随着虚拟现实的兴起,这家工作室同样有涉足其中,并为社区带来了《JourneyoftheGods》和《FaceYourFears2》等热门游戏。 日前,TurtleRock工作室的BrockHeinz介绍了利用Ureal4引擎来开发VR应用的一系列建议。下面是映维网的具体整理,希望能够给你带来一定的借鉴参考。 如果你是刚开始涉足Quest,Go或GearVR,你在开发UE4游戏时或许不知道所有可用的标准开发工具。对于这篇博文,我将向你说明在为基于Android的移动VR游戏时应如何选择获取这种工具。我们在为OQuest带来《JourneyoftheGods》和《FaceYourFears2》时都是利用了这些相同的工具。 1。利用ADB来控制设备 你会用到AndroidDebugBridge(adb)命令行工具。要使用它,请打开命令提示符并键入“adb”,然后键入所需的命令: C:Tadbdevices Listofdevicesattached e6555e96device 1。1检索日志 你可以通过adb“pull”命令来从设备中检索文件。只要你知道完整路径,就可以使用它来提取日志和其他文件: adbpullsdcardUE4GameProjectNameProjectNameSavedLogs 1。2截图 你可以直接通过命令行来获取截图,然后再将它从设备拿到PC。 adbshellscreencappsdcardscreencap。png adbpullsdcardscreencap。png 1。3安装应用程序 UE4的软件包构建过程将生成可用于安装卸载应用程序的。bat文件,但如果需要,你可以通过adb手动完成。你可以用文件名进行安装,并提供“g”flag以授予应用程序所有权限。你可以通过指定APK文件名来安装: adbinstallgProjectNamearmv7es2。apk 1。4卸载应用程序 你可以通过指定APK文件名来卸载: adbuninstallcom。yourcompany。yourproject 1。5启动应用程序 你可以通过向应用程序管理器发出命令,并提供应用程序的程序包名称来启动应用程序: adbshellamstartn com。yourcompany。yourprojectcom。epicgames。ue4。GameActivity 1。6停止应用程序 adbshellamforcestopcom。yourcompany。yourproject 2。实时获取日志 利用Android的实时日志获取功能,你可以获得大量有用的信息,亦即所谓的Logcat。打开命令提示符并运行以下命令: adblogcat 这时你会看到: 这通常包括与你当前重点无关的信息。你可以使用过滤器来显示所需的信息。例如,这些Logcat过滤器将显示VrApi性能统计信息: adblogcatVrApi:Iregex”FPS” 我们发现使用AndroidDeviceMonitor实用程序更容易从Quest获取实时日志记录数据。除了易于使用的UI之外,它同时包含许多其他有用的开发工具。 要访问AndroidDeviceMonitor,请使用指向这一批处理文件的快捷方式: C:NVPACKandroidsdkwindowstoolsmonitor。bat 启动之后,你会看到类似这样的窗口。要从Quest看到Logcat信息,你需要在Devices列表中进行选择。 你要做的第一件事是进入首选项并增加消息缓冲区的大小: 现在创建几个过滤器。当你添加下面的过滤器时,你只会看到运行在Quest的UE4应用程序的日志消息。 3。控制台命令 UE4提供了一种通过BroadcastIntent向运行在Android设备的游戏发送控制台命令的方法: adbshell“ambroadcastaandroid。intent。action。RUNecmd‘CONSOLECOMMANDGOESHERE’” 例如,这个命令将打开游戏内的帧时间显示: adbshell“ambroadcastaandroid。intent。action。RUNecmd‘statunit’” 但是,它用起来有点繁琐。兴趣的是,你可以使用doskey命令来创建宏: doskeycomadbshell“ambroadcastaandroid。intent。action。RUNecmd‘’” comstatunit 4。诊断崩溃 如果需要调查崩溃,你有几个选择。如果崩溃容易重复出现,你可以使用AndroidDeviceMonitor来获取实时日志记录,然后触发崩溃。只要你是用Symbols安装了开发或调试版本,你就会看到一个Callstack,包括导致崩溃的函数和其他相关的信息: 如果你在游戏崩溃时没有运行AndroidDeviceMonitor,或者你需要QA团队正在使用的头显的崩溃数据,你可以通过adb从设备检索错误报告信息: adbbugreport datauserde0com。android。shellfilesbugreportsbugrepo39。zip:1filepulled。37。2MBs(1393690bytesin0。036s) 如果你打开zip文件,你将找到有关设备状态的大量日志和其他数据。我们需要的信息位于“datatombstones”文件夹中。查找包含发生崩溃时对应的时间和日期戳的tombstone文件,并在文本编辑器中将其打开。只要版本包含Symbols,你应该能看到导致崩溃的函数调用,类似于AndroidDeviceMonitor的输出。 5。发送CommandLineSwitches UE4无法直接将commandlineswitch发送给应用程序,但你可以通过一定的代码改动来添加这项功能。这是通过UE4。21实现,但应该很容易适配其他引擎版本。 有了这个代码,当用adb启动游戏时你就可以将命令行参数发送给游戏。例如,下面的代码将启动游戏并GarbageCollection验证,这有助于减少开发中的阻碍: adbshellamstarteextraArgNoVerifyGCngg。trs。portercom。epicgames。ue4。GameActivity 我们稍稍简化了这个过程,我们在UE4打包过程生成安装和卸载批处理文件时生成了“Launch。bat”文件。如果你希望对项目进行相同的更改,你可以轻松通过AndroidPlatform。Automation。cs进行改动。 6。基本的性能分析 当游戏运行在Quest或Go时,我们可以开始使用以下工具从游戏中获取一定的基本分析信息。 6。1实时性能统计数据 你可以使用“statunit”命令获取实时性能统计信息的屏幕显示: comstatunit 帧:总帧时间,以毫秒为单位。你希望它是1660fps,1372fps。游戏:主要游戏线程CPU帧时间调用:渲染线程CPU时间GPU:GPU帧时间。RHIT:如果你启用了OpenGLRHI线程,这将是每帧在所述线程中花费的时间。内存:游戏使用的内存。这不是100准确,因为分配给OS,视频驱动程序等的某些内存不会反映出来。调用:每帧绘制的对象数。Prims:每帧绘制的三角形数。 6。2内存使用情况 你可以随时生成内存报告。我们将在以后的帖文中进一步讨论这个问题: commemreportfull adbpullsdcardUE4GameRedwoodRedwoodSaved 6。3CPU性能分析 这个Profiler工具可以帮助你捕获设备的性能分析统计信息,并将其导入至编辑器中。你可以打开统计数据记录,打开一会游戏,然后关闭记录,并使用以下代码来获取数据: comstatstartfile comstatstopfile adbpullsdcardUE4GameRedwoodRedwoodSaved 7。在发行版本中启用日志获取 UE4禁用发行版本的日志。这大体上是一个很好的策略,但有时你需要从发行版本中获取日志。幸运的是,你只需进行一定的更改即可启用发行版本中的日志记录。 首先你需要打开YourProject。Target。cs文件,并添加以下命令行: bUseLoggingInS 其次,你需要打开AndroidMisc。cpp,并进行以下更改: 这将重新启用Windows和Android版本的日志记录功能。请注意,如果要在Windows查找发行版本的日志,它们将位于不同的位置: C:UsersUserNameAppDataLocalYourProjectSavedLogsUsefulLinks 8。有用的链接 OculusLogcatTroubleshootingDocumentationAndroidLogcatDocumentationOculusMobileADBDocumentationAndroidDebugBridgeDocumentationAndroidDeviceMonitorDocumentationExplanationofvaluesintheVrApiperformancestatsDebuggingNativeAndroidPlatformCod 原文链接:https:yivian。comnews63710。html 来源:映维网