Very few games have embedded themselves in the cultural psyche quite like Flappy Bird did two years ago. It was easily one of the most virally successful mobile games in history. But it might come as a surprise that the maker of Flappy Bird wasn’t a large games company, but rather one guy in his Hanoi bedroom called Dong Nguyen.

At some point, you've probably wished you could make your own iPhone games. Perhaps you want to do it as a creative pursuit, or maybe you just want to earn a bit of extra money. Well, I've got some good news, and some bad news for you. The good news is that it's entirely within the realm of possibility, as many before you have proven.

That bad news is that it isn't easy. You'll need to level up your skill-set.

Skills Required

If you've ever finished a video game and watched the credits, you've probably noticed that games studios are big. Most games are backed by lots of people doing different jobs, but all working on the same project. These can be sound engineers, graphics designers, project managers, and of course, programmers.

If you're making an iOS game on your own, you're going to need to be all of those people in one. You're going to have to pick up a lot of different skills, and become a true multi-disciplinarian. Are you ready?

The first is, of course, a grounding in software development. Knowing how to code is essential, but also helpful is an understanding of the theoretical. There are a lot of core concepts in computer science which lend themselves favorably to games design. For example, an understanding of flocking algorithms, and Djikstra's shortest path algorithm can help you design the behavior of AI players.

Unless you're planning on making a text-adventure (or an interactive movie, which Christian Cawley thinks is overdue a comeback), you're going to need to make some graphics. Make no mistake — design is hard. Harder than coding, in my view. Not only will you need to know how to use the likes of Photoshop and 3D modelers like Blender, you'll also need to know some design theory.

And what's a video game without some ropey voice-acting, cinematic music, and realistic sound effects? Unless you've got a sizable budget, you're likely going to have to do some of the audio production yourself.

Finally, to make a true success of your game, you're going to need some business chops. This ranges from getting the word out, to handling your relationships with both marketplaces and customers.

First, let's look at the core software development skills required to make a game.

Programming Your Game

When it comes to building iOS apps, there are (as my dad would say), many ways to skin that particular cat. There are countless approaches to take, and no shortage of tools and approaches that promise to make the development process easier.

First, there's the Apple way for developing games. This means downloading Xcode, which is Apple's flagship dedicated Integrated Development Environment, which can be downloaded for free on the Mac App Store (you can only develop for iOS on a Mac). Apps built with Xcode are generally done with either C++, Swift or Objective-C.

Swift was announced at the World Wide Developer Conference (WWDC) last year, and it got a lot of developers excited. Why? Mainly because native-speed apps can be built without having to use a clunky, verbose language like Objective-C or C++. This is a language that looks more like CoffeeScript, Python or Ruby, but has the flexibility and power of a lower-level language.

ios-swift

The downside of Swift is that it's very new, and therefore is still suffering from a few teething problems. As it furthers in its development, it should overcome them. But until then, it's also worth considering learning Objective-C. The advantage of this is that it's old, and people know about its warts and wrinkles, and more importantly how to circumvent them. Furthermore, the vast majority of documentation and tutorials for iOS development use Objective-C as the language of instruction. Should you go with Swift, you might have to work a lot of things out on your own.

There's another option. If you already know a programming language and don't have the desire to learn Swift, you might want to see what third-party application development frameworks exist for that language. Ruby developers can make mobile apps with RubyMotion, whilst .NET (which was recently open-sourced) developers get Xamarin. The advantage of these is that you don't have to learn to use something new. The downside is that they slightly increase the cost of publishing your app to the App Store. The cheapest RubyMotion plan, for example, costs $15 per month, billed annually. That's not an insignificant chunk of change.

If you already know HTML, JavaScript and CSS, you already have the basic skills needed to create an iOS game. Corona and Phone Gap are platforms that allow you to use your existing web development skills, and turn them into mobile applications that run natively. No browser required. The problem is that, for the most part, HTML5-based mobile apps run incredibly slowly. The issue is so notably bad that in 2012, Facebook rewrote their iOS application from HTML5 to native, just so that it could run acceptably.

Finally, if you're totally turned off by the idea of writing code, you might want to consider a codeless solution, where the complicated code is built by an algorithm, rather than by a human. There aren't too many of these for iOS. There's no MIT App Inventor for the Apple world. The only thing that comes close is Microsoft's TouchDevelop, which we previously covered.

It's worth stressing that codeless apps are generally not as good as ones that have been built with the human hand. But if you're just building a game for yourself, or for fun, they're more than acceptable.

Choose Your Graphics Library

Inside every car is an engine, and behind every video game is a graphics library. These allow you to define and control the visual aspect of your game. Here, there are a lot of options to choose from, each with their own merits and pitfalls.

Swift wasn't the only geeky-bombshell that was dropped at WWDC 2014. Also announced was something called Metal, which was built in conjunction with Epic Games. Metal is an iOS exclusive that can produce stunning, console-quality visuals, despite the hardware limitations of the iPhone and iPad. It does this, while consuming less battery power than you'd expect. Believe me, the demonstration has to seen to be believed.

Of course, there are downsides. Firstly, since Metal is an iOS exclusive, you can forget about porting your game to Android without a drastic rewrite. Secondly, it only runs on iDevices with the A7, A8 and A8X chips, which is bad news for anyone with an older iPhone. Since it's also quite new, there's less learning material to work from, should you want to take the plunge and include it in your latest project.

If you're looking for something a bit more established and cross-platform than Metal, you'll be glad to know there are no shortage of alternatives. Perhaps the most obvious one is OpenGL ES (Open Graphics Library for Embedded Systems).

OpenGL is the gold-standard of graphics libraries. It's available for almost every single platform under the sun, and is constantly being developed and improved. Although it's relatively low-level in its approach, it's incredibly versatile, and has been successfully employed in both simple, and complex games.

Finally, there's SDL (Simple DirectMedia Layer). This multi-platform library can be used to create 2D graphics, in addition to accessing the input devices of the machine.

SDL is incredibly fast, but you're unlikely to use it on its own for an iOS game. It's just far too low-level and austere, and doesn't support 3D graphics or hardware acceleration natively. A more common usage scenario of SDL in a gaming project is it running alongside a higher-level graphics library, such as OpenGL.

That doesn't discount it from being a viable option for iOS games development, however. For smaller, less sophisticated games, you might even find that it serves your needs quite well. To see it in action, check out this simple Hello World app.

Finally, there are third-party graphics libraries which build upon existing ones, with the aim of making development easier and faster.

Sound, Music and Dialogue

At some point in your development process you will probably want to add some sound. It's incredible how music, sound effects, and dialogue can transform a game into something much more immersive and gripping.

Sound effects can be expensive to purchase, but it's possible to create your own using simple household equipment, and a decent microphone. Need to simulate footsteps? Fill a washing-up bowl with gravel and walk on it. Gunshots can be simulated by smacking two baking trays together, or by tapping a saucepan with a wooden spoon. Just take the time to experiment. You'll be surprised to see what you come up with.

Failing that, have a look at the many public-domain and creative-commons sound libraries that have sprung up in recent years, as indie games development has had a resurgence. Three notable examples include pdsounds, freesound, and soundjay.

If you need something specific, such as a line of dialogue, you can always commission it. This sounds expensive, but it needn't be. Fiverr is a marketplace of people doing odd jobs, mostly in the creative sphere.  Here, you can find anything from people writing code, to talented voice actors. The cost for these services is — you guessed it — five US dollars.

ios-fiverr

No matter whether you need to hire an old man with a British accent, or a young woman with an American accent, you'll find a voice actor that will suit.

Graphics & Design

As someone not terribly aesthetically minded, I've always struggled with creating graphics and sprites. Don't take my word for it. You only have to look at one of the first video games I ever made, CakeSteroids (an asteroids clone with a dental health theme). Yes, that is supposed to be a cake.

197809_10151349415932109_1864728690_n

Design really isn't my forté. It's more than just making something look good, there's a science to it. A science that is explained beautifully in the book Design For Hackers. If you're not terribly visually inclined, you're probably despairing about now. But there are ways to make designing your sprites and assets that little bit easier.

I've found that it's almost always easier to sketch something out than it is to draw it on the computer. So, get a pen and paper, and create your sprite. Once you've got it perfected, make a digital copy with your scanner. Then, download the free vector graphics program, Inskcape. Once it's installed, import your scanned drawing and convert it to a useful bitmap image with the Trace Bitmap function.

If that's doesn't work for you, there's still hope. As is true for audio assets, there are no shortage of royalty-free graphics samples. These tend to be shipped under either public domain or creative commons licenses, and are free of charge, although they may ask for attribution and a donation. There are lots of sites offering that offer them, but one that's really worth mentioning is OpenGameArt.

Once you've got your game built, you can move on to the small matter of quality assurance.

Testing

iOS developers have, for the most part, had it easy. This is especially true when compared to their Android brethren, who have to struggle in order to make their apps work in an increasingly fragmented Android ecosystem, with thousands of devices to account for.

This doesn't negate the need to test your application, however. First, you need to see how well it performs. Then you need to identify are any bugs or glitches that could harm gameplay.

You can, of course, test your app yourself — although you probably shouldn't as it's tedious. More importantly, you couldn't possibly hope to be an impartial observer. Without a fresh pair of eyes, you might find yourself shipping a game that suffers from glaring issues that you simply couldn't spot. It's always helpful to get a second opinion, and there are no shortage of companies that (for a price) will to give it to you.

ios-testing

A testing company will try your app on a variety of devices, under a variety of conditions. They'll make predictions of what should happen, and they'll see if your app fulfills those predictions. Most importantly, they're impartial.

There are hundreds of testing companies, each charging different amounts. In my research, three stood out from the crowd. There's TestElf, which charges $50 per app. Applause, which offers a boutique approach to testing, and charges a varying amount depending on the thoroughness of your test. Finally, there's AppThwack, which offers detailed, thorough tests, with a rapid turnaround for as little as $20 per month.

Once you've perfected your app, it's time to release it to the world.

Ship To The Store

Apple is the gatekeeper for the iOS platform. In order to put your app on the marketplace, you need to first jump through a few hoops. The first is you need to enroll in the iOS Developer Program. This comes with a yearly fee of $99, and must be paid, regardless of whether your app is free or not.

It's worth noting that Apple are very strict about what they allow on their app store, much unlike Google Play. As a result, if your app is sexually explicit, facilitates piracy, or is likely to harm its users, it will be rejected.

Make sure you thoroughly read the App Store guidelines before deciding to submit your app, as each review process will eat into time you could spend promoting or improving your app.

Promotion

The last step in the games development lifecycle is marketing. There are thousands of apps and games on the App Store. It's almost impossible to stand out solely through your game's own merits.

You can, of course, promote the game yourself. This can be done through social media, but also by contacting members of the technology and gaming press, and asking them to consider writing about your app. The problem is, writing to journalists is an art form, and it's easy to get it wrong.

Don't just take my word for it. My colleague, Justin Pot, has written at length at the mistakes companies make when they pitch, as has one-time MakeUseOf writer Jessica Cam Wong.

I get anywhere from three to ten email pitches per day, and the ones I pay attention to are the ones which are clearly written, spellchecked, and most of all sincere. Once you've written a killer pitch, you need to find someone to pitch to. There are services which exist purely for this service. The most notable is press.farm, which sells the email address of 588 journalists for a flat fee of $9. That said, you're paying for something that is essentially free. Most technology blogs publicly display the email addresses of their writers. You can find relevant MakeUseOf email addresses, for example, on our about page.

If you want to advertise your app, but don't have the confidence to pitch it yourself, you can always turn to the services of a professional PR company.

Curious as to what a PR firm offers to an app developer, I spoke to Ayelet Noff, founder and CEO of Blonde 2.0, which specializes in marketing technology startups. I was curious as to what someone gets when they hire a specialist tech PR firm, and how much it costs. Here's what she had to say:

"PR is about two elements: Storytelling and relationships. Make sure your story is interesting enough to capture the attention of the journalists by using the most appealing and timely pitch possible. Then consider the relationships you have with different reporters to see who would be the best fit.

The advantage of doing the work with a reputable PR firm is that we have these connections already in place, and have already mastered the craft of knowing how to tell the story in the most appealing manner. Most tech PR companies will work on a retainer basis with a price range of $3,000-$15,000 monthly. Blonde 2.0 fees start at $5000."

Get Creative!

There's a lot to learn when it comes to iOS games development. If you're working by yourself, you'll find you need to become a veritable polymath.

Not only will you need to have a level of business acumen, you'll also need a flair for design, a close eye for details, and the technical skills required to build the thing. I couldn't do it, could you?

If you've got a great idea for a game, are building one, or have built one, I want to hear about it. Leave me a comment below, and we'll chat.

Image credit: Smiling Student (Syda Productions via Shutterstock)