A lot came out of WWDC, and even the fast-moving iOS development community will take a little while to incorporate all the new material into the culture of best practices. But one of the session videos I found most interesting was a little more high-level.
The videos are all available here, and the material for the rest of this post is all from the talk Ingredients of Great Games with Geoff Stahl and Allan Schaffer.
They start off by mentioning the massive success of games on the App Store, and the tools available in iOS, like SpriteKit, SceneKit, GameKit, etc.
Then they go into some key elements that many games have in common. I think that many of these apply to Prolific’s new Friendwich game, but I also see helpful tips for all sorts of other apps in here too.
As you read each of these, start from a perspective focusing on a mobile game, but then think how it could apply in a different sector like retail, news, education, etc.
1. Remove Friction
In the presentation, much attention is given to the user’s experience upon opening the app for the first time. Some games spend a long time loading assets right away, or make users create an account or allow permissions that are unexplained.
That’s not fun at all! Instead, try to get your users in the game as fast as possible, then ask for the details once they have relevance. Try the steps in this post to more effectively explain and ask for permissions.
Does your app bombard first-time users with boring steps like typing in email, etc., before they even fully understand what your app does? Or do you ask for permissions without explaining why?
2. Be A Good Teacher
Your app is a pattern, and you know it inside and out. But you’re the developer, you don’t count. When the user first opens it, they don’t see the pattern right away; all they see is noise.
Good games cut through the noise step-by-step. Their “Level One” experiences are very simple, and then they introduce new concepts one at a time.
Your app may be structured like other apps, so they might use navigation techniques already learned from other apps. We updated Friendwich with “coachmarks” to explicitly tell the user what to type, press, etc., and the game became easier to learn.
Which one feature can you direct the user toward first, and which features can be held for later so the user is not overwhelmed by noise?
coachmarks in action
3. Tune Your Core Loop
If a game ever stops engaging a player, they’ll simply stop playing it. There has to be an ongoing chain of actions, rewards, and expansion. As soon as the user’s understanding of your app moves from noise to an understood pattern, it starts to run the risk of being… BORING.
Is there a way for your user to “beat the game” with your app, to the point at which they may not use it again?
4. Design For Touch
In a gaming context, many mobile games are ports from console or desktop. (My personal favorites are old SNES titles!) How can the controls be moved to a phone’s touchscreen?
This is a pretty established issue with mobile app design vs. desktop web design. Is there a way your app is trying too hard to be “just like” a product for another platform?
5. Foster Engagement
A great way to keep your users from “beating the game” with an app is to constantly introduce fresh content and hold the user’s interest every step of the way.
Is there something you can do to encourage your users to return to your app to see what’s new?
6. Background Transfers
Gamers especially may be used to a lot of loading bars greeting them at every level. The rest of your app is designed so tightly– it doesn’t make sense to let all that care go to waste by then forcing your user to do nothing.
What sort of caching or asynchronous operations could you introduce to the app to reduce loading times?
7. Optimize Graphics Performance
There are a lot of tools to use for game graphics that don’t necessarily apply to non-game apps, but things like SpriteKit are so easy to use that you can make fun interactive interfaces with little effort.
Meanwhile, concepts like a clean frame rate (60 frames per second!) apply to more usual app features like tables or collection views.
Could you use SpriteKit to make your app more fun? Is your frame rate high at all times?
8. Make a Good Preview Video
Your user’s experience actually starts even before the first time they open the app– it starts on the App Store! Here are some tips on making good screenshots.
And in iOS 8, you can include short videos of your app in the App Store! Use this ability to show the correct usage of your app.
Have you included the App Store description, screenshots, and video in your app design?
From the App Store to the game content itself, it’s important to localize your content as much as possible!
Even if your app is going to be in one language region, using
NSLocalizedString is a good practice to keep all strings shown in the UI in one place (something Android already does in its
Are you using
NSLocalizedString for your UI strings? Are you proactively translating store entries and other assets?
10. Target the State of the Art
This is pretty clear– use the latest tools for the job! There is a point at which certain new things are just trendy and not of substance, so evaluate any new tools accordingly.
Are you using legacy or deprecated tools for which a clearly better solution exists?
Hopefully, these questions have helped you reflect on your app development!