Tuesday, May 31, 2011

Ten ways to add depth and replayability to your game

I started to think about all the ways I've seen games almost create great replayability, but just fall short of the mark, and I decided it was time to write a short blog post on it. I'm apparently not your average iOS gamer who wants to spend 15 seconds every now and then playing. I want games that I can spend hours at a time playing - on my commute, on flights, on my couch in the evening. So these thoughts I'm sharing are to do with non-casual games. A lot of these ideas are extremely simple and cheap to add to a game as long as you plan ahead (a little). Remember that unless you intend to make your game online pvp, you really can go wild with the power level of characters as long as the game scales appropriately.

1) Implement things to do once the main storyline is complete. The game shouldn't end at that point. Imagine World of Warcraft ending with nothing to do once you hit level 60. Imagine Starcraft 2 having only the campaign missions in it. Ideally, a game should implement things to do with the character you took through the storyline such that you can continue to play with that character and continue to be challenged (or even increase the challenge). The Inotia series does this really well. This is also what made Final Fantasy 7 probably the most loved game in that series. Anyone remember raising and breeding Chocobos up to the gold one to go get Knights of the Round materia? That's what made the game amazing - all the stuff you could do after the main storyline finished.

2) Implement difficult to achieve upgrade systems. This might include rare drops for the best loot. But think a little ahead. How about rare drops for item enhancement scrolls or gems. How about rare book drops for new abilities or ability improvements? Make it difficult to get the best of the best. I don't want to be handed my top-tier loot on a plate from trash mob drops or random chests. That doesn't feel very rewarding.

3) Implement achievements. Implement lots of them. Implement difficult ones. Implement insane ones. This goes without saying, really. Many people try to get all of the achievements in a game. This is a simple idea that a lot of games implement already (for instance, the one, two, three stars system that lots of puzzle games have or game center/open feint integration).

4) Implement unlockables. Make some difficult to get. Tie unlockables to difficult achievements. Make the unlockables so worth getting that people will get them. Make long and difficult attunement chains to access new areas. Unlockable stuff is what gives a lot of games on other devices (console games, etc.) their long play time. For instance, I consider "Everybody's Golf" on the PSP to be one of the best games on that platform simply because I spent months unlocking all the courses, characters, clubs, clothes, etc. Simply unlocking a different skin for your main character isn't really as good of an incentive as unlocking a new level or an item that improves the strength of your character. Unlockables have to be worth getting and not just fluff.

5) Implement statistics. And make them visible. They are as much bragging rights as achievements. Statistics are cool, if they're done right, and are really easy to implement if you've designed your game with them in mind. Time spent playing, largest crit, monsters killed, longest combo, etc. For some more involved games, you might want to implement stats that players can track while experimenting with different equipment setups. DPS, crit %, average damage per hit, average heal done, etc. If you can make some statistics shareable online, they definitely become more valuable.

6) Implement randomness. Randomly generate the world. Randomly generate items. Do enhancements systems based on luck. Think rogue-like games or something like Torchlight. Randomness allows you to build essentially infinite dungeons. For randomness on enchantments, look at Torchlight's or Inotia's enchantment systems. These "gambling" style item upgrade systems allow for complete uniqueness between players (and in-turn bragging rights).

7) Make your game endless. Don't implement a level cap. Allow the possibility, however expensive, to keep adding another plus one to that item. Auto generate new areas as needed. This reflects on the previous point, but in a different way. With some simple maths, you can scale the stats of enemies and in turn the stats on drops as far as you want. If designed correctly, you don't need to even implement level caps (just scale the XP needed to get to the next level such that it ends up taking longer and longer to get another level). Your game world could have a series of dungeons that are only accessible after the character has reached a certain level or completed the previous one, or done some attunement quest. For item enhancements, just make it more and more expensive (in terms of time invested) for each additional +1. If a player wants to grind to level 150 and get +30 to their sword, no matter how long it takes, they should be able to do that.

8) Implement difficult crafting. Rare recipes that need lots of expensive or rare ingredients. Even rarer recipes that need the previous crafted item as a precursor. Make some of the best stuff crafted. Crafting, as long as you can implement the storage system properly, is a nice time sink. Make sure that reagents stack in an effective way (there's no need to cap the stacking number of a reagent, for instance). Make some reagents difficult to get (rare chance to drop from a difficult boss). There's nothing more satisfying than finally assembling a truly awesome new sword after hours and hours of fetching the reagents needed, and there's nothing more satisfying than finding that super-rare recipe drop.

9) Open harder modes that you play with the same character you just finished the game with. And an even harder one after that. Remember that a lot of scaling is just mob health and damage output. If your game has a finite story line and end point and you don't want to extend play past that, allow your character that you just finished the game with to go back out, from the beginning, against even harder mobs, wearing the gear they just spend a lot of time collecting and improving.

10) Implement discovery. For instance, don't document every recipe, drop, enemy and location. Don't make the game linear. If I know what the best stuff in the game is, sure it allows me to know when I've finished the game, but it also lets me know that the game has a defined end point. I hate linear games that give out the gear needed as I go - it doesn't feel like discovery or accomplishment. I should have to re-visit old areas to find new things. It shouldn't matter what order I do things in, aside from the main story quests, but I should have to do a certain amount of side questing to move on. I want to see new monsters later in the game, or at least new abilities on higher level versions of lower-level monsters.

Think of an XP bar in an RPG. The bar goes up and eventually fills. Then you gain a level, the bar empties and you have to refill it again. Many many gamers just want to fill bars like this. Whether it be levels, ranks, reputation, ladders or whatever, they just want a number that they can make go up. The more of these bars you can add to your game, the more engaging it will be for gamers. This is where companies like Blizzard are so successful. You don't need to be a rocket scientist to add these to your game.

Can at least one games developer learn to content update properly?

I don't know how often I need to mention this, as, to me, it feels like plain common sense. But I guess I haven't seen pretty much a single developer do this. What am I talking about? Content updates closely following the release of a game.

My first line of thought is that developers push out a game, rake in piles of cash and figure "that's it, I'm good". Okay, that's pretty understandable. I mean, they probably spent the last half a year working on something and it probably got pretty hectic towards the end. They want a break. The problem is what happens after that. They lose interest, work on something else, probably push out the odd bug fix, and eventually abandon the project.

Fair enough.

However, what they could have done was have a content update ready for deployment, even before the game is released. If they would plan ahead a little, they could serve this update at the right timing to keep people who are finishing the release-time content interested. After that, have a roadmap. Plan to always be a month or less away from the next content update.

Why would you want to do this when you can just roll in your newly acquired pile of cash and move onto a new project? I can think of a few reasons:

Recognition
If a gamer buys your game and before they're even done with it, there's a new content update that keeps them going, they will remember that. They'll tell their friends about it, who will buy the game. You'll build a following not just for that game, but for your company's name. In this current climate, you'll definitely stand out. The next game you put out will probably sell more on the initial week. You'll likely get written about online (by Touch Arcade, etc.)

Hype
What better way to make someone's mind up about a purchase than to know that they'll be getting more and more content down the line. And when you deliver as advertised, not 3 months later, if at all, your promises will be trusted. Often I've seen developers promise content updates that either never happened or happened so late that nobody even noticed or cared. Why work on a content update that you aren't going to be paid for? You just wasted your time.

In-App Purchases
Provide some free content and sprinkle in some IAP stuff. If people are getting all the updates and actually playing them, they will most certainly want to buy the little extras, be they maps, levels, weapons, new classes, etc.

As a side note, let's mention pricing.

For the most part (and I know there are some minor exceptions), when a game debuts at a price higher than a couple of dollars, you can expect the price to be lowered on it eventually. Most likely after a month or less. This is fairly predictable, and I've seen a developer friend of mine doing a similar thing. I know that you can get graphs on purchase trends for your apps. After the initial buying rush subsides and you see the graph slope tending towards zero, you lower the price. Certain app monitoring sites and tools notice it. A site may even write about it. Then you'll see a second peak as effectively the last of your sales happen (those people who waited for the inevitable to happen or who were on the fence about buying the game in the first place). The only people who will pick up your app after that will pick it up when you make it free for a day.

I'm sure there's some statistical maths to be done here (by someone), but I'm guessing that debuting at a lower price (one that falls in the realm of impulse buy) might actually be beneficial. You would get more coverage and probably more word-of-mouth sales (and this is likely quite common given how many apps come out per day). Unless this is a massively hyped game that people have been itching to get for months. But those are few and far between.