Tips on porting your indie game (and how we can help!)
Presented by DO games, which handles porting across all major platforms.
Matthew Tighe is CTO and Founder, Steve Longhurst is Technical Director, DO games
In recent years, we’ve witnessed the re-imagining of the bedroom coder boom of the 1980s into professional independent games development, made possible by the ubiquity of excellent games engines and tools, with support from the burgeoning services industry and creative/maker movements.
It's clear that these days, it’s possible to do what you love, create games and with a bit of luck, make game dev a sustainable business - partly by porting your games to multiple platforms.
Come chat with us at GDC 2019 booth P1755!
Indies are of course capable of handling porting by themselves, but there is a significant investment required - likely several months per platform. With each platform having distinct tools, requirements for certification, release processes and architectural differences to learn - consider what the opportunity cost of this could be.
In this article we’ll take a look at some of the areas that are important on such a journey, whether you choose to tread the path by yourself or with a development partner like us.
DO games itself draws many parallels to the indie developers seeking to make games their full-time job. Created by Matthew Tighe in 2016, DO represents his efforts to create a sustainable business in the game industry.
Since 2016, we’ve been helping small developers and publishers release their titles on console, offering porting, co-development and technical assistance packages in various shapes and sizes. We have so far released five titles across all major platforms including Xbox One, Playstation 4, Switch, mobile and desktop with many exciting projects in the pipeline this year. For more information see our website for the list of games we’ve been involved in.
This year, we are attending GDC (booth P1755) for the first time to explain to the development community how our services can help them reach a wider audience by taking titles to console, mobile and other platforms efficiently.
Things to consider when targeting consoles and other platforms
For a game to be as successful as possible, ideally it should be released on as many appropriate platforms as possible. Each provides a new audience, a storefront with surface area and opportunity to stand out by utilizing features unique to the platform.
Here are some of the things you need to consider when looking to release your game on console and other platforms:
Start with the game engine you are using. The most popular are arguably, Unity, Unreal Engine and Gamemaker. But it is possible to get to console from other technologies such as Flash, OpenFL and HTML5. In fact, the first title we ever worked on (The Adventure Pals by Massive Monster), is written in Haxe/OpenFl. The console release was made possible by cross-compiling Haxe to C# and then going to console via Unity. You can read more about the technical details of this in our tech blog series.
Another thing to consider is any tooling or plugins you are using within your engine of choice. There are many excellent paid for assets and plugins as well as amazing things available in the open source world. But, can you find out if all are suitable for all the platforms you want to target? For example, you may use a third-party component to render water in your game, but do you know what tradeoffs there are when you come to do so on a mobile device? If you take something that is open source, how feasible is it that you or the community could update the code if you see problems on different platforms?
While all platforms now have tremendous GPU and CPU power that was unimaginable years ago, desktops are still a long way ahead in many respects and sometimes in areas you don’t expect. For example, how often do you need to optimize for disk performance - how many of your target devices have SSDs or storage as fast as a desktop?
As long as I can remember, making games has always involved approximation or outrageous trickery to pull off the impossible. There is now quite a wider range of performance between all the popular devices. Channel your inner magician to overcome these limitations.
In The First Tree, one of the main visual elements is the slowly swaying trees and the shadows they cast across the landscape. Calculating all this realistically is expensive, however an approximation via a shadow proxy gives a very similar effect with a valuable performance gain. This was essentially a billboard shadow animated with a shader to sway in the wind. The application of this onto the Unity terrain used was also a place for further gains; the subject of a future blog post.
With shadow proxies.
With realtime shadows.
Crucially, learn how to use the profiling tools provided in your platform and try to get a handle on which items affect performance and how. Try to profile and optimize during development rather than leaving it until the end based on a view of what you think is reasonable for the complexity of the game. It will save you from that crunch time restructuring and let you concentrate on enjoying the run up to release!
A few other things to consider:
- Try and get the game through any required certification early so you have a good amount of time for marketing with influencers
- Consider the differences in the platforms as early as possible so you can make best use of each
- Decide which things are important to users of each platform - we’ve have learned over the years they are subtly different tribes
Once you have picked your toolset and are furiously coding your masterpiece, what other things should you consider while developing your game?
Other than PC, in most if not all of the other platforms you will be looking to target there will be some level of exposure to native development. The dreaded black screen of nothingness or a crash on boot can be tricky problems to solve without at least some knowledge of how the engine you use creates builds that end up on your device. In at least one of our projects we’ve ended up debugging ARM or X86 assembly in order to track down a problem. Make sure you know how to set up the debuggers for your target platforms and don’t be tempted to survive only on console logging!
Accounting for differences in your target platforms can be particularly interesting. During the release of The Adventure Pals we had a particularly strange but potentially fairly common example.
On certain platforms the locale system follows regional conventions for decimal encoding more closely and therefore uses a comma (,) instead of a period (.) as the decimal separator. This seemingly insignificant change can cause any data encoded as text to be parsed incorrectly when the users device is set to certain languages. In this case, resulting in a scale factor of 1000x rather than 1.000x and introducing “giant bush mode” only on one platform and only for a select group of European users.
Original bug reported as fog descending over the level...
But we can see something distinctly bush shaped there in the background.
This leads us to testing. On PC releasing a patch is relatively trivial although still undesirable for bugs which could have been caught beforehand. But the workload of doing this for multiple platforms, each with different requirements and timings can be strenuous. Therefore, testing and general quality practices are extremely important. One tip in particular when close to release is to try and make very specific changes. Try to limit fixes to the exact cases causing problems rather than making wider code changes that may introduce further bugs across all platforms.
Finally, it’s increasingly common to use cloud services in your games. Be it platform provided, such as Xbox Live, PSN, Switch Online, Steam or third party in Twitch, Mixer, Gamesparks or Photon to name but a few. Each of them bring their own unique requirements but they have some inherent similarities. Make sure you know what’s important on each platform, how your content will map and what security requirements there are upfront.
The role of porting and what you love to DO?
For indie developers, to be successful with a fraction of the funding of AAA titles - but with similar platform reach and quality desires - they have to be smart with where they expend their effort. Consider whether your time be best spent learning a brand new platform and dealing with everything we’ve discussed above and more.... or is there more value in you building a community, getting the final level of polish you desire creatively or best yet - working on your next title!
For anyone that loves the technical challenge of porting, do it - it’s great fun and genuinely interesting seeing the differences in the platforms. But, for everyone else, consider how you too can rely on great services provided by companies such as DO to help you make the most efficient use of your time, creativity and your IP.
The games industry remains an amazing place to be, and the chance for individuals to realize their dreams in shipped console titles and even physical releases is something we dreamed about many years ago. At DO games we are excited to see what concepts Indie developers will come up with, as tools and services continue to improve. We’d love to talk to any of you in our first year at GDC - See you there - booth P1755!