This Christmas, I took my first steps in the world of game development. This blog post describes the different stages the app went through and the resources I used to publish my first casual, arcade, kid's game Jungle Hop.
Spending a considerable amount of time amongst game developers is bound to get you intrigued about how easy or tough it is to build a game. I work with a mobile ad network and have seen quite a few “rags to riches” stories of game devs - be it studios like Kiloo or Supercell or even indie developers like Dong Nguyen and Ketchapp. Hence, when the opportunity arose to take a trial SWIFT course, I grabbed it very eagerly and built my very first game - Jungle Hop.
Armed with a basic understanding of programming, SWIFT turned out to be a breeze - the syntax was super easy and the Playground extremely helpful in trying out new stuff and understanding the basics of how it worked. A discounted course from www.bitfountain.io tutored me well and gave me the confidence to start exploring game development.
At this point, I came to understand the power of the developer community. There are scores of tutorials on SWIFT game development uploaded by helpful developers, with sole intention of sharing their knowledge. Both youtube and github became my best friends as I scoured several samples to identify an easy to build game. Deciding to stick with simple mechanics to start with, I also joined the multitudes of people who have tried their hand at one touch, endless game mechanics after the success of Flappy Bird. This was
the week before Christmas and in the festive spirit I tried to build a Santa hopping game on SpriteKit. Starting off with just 2 standard obstacles of different heights that he had to jump over, I was ready with the game in around 2 days. It was clearly a game that would at best, appeal to kids. I wondered if it was good enough to publish yet, but the decision wa
s taken out of my hands by the Appstore freeze. Oh well, it gave me more time to experiment! Keeping my target audience in mind, I started to tweak the environment (and a huge thanks to stackoverflow, my new best friend).
Differentiating between morning and evening - I learned about NSDate() here and how to extract the individual components of the time. Just giving a different background color - light blue for day and dark blue for night, made me so happy!
Next I tried to add more variety in the obstacles. Christmas would clearly be over by the time the Appstore freeze ended, so I needed gameplay which were more omniscient. Not wanting to change the game mechanic, I traded Santa Claus for Jumpy the Giraffe. The obstacles also changed from snowmen to 2 animals - small and big each.
But this wasn’t enough, how would I prevent the game from become boring with just 2 animals? Here I learned about applying SKTexture at runtime, randomly! My arsenal had now expanded from 2 animals to 16!
Taking a hint from all the other games, I thought I needed a few sound effects. AudioToolBox and SKAction to the rescue. Freesound.org was very helpful in giving me different sound effects that I wanted.
I showed the game to a few friends after the Christmas holidays. The first reactions were great (purely driven by disbelief that I knew how to code!). From watching my so-called beta testers play, I realized there would need to be more complexity added to keep them engaged.
I started experimenting with different speeds and distances between the obstacles. This added some spice to the mix, but there was still something missing. Maybe some obstacles in the air? With 2014 seeings all kinds of birds - flappy bird, tappy bird, snappy bird, it was time to added a flying bird in the game. Ray Wenderlich’s turorials were very helpful in animating the bird’s wings to create a realistic effect.
And then I thought - how am I going to keep my players coming back for more? Can I integrate social network effects in the game somehow? Turned out to be not so easy. My first thought was Facebook, but I could not find any tutorials for FB integration in SWIFT. I decided to stick to GameCenter and spent another 2 days trying to figure out the right way to integrate it in SWIFT. There are still a few glitches in Apple, requiring the use of bridging headers to ensure the player is signed in.
I was pretty happy with the game now. It had taken me about 10 days to build it so far. Not too bad (I think) for an out of touch programmer, working part time and on weekends on the game. I created an Apple developer account and an iTunes Connect Record. And then i figured out that my work had just begun. Turns out it is easier to build a game than to submit it for the AppStore - probably helps weed out the hobbyists I guess.
- I needed images in 5 different sizes each (~1xiphone, ~2xiphone, ~3xiphone, ~1xipad and ~2xipad)! Being a non-designer with no access to any fancy tools, this meant manually creating multiple sizes of each image asset. Although, I did come across an app which could help me a little- Prepo.
I needed to figure out how to depict my launch screen. Whether to use storyboards or xib files or plain image assets. This was extremely confusing and everyone seemed to have differing opinions. Finally I went ahead with an xib file. Image Generator was a huge help in creating the different sizes needed for all devices.
And finally I needed app icons. Here, I used the help of a graphics designer friend to get a PSD of an image I liked, from shutterstock. With the help of AppIconTemplate , I was able to generate all the app icons I would ever need.
In the meantime I also integrated interstitial ads in the app. Staying true to my ad-network roots, I looked around for an SDK which would support SWIFT (not too many, unfortunately) and chose Chartboost.
I am sure there are several other options available for generating icons and splash screen images - these were the ones I found best and easy to use. A huge thanks to the creators of all these tutorials, github source codes and utilities, which are a blessing for newbies like me.
Since then, I have been promoting my app through tweets and posts on twitter and facebook. In 4 days, I have about 140 downloads. I realize the uphill task has only just begun. Getting people (even friends) to rate and review the game is challenging. I don’t want to put in any marketing budget and am relying on organic downloads to start with. Turns out, no one is clicking on the ads either (Thank you Chartboost for showing Korean app ads in US and UK - who would click on those?)- so monetary compensation is 0 so far (Oh well - that wasn’t the aim either).
I am now trying to figure out how to integrate viral elements in the game. Requesting for ratings and FB shares seems one possible way. A few fellow developers have been kind enough to give some tips to improve the game - daily challenges, daily notifications on the leaderboard position, etc.
All in all, this has been a great introduction to the trials and troubles of an indie game developer’s life. It is not as easy as it looks. The challenge lies in remaining dedicated to the cause despite the hurdles thrown at you by obscurity amongst a million other apps. I will trudge along and hope Jumpy the giraffe wins its way through everyone’s hearts (Really, how can you not love him?).