Broaden your reach with multiplatform publishing

May 15, 2013 in Technology

Develop once deploy anywhere – that’s our proud boast. Currently, users can deploy content built on the Unity engine to nine different platforms, and in recent months we’ve announced support for seven more: Windows Phone 8 and Windows Store, BlackBerry 10 and PS4, PS Vita, PS Mobile and Sony’s new cloud gaming service. Plus, we’re working closely with Facebook to improve the Unity Web Player experience for Facebook gamers.

Designing content for multiple platforms becomes far easier if you think a few things through before you start. If you get your processes right, it’s easy to use Unity to build high wow-factor games across a range of devices.

Ten top multi-platform tips

 

1. Does this make financial sense? It sounds obvious but, before starting your project it’s as well to think carefully about the financial benefits of deploying your game to multiple platforms. On the one hand, making a successful game available on just one platform ignores easily acquired additional revenue. On the other, the costs involved in porting your game go beyond simply acquiring an additional add on license and clicking publish.

2. What about my demographic? Different platforms have their various strengths and weaknesses and are more or less widely used in varying contexts. Consider whether the type of interaction and game play your game is based around is suited to deployment to the platforms you’re targeting.

3. Start with your two most widely divergent platforms. If you plan on developing a game for three or more platforms, it makes sense to start by weighing up what you need to do to get your content to outlying platforms. By considering this first you will automatically cover much of the ground involved in developing content for your remaining platforms.

4. Beware obsolescence. Mobile platforms change at bewildering speed and supporting legacy versions of a platform that are becoming more obsolete by the day may, ultimately, just add to your costs.

5. Abstract out platform-dependent plugins. If, for example, you plan to build leaderboards and achievements for Apple’s Game Center be sure to build a leaderboard manager which abstracts the leaderboard calls and then makes the Game Center calls. That way it’s easy to add, for example, SteamWorks leaderboard support later on.

6. Ensure resolution independence. Plan how your HUD, UI, on-screen controls and buttons will be depicted at various aspect ratios. Design the UI layout in a modular way so you can space out elements without a re-design. Remember that, in Unity, you can specify resolutions in percentages.

7. Build high res source art. Let Unity do the downsizing for you. This prevents late-stage art reworking for e.g. iPhone Retina displays. Plus, when you need poster-sized promotional art, you won’t want to cry.

8. Think optimisation into mobile games from the start. Use light probes to store lighting information and bake this information into dynamic objects, work with simple specialized shaders and detailed, high-contrast textures, use object pooling techniques and profile early and often.

9. Consider investing in additional tools. Owlchemy Labs’ Multiplatform toolkit is available from the Asset Store. Amongst other things this end to end solution can ease scaling, strip redundant assets from your platform-specific build and help you manage and apply global asset compressions.

10. Frequent use of compiler directives. Unity supports platform specific compilation so you can partition your scripts to compile and execute a section of code exclusively for a specific platform.

Comments (5)

Subscribe to comments
  1. Arturo Nereu

    May 16, 2013 at 2:58 pm / 

    Thanks for the tips, we are working on our first multiplatform game with Unity and we are precisely looking into this kind of topics.

  2. Shane Whitehouse

    May 15, 2013 at 3:25 pm / 

    Great tips guys thanks a lot.

  3. Cameron Bonde (Vectrex)

    May 15, 2013 at 8:58 am / 

    Idea: “use object pooling techniques” include this as an option in Instantiate(). A simple additional bool to enable it, plus something like a pool group parameter.

  4. Biks

    May 15, 2013 at 8:23 am / 

    Good article. Also got to know about the Multiplatform Toolkit which is awesome. Cheers

  5. Milad

    May 15, 2013 at 6:32 am / 

    thanks.so useful.

Comments are closed.