“ 感知技术 · 感触CG · 感受艺术 · 感悟心灵 ”

中国很有影响力影视特效CG动画领域自媒体

当你的游戏崩溃时,虚幻引擎会创建崩溃报告,它可以将报告发送到崩溃报告客户端(Crash Report Client)。崩溃报告客户端是一个应用程序,可提示用户提供注释(可选)并向Epic Games提交崩溃报告。你可以自定义随你的游戏打包的崩溃报告客户端,将崩溃报告数据发送到你自己的服务器,以帮助调试游戏。

本指南提供了:

  • 崩溃报告及其内容的概述。

  • 有关在本地计算机上何处查找崩溃报告的信息。

  • 崩溃报告的配置变量参考和项目设置。

  • 如何为你自己的打包应用程序修改和配置崩溃报告器客户端。

  • 崩溃报告服务推荐,你可以用它接收远程服务器上的崩溃报告。


崩溃报告

崩溃报告包含:

  • 一个唯一的随机崩溃标识符,即崩溃guid

  • 有关错误的信息,例如类型(崩溃、断言、确保等),或崩溃线程和其他所有线程的调用堆栈。

  • 计算机的系统信息和应用程序上下文信息,例如构建配置。

  • 崩溃时的日志输出。这可以是设备运行时日志或项目编辑器日志。

  • 游戏使用键/值对提供的额外上下文。

  • 用户通过崩溃报告客户端提供的额外注释。

下面是在崩溃报告客户端中查看崩溃报告的示例:

在哪里查找本地崩溃报告

来自编辑器的崩溃报告存储在你的本地计算机上你的项目的Saved/Crashes文件夹中。

你也可以在用户本地计算机上的C:\Users[Your Windows Username]\AppData\Local[Project Name]\Saved\Crashes中找到崩溃报告。

虚幻引擎中的常见崩溃原因

以下是出现崩溃报告的最常见原因。这些原因都会启动崩溃报告器客户端,并在调用堆栈上方随附消息,详述遇到的崩溃类型。

崩溃源:崩溃(Crash)

说明:发生了程序无法处理的事情,因此程序关闭。发生崩溃的原因包括:

  • 访问空对象。

  • 尝试将数据写入不存在的对象。

  • 访问的对象或数据已损坏。

  • 堆栈溢出,通常是由于无限循环或无限递归。

  • 内存不足(OOM)错误。

示例图像

崩溃源:断言(Assert)

说明:开发人员故意在代码中放入断言语句,使程序在特定条件下崩溃。这可以验证你关于某些内容在之后的运行期间可能会导致问题的预想,以便及早发现。例如:

check(Mesh != nullptr)

如需详细了解虚幻引擎中的断言,请参阅关于断言的文档页面:

https://docs.unrealengine.com/5.3/zh-CN/asserts-in-unreal-engine/

示例图像

崩溃源:确保(Ensure)

说明: "确保"会检查特定条件,但不会在解决false后崩溃。相反,它们会向输出日志生成消息,并在无人照管模式下向崩溃报告器发送报告。这可以用于你想监控的事项,但不一定是崩溃执行。例如:

ensure(Number >= 0)

如需详细了解虚幻引擎中的确保,请参阅关于断言的文档页面:

https://docs.unrealengine.com/5.3/zh-CN/asserts-in-unreal-engine/

示例图像

警告:"确保"仅用作开发工具,在测试和发布构建配置中通常会禁用。我们建议你始终使用发布配置将游戏发布给最终消费者。如果你没有修改崩溃报告器客户端,发行开发或调试版本可能导致你的用户发送无人照管的崩溃报告给Epic Games。

将自定义上下文添加到崩溃报告

除了添加到崩溃报告的标准信息之外,游戏项目还可以添加自己的自定义上下文,即游戏数据。这可以是关于游戏模式、玩家在世界中的位置信息,或对于调查漏洞至关重要的其他游戏状态信息。这些数据使用键/值对和FPlatformCrashContext::SetGameData函数添加。

请注意,自定义上下文设置在发生错误之前。收集崩溃报告时,会捕获游戏数据值的当前状态并写入报告。

例如,每当你的游戏进入新游戏模式时,调用:

在该游戏模式期间发生的崩溃将包含以下XMLdata:

崩溃报告器基础设施

UE的崩溃报告基础设施包括以下组件:

1. 用户计算机上的崩溃报告客户端,随编辑器或你的游戏版本一起发行。崩溃报告客户端会将崩溃转储信息发送给你的终端。

2. 带有能管理、筛选和存储崩溃报告的应用程序和组件的服务器

下面各小节详述了其中每个组件,以及如何为你自己的组织设置它们。

崩溃报告器客户端

崩溃报告器客户端是一个单独程序,可用于编辑器版本,也可选择与用户计算机上的运行时版本打包使用。编辑器或打包的应用程序崩溃时,引擎会生成崩溃报告,然后启动崩溃报告器客户端(如果可用)。如果崩溃报告器不处于无人照管模式,它会显示带有崩溃数据的窗口,并提示用户发送或不发送报告。

将崩溃报告器客户端打包进你的游戏

默认情况下,打包的游戏中不含崩溃报告器客户端。要将其添加到你的打包版本中,请执行以下操作:

1. 在虚幻编辑器中,打开项目设置(Project Settings)并找到项目(Project)>打包(Packaging)

2. 展开高级(Advanced)下拉菜单。

3. 启用包含崩溃报告器(Include Crash Reporter)设置。

你也可以将IncludeCrashReporter=True添加到你的项目的Config/DefaultGame.ini 文件。

配置自动崩溃报告

以下配置变量决定了崩溃报告器是否应该自动将崩溃报告发送给服务器。你可以在[CrashReportClient]目录下的任意Engine.ini文件中进行此类配置。

警告:在UE 5.3.2及更早版本中,由于存在漏洞,bSendUnattendedCrashReports不能在打包了崩溃报告器的运行时版本上正确运行。设置为false时,崩溃报告器仍会自动将关于"确保"的报告发送给Epic Games。此问题将在UE 5.4中修复。

配置崩溃报告器客户端

你可以自定义崩溃报告器客户端,将崩溃事件发送给你选择的服务器。要自定义崩溃报告器,请执行以下操作:

1. 打开你的虚幻引擎安装目录。

2. 找到Engine/Programs/CrashReportClient/Config

3. 打开DefaultEngine.ini文件。

该配置文件包含了用于配置崩溃报告器的所有变量。

更改要将崩溃报告发送到的URL

要将崩溃报告发送给你自己的组织,请将DataRouterURL变量更改为你自己的崩溃报告服务器的URL。请参阅下面的崩溃报告服务器一节,详细了解如何设置此终端。

配置变量参考

崩溃报告器客户端的配置变量如下所示:

编辑器版本始终包含崩溃报告客户端,但你可以选择是否将其包含在打包版本中。

崩溃报告服务器

要充分利用崩溃报告器,你需要设置服务器来接收远程用户的崩溃报告并将其符号化。UE不包括带有源代码或二进制文件的此类组件。但是,将源代码用于崩溃报告客户端,你就可以开始创建自己的自定义解决方案。此外,也有一些第三方崩溃报告服务可供你部署。

以下是UE社区中常用的崩溃报告服务。每一类服务都有相关文档,说明了如何将其与UE的崩溃报告器集成:

崩溃报告服务:Backtrace

https://backtrace.io

UE文档链接

https://docs.saucelabs.com/error-reporting/platform-integrations/unreal/setup/

崩溃报告服务:Bugsplat

https://www.bugsplat.com

UE文档链接

https://docs.bugsplat.com/introduction/getting-started/integrations/game-development/unreal-engine/

崩溃报告服务:Sentry

https://sentry.io/welcome/

UE文档链接

https://docs.sentry.io/platforms/unreal/configuration/setup-crashreporter/

全文完

秀!八年级14岁少年用Blender做的

浅谈UE新材质系统Substrate

爱上了大神作品中的男女主角