Console Porting: Tips for Unreal Engine Development

Continuing our work with publisher Digerati Games, the 1st February 2019 will see the release of Animal Super Squad for Xbox One. Originally developed by DoubleMoose Games using the Unreal Engine and ported by us to the Microsoft console.

In this new tech post and video, Steve Longhurst offers up 4 good practice design and coding elements that will help any console port in the long run. They are things to inform your design and code from the very start of development, but will make the job of console porting go smoothly when the time comes.

The 4 things to bear in mind are:

  1. Initial Interaction Screen (IIS) or User Engagement

  2. Gamepad Menu Navigation

  3. Player and PlayerController Usage

  4. Game Pause and Other External Interruptions

Watch the full video (just over 10 minutes) which includes blueprint and code examples. Some additional information and links also follow below. In game clips for illustration from Animal Super Squad by DoubleMoose Games.

Initial Interaction Screen (IIS) or User Engagement

This is the classic “Press any key to start” screen that appears at the beginning of a game.

Gamepad Menu Navigation

I have followed the design of a simple game front end, from the Unreal Engine UMG UI Designer Quick Start Guide. This guide is a good place to start when you are looking at fleshing out a framework for a game, it provides the structure for a front end menu interface and a pause menu. It builds upon the blueprint 1st person template, but can easily be used with the 3rd person template (as I have done), or your own prototype game code.

Part 1, offers advice on implementing keyboard navigation for your UI, which can be extended to include gamepad. The main takeaway is that you cannot just focus on using a mouse for navigation, console’s don’t usually feature these! Some additional help can also be found at the following links:

Player and PlayerController Usage

Where the first two items talked about would generally apply to any engine, this item is very specific to Unreal. The Player and PlayerController objects are used within C++ and Blueprint code, that I describe a way to manage access to them which can be extended when it comes to console porting.

Game Pause and Other External Interruptions

Console development actually has something in common with mobile development in this regard. Modern consoles dictate the game life-cycle from startup to shutdown, and you need to write some methods that can be called when external events occur. The tips presented here will help you add these in early, and be able to test them when developing on a PC.

— SL

Steve Longhurst