How Apple TV Turned Me Into a Game Developer
Hi, I’m Alex, an OS X and iOS software developer. I have been writing Mac software for almost 10 years and I started working with iOS the moment the SDK was released in early 2008.
For several reasons, I have never created a game before. This changed on October 30th, 2015, when I released my first one, Cosmos — Infinite Space. In just over seven weeks, I went from not knowing the first thing about making games to having published a complete, viable game on the App Store for two platforms.
I still have trouble believing myself that this all happened in such a short time, so I decided to write this all down to help myself understand the decisions I made, how things lined up and what I should tell my grandchildren one day when I forget all the details.
The Deep End
When I saw the presentation of the new Apple TV, I just knew that I had to create a game for it. It has been a childhood dream of mine to actually produce a game, and this was the final push I needed to go out and try it.
Given the constraints of the platform, particularly the Siri Remote and the timeline (from announcement on September 9th, 2015 to launch in late October), it was clear to me that I would only have a shot if I managed to stick to a very tight set of rules:
- Endless gameplay, avoid complex level design
- Familiarity, works without a lot of explanations
- Use hands-on tutorials for any new technologies
- Use relatively few, inexpensive and readily available assets
All of these constraints lined up perfectly for the genre of vertically scrolling space shooters: it was easy to incorporate endless, randomised gameplay that gets progressively harder. People in general are very familiar with the genre and I even already possessed a hands-on book on SpriteKit, the framework I would use in order to pull this off. The first tutorial in the book even was about creating a vertically scrolling space shooter, so I would have a head start.
My main worry was the time I would need to complete the project. Since I would have to use my nights and weekends, I mostly have to thank my wife Maxie for picking up the slack and dealing with our one year old daughter and almost the entire household all by herself and also sacrificing a lot of “us” time to help me.
I was particularly egocentric about announcing my intention to turn this from merely an interest into an actual project by just telling her “Honey, I need to make a game.” To which she responded by looking at me, sighing and agreeing to help me — all without second thought.
I knew that getting into the business of making games could be a bad decision. From friends who have produced games before (particularly Mike Lee), I kept hearing that getting into games was a horrible decision from a business point of view. The ROI is terrible. There are tons of piracy problems. You could spend years on a game and never see a penny for all your work.
The only possible solution for all of this was to completely ignore all business concerns right from the start. I would approach this project strictly as a hobbyist, in it solely to learn some things about game design, development and eventually distribution and marketing. I figured that all other approaches would have set me up to fail miserably and lose a lot of money in the process.
This would also mean that I did not track the hours I spent on the project, since I did not even want to know my effective salary. Also, instead of locking myself in the office on all those nights and weekends, I spent the time half-watching Netflix with my wife, half-working on Cosmos. Please don’t ask me too many in-depth questions about the backstory of the TV show Defiance.
Getting Started With Development
On Sunday, September 13th, I got started getting familiar with SpriteKit and wrote the first few lines of code for the new project. While the book was written for Objective-C and older versions of SpriteKit, I chose to write the game in Swift and still adopt most of the techniques described in it. Some things, I replaced very soon, such as the manual collision detection in the book with the physics-based collision detection SpriteKit offers today. Other things, such as the book not using the scene editor, I simply ignored for now.
I worked on the tutorials for a week, familiarising myself with SpriteKit and finding ways how to improve the game that the tutorial establishes. On the following weekend, I set up an issue tracker and a git repository and all of a sudden, I had a real project on my hands. My general feeling about the project changed from curiosity about the platform and general game development to an intense “I can do this” attitude around this time. I began taking the entire thing more seriously and treated it like a real software development project. I set up an aggressive timeline, targeting October 19th for submission to Apple. It was on!
On Monday of the following week, Apple contacted the winners of the Development Kit lottery. A whole lot of developers would get their hands on an Apple TV Developer Kit to help them build apps for the platform in time for the launch and especially the holiday season.
Unfortunately, I received an email letting me know that I would not be receiving a Developer Kit at this time. I was of course disappointed by this news, but it didn’t throw me off a lot. First of all, I still had the simulator to test the Apple TV UI and secondly, I could test performance on the array of iOS devices at my disposal. Boy was I wrong about this.
Not having regular access to the hardware would have severely limited my chances of getting the game ready in time for the launch, so I approached a contact at Apple about this, trying to find out ways to help me continue with development unhindered. A few days later, I received a package from the US, containing a brand new shrink-wrapped Apple TV Developer Kit. I was ecstatic.
Armed with the actual device and Siri Remote and having used up all my luck for the rest of the decade, I could finally start optimising the game for the platform it was meant to be played on.
Apparently I am Actually Creating a Video Game
Over the next two weeks, I would go through all the hard work of designing and implementing features, getting to know SpriteKit in and out and fixing bugs.
I also got to make quite a few decisions about where to take this game in terms of art and style. Since space shooters is a very crowded genre, there is absolutely no shortage of pre-made assets. Seeing how I could not afford to hire a designer on my budget, this lined up perfectly.
I bought quite a few sets until I finally settled on one called “Space Rage". It seemed to best embody the blend of retro looks that I wanted for the game and it would work really well scaled on any device.
About two weeks into development, I set up a mailing list as a means of recruiting beta testers as well as starting to get the word out early. The list started off with about 50 subscribers that I managed to attract via Twitter, mostly consisting of friends from the iOS developer community.
On sign-up, I asked the subscribers to tick boxes according to their interest in beta testing and I eventually used this data to gather Apple TV UDIDs to distribute ad hoc builds and eventually send TestFlight builds to people.
This turned out to be a pretty effective way of both getting some feedback and getting the word out about Cosmos early on. Since Mailchimp allows the filtering of lists by fields you ask for during sign-up, it was relatively easy to get partial lists out (i.e. only tvOS testers) and send them an email asking for their UDID or to distribute a new build to them. This kept my workload for managing the testing process relatively low.
Testing, Feedback and Expansion
The testing process proved invaluable very quickly. I collected some great feedback about the core gameplay, the difficulty and technical issues such as overscan. I never considered that a TV app would not have a pixel perfect representation on the screen. I guess I am a little spoiled from working with iOS devices for so long.
One thing that particularly helped was seeing very different kinds of people play the game. I had every age range from 8 year olds to over 60 year olds play and I would gauge their response, which greatly helped to shape the difficulty curve.
I also tried to hand people the Siri Remote for the first time ever and watch them try to play the game. Almost no one could figure out the touchpad, orientation and shoot button, so I had to add instructions at the start of the game.
Submission, Review and Heartache
I didn’t quite make my October 19th deadline, but that turned out to not be a big deal. By then Apple still hadn’t posted the final version of Xcode 7.1, which was necessary for submitting builds for review.
On October 21st, I was playing with my daughter after dinner when I read about submissions opening up on Twitter. I handed off my daughter to my wife and got started on downloading the new Xcode and prepared two builds — one for tvOS and one for iOS — and uploaded them to iTunes Connect for review.
The builds unfortunately got stuck in processing over night, so I finally submitted my build the next morning. Its status changed from “Waiting for Review” to “In Review” after just 19 minutes, which has to be some sort of record.
I received a very disturbing email two days later, letting me know that my game had been rejected because it was found to be in violation of the Human Interface Guidelines for tvOS. The reviewer stated that they expected the “Menu” button on the remote to return from active gameplay to the main menu, which might be a reasonable expectation in a non-game application, but not while a game is running. In fact, the Human Interface Guidelines state that the button should act as a pause/play toggle in games, which is exactly what it was doing in my case.
I wrote up an answer to the reviewer in the not-so-aptly-named Resolution Center, but didn’t receive a response. I filed an appeal with the App Review Board, but received a message the next day saying that they wouldn’t do anything because I was “already in contact with the reviewer”.
At this point, I was sure the only way of getting the application out in time was to add a workaround for the situation and submit a new build as soon as humanly possible, then request an expedited review. It took me until 2am the following morning until I was happy with the workaround, so I submitted a new build right away and requested an expedited review. I received a reply telling me that the expedited review wasn’t granted, so it appeared that I would have to sit this one out.
This was on Monday, October 26th — just four days before the release of the Apple TV. Time was running out and given the average seven day review period for iOS applications, my original goal of being in the store on launch day started to get really unlikely. It didn’t help that this was all because of a misinterpretation of the HIG. I was furious and about to throw the towel and just give it all up, which is easy enough to do if you’re only invested emotionally and not financially — or at least, not significantly.
But then I had the idea of approaching Apple’s Worldwide Developer Relation department again, since they helped me get a Developer Kit in the first place. They put in a new request for an expedited review and voilà, the next day the application got reviewed again and was eventually cleared for the App Store about 24 hours before it would eventually launch.
With no experience on the new platform whatsoever, I didn’t have a gut feeling at all about the pricing strategy. On iOS, I probably would have set a price of $0.99 and be done with it, simply because only top-notch titles appear to sell for more on that platform. Most of the top grossing games even go the freemium route, something I really wanted to avoid.
I took to Twitter to get some other people’s opinions on this and asked “What would you be willing to pay for Cosmos on iOS & tvOS (Universal Purchase)?”
This wasn’t as helpful as I had assumed, there was no clear winner. Granted, the sample size was really small but this made it clear that most other people also would have to make a guess about pricing on Apple TV.
I talked this over in detail with a bunch of friends and settled for $2.99 in the end, a decision I’m really happy with in the end. As Steven Troughton-Smith put it, “anything cheaper is very amateur-looking.”
Cosmos has seen a more successful launch than I initially anticipated. I kept my expectations low for reasons described above. Originally, my intent was to sell enough copies to pay for my Apple TV.
When the device launched, the App Store did not have any categories or charts, which greatly diminished discoverability for all the apps and games that were not featured.
After a successful launch day, sales slowed down a bit over the weekend, which was expected. However, the number of copies sold has increased every day since, which is something I absolutely did not see coming.
When Apple slowly introduced top charts and categories, the effect on sales was really noticeable. Before the introduction of charts, my sales in Europe were almost double those of the US market. When charts were introduced in the US, sales there started surpassing sales in Europe by over 50%.
After its first week, right up until I first published this article, Cosmos had brought in a total $463 after Apple’s 30% cut. This would not be remotely enough to live off, but it’s nice to see some reward for all the work in addition to all the lessons learned.
The Impact Of This Article
Writing about my experiences got an incredible amount of attention. Some people were intrigued about the hobbyist approach to it all, others were excited about learning SpriteKit and making a game of their own. Many more are interested in sales numbers because they are keen to pursue the Apple TV as a potential revenue stream for themselves.
Seeing how some people have already asked directly and given how huge the initial interest in this was (as of Monday, November 9th, this story has been viewed over 5,000 times), I’ve decided to publish some more data.
One interesting point to look at is ranking in the tvOS App Store. Even though the game is also available for iOS, the competition there is simply too big and Cosmos didn’t rank consistently at all. When I launched the game, I signed up for an appFigures account, which helped me track performance, including ranking:
We never managed to break into the top 75 of the Top Grossing list for the entire store until early Saturday morning in Europe/Friday night in the US. Ever since, Cosmos has been able to hold a relatively stable place, dipping out of the top 75 for a little while but later steadying in the 60s.
I attribute most of the increase in sales to this article, which has translated into quite a few eyeballs on the App Store which led to a noticeable bump in volume.
In a market that is expanding very quickly due to an influx of new devices being sold every day, it is hard to directly translate ranking to sales numbers. This might be one of the reasons why the sales bump brought on by this article is much more noticeable than the effect on ranking. In terms of sales, we effectively doubled the previous day’s results (which was the best day so far, excluding launch day) and even surpassed this on the following day.
All in all, proceeds from the game have now reached $890 over a period of 10 days. For the moment, the ranking seems to remain relatively stable. I’m curious to know how this is going to play out over the next few days.
I cannot wait to improve Cosmos — Infinite Space even more. The first update is already live on the App Store. I am already working on the next update to fix some bugs and add new features.
I think the general idea has a lot of appeal and replay value, particularly if you have friends to compete against. I have a whole bunch of things I want to add to make the game even better, to give it more “Holy crap!” moments. Hopefully I have the motivation and time to pull off most of these ideas as I’m sure many players would love them.
It has been quite the experience to create this game and share it with friends and family throughout the process. Everyone contributed ideas, my wife and I had nightly fights for the high score and in the eyes of my nephews I am now officially the coolest uncle ever.
Getting this little taste of what game development is like has been quite the experience for me. I absolutely loved getting into something programming-related that I had never done before for the first time in ages. Since we have a little daughter, my free time for side projects was somewhat limited in the past year. My excitement about one week after shipping is so high, I am already making mental plans for another game, but we’ll have to wait and see if that’s even remotely feasible.
And now, how about a round of Cosmos?