The mobile gaming industry has exploded over the past few years, particularly on the iPhone and iPad platforms.
It is an excellent opportunity for aspiring game designers to make their games—but how do you go about making an app that can be published on the App store?
This question may be confusing if you’re entering the iOS game design world from the outside. 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 available tools 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.
Using one of these tools eliminates another major decision from your plate, which will help speed up your development process.
The first decision to make when developing a game is which platform is the best to develop the game. If you’re reading this article, you probably already know where iOS stands in popularity, but that doesn’t mean you should ignore other platforms if it makes sense for your project.
Making your own iPhone game is more accessible 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’ll 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 this tutorial, we’ll assume you will run it on the iPhone. Once you’ve confirmed that your device is compatible with Swift Playgrounds, 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.
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. Some basic guidelines always apply no matter what kind of game you’re making or who your target audience is.
The detail in your background art (the stuff behind the main focus of each screen) should be suitable for your target audience. For example, some kids might only appreciate a highly detailed background if there are no 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 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, 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 see how users play your game. There are so many mobile devices out there that run on other operating systems with varying 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.
- 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 an iOS game.
While the App Store is full of games, not all are worth playing. A few factors can make or break an iOS game: its art style, controls, and level design. This article will cover creating a good game for iPhones and iPads.
The look of your game is what players will see first, so you must consider 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 lean toward the simpler styles; if you’re targeting a younger audience, you should lean toward the more complex styles. The most famous art style 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? These questions are essential 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 discover that players can’t accomplish something because you need to lay out more foundation.
Step 3. Create digital art for the game.
The first step in making your iOS game is creating digital art for it. You can do this using several 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 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 significant points or levels.
It would be best if you started by storyboarding what the game would look like in a very rough fashion. This will allow you to conceptualize your game’s overall shape and ensure that it has a clear beginning, middle, and end. It is helpful to create a rough story in your head 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 detail of each level or even the background images. The goal is to have a general idea of what needs to happen at each level so that you can start 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 fewer, could make the difference between a game that feels like it was made by an amateur and a game that feels like a pro made it.
Of course, you want to avoid getting so carried away with all these options that you can’t decide which one to use for each step. 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 crucial to the finished game.
The correct impact of sound 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 a remarkable collection of sounds and is 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; be sure not to claim ownership over any music you find 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 choosing a target platform, you will have to decide whether your game will run on a mobile device or a computer. Mobile devices include smartphones, tablets, and even smartwatches. Most mobile games are played on smartphones and tablets, which 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 people who play games are.
Each of these operating systems has its own 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, you can select between Windows and macOS as the target platforms.
Step 9. Design the gameplay.
You’ve got a concept, a team, and some prior art. It’s time to start laying down the gameplay. You’ll want to focus on the fun factor of your game, not how it looks or how magical the graphics can be. Also, you should 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 afterward! Test the heck out of it!
By drawing sketches of how the game might look and play, you can better understand what you want the app to do. While there’s no way to know precisely how development will go, it helps to have some 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 they’ll take, and how they’ll interact.
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 interactive program, you’ll find flaws in your ideas that would have been hard to detect from a static sketch or to think about how you could code it on paper alone.
You don’t need to build every aspect of the game during this stage—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 complete prototype of your game. This isn’t the final version; it is a working version that you can test to ensure it works before you spend months working on the final product. When you’re done with this, you’ll have something you can show other people and ask them what they think.
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.
An excellent way to do this is to get some people to test it. You could 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 analyzing things. Having a pen and paper ready to take notes on stuff that comes up in conversation or observations about their experience is helpful.
Step 13. Create the graphics for your app.
You’ve created your game design, come up with a neat title and logo, and sketched out the app’s functionality—now it’s time to make the graphics. Before 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 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 strolls? 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.
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 quality. Vectors will also look crisp on high-resolution devices.
- Follow Apple’s Human Interface Guidelines, from button placement and icon design to fonts used for headings and body text.
- Use consistent pixel dimensions between your graphics—if you’re making a universal iOS app, it’s best to use @2x for your retina displays, @3x for iPad Pro, and 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 invaluable for collaborating on a large coding project. It stores all of your code and assets in one place that everyone can access, making it easy to track changes made by collaborators. Collaborators can submit new code or support, and the repository will notify everyone else. The storage also helps you keep track of who changed what and when.
Once you have a central repository for your code and assets, you can make changes to your game anywhere and have them immediately sync up with the rest of your teammates. This also makes it easy to copy over new media files without waiting for others to pull from the main repo or worrying about how long the files may take to transfer over.
There are two options for setting up a central repo:
Regarding iOS development, you’ll spend 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 significant benefit of using Git for your game development is that it opens up various options for efficiently collaborating with others on your project. If you have a team, or even just a friend or two, that wants to help, setting up a shared repository is one way to ensure everyone stays on the same page.
If you’re working alone, you should set up an account and use it as your central repository. Having your website for versioning your code means 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 others who wish to follow 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 interact with it; you can implement some additional features to make it even more fun!
Analytics will give you an idea of how your users play your game and help you identify problem areas. The most common analytics feature is usage statistics. It provides you with various 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 whether they were playing on an iPod or iPhone. Usage statistics also 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 dying very quickly, this might be an area that needs attention.
Analytics could also be used to give each player a score. It is helpful 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 to 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. Y
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 with the basics: what is a push notification? A push notification is an alert that pops up for your users no matter what they are doing on their devices (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 and have helpful information (such as new levels, time-limited challenges, special bonuses, etc.). Remember 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 it.
“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 their phone is out of power). You’re probably asking yourself how you can generate enough content for enough notifications for people to get excited about. The answer is that most of your push notifications can 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, 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. Ensure you are entering the correct values based on what you see in your project.
Step 19. Draft a marketing plan
One of the most critical parts of releasing a game is marketing. You can have the most fantastic game in the world, but if no one knows about it and downloads it, you’re not going to get very far. To create a marketing plan, start by writing down your goals 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 to help you achieve your goals. For example, suppose your goal is to sell your app on the app store.
In that case, you should put a link on your website that points to your app store page for the game and put up an advertisement on Facebook or Instagram promoting your game.
Step 2: Try out some ideas to see what works and doesn’t. Don’t throw away anything that doesn’t work—you never know when something might be helpful in the future!
Step 3: After testing some ideas, decide which ones seem to work and stick with them.
Creating an excellent iOS game takes time, but it’s worth the effort!