sentry-unreal icon indicating copy to clipboard operation
sentry-unreal copied to clipboard

Support for Gaming Consoles

Open highlyunavailable opened this issue 3 years ago • 23 comments

It would be great if (if possible!) Sentry could provide additional ISentrySubsystems for consoles (e.g. XBox, Playstation, and Switch). This would be a bit more annoying for you because the developer that uses Sentry would have to have the console manufacturer verify that they were a licensed developer to Sentry (E.g. I wold have to have Sony inform you that I'm a licensed PS developer) before you could allow access to that particular SDK but it would be a huge boon for reporting.

highlyunavailable avatar Jun 22 '22 19:06 highlyunavailable

This is something we want to look into but we don't have a timeline just yet. Our goal was to get the plugin and support Mobile, Desktop, Web before we get into Consoles.

bruno-garcia avatar Jun 24 '22 23:06 bruno-garcia

It's appreciated! I mostly wrote this up as a request so you would know customers are interested in consoles as well.

highlyunavailable avatar Jun 24 '22 23:06 highlyunavailable

This feature will be super useful when it comes, some alternative solutions on the market don't support Console out of the box, so adding this would sway a few folks I think!

Edstub207 avatar Aug 06 '22 23:08 Edstub207

@bruno-garcia / @vaind I don't suppose either of you have an updated timeline for this as the issue is approaching a year old?

Edstub207 avatar Mar 25 '23 01:03 Edstub207

@Edstub207 My company is moving off of Sentry (to BugSplat) due to poor Unreal support (bad trace grouping, lack of Linux support for servers) and complete lack of Console support in the foreseeable future, so 🤷‍♀️ . Consider alternatives, IMO.

highlyunavailable avatar Mar 27 '23 07:03 highlyunavailable

@Edstub207 My company is moving off of Sentry (to BugSplat) due to poor Unreal support (bad trace grouping, lack of Linux support for servers) and complete lack of Console support in the foreseeable future, so 🤷‍♀️ . Consider alternatives, IMO.

Linux crashes seem to be okay for us so far... What do you see?

Edstub207 avatar Mar 27 '23 22:03 Edstub207

@tustanivsky FYI as well - Just realized I've not seen Bruno or Ivan active on this project for a while :)

Edstub207 avatar Mar 29 '23 23:03 Edstub207

@bruno-garcia @tustanivsky is there any update on this - Had a few other studios wondering about the status of this in a discussion I just had.

Edstub207 avatar Jun 06 '23 17:06 Edstub207

Hey, sorry about that - Fell through for a bit. We're looking into it - but it's complicated. (and not just on a technical level)

bitsandfoxes avatar Jun 07 '23 13:06 bitsandfoxes

Hey, sorry about that - Fell through for a bit. We're looking into it - but it's complicated. (and not just on a technical level)

@bitsandfoxes Thanks for confirming. Do you know a rough ETA or is it currently unplanned?

Edstub207 avatar Jun 08 '23 09:06 Edstub207

Sorry, I don't have an ETA.

bitsandfoxes avatar Jun 09 '23 11:06 bitsandfoxes

I assume the "no ETA" on official support still applies, but do you have any customers successfully running Sentry on consoles anyway? It seems functional enough, but not sure how much effort there would be to get the various platforms to accept it. So any pointers or previous examples you might have would be valuable in case we'd be looking into going that route.

maxha651 avatar Apr 12 '24 11:04 maxha651

There are customers using it already. If you're interested, please reach out to the sales team: https://sentry.io/contact/enterprise/ they can verify the middleware program and share details.

If you work with Game Consoles you know not much on this subject can be discussed in public forums. But Sentry has several game studios as customers. But we're not allowed to talk about anything that's not on public websites (like Riot) :)

bruno-garcia avatar Apr 13 '24 00:04 bruno-garcia

The current status of console support is that we won't be widely supporting it. We will try to help on a best-effort basis but can't guarantee proper support with the console manufacturer's blessings. I will close this issue now. We do appreciate the report and might get to this sometime in the future.

jernejstrasner avatar Jun 04 '24 17:06 jernejstrasner

I won't be reopening this just yet but I wanted to share that we're moving ahead with official console support. Might take some time before it's available on all consoles but you'll soon hear about the first platforms.

bruno-garcia avatar Sep 17 '24 01:09 bruno-garcia

So Sentry does support consoles at different levels of maturity. We're working on officializing things.

For Nintendo Switch, support is official now. For PlayStation, you can find Sentry in the devnet and reach out/do the middleware verification process through it. Support here requires you to run at service at this time. But we plan on improving this in the future. For Xbox, sentry-native can be compiled with GDK. For those with a middleware agreement, we'll verify that and share some details/code.

Also note that we're hiring a Senior Engineer to help us with our gaming support.

bruno-garcia avatar Sep 27 '24 02:09 bruno-garcia

Folks interested in console support. Note that Sentry is available in the middleware and tools page of all the 3 major platform providers.

That means we have support for all consoles already but outside of any game engine integration. That's our next step basically. So that if you're using this SDK (Unreal) already on PC or Mobile, and you build for Console, all the context (tags/breadcrumbs) show up on those native crashes we can already capture from consoles.

If you're interested in getting early access to stuff please reach out via the middleware pages in the console provider's internal developer network. You'll find Sentry in there (or reach out to Sentry support for details since we can't publish some links publicly here)

bruno-garcia avatar Feb 01 '25 23:02 bruno-garcia

@bruno-garcia do you mind linking to the devnet forum where Playstation support is described? Same for GDK compilation - are there docs for that anywhere?

zsd4yr avatar Feb 06 '25 17:02 zsd4yr

@bruno-garcia do you mind linking to the devnet forum where Playstation support is described? Same for GDK compilation - are there docs for that anywhere?

Let me share a broader update, with as much detail as it's possible considering this is a public forum. For more details on stuff, please go through the middleware verification process so we can provide you with code, docs, details etc. Sentry support can also help guide you to the middleware process if the details below are not enough.

PlayStation

I reached out again to Sony asking if we can share the link publicly. I did so because in the past I was told explicitly not to share it. While I wait for an answer, let me at least describe it where it is. Inside DevNet, there's Development and under it, Tools & Middleware. Sentry can be found in that page.

We're working on an API for PlayStation so you can set tags, release, breadcrumbs etc programatically and those end up in the native crashes we can already report. The API is engine agnostic, but we'll be binding them to the Unreal SDK next. Then Unity, Godot. This happens on a private repository for obvious reasons.

Xbox

Microsoft is OK with sharing their new verification page. Sentry is an option in the drop down: https://developer.microsoft.com/en-us/games/support/request-gdkx-middleware

For the open source Xbox support, we have details on how to compile it on sentry-native here. But note that we're adding support built-in to the Unreal SDK (and later will do it on Unity, Godot) ~There's a draft PR already for it:~ ~* https://github.com/getsentry/sentry-unreal/pull/775~

UPDATE:: Since the changes requires some Unreal-console specific work too, it'll be hard to do this without possibly exposing stuff we shouldn't from the Epic's point of view. So this will also be done in a private repo.

Once this is figured out, we'll add it to Unity too. _We're doing as much as we can in public, thanks to Microsoft's OSS GDK and samples. But it's likely we'll have some private/closed source components in the future as we add more advanced features. _

Switch

The link to Sentry in middleware page in the Nintendo Developer Portal is: https://developer.nintendo.com/group/development/getting-started/g1kr9vj6/middleware/sentry but with Nintendo, you can configure data forwarding from Nintendo directly to Sentry. Through the CRPORTAL. The documentation for it lives within the CRPORTAL itself, including how to set up symbol server, etc.

We're also working on an API for Switch so you can set tags, release, breadcrumbs etc in the Unreal SDK and those end up in the native crashes we can already report. This happens on a private repository for obvious reasons.

bruno-garcia avatar Feb 07 '25 16:02 bruno-garcia

@bruno-garcia if you want to make a playstation dev forum thread like the one for SharpMake -- https://game.develop.playstation.net/forums/thread/32638/ -- that might be a good way to disseminate information on that component.

zsd4yr avatar Feb 20 '25 18:02 zsd4yr

@bruno-garcia if you want to make a playstation dev forum thread like the one for SharpMake -- game.develop.playstation.net/forums/thread/32638 -- that might be a good way to disseminate information on that component.

That seems like someone was asking about SharpMake and then someone replied. Not sure I can go in there and write a post about Sentry asking folks to give it a try. If you ask about it, I'll be happy to reply in there how to get started and how things work since inside the devnet I can go in detail about stuff.

bruno-garcia avatar Feb 21 '25 18:02 bruno-garcia

@bruno-garcia heard https://game.develop.playstation.net/forums/thread/449165/

zsd4yr avatar Feb 21 '25 22:02 zsd4yr

On my last update, I mentioned how you can reach out via the middleware portals, to get more details from us.

I briefly talked about what we're working on for each platform. But since there has been confusing on what is available right now vs what folks need to wait for and any timelines, here's another update:

Nintendo Switch

Production crash dumps

No SDK is required in order to get Switch crashes into Sentry.

Crashes from Switch retail go from the device directly to Nintendo's servers. Nintendo and Sentry have a partnership (see press release) where crashes from Switch are forwarded by Nintendo directly to Sentry. And Nintendo offers symbols servers to get crashes symbolicated properly, including system frames. I mentioned how to get started in my previous post.

How about Switch 2? Sure, that works too.

Adding additional context (aka: SDK)

We have an SDK for Switch. It's on a private repo (reach out for access please): https://github.com/getsentry/sentry-switch It is sentry-native, and tags and other context added goes into DyingMessage and later gets parsed and added to the Sentry event. So you can customize the dump. The format we defined is documented here. But that's transparent to you if you use the SDK. Sentry will use the DyingMessage (since there can only be one) though.

Devkit crashes?

This is not supported but we haven't received any requests for it. Do you need this? It's doable, today only 1 environment is used to forward data to Sentry, which is the retail crashes only.

PlayStation

Production crash dumps

No SDK is required in order to get PlayStation crashes into Sentry. You can get crashes in Sentry without any code change. It's all done in Sentry, in the project settings. We do need to opt-in your organization before you can see the project settings though (to get access, start the middleware verification process (I described above) and we'll get back to you with next steps.)

Image

More context: Production (CRS) crashes have been supported for a while now (it's considered preview while we get feedback but it has been working pretty well for a few months). It does not require an SDK to work. The crash handling client (running on the retail hardware for example) is owned by Sony and so is the service that receive the crash dumps. If you're a licensed developer, you have access to those crash dumps already in the devnet. What Sentry does is to pull those files on your behalf. Symbolicates them, adds screenshots, etc. So you don't need this (sentry-unreal) plugin in order to get the crash dumps in Sentry.

Adding additional context (aka: SDK)

But what if I want to set tags? Or capture non-fatal events?

Right, this is why we're working on an SDK for PlayStation too. We got something working now specific for Unreal (thanks @nwhite-riot !!), which we'll be able to share more broadly too (again, you need to start the conversation via the middleware verification process). In parallel we're also looking at bringing sentry-native to PlayStation, putting that under the Unreal-specific plugin, and also using that on our Unity SDK. That's because we already support sentry-native on desktop, so all the binding code stays the same and life becomes a lot easier.

The code lives on a private repository: https://github.com/getsentry/sentry-unreal-playstation We can add you to this repository once you go through the middleware verification process.

Devkit crashes?

Devkit crashes don't use the platform holder's infrastructure. They leave the device straight to a service. For example, a self-hosted Recap server. A solution for that, so you don't need to run your own Recap server is also coming. And it's a matter of weeks away. This is a big request for folks in development phase, that want to add SDKs/dependencies early in the development and stay with these tools through dev/QA/release.

Xbox

Production and devkits

Xbox is different than both Switch and PlayStation in the sense that devkit and retails crashes work the same way, in both cases you do need an SDK and the crash does leave the device directly to Sentry. The SDK, is sentry-native and open source as I said in my previous message.

But how do you get it to work with this plugin (sentry-unreal)? We have "some glue" that takes sentry-native built for Xbox and adds a subsystem for it, similar to how Windows works. The code lives on a private repository: https://github.com/getsentry/sentry-unreal-xbox We can add you to this repository once you go through the middleware verification process.

It's not a lot of code and once again (thanks @nwhite-riot!) is something we can share with you once you go though the developer.microsoft.com/en-us/games/support/request-gdkx-middleware.

Since you'll have Sentry's SDK in all cases, all the context you set already via the C++ API in this SDK will show up on the Xbox crashes too.

Summary

  1. To get access to anything, go through the middleware verification process.
  2. Switch and PlayStation -> No SDK needed for retail crashes. But can't add custom tags without an SDK.
  3. sentry-native ported to Xbox. It's open source. But Unreal specific support is not (can't be), reach out.
  4. sentry-native ported to Switch already. We can give you access to the repository, reach out.
  5. Adding custom tags/context on PlayStation requires Sentry Unreal PlayStation integration, reach out.
  6. Let us know how it's working for you! A lot of new things planned, but we want to make sure what we shipped is working well.

bruno-garcia avatar Apr 29 '25 23:04 bruno-garcia