I’ll be totally honest and say I was not aware of Animal Super Squad before I started working on the Xbox One version. I giggled at the acronym at first, but a quick look at ASS developer DoubleMoose Games’ website certainly piqued my interest.
A physics-based adventure where you speed through side-on levels in whacky vehicles piloted by equally whacky animals. You also get to create your own levels with a fully featured freeform editor, then upload and share them with the community.
The DoubleMoose gang, along with PewDiePie who partnered with the team on ASS, had a technically impressive and fun game on their hands. It would be a great fit for Xbox One and the Xbox Live community, especially with the all-new and Xbox exclusive addition of Mixer support.
As I progressed with the work of integrating the game onto the Xbox One platform, things went very smoothly. Kudos must go to DoubleMoose for creating its game in a way that made updating and maintaining the code very straightforward. Writing code that works is one thing, but making code easy to understand so someone unfamiliar can modify it without breaking it (remember I was not involved in the initial development) is the sign of a very skilled team.
The game was developed for PC using the Epic Games Unreal Engine, and sometimes Unreal blueprint code can be especially ‘fun’ to work with. It’s developed visually, using a graph structure of nodes and links that describe data, control flow, and conditional logic.
There is a technical term for complicated or hard to maintain code, it’s called spaghetti code, and Unreal blueprints can resemble literal spaghetti. Thankfully, Animal Super Squad was not like this, with a clean mix of well written C++ and Blueprint logic.
This is a good example of neat blueprint logic…
And here’s a contrived, but still valid, bad example…
When the bulk of the development work was done, and the game was running well on Xbox One, I turned my attention to the Mixer integration.
A unique aspect of Mixer is the MixPlay system, which allows developers to create a special Mixer ‘dashboard’ that consists of user interface widgets such as buttons. These buttons let viewers directly interact with the streamer and the game as it’s being played, and since Mixer viewing latency is so low, both streamer and viewers get immediate feedback and results.
This is how Animal Super Squad’s widgets appear in the developer dashboard…
Since Animal Super Squad has physics-based gameplay, one obvious feature to allow viewers to interact with was gravity. I added a ‘Moon Gravity!’ button, which does exactly what you might expect, allowing the streamer to fly higher and farther, until the timer runs out.
Next was the ‘Boost Boost!’ button. Each vehicle in the game has a boost feature, but it’s limited in time or power, and this button extends those. A boosted boost and Moon gravity at the same time can help a streamer out when completing levels or let them explore areas otherwise unavailable.
Then for some simple fun, I added a ‘Props!’ button to shower the streamer in gratitude. Lastly, some voting buttons for the next vehicle that viewers want to see the streamer use. This is a subtly different use of the feature, allowing for interaction at any point in the stream, not just while the streamer is actively playing.
To finish this post, I must give a shout out to the developer support team at Mixer who helped me in a number of ways. They directly offered me setup advice, coding tips, and helped me debug a crash issue with the Unreal Engine plugin. The Mixer plugin being open source, I naturally submitted code back to the project for the crash bug fix, helping anyone else doing the same thing in the future.
Really hope everyone has fun with Animal Super Squad and enjoys trying out the Mixer features.
Animal Super Squad is available to pre-order now from the Xbox Store and will launch 1 February.
Massive thanks go out to the team at Digerati for making this article happen. If you wish to check out their great work, make sure you are following them on Twitter and by hitting up their Discord channel.