For the latest developments from our engineering team, head over to the Engineering Blog at engineering.backtrace.io.
Crash Reporting for Game Development Teams
When game development teams think about the off-the-shelf features they can embed in their next great game, they often gravitate towards leaderboards, online payments, chat systems, and more player facing capabilities. While these are all fundamental to a great user experience, one feature developers often overlook is error and crash reporting.
Crash reporting allows developers to better understand when and why crashes occur when running a game in a released or test environment. When done right, crash reporting collects valuable context to help engineers get a head start on fixing the issues that matter. It helps them better understand the impact, environment, and situational data, which leads to more effective prioritization.
Backtrace has built the best crash reporting solution to help video game development teams effectively use crash and error data. In this blog post, we’ll review the set of technologies that Backtrace supports for video game development teams. We break this down into four different categories: Engines, Devices, Languages, and Backend Services.
Unreal Engine 4 (UE4) - UE4 is used by teams building sophisticated games with complex graphical and photorealistic requirements. While the blueprints and visual programming models provide a good starting point, developers generally need to dive into C++ to better tweak their code. Backtrace natively supports the Unreal Engine built-in crash reporter. It can be configured to send all game crashes to Backtrace for prioritization and analysis. Check out our plugin on the UE4 Marketplace that makes it easy to configure crash reporting on your game to submit diretly to Backtrace! For more detailed information on how to integrate with the Unreal Engine, check out our documentation here.
Unity engine - The Unity engine is one of the most popular game engines. It is easy to use with its well-defined object model and developer-friendly APIs. It generates 2d and 3d games, and developers use the C# language to tweak their code. Because it is considered managed code, C# will generally not crash, and instead will generate exception objects that provide the developer with a chance to handle the exception through logging or retry logic. Backtrace consumes these exception objects and helps developers understand which issues need prioritization. Learn more about Backtrace’s integration with the Unity engine in a recent blog post or via our documentation here.
Amazon Lumberyard - Lumberyard is a AAA game engine with millions of lines of C++ code. Developers can get the full source code as well as pre-built components for free. Backtrace has worked with the Lumberyard team to provide support for in-house and 3rd party games via a gem they distribute. Learn more about how the Lumberyard team uses Backtrace in this blog post.
Custom Engines - Backtrace has integrated with other custom engines and runtime environments via a structured JSON crash object and/or minidump submissions. Talk to us for more details!
Desktops (Windows, Mac) - Desktop Operating Systems like Windows and Mac are used for game play due to their ubiquity and the availability of high-end graphic and compute power to support smooth game play. When Engine-based integration as described in the section above doesn’t support your environment, Backtrace offers additional capture methods, like Crashpad for Windows and Mac. Check out our documentation for Crashpad, Visual Studio, and more details.
Consoles (Xbox, PlayStation, Nintendo) - Consoles are popular as they are fit-for-purpose gaming devices that work well with other home entertainment devices (i.e. large screen TVs, audio equipment). Developers typically build for multiple consoles and/or desktop computers, and disparate crash reporting solutions provided by console vendors make it hard to detect issues that are common across your supported environments. Backtrace provides crash capture solutions for Xbox today, and is looking towards new platforms like PlayStation and Nintendo in the future.
Mobile - Mobile games are the fastest growing segment, and provide many casual gamers with a recreational outlet. Mobile covers both the phone and tablet form factor, usually using ARM CPUs, and iOS or Android OS. Generally, game engines like Unity or Unreal are used to develop games for these platforms, and Backtrace’s integration with those platforms covers the vast majority of these use cases. For other situations, Backtrace also has native crash / exception capture from Android and iOS. Reach out for more details.
C++ - Backtrace was originally founded to help development teams debug C++ crashes; those where detailed analysis of a core dump or minidump provide the best clues as to what the issue might be. This has translated well into video game space, as many sophisticated games and simulations are built using C++. Backtrace supports the Unreal Engine, Amazon Lumberyard, and other custom game engines that use C++ and generate minidumps and core dumps as needed. Backtrace will consume and analyze these artifacts, providing engineers with the details they need to prioritize and resolve. Read about Backtrace's industry-leading Minidump support here.
C# - As a managed language, C# has built-in mechanisms to prevent crashes by throwing and catching exceptions. The same issues that may plague C++ applications (i.e. faulty arithmetic, invalid array access, or trying to load a file that doesn’t exist) can occur in C#, but rather than causing a crash, they give developers a chance to handle the issue. Backtrace has support for developers to capture these exceptions using a Backtrace C# reporting library or a Unity Plugin so they can prioritize and resolve the issues that are most important to them.
Swift - Applications and games that are natively written for iOS will generally use the Swift or Objective-C language. Like C++, crashes can occur in these environments, and Backtrace provides libraries that can capture crashes in a similar way that is done for C++.
Servers and Infrastructure
Linux Servers - Backtrace's origin story revolves around capturing and debugging core dumps from Linux and other Unix based OSes. The Ptrace and Coresnap tools (more details here) were designed to run on backend servers, capturing and analyzing core dumps, and converting them to a Backtrace snapshot (.btt format). Many organizations are using these tools from Backtrace to more quickly identify and resolve backend server crashes, and we encourage you to reach out if you want to explore this capability with us as well.
Apache Traffic Server and Content Delivery Networks- Backtrace is used for many home grown and carrier grade Content Delivery Networks, leveraging our core dump technology and in some cases, a plugin for Apache Traffic Server (ATS), to capture and assist in the resolution of CDN crashes. While some large companies who stream games and content run their own internal CDN (using Backtrace to keep their operations running smoothly), others rely on specialists like Limelight Networks or Fastly, both of whom are also happy Backtrace customers today.
Game developers have to be laser-focused on shipping engaging experiences. The time it takes to sift through, understand, and investigate every kind of crash or exception players suffer has to come down. Backtrace provides the trusted solution that helps game developers minimize the time they need to prioritize and resolve crashes and exceptions.