The mobile gaming industry has exploded over the past few years, particularly on the iPhone and iPad platforms. Not only are the vast majority of gamers using their phones to play games of all types, but the availability of free or cheap development tools (and even free game engines) has made it incredibly easy for anyone to create an app for these devices.
This is a great opportunity for aspiring game designers to make their own game—but how do you actually go about making an app that can be published?
If you’re entering the iOS game design world from outside it, this question may be confusing. To you, there probably seem to be hundreds of different tools that can help you make a mobile game.
How do you choose which one to use? The most important thing when creating a new app is getting your app out there as quickly as possible. Most tools available allow you to export your work directly into XCode and get a working .ipa file to submit to Apple’s iTunes Store with almost no extra work. By using one of these tools, you’ve eliminated another major decision from your plate, which will help speed up your development process.
The first decision to make when it comes to developing a game is which platform to develop for. If you’re reading this article, you probably already know where iOS stands in terms of popularity, but that doesn’t mean you should ignore other platforms if it makes sense for your project.
Making your own iPhone game is definitely easier than it used to be—a few years ago, you’d need to know how to program in Objective-C, the native language of iOS. Nowadays, making an iOS game can be done with drag-and-drop actions in a visual programming language like Apple’s own Swift Playgrounds. In this blog post I want to walk you through the basic process of making an iOS game using Swift Playgrounds.
The first thing you’re going to need is a device that runs on iOS. You’ll be able to run it on the iPad or the iPhone if you want, but for the purposes of this tutorial we’ll just assume that you’re going to run it on the iPhone. Once you’ve confirmed that your device is compatible with Swift Playgrounds, go ahead and download the app from the App Store.
When you’re designing an iOS game, it’s important to keep the user’s attention focused on the experience you want them to have. If you want them to be able to focus on the art for too long, for example, that can detract from the gameplay, which is what you want them to care about. If you want them to pay close attention to the in-game story, then you need to make sure they can see it clearly the whole time they’re playing.
In general, remember that your goal is not just to have a rich and engaging game but also one that’s easy on the eyes and doesn’t annoy your users with unnecessary bells and whistles. No matter what kind of game you’re making or who your target audience is, there are some basic guidelines that apply no matter what:
The amount of detail in your background art (the stuff behind the main focus of each screen) should be right for your target audience. For example, some kids might not appreciate a highly detailed background if there aren’t any monsters or other characters in it for them to look at. On the other hand, a game for adults might benefit from more details so that it looks good on high-definition phones.
Here’s what you’ll need to do in order to make your game:
- Choose a topic and develop a simple game or test app based on that topic.
- Choose a game engine you want to use and download the SDK (Software Development Kit).
- Choose an art style, then hire an artist if you don’t know one or have the money to learn how to draw yourself.
- Create the basic graphics and sounds for the game, then test it on different mobile devices with different screen sizes and resolutions.
- Implement in-game analytics to be able to see how users are playing your game, since there are so many different types of mobile devices out there that run on different operating systems with different hardware capabilities that can affect how your game performs and is perceived by players. This will help you improve the game for more players in the future.
5a. If you want to track specific user behavior (for example, how often they play, which level they quit on, etc.), implement server-side analytics instead of client-side analytics (or both).
- Add leaderboards and achievements so players can compete against each other and track their progress on their own time.
You can use these 19 tips to make a iOS game.
While the App Store is full of games, not all of them are worth playing. There are a few factors that can make or break an iOS game: its art style, its controls, and its level design. This article will go over how to make a good game for iPhones, iPads and the iPod Touch.
Art Style: The look of your game is what players will see first, so it’s essential that you put some thought into it. Some popular art styles for mobile games are cartoonish, simple 2D graphics; 3D graphics with simple textures; or 3D graphics with complex shaders and lighting effects.
If you’re targeting an older audience, you should probably lean towards the simpler styles; if you’re targeting a younger audience, you should lean towards the more complex styles. The most popular art style to use is pixel art because it looks retro without being too ‘old-looking’, so it’s usually best to stick with this (especially since there’s plenty of motivation online to help you make pixel art). When designing your game’s art style, remember that simplicity is key!
Step 1. Describe the game:
Describe what your game is about and how it will be played. What does the player do? Is there a goal? What’s the point? If writing text isn’t your thing and you aren’t great at summarizing things, you can use screenshots or video—we’ve even seen games where the core feature is playing a trailer of the app!
Step 2. Figure out how it will be played:
How will players interact with your game? What sorts of controls will they use? How much time will it take to finish? All of these questions are important to answer before you begin building your app, as they will help define how your app needs to function on-screen. You don’t want to start coding only to find out that players can’t accomplish something because you haven’t laid out enough of the foundation yet.
Step 3. Create digital art for the game.
The first step in making your own iOS game is to create digital art for it. You can do this using a number of different tools, but I’m going to focus on Photoshop—it’s one of the most popular options out there, and it’s what I use when I create my own art. If you want to use Photoshop but don’t have it or want an introduction to it, check out the videos from YouTube:
Step 4. Storyboard the game’s major points or levels.
You should start by storyboarding what the game would look like in a very rough fashion. This will allow you to conceptualize the overall shape of your game and make sure that it has a clear beginning, middle, and end. It is helpful to create a rough story in your head first and then draw out your storyboards based on how you imagine it playing out.
In this step, you don’t need to flesh out every single detail of each level or even the background images yet. The goal is just to have a general idea of what needs to happen in each level, so that you can get started on creating the actual game itself.
Step 5. Tools
Choosing the right software tools can make a big difference in how easy you find developing your game. This is a case where more options, rather than less, could make the difference between a game that feels like it was made by an amateur and a game that feels like it was made by a pro.
Of course, you don’t want to get so carried away with all these options that you can’t decide which one to use for each step of the way. A little bit of research goes a long way here. For example, if you’re making something simple, maybe even just a prototype, you might be better off using GameMaker: Studio instead of the full version of Unity3D .
Many tools are available, either completely free or at very low prices. Here’s a list of some tools that are popular amongst developers:
- GameMaker: Studio (Windows/Mac/Linux) (Free-$100)
- Blender (Windows/Mac/Linux) (Free)
- Unity 3D (
- Construct 2 (Windows/Mac/Android)($100)
- Stencyl (Windows/Mac/iOS)(Free-$400)
- GameSalad Creator
Step 6. Music & Effects:
Rather than thinking of sound effects as something to be added as an afterthought, think of them as another element that’s crucial to the finished game. The right sound effect can create atmosphere and tension, heighten the player’s experience, or even make an otherwise unimpressive game feel more polished and complete.
There’s a lot of planning required before you start any audio work. You’ll want to:
- Research what your players will expect from your type of game.
- Create a mood board that helps you identify the sounds you want to use.
- Write a script that describes every sound effect in your game and how long each one should last. This will help you keep track of timing and avoid repeating sounds too often or for too long.
- Schedule time for recording audio, so it doesn’t get pushed aside for other tasks.
- Record all of your audio where it will be most effective—in this case, at a coffee shop with other people around was the perfect choice since we wanted ambient noise to fill out our soundscape (and prevent us from having background noise on top of our own recordings). If you’re recording something specific like footsteps or the shuffling of cards, use foley techniques.
Step 7. Audio & Video Resources:
For sound effects, my favorite site is FreeSound.org. It has an awesome collection of sounds, and it’s easy to use. Here’s the link: http://www.freesound.org/
For music, you can use sites like Freesound and CCMixter to find songs in the public domain or under Creative Commons licensing that you can use in commercial work without paying royalties. Another great source of free music is YouTube; just be sure not to claim ownership over any music you find there that isn’t Creative Commons licensed or in the public domain.
If all else fails, Stock Music sites are your last option for sound effects and music—these sites have a license to sell royalty free sound effects and songs to anyone who wants them for a price. My favorite site is Premium Beat: http://www.premiumbeat.com/ . Here are some other options: http://www.stockmusicforvideos.com/index_categories/stock-music-for-videos/ http://www.sounddogs.com/
Step 8. Choose a target platform:
When the time comes to choose a target platform, you will have to decide whether your game will run on a mobile device or on a computer. Mobile devices include smartphones, tablets, and even smartwatches. Most mobile games are played on smartphones and tablets, which both run on operating systems. Smartphones use either Apple’s iOS or Google’s Android operating system for their software, while most tablets use an operating system called iPadOS. You will eventually want your game to be playable on these devices because that is where most of the people who play games are located.
Each of these operating systems has its own set of rules for how the apps that run on them should work and what they can do. This means you will have to learn how to program your app to make it work with that operating system’s software. The most popular programming languages used by game developers are C++ and Swift.
These are both programming languages that can be used to make iOS games, but they must be compiled into a format that iOS understands before they can be used in an app. If you have decided that you want your game to be available for computers too, then you can decide between Windows and MacOS as the target platforms.
Step 9. Design the gameplay.
You’ve got a concept, a team, and some preliminary art. It’s time to start laying down the gameplay. You’re going to want to focus on the fun factor of your game, not how it looks or how magical the graphics can be. Also, you will probably want to try out your game and get feedback from real players before you move on to more detailed graphics and art. And then make sure you test it again afterwards! Test the heck out of it!
By drawing up some sketches of how the game might look and play, you can get a better idea of what you actually want the app to do. While there’s no way to know exactly how development will go, it helps to have some kind of plan laid out beforehand. It means you’ll avoid getting lost in the details of coding when you have a game concept clearly defined, and it can help you keep track of what steps to take next by pointing out what problems need solving and where your priorities should be. The sketches don’t have to be fancy or realistic—they’re just an exercise in figuring out what elements of the game need to be there, the flow that they’ll take, and how they’ll interact with each other.
Step 10. Do some prototyping.
The prototyping stage is where these sketches become actionable. By taking a portion of the game and turning it into an actual interactive program, you’ll find flaws in your ideas that would have been hard to detect from a static sketch or from thinking about how you could code it on paper alone. You don’t need to build every aspect of the game during this stage—just create enough working parts so that you can move on to testing and perfecting them. Again, your prototype doesn’t need to be anything fancy at this point.
Step 11. Make a full prototype of your game.
You’ve spent weeks brainstorming, drawing, thinking and planning. Now it’s time to make a full prototype of your game. This isn’t the final version, this is a working version that you can test to make sure it works before you spend months working on the final product. When you’re done with this, you’ll have something that you can show to other people and ask them what they think (hint: don’t show it to your mom).
It’s important that this prototype has all the basic functions of the finished product so you can properly test it. If they’re not in place yet, then skip those steps and come back to them later on when the rest of the game is finished. You want to get as many people as possible to play-test the game.
You want to see how long it takes for someone to understand how to play and if there are any confusing or frustrating parts of the game. You want people who are familiar with games in general but unfamiliar with yours specifically so that they can give you an unbiased opinion about how well your game works. You might discover that some parts of your game don’t work at all or that some parts need major changes once a group of people start testing it.
Step 12. Test the game with a focus group.
While the last step was about finding out what everyone thought about the game you had, this step is all about seeing how people play your game. This will tell you a lot about the usability of your game and whether there are problems that need fixing or features that need adding before launch.
A good way to do this is to get some people to test it. You could just ask some friends, but they may not be very objective, so I prefer to find some strangers in a place where they hang out (or online). Make your focus group small (3-5 people) so that you can get feedback from everyone and make sure they have time to give you detailed feedback on their experience with the game. The most important thing is to video record their screen while they play so that you can see where they’re having problems (or where they love playing) and watch it back later when you’re analysing things. You might find it useful to have a pen and paper ready as well so that you can take notes on stuff that comes up in conversation or observations about their experience.
Step 13. Create the graphics for your app.
You’ve created your game design, you’ve come up with a neat title and logo, you’ve sketched out the functionality of the app—now it’s time to make the graphics. Before you start drawing your characters or creating 3D models of buildings, learn how to organize your game resources. This will help you answer questions like: “What do I do if I want to change my character’s hair color?” or “How much time should I spend on creating this background image when it’s just a static background?”
As you move through the design process, you’ll have come up with some ideas for graphical elements. These could be things like:
- What are some poses your character could assume? If he’s jumping, can he be holding a ball? What about when he talks or walks slowly? Can he be standing next to a tree? What about when he’s running and dodging obstacles? Would he be in his pajamas or would he wear a suit?
- What are some backgrounds your character could be in? Does his house have an interior that needs to be drawn out first? What kind of office building would he work in? Is there a park nearby where he could talk to someone. Now that you’ve got your idea and a functional prototype, it’s time to add the visual polish. The graphics in your app will make or break the user experience and need to be just as carefully considered as the rest of the app. If you’d like to skip ahead, here’s a video tutorial on how to draw vector art in Inkscape and export it to Xcode using Cocos2d-x:
Here are some tips for creating the best graphics possible:
- Use vectors rather than raster images—raster images will look blurry on different screen resolutions (due to scaling), while vectors can be scaled up or down without losing any quality. Vectors will also look crisp on high-resolution devices.
- Follow Apple’s Human Interface Guidelines for everything from button placement and icon design to fonts used for headings and body text.
- Use consistent pixel dimensions between all of your graphics—if you’re making a universal iOS app, it’s best to use @2x for your retina displays, @3x for iPad Pro, 1x for everything else.
These marketplaces let you buy pre-made graphical assets:
- OpenGameArt. One of the most popular sources for free graphics come from OpenGameArt.
- Unity Asset Store.
- GameArt2D. This site has a nice “freebies” section.
Step 14. Keep a central repository for all of your code and assets.
A central repository is an invaluable tool for collaborating on a large coding project. It stores all of your code and assets in one place that everyone can access, and it makes it easy to track changes made by collaborators. Collaborators can submit new code or assets, and the repository will notify everyone else. The repository also helps you keep track of who changed what and when.
Once you have a central repository for your code and assets, you’ll be able to make changes to your game anywhere and have them immediately sync up with the rest of your teammates. This also makes it easy to do things like copy over new media files without having to wait for others to pull from the main repo or worry about how long the files may take to transfer over.
There are two options for setting up a central repo:
When it comes to iOS development, you’ll be spending a lot of time with Git. If you’re not familiar with Git, you should take the time to read the documentation. It’s the primary way that our team will be sharing code and assets throughout the rest of this tutorial. There are plenty of resources to get you started if you’re new to source control.
One big benefit of using Git for your game development is that it opens up a variety of options for easily collaborating with other people on your project. If you have a team, or even just a friend or two that wants to help out, setting up a shared repository is one way to make sure everyone stays on the same page.
If you’re working alone, you might still want to set up an account for yourself and use it as your central repository. Having your own personal website for versioning your code means that there’s an easy place for other developers to get in touch with you if they find any bugs or want to contribute code. It also makes it easy for other people who want to follow along with this tutorial series to see how things are done without having to dig around or reverse engineer anything (although I’m certainly not above doing those things myself).
Step 15. Implement analytics to get an idea of how users are playing your game.
Now that the basic functionality of your game is almost done and you have a better idea of how users are interacting with it, you can implement some additional features to make it even more fun!
Analytics will allow you to get an idea of how your users are playing your game, and help you identify problem areas. The most common analytics feature is usage statistics. This gives you a variety of details about how each user used the app. In GameSalad for example, you can see what level was being played when a user quit the game, and even whether they were playing on an iPod or iPhone. Usage statistics could also be used to tell you if users are having problems with certain parts of your game. If many users are exiting while trying to reach a certain level or dieing very quickly, then this might be an area that needs attention.
Analytics could also be used to give each player a score. This is useful to track progress and motivate players to keep playing by showing them how far they’ve come. GameSalad’s analytics engine also allows developers to track achievements so they can learn which ones are popular with users.
The most important thing about analytics is not making the user experience worse while trying to collect them.
Step 16. Implement the game engine
The game engine is the most complicated part of the game, but it’s also the most fun to code. It’s the section where all of your gameplay variables, math functions, and drawing calls are all tied together in one big chunk.
When you’re making a game for a phone or tablet, it helps to think of each screen as its own module that needs to be dealt with separately. The main game loop has to check for input from the accelerometer and touch screen, then update the position and velocity of all of your objects based on that input. Then it has to draw all of your objects in their new positions onto the screen at their proper locations. Then it has to check for collisions between each object and see how they should react. After that, it has to update your score and level progress (or the next level), then loop back around and start over again.
After doing this several times for different screens, you end up with a giant mess of code—that’s why we made a separate file for each screen, so that we could keep things organized a little bit more.
You’ll need to give your player control over some aspect of your game.
The game engine is the part of the game where all the action happens. It is where you will implement the logic for your game’s rules to ensure the player has fun and is challenged. If there is one part of a game that should be familiar, it’s this—if a player hasn’t played a game like your own before, they will have likely played a game that feels like yours.
For example, if your game has combat, it needs to be implemented in a way that doesn’t frustrate or confuse the player. If your game has leveling up, you need to make sure it feels rewarding and that players don’t feel like they’ve lost the upper hand by grinding out levels. If you’re worried about getting something like this wrong, remember: You’ve been playing games your whole life. You know what makes them enjoyable and what doesn’t. Write down some notes on how you think things should work and then move on to the next step.
This step might seem like a no-brainer, but we’re dealing with a pretty complex piece of software here, so there are still a few things to do before we can get this engine loaded up on our devices:
- The game engine is built in Java, so we need to compile all the Java code into binary executable files that iOS can read. This is done in a process called “building” (or “compiling”) our project. We’ll be doing this from Xcode, which we’ll be opening momentarily.
- The game engine is also built for the Android operating system. For now, we only want to focus on iOS, so we need to make sure it only builds for iOS and not Android. We’ll do this by making sure the “Build Configurations” under the “Build Settings” tab are set to build for iOS. If you have any trouble with this step, please refer back to Step 11 where I explained how to set up your development environment.
The basic game engine involves a few key components:
Gameplay loop and player controls
A game loop is a bit of a programming concept, but it’s probably the most important part of any game engine. Without a game loop, you have no engine. The loop is simple: it’s the repeated sequence of tasks that all games need to perform on a constant basis in order to keep moving forward. The order, structure and contents of this loop will vary greatly depending on the type of game being made, but it always consists of some combination of the following elements: drawing graphics to the screen, accepting user input from the player and keeping track of state.
The iOS SDK provides several tools for implementing this sequence, namely:
- An event loop which manages input and other events in a similar way to Cocoa Event Handling.
- Grand Central Dispatch (GCD), which makes efficient use of available processor cores by running multiple tasks simultaneously.
Step 17. Maximise performance
As you’re finishing up your game, now’s the time to double check that it runs as smoothly as possible. Hopefully you’ve already been keeping track of how long your app takes to load and how long it takes for a round to finish. You can find these statistics under the “Console” tab in Xcode. If your app is taking too long to load, users could get frustrated and delete it. On the other hand, if a round is taking longer than planned, you might want to consider making it shorter by reducing the number of rounds or adding extra lives for players. Once you have these two numbers in mind (loading time and round time), you can create an “acceptable” range. This will ensure your game runs at a steady pace and won’t cause undue frustration for users when they’re trying to play.
You should also test your game on various devices so you can see how it performs on the different iOS models that are currently out there. Older iPhones might not be able to handle all of the graphics-intensive games out there right now, but don’t forget about iPads either! Your game might turn out looking pixelated on an iPad Mini, even though it works great on an iPhone.
Step 18. Enable push notifications
So let’s start off with the basics: what is a push notification? A push notification is basically an alert that pops up for your users no matter what they are doing on their device (playing your game, checking their email, etc). You can use these to ask your users to do something—for example, to get them to come back and play again or invite their friends. As you might have guessed from the name, they “push” information to your user’s device without requiring any action on their part… hence the name “push notification”.
These notifications should be lighthearted, but also have useful information in them (such as new levels, time-limited challenges, special bonuses, etc). Keep in mind that when people receive a push notification, they only have a few seconds to “pull down” your message before it disappears—if they don’t see it within that brief time frame, they won’t get the message at all.
“Pulling down” a notification also adds it to a list of alerts that users can look at later. That way, even if they miss seeing a notification right away, they’ll still have a chance to see it later if they forget about it (which might happen if there’s an app update or if their phone is out of power). You’re probably asking yourself how you can possibly generate enough content for enough notifications for people to get excited about. The answer is that most of your push notifications don’t need to be original.
The first thing we need to do when enabling push notifications is to determine if the device is even capable of receiving them. We’ll do this in the didFinishLaunchingWithOptions method, which will be called when the app first loads. To start, we’ll check if we’re on an iOS device and if our app has been granted permission to use push notifications. If both of these conditions are met, we’ll enable them by adding an entry to the Info.plist file. This key-value pair contains some basic information about our app, including whether or not it’s capable of using push notifications. If it isn’t, then you can add that key-value pair yourself by clicking on the + button at the top of the editor pane, typing “NSPushNotificationType,” and then selecting it from the list of options that comes up.
Note: The keys for your Info.plist file may be different than those shown in this example due to changes made by Apple to their mobile operating system. Be sure that you are entering the correct values based on what you see in your own project.
Step 19. Draft a marketing plan
One of the most important parts of releasing a game is marketing. You can have the greatest game in the world, but if no one knows about it and downloads it, then you’re not going to get very far. To create a marketing plan, start by writing down what your goals are for the game. Do you want people to pay attention to you? Do you want to make money from your game? Do you want to get more fans or followers on social media?
Step 1: Make a list of all the ways you can think of that will help you achieve whatever your goals are. For example, if your goal is to sell your app on the app store, then some things you should do are put a link on your website that points to your app store page for the game, put up an advertisement on Facebook or Instagram promoting your game, and make a trailer for it that’s only available online so that viewers have to go somewhere special (like YouTube) to watch it.
Step 2: Try out some ideas to see what works and what doesn’t. Don’t throw away anything that doesn’t work—you never know when something might be useful in the future!
Step 3: After testing out some ideas, decide which ones seem like they’re working and stick with them.
It takes time to create a great iOS game, but it’s well worth the effort!