Sunday, 29 May 2016

Porting Unity Mobile Game To tvOS

I am back from my hibernation. Life and my full-time job kept me busy for 2 years and so much had happened since my last post back in April 2014. Including Apple's new toy: Apple TV 4 with its brand new tvOS.

I finally had some free time these days so I decided to port Bot Trigger, one of my mobile games, to this new and shiny OS.

Having build Bot Trigger with Unity made porting much easier. 
However, it was not free from challenges which I will highlight in this post.

Game Controls

Porting game controls from touch input to any other form of inputs requires bit of rethinking the game.

In the case of Bot Trigger, the game controls are relying on dual pad input. one for movement and one for aiming and firing and this brought a challenge as Apple (at the moment of writing this post) requires games to be fully functional using Siri Remote even though they do support a game controller.

This meant that the dual pad controls were not an option anymore and instead I had to make the game as single pad game with auto firing and no aiming for now. This in itself might not be a bad thing as most of the feedback I got was the two pad option was bit tough to master on touch screen. But for most games this might proof a challenge to make more console like games.

I looked into the accelerometer/ gyroscope options.  However, it seemed bit fiddly

UI

When I built Bot Trigger back in 2013 old Unity UI wasn't a good option as the  out of the box GUI was bit limited with performance issues. 

One of the most popular options at that time was NGUI. NGUI  (at the moment of writing this post) doesnt support tvOS remote input yet. 

This meant that I need to port my UI to the new Unity GUI and support the non touch input which is well documented in Unity's website.

3rd Party Libraries

Need to keep in mind that tvOS supports a subset of iOS frameworks. 3rd party plugins/ libs need to be built for tvOS. 


Bugs :-)

It hasn't been that long since Unity published tvOS support. some glitches I encountered were mainly with Leaderboard /Social API. Unity 5.3.5 seems to have fixed most. 

Still, I needed to manually add leaderboard assets in XCode rather than Unity's Editor to be able to display the Leaderboard (to be fair Unity mentioned it in the docs but I didn't notice it at first)

Also it seems that there is a memory leak if I keep debugger attached to my game while running on device.

It will be also nice if Unity support input from tvOS simulator (or provide their own simulation) as at the moment its difficult to start porting without having the physical device.


The port is almost finished. I will follow up with post once I have a "release ready" version of the game

--UPDATE--

tvOS submission was rejected due to the menu button in game (after searching it seems alot of devs like me were not clear on how it behave). 

In case you are planning to port/make a game on tvOS make sure that the menu button is used to show and hide pause menu (confusing as you would think play/pause buttons should be used for that).