May 11, 2017

How Unreal Engine Helped Snake Pass Achieve a Successful Multi-Platform Launch

By Pete Harrap

Hi there, my name is Pete Harrap and I am one of the Technical Directors at Sumo Digital in Sheffield, England. Following our successful launch, I’m super pleased to describe our experiences using Unreal Engine 4 to deliver the multi-platform release of Snake Pass, a platformer with a unique twissssst.


Snake Pass leaves Noodle dangling over a spectacular drop.

Let’s start with an important question that many developers could face - how do you go about the task of creating a whole new gameplay style while bringing it to multiple platforms? Well, we started by choosing a respected and well supported game engine that can ship to all the platforms we intended to release on. Then, we ensured that we had the proper tools to effectively experiment. Unsurprisingly, there are no tutorials on how to make a virtual snake, so selecting an engine with a comprehensive, designer-friendly interface was a must.


Super early game jam version of Snake Pass.

As the product of an internal game jam at Sumo, the general design concepts for Snake Pass took shape relatively quickly. Once the designers were happy with a specific piece of the Snake’s control logic, the code team were able to convert it into a well optimised version using native cross-platform code.


Original Blueprint controlling how the snake reacts to the spikes.

So, knowing that we intended Snake Pass to slither onto multiple platforms, the core question remained - is cross-platform development with Unreal Engine as simple as ticking the right box and building? Generally speaking, yes, it is. Almost everything is taken care of for you which means that the designers and artists can continue making the game with the confidence that it will work on all targeted platforms. Of course, game development isn’t as easy as checking off specific boxes, so the first time you run your project on a target console you may be in for a surprise.

Here’s what can go wrong. Your designers and artists are likely working with high spec PCs with graphics cards that are cutting edge. That type of hardware will eat whatever you throw at it and beg for more. Consoles have limited resources on the other hand, which need to be accounted for. Unreal Engine allows for this as there are settings for you to tweak and adjust, but only the developer knows what’s most important to their game. That’s where you’ll be spending a lot of your time - deciding what limits you need to set and which settings are best for what you want. It’s a battle between what the designers want to add, how artists want it to look and how much of that a particular console can actually handle.


Noodle about to collect a coin – at least it wasn’t lost in the grass.

For example, we wanted a lot of grass to be included in the world. To bring Snake Pass to life, we not only wanted a lot of grass, but we wanted a lot of grass that animated when Noodle slithered through it. We had to pay for that on each of the consoles while considering the overall cost. Unreal Engine provides the tools for this as the grass levels could be reduced via a simple global setting, but you still have to design your levels so that you can do that without ruining the effect.


Early concept showing the amount of grass we wanted but this wasn’t designed to be scalable.

Then, just when you think you’ve got all the platforms adjusted and working how you want them, along comes another platform and a new set of variables.

While Unreal Engine efficiently handles cross-platform development, when a new platform comes along there is still work to be done to ensure your project is optimised for it. As noted above, new platforms bring new challenges, and not just performance related. Remember, there might be features on a new platform that are not available on the other platforms (like docking the Nintendo Switch controller in this case). One thing Unreal Engine does really well is help get your project over 90% of the way to completion on its own. The remaining optimisation is often down to the code team to figure out and since it’s the little things that can trip you up, it’s wise to allocate development time to cover them.


Early Switch version – this is from the two day old build.

In December 2016 came the most impressive part of our experience using Unreal Engine for cross-platform development. That was when we were given the task of getting Snake Pass ready to be a launch window title on Nintendo Switch. “Hold on a minute, it’s not a supported platform.” was our immediate answer. True, but Nintendo Switch support was in development at Epic so we knew we could pull it off. It was scarily close to the launch window, but Nintendo Switch platform support in Unreal Engine was almost ready and we were confident that we could meet the goal.


Final Switch version.

To achieve the launch, we worked very closely with key Epic staff, including the NVIDIA GPU specialists. With that kind of help, we were able to get the first working build on Nintendo Switch made in under two days. Over the course of the next few months leading up to the launch, we managed to find all the required optimisations to ensure that platform’s unique docked and undocked modes were covered.


Snake Pass launched.

The end result is a game that we at Sumo are extremely proud of and a cross-platform title that demonstrates Unreal’s ability to empower developers or projects both big and small across the world’s leading platforms. Fortunately, Unreal Engine is continually evolving to bring new features and optimisations to developers, which should make future projects go even smoother for all UE devs.

Thanks for reading! You can find out more about Sumo Digital by visiting our official website.