• Register

2024's ultimate "block-buster" game, Paladin's Passage is available today for Steam (Windows/Mac/Steam Deck/Linux), Xbox Series X|S and PS5.

Post feature Report RSS Porting our Unreal Engine 5 Game to Xbox and PS5

This article gives an overview of the process and challenges of porting our Unreal Engine 5 game from Windows (Steam) to Xbox Series X|S and PlayStation 5.

Posted by on

We shipped Paladin's Passage on Steam on August 30th, 2023 for Windows, MacOS and Linux (Steam Deck). We probably should've waited another week or two - we wound up issuing some quick hotfixes - but one of our team members was going back to school and we'd already committed to that date as a short-notice exception from Valve.

Sales were LOUSY. Like REALLY BAD. Partially this is due to our limited marketing budget. While we aggressively pursued reviews and media coverage, did our own social posts for months before and after launch, giveaways, etc., we didn't get much traction.

That being said, we also somewhat blame Steam. So many new..."titles" launch on Steam every day, that discoverability is a MAJOR problem for teams without a big ad budget. Our game never cracked any kind of front page list, was quickly shuffled off the new releases page (over 100 games came out the same day as ours), and even with major update events we weren't able to get anywhere.

As a result, we decided to pursue porting our game to other platforms. Some quick research showed that Xbox and PlayStation stores see many fewer launches in a WEEK than Steam often sees in a single day. That sounded promising for organic discoverability. In addition, both Sony and Microsoft have mechanisms for promoting games which even indie studios can take advantage of. We also had a more-or-less finished game (at least from a UI and gameplay perspective), AND we were using a game engine (Unreal Engine 5.2 at the time) which supported Xbox and PS5 by default, so...how hard could it be?!

Screenshot 53

The first step was to brush off our old game design documents and get them updated to the current state of the game then drop in the required details for Xbox and PS5. This took about a week, since we also recorded some new gameplay trailers, captured a lot of screenshots and created some new mock-up artwork concepts for the developer applications.

Next, we applied to both id@xbox and the PlayStation developer network. Neither one presented any major issues. We decided to target only Xbox Series X|S and PS5 - the current, most modern platforms.

In general, the id@xbox application and onboarding process is a bit simpler than PlayStation's. The id@xbox team is a group of contractors with Hanson Consulting Group who kick off the process, then hand over to some Microsoft employees once a game is ready for certification and release. Everybody on this team was really helpful and friendly, making our jobs much easier as a result. Once piece of feedback for the Xbox team: your Certify buttons should be BIGGER! Why are they so tiny? Don't want us clicking them by accident!?

The PlayStation process wasn't complicated per se, but a couple of factors made it more confusing than it needed to be. First, we actually had a PS developer account registered back in something like 2020. We'd set this up, been accepted, then done nothing with it. Between 2020 and 2023 (and into 2024) a LOT of stuff changed on the PS portal(s), but we hadn't kept up. Frankly, it probably would have been easier if we had started over from scratch, but we managed to muddle through.

The second 'thing' about the PS developer portal is that it is HUGE. I'd say it is probably 100x bigger than the Xbox portal. This is both good and bad. You can do a LOT of stuff on the PS portal, but it is often hard to find what you want and figure out the next steps. Be sure to use the Learn videos for onboarding, concept creation, store setup, etc. These videos are EXCELLENT. Sony's developer and portal support mechanisms are also amazing. We received responses to ALL our queries very quickly and the answers were almost always what we need to keep moving forward.

After getting onboarded, we kicked off a few parallel paths:

  • Obtaining developer hardware
  • Getting access to the Xbox and PS SDKs
  • Getting access to the Unreal Engine SDKs and source builds for Xbox and PS5

As a UE5 game, we tried saving money by only getting a PS5 Test Kit and NOT a developer kit. Frankly, this worked perfectly well for us. Our game is 80% blueprints (outside the engine code), so debugging was not difficult with a lot of "Log String" calls. We might have saved some time with a developer kit, but frankly, I doubt it. In addition, you MUST HAVE a test kit to complete some of the PS certification testing (dev kits don't have a release mode). One disappointing side note: you can't use either a dev kit or test kit as a normal PS5, so these are 'useless' after you're done shipping your game (other than for ongoing updates). You cannot connect these to the production PS store to play other games.

Microsoft shipped us some older Xbox hardware for free. That was very cool, but unfortunately it was the wrong hardware. They don't give away the current generation of developer kit, so we had to buy an Xbox Series X|S devkit. This is a single piece of hardware which is actually a Series X which can be set up to mimic a Series S for testing. It also supports both development and retail modes AND you can use it like a normal Xbox and connect it to the production store.

Once hardware was ordered, we got together the paperwork to get access to the various SDKs. This involves a few emails between Epic, Sony and Microsoft, but happens fairly quickly and is relatively painless. Make sure to pay attention and use only release versions of Unreal Engine, the corresponding SDKs for both consoles and the correct versions of the Xbox GDK and PS SDKs. If you are developing for more than a few months, you may NEED to upgrade all of these pieces part-way through the process. Both Microsoft and Sony frequently expire their SDKs to ensure that new games support the newest console/SDK features and requirements. We ran into this problem a couple of times and had to upgrade from UE 5.2 to 5.3 and then 5.4 as well as upgrading our PS SDK from 7.0 to 9.0. On the Xbox side, you can - in some cases - just drop in the latest validation tool DLL on top of your existing GDK installation and be fine.

Finally, we had the ability to build our game for Xbox and PS5 and hardware to test on. We were using a few incompatible features, so we stripped those out first (e.g. Steam APIs) and replaced them with other modules (details to follow). We also stripped out a lot of non-console features both at the beginning of the porting process and as we went along. Up front, it was clear that we didn't need a lot of the graphics/display configuration settings. We stripped out DLSS and FSR support and disabled the ability to pick a screen resolution. As we got further into the process and had a better understanding of our target hardware, we also realized we should be hard-coding many settings on a per-platform basis. For example, since all Xbox consoles and all PS5 consoles are the same hardware, we can hard-code the quality levels of the rendering settings. In fact there are some cases where this is REQUIRED (e.g. FX on PS5 must be set to level 3).

It took about 2 weeks, but we were finally able to get builds of our game running well on both Xbox and PS5. At this point, we were already about 2 months into the total process (from application to working build).

A couple of items that we haven't mentioned so far should probably be clarified now.

  1. Both Sony and Microsoft have caveats in their legal agreements that you must do a "simultaneous ship" of your game. That means you cannot ship on Xbox (for example) first and then on PS5 a few weeks later. They have to go live on the same day. You CAN ship on other platforms BEFORE you sign agreements with Sony and Microsoft, and you CAN update those platforms, but you cannot ship on any NEW platforms after signing the agreements.
  2. In addition, both Sony and Microsoft require that you provide the same features in each release so that Xbox, PS5, Windows, MacOS, etc. all have the same game features. For example, you cannot ship a Windows build with 20 levels and then ship on PS5 with only 10 levels. We had to apply for an exception for this because we have a level editor and Steam Workshop support in the Steam version, but neither PS5 nor Xbox have any APIs for this kind of feature, so we asked them to let us exclude that feature on their platforms and they agreed.

Screenshot 51

We also wanted to have shared leaderboards in our game so that Steam, Xbox and PS5 users could compete against each other. We looked at quite a few possibilities, but by far the simplest was to rip out the Steam leaderboards from the Steam version and replace it with PlayFab leaderboards, which are supported by all 3 (and many more) platforms on Unreal Engine 5. One problem that came out of this during the certification process is that Sony considers this to be an online cross-platform feature. We had to update the leaderboards for Xbox, Steam and PS5 very quickly so that they (a) showed a platform-specific icon beside each user and (b) showed the PSN user ID beside PSN users instead of the generic PlayFab user ID.

We spent a couple of months doing some of the updates we'd deferred from the Steam launch at this point. These were not major changes, but just some of the small bugs and features that didn't make it into the August 30th, 2023 launch on Steam. All of these went live on Steam with the 1.2 release in early 2024 and were therefore well tested before the console releases.

One of the biggest hurdles for us was supporting all of the required languages for Xbox and PS5. We wound up translating all of our in-game strings, store page strings, achievements/trophies and marketing text into 20 languages using a professional translation service. We used the UE5 localization tools to get all of these strings into POE format and sending those to the translators. This turned out to be a very good choice, since it made string management very easy.

By about April, we started running through the very LONG list of certification test cases for both platforms, starting with Xbox. This testing revealed a few problems that were sometimes difficult and time-consuming to fix:

  • Xbox allows user switching without closing down any running games/applications. As a result, a different user could attempt to resume a session of our game, which should NOT be allowed. We had to add a few new event handlers in C++ and Blueprints to fix this and wound up simply exiting the game if the current user isn't the same as the one who launched the game.
  • We encountered some issues with Ukrainian on both platforms. UE5's code doesn't recognize this language by default, so we had to modify the engine code to support it.
  • By far the biggest hurdle was PS5 Activities. Never having spent much time playing PS5 games, we weren't familiar with the concept of Activities, so we didn't even know it was a required feature. It took quite some time to get it in place, working, tested and debugged.

By July, we were ready to enter the certification process for both Xbox and PS5. Again, the PS Learn videos were invaluable for figuring out how this process works. It took 3 rounds on each platform to pass completely. As mentioned above the shared leaderboards caused the biggest problem, since Sony has very specific requirements around online shared content. Overall, certification was relatively painless, mostly just minor issues around language. Again, Sony's requirements for terminology are VERY specific. We had a hard time with this until we found an XLS file hidden in their documents which gave exact translations for (for example) the terms for the controller buttons, etc.

In mid-August, we had certified builds for both platforms in the green and ready to ship. We picked September 10th originally as our launch date, but had to push that back to September 17th due to the leaderboard changes. Both Microsoft and Sony require the launch date to be set at least 2 weeks in advance, especially if you want to have them support you with social media marketing.

Finally, marketing. As part of the id@xbox process, the team contacted us to get videos for YouTube and X/Twitter to be posted on each platform. By default, this will be on the idxbox YouTube channel and idxbox X/Twitter feed. In some cases, the main Xbox channels may also pick up these feeds.

Sony's process is a bit different and more stringent. We applied for our video to be shared on the PlayStation YouTube channel and X/Twitter feed, but were "politely" told no. At least they were polite about it!? They said to try again at a later date, so we might do that.

We created and sent promo/activation keys for Xbox and PS5 builds to about 50 different reviewers and sites. It looks like at least some of them have activated these keys, so we're hopeful that some reviews are forthcoming.

And now, we wait. The game goes live later today. Fingers crossed!

PP XboxLaunchTrailer01

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: