Social game marketing

I’m not a game developer and was actually not planning on doing a game-related post for #idevblogaday, but I’m currently reading Game-Based Marketing about how marketers can use game mechanics to create and foster long term customer loyalty. Basically think frequent flyer programs, points cards and any other type of loyalty program out there.

As a marketer, the premise of the book is quite interesting, and today almost any major chain will have some sort of loyalty program – even in smaller businesses you will find sorts of loyalty program through which you can earn points, loyalty and status amongst peers (much like achievements, leaderboards, etc. that you’ll find in games).

It got me thinking a bit about how game developers should try and utilize the same kind of systems that are in place for loyalty programs. For example, a big part of loyalty programs is earning points, achievements and essentially status within a certain program. People love showing off and they love earning points and higher statuses – even if it doesn’t really get them anything in return.

So in this week’s post I’ll discuss various ways game developers can implement different strategies that are found in loyalty marketing. I’ll discuss features that are well known and quite common in most top 25 App Store games, but at the same time, I hope to bring to light some aspects of these features.

Leaderboards
If you’re currently reading this and have a game in which you do not have a leaderboard, stop right now and start integrating one immediately.

A great part of the fun of playing games are being able to share with your friends your scores, points, etc. Also, being able to compare yourself directly with other players or friends playing the game is an important part of the fun.

The best way to do this is through an integrated leaderboard system. This allows the player to easily keep track of their score and abilities and compare them with their previous scores and how they rank amongst their friends and other players worldwide (or perhaps even cities, states, countries, etc.).

Game Center, OpenFeint, etc. provide easy-to-implement and solid foundations for leaderboards. These are also awesome (and free) marketing tools. For example, I have found myself looking through my GC friends games lists to find new games to play. It has also kept me coming back to certain games because GC has provided an opportunity to indirectly challenge me to continue playing the game to beat certain friends scores. This in return provides you as a game developer to cross-advertise your new game releases or sales for your other games.

Although competition is great, I wish more developers would integrate GC or OF (which also offer built-in GC integration), instead of trying to roll their own or using a less popular social game network. For example, when GC was released, I found myself revisiting old games to beat my friends’ scores or earn achievements. Those games that still do not offer a widely-used system just doesn’t draw enough attention, and I cannot be bothered to find out my friends’ usernames on the not-so-well-known social game networks.

Achievements
Achievements are also a great way to provide a leaderboard-type system in your game. It also helps prolong the experience and fun with your game.

A few examples of use of achievements in games:
• Achievements provide an opportunity to easily reward the player throughout the game. Levels, new upgrades, etc. This helps create a path for your game and a path for completion.
• Think of achievements that would require more practice or more time playing, basically ones that would prolong the game for players for after they’ve finished all levels. For example, Cut the Rope could use a timer and an achievement for finishing certain levels in certain amount of time, instead of just the three stars. You do earn more points for finishing a level fast, however this isn’t apparent, and after finishing the levels I cannot see how much faster I should have been in order to earn more points. Another example of achievements is Trainyard, which could give an achievement for finishing all stations in one city by using only X amount of tracks. These two examples provide a way to challenge the more hardcore players since they’re considerable more difficult than pure completion of a level, and it also does not hinder the completion of the game for the more casual players.
• Be careful not to make achievement nearly impossible to obtain. For example don’t make an achievement for “Played 100 hours” if your game basically takes an hour or two to finish all levels. Unless there’s a lot more to your game after having finished it, you can’t expect anyone to want to spend so much time playing it – even if they love going for those achievements.

Again, Game Center and OpenFeint provide great frameworks for integrating achievements as well as achievement leaderboards and friending systems. Use one or both of the solutions and think of ways to achievements into your game to make it more fun and challenging. They’re completely free and helps save you a ton of work instead of trying to roll your own.

Small side-note to leaderboards and achievements: Add a button somewhere in your games’ menus that let’s the user see their scores and/or achievements. Both GC and OF offer modal views for these. This way the user doesn’t have to leave the game to check an achievement or whether they’ve now trumped their friend’s top score, and you also help bring them right to the information they’re seeking – not leaving them to go to GC via the app itself, for example, and drill through the view hierarchy in order to find what they’re looking for.

Social Sharing
Sharing high scores, achievements, etc. is great opportunity to advertise your game and something that players love to do!

However, instead of just providing a Facebook and Twitter button for sharing a score or achievement, why not go a littler further and help the player out with deciding when it’s appropriate to do so? For example, what might seem like a low score to one player, may turn out to be in the top 5% of the leaderboards. After completion of a level or game, the developer could integrate a system that looks up the score and based on various factors it may say something like “Holy shit, your score was super high, you’ve just entered the top 10%, you should totally brag about it on Twitter and/or Facebook!” – or something like that. This helps the player realize the worth of their skill and score and may actually be more effective than just having a button that enables sharing of a score on social networks.

Also, don’t just tweet a score plus a link. Players will look through this as a pathetic attempt from you to get some free advertising out of them. They already paid you money, why should they help you out more, even your game is the most awesome one ever made?

I realize you don’t have a lot of characters to work with on Twitter, but including more than just the score is important. If I see “John just scored 13,453 in [some game]!”, I don’t really know whether it’s a good score and it doesn’t provide me with a way of relating this score to my own skills (unless I have played it). However, if I see something like “John just placed in the top 5% in [some game] with 13,453 points!” I would be more interested and perhaps more inclined to try out the game and beat John’s score if I know we have similar skill and scores in most games. It also gives both John and his friends a better understanding of just how awesome getting 13,453 points is. Without relating the points to anything, no one can see whether it’s actually a good score if they don’t know the premise of the game and the value of those points. John might actually be tweeting a super low score (compared to his friends’ scores), so helping John decide when it’s an appropriate time to share his score helps him save the embarrassment of tweeting a humiliatingly low score.

Basically, adding more substance to your sharing feature gives you more respect from your user (surprise and delight) and also makes them more likely to actually indirectly want to help you advertise (which you have to admit; you’re adding this feature more for yourself to advertise than actually just scoring some random score).

Another great way of sharing content from your game is something like Matt Rix‘s Trainyard solution sharing system. It works both as a way for players to show off their skills, but also helps more casual players progress through the game. Hardcore players love showing off and it also provides a way to prolong the game for hardcore players as they may try and find new solutions that haven’t yet been done. Linking this with the previous paragraph, one thing the game could do was to provide a small notification if a solution is 100% unique by saying “You have created a unique solution not yet available on Trainyard.ca, would you like to share with the community?” This helps the player realize their skill compared to others and again provides the more hardcore gamers with replay value, as they may go back to some levels in order to make new solutions, not yet seen by the community. That in itself could create a separate leaderboard for players which shows the top 50 players who have come up with and shared unique solutions, again improving the experience and loyalty further for those committed to the game and the community that surrounds it.

Game save syncing
This is as much of an idea as it is a request to all game developers out there.

Universal games are starting to become more common, now with iPhones, iPods touches and of course iPads selling like crazy. I own both an iPhone and an iPad and love when developers take a bit of extra time to release their game as a Universal game – even if the iPad is pretty much the same as the iPhone game, just larger. Of course, not all games scale as easily from iPhone to iPad in terms of the experience with the extra space, but for games that I play both on my iPhone and iPad, I would love to see server-based game save syncing or whatever you want to call it. However, this doesn’t just go for Universal apps, since many people have several devices. If they have the same game installed on both their iPhone and iPod, why not make the game experience more fluid?

The premise of this idea is dead simple: I play a game on my iPhone on the subway home from work. When I get home and hit the couch later that night, I want to reach for my iPad on the coffee table and play the exact same game, from the exact point I left off. I don’t want to start over from level one. I don’t want to have to earn the exact same achievements I just unlocked four hours ago (especially since they’ll appear as unlocked just fine if I head into Game Center).

Again it might be something 80% of users wouldn’t need. You may never have had to bring your game saves on your Wii controller to your friend’s place or transfer your PS3 game saves to your buddies PS3 so you can show of your collection of sweet cars in GT5. But it’s something we have now seen in console games for well over a decade now. As much as it may be a less used feature, it’s something I just don’t understand why is missing on such a portable platform.

It could be somewhat simple, depending on what your game exists of. When you start adding stuff like specific amounts of bullet ammo left, percentage of health left, points in each cleared level, etc. we’re getting a bit more advanced, but it’s definitely possible, regardless.

Game saves could be saved on a server and retrieved using an email and password. I don’t know the exact workings of GameKit, but maybe a successful login to Game Center could prompt a “It appears you have a game save available in the cloud based on your GC username, would you like to sync this device and keep your progression in sync?”. (If anyone at Apple is reading this or if you know someone working on GameKit, please let them know to consider adding game save-syncing to Game Center :))

Or even something like bluetooth sharing of game save states, bumping devices, or sharing via a unique code displayed on one device and entering the code on the other device would retrieve whatever was just uploaded to the server.

Just a few ideas of how you may be able to work it out, but seriously, this is such a great feature that would really set your game apart from others (apart from being a unique experience in itself, of course) and your users will love it.

I have yet to come across a single iOS game that does this, so if you know of one, please do share it in the comments, so other developers can check out and perhaps get some ideas for their own game.

Wrapping up
I hope I have sparked some ideas into your head as to what you can do to enhance the experience with your game and creating some loyalty amongst your customers. Some of the above ideas definitely will enhance and prolong the game experience, adding value to your game from what is actually very little work in most cases, implementing GC or OF or enhancing score-sharing on social networks.

Thanks for reading and please do leave a comment!

Random tips

I was expecting this blog post to be about something completely different, but I’m still out of the country and have come down with a bad cold, so it’ll be a bit of a short and simple.

I’ve decided just to a few coding tips, I have come across and though might be useful for other devs, especially if you haven’t worked much with UIKit before in your development, or perhaps just these areas below. (At the bottom of this post is an Xcode project file which includes examples of the tips below).

Tip #1: Check for URL scheme and open correct app from your own
You’ll probably run into having to link to another app, for example your company’s Twitter account. Instead of just linking to the Twitter website, you can do a quick check in code and open the Twitter app instead. You can also do it with other Twitter client apps as well, however, not all have URL schemes setup (that I could find), and most users will probably be using the official one anyway. Regardless, the code is good to do the same check for other apps, or if Twitter.app doesn’t exists on the user’s device, you can try another Twitter client app, or use a UIAlertView to ask the user what else they’d like to use (depending on which ones are possible to open using the URL scheme).

Basically, all you have to do is ask whether UIApplication responds to the URL:

BOOL twitter = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"twitter://user?screen_name=runmad"]];
if (!twitter) {
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.twitter.com/runmad"]];
} else {
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"twitter://user?screen_name=runmad"]];
}

List of URL Schemes: http://wiki.akosma.com/IPhone_URL_Schemes

Tip #2: Getting a free UINavigationController in your UIViewController
I have seen some apps that use a UIToolbar as a navigation bar, and this just doesn’t work. If you compare the two, they’re actually a bit different, and this really shows when put in the wrong place.

If you’ve got a UIViewController, turning it into a UINavigationController is really easy:

RootViewController *rootViewController = [[RootViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[self.navigationController presentModalViewController:navigationController animated:YES];
[rootViewController release];
[navigationController release];

Tip #3: Getting a free UIToolbar in your UINavigationController
This one I only just recently found out (thanks to @auibrian)
. UINavigationController actually comes with a UIToolbar. It’s property is set to hidden:YES by default, so all you have to do is override this property when you load the view.

[self.navigationController setToolbarHidden:NO];

Note: I have seen some weird behaviour when pushing view controllers onto the screen (buttons not getting a pushing animation, just appearing in the toolbar in place). Also, you will need to hide the toolbar if you’re popping or pushing to a view controller that you do not want to show the toolbar (because with pushing you’re reusing the same navigation controller). In my opinion it’s not a very good way, I wish the view controllers were more separate for this.

Tip #4: Use shadowColor and shadowOffset appropriately when faking text indention
One thing that bugs me are improper use of a UILabel’s shadowColor and shadowOffset. When using these, one has to pay attention to the colour of the background as well as the text colour. In the below example (when we’re going for the look where text looks carved into the display, used by Apple across the entire UI), we’ll see that when using darker text, use a lighter colour for the shadow and a positive value for the offset.

When displaying lighter coloured text, use a darker shadow colour and a negative value for the offset, which in both cases create the proper indented or “carved” effect.

Using the wrong combination doesn’t create this effect and makes the text appear raised from the rest of your UI, which is most likely not what you should be going for in most cases ;)

I’ve made a small Xcode project you can download here, which has the code examples from tips 1, 2 and 3 and I suppose #4 as well, since navigationItem.title is using text indention.

Again, apologies for a bit of a short and simple post due to being under the weather and traveling.

How updating apps could multiply sales

This will be my first #idevblogaday post, so I’ll just briefly introduce myself and then get on with my post. Follow me on Twitter: @runmad, by the way :)

I’m writing this on a flight from Toronto to Copenhagen on an iPad so hopefully it’ll turn out alright. I was afraid my turn for #idevblogaday was going to be exactly when I was going away on vacation, and sure enough @mysterycoconut tweeted @ me the day I was leaving that I’m up, so here we go.

I’ve done development for about 1.5 years now, Objective-C is the only programming language I know. I have a degree in marketing and management communication and years of experience in graphic design. I love experience marketing and sensory branding. I got into iOS development because I loved how (then) iPhone OS brought to life an amazing UX through great hardware, UI and functionality. A great iPhone app is a mix of marketing, design, experiences, sensory triggers and of course, code. So I started learning the coding part and have found that knowing all the rest really does help and benefit you!

I work for online retailer and I have built an iPhone app that allows you to browse our products, purchase them, check orders, etc. You can check it out here.

They’re not “users,” they’re your customers
In developing apps (games included) for iOS devices there’s always a question of doing updates. You’ve released a rock solid 1.0 and then comes the mandatory point update(s) with nasty bug fixes.

Your app sold a few hundred copies (or thousands, congrats) after first releasing it and has since then steadily not sold very well. Should you care to do actively pursue further development and thereby bring more features and goodness to your customers who already paid for your app? Let me try and convince you to do just that.

I’ve read a bunch of posts on IAP and how this has revitalized sales for a game. Noel Llopis’ (@snappytouch) Games From Within blog to read a few posts on his experiences with using IAP to boost sales for his game Flower Garden. IAPs are definitely awesome, and I guess this post will be more of a idea that would compliment IAP in certain instances (depending on what kind of app you have).

I had no Internet connection while writing this, so I have no links for facts and figures but go by general knowledge and my perception of scenarios. Trust me, it’ll be awesome anyway, facts are hugely overrated, right?! You might not agree with me, but feel free to leave a comment and we’ll talk ;)

Joking aside, let’s have a look at why I think you should create and submit meaningful app updates, somewhat regularly.

We all know that App Store customers are greedy. You give them a free app, they want an arm. You sell your game for less than a buck and they complain about there only being 150 levels which meant they finished it in a day because it’s so good (telling you they’ll reward the last, fifth star when you release an update with a billion levels).

Let’s stick with that dollar. How much are you as a developer, as the seller, willing to put into your work after it’s out of the door and the first point updates are released to fix those nasty bugs? I know developers generally hate when customers complain about a one dollar app in a review, but look it this way: They paid you money. They bought something from with their money. They feel entitled as your customers. I bet many indie developers didn’t expect to have to deal with customers when they started iOS development, and are unfortunately surprised by it. It might just be a buck, but this dollar can lead to much more money if you take care of your customers. Give them more than what they came for and they’ll help your sales grow by spreading the love through word of mouth.

The dilemma you have is whether, once a customer has paid for an app, should they receive more? Sure, you can sell level bundles or other objects related to a game with IAP, but perhaps you could also just give this to your customers for free… Or if you have a non-game app, it’s not easy to sell app features as IAP, and I’ve never personally been a fan of apps that have a “Pro” version.

Spreading the love
When was the last time you told your friends not to miss out on a dinner at that restaurant where the waiter treated you like shit? And how many times have you been back to that awesome bar where they tend to free-pour rather generously?

Let’s look at free-pouring. Angry Birds. I would say it’s probably the most popular app ever. It rival sales numbers (not profits mind you) of major console franchises and why wouldn’t it, it’s a buck! Buying this game is a no-brainer for most people, even the greedy ones. You get so many levels it’ll take you days if not weeks to finish. Once you’ve finished they throw more free levels at you in a free update for that one dollar you spent two months ago. They’re clearly insane, right?!

In my opinion (even if this isn’t their intention) it’s a quite clever marketing move. Every single time Rovio releases an update to Angry Birds you’ll tap open that game while riding the subway with hundreds of other people seeing you play this game. You’ll remember how much you love that game and be sure to tell your friends with iPhones (and now other platforms) to download it. You haven’t left a review yet, but feel that now is the time to do so. You’ve had so much fun playing this game – and still do with new levels! – that they deserve that quick 5 star review.

App update sales multiplier
Let’s say Angry Birds has sold 1,000,000 copies (it’s sold a lot more but let’s stick with a nice, huge, round number). Of this 1m downloads, 95% still have it installed and have played it within the last two months. (It’s my belief that a paid app actually stays on a users home screen way more permanently than a free app. It’s like throwing out a dollar and it doesn’t take up any physical space in your life even if you don’t use it. Apps that stay on the device (not just iTunes) are way more likely to receive attention when updated in the App Store.) Angry Birds gets an update with fixes but, more importantly, a new world and 30 new levels or so. Of these 950,000 active customers, let’s say most will update at some point. 10% of these people will tell their friends. On average these 10% tell two friends about the game. Of these 190k people who now know about Angry Birds, just over half will go to the App Store and download Angry Birds for a dollar (it’s a no-brainer price).

So now, from a free update, Angry Birds just made another $100,000 (before a 30% cut) on top of that 1 million copies already sold. Of course I was using the highest grossing game, but I still believe it this ripple effect holds true for your apps. If you reward your customers and exceed their expectations, trust me, they will reward you back by word of mouth, which lead to more sales.

You’ll always have those vocal, annoying customers with horrible reviews and ridiculous expectations, but don’t forget the people who often are the least vocal to you are often really vocal about your app/game to their friends. Who do you trust most for advice on awesome apps, people who are clearly idiots from app reviews or your real life friends or people you follow on Twitter? My guess is the latter two. Just like the restaurant example earlier. You’re probably more likely to visit a restaurant based on a great review from a friend who recently went there compared to a review in a newspaper.

Active development
You may not be selling millions of copies of your app like above, but it doesn’t mean you shouldn’t pursue active development if your app has something going for it. Updates will remind your customers about your app. They’ll revisit the app and it’ll be first in their mind been their friends asks what new stuff they’re using on their iPhone, or which apps they should get within X category.

I know this comparison may sound insane, but it’s rather valid: Coca-Cola technically doesn’t need to advertise. It’s not like we don’t know what it is, where to buy, how it tastes and how it makes you feel, right? True, but when Coca-Cola spends millions and millions of dollars to advertise, they’re reminding you of the brand over and over and over. If you hadn’t just read the first part of this paragraph, I would bet money that you would have said “Coca-Cola” if I asked you to name a soda brand. This is because you have seen so many Coca-Cola advertisements and heard the brand name so many times over the years that it’s imprinted in your brain!

Same goes for your app. Remind customers about your app and be the first thing to come to mind when they think of awesome apps within your apps category/core functionality.

With all this said, don’t just release meaningless “bug fix” updates. People will see straight through this after several of seemingly pointless updates and only get annoyed that your app apparently is full of bugs. As @Jury said in a tweet the other day:

“… Compiled software is not the web. Don’t push every minor issue you fix immediately to your users. Plan discrete releases.”

Obviously, if you have a severe bug in your app, get it fixed asap, so your customers won’t grow resentful of the fact your app doesn’t work as expected.

So in review:
– Free updates help increase awareness about app.
– Awareness leads to re-discovery which helps keep your app “immediate” for users.
– Think of users as customers. You’re not doing them a favour by releasing an app. They’re doing you one by giving you money in return.
– Give your customers more than they expect and they’ll return the favour with a review or other kinds of word of mouth.
– Updates help provide value and helps your app exceed your customers expectations, regardless of the cost of your app.

Note:
– “Bug fixes” are not directly seen as value for your customers. Sure you fixed bugs, but what value does this bring other than just fix something that should have been working in the first place?
– In my opinion, too many “bug fix”-only updates that talk about “improvements,” etc. just become annoying and doesn’t show customers that you (the developer; or seller) is focused on building new features.

I hope you enjoyed my first #idevblogaday post. I hope it was insightful and invoked some thoughts as to what you could do with your app, even if I didn’t provide a single line of code :)

I do hope I surprised some people with how marketing blends in with being an iOS developer and provided some insight into what kind of relationship you have with the users of your apps.

Thanks for reading, sharing and please do leave a comment!

Have a wonderful Monday!