How to Expand Games (and more) Eluding App Store Updating

Published June 15, 2015 by David Xicota, posted by David Xicota
Do you see issues with this article? Let us know.
Advertisement

a-dlc-expandable-00.jpg

One key to video game success is to be constantly releasing small updates. This alone might be a compelling reason to develop expandable games.

There are a plethora of reasons why games are successful, but what's for sure is that players want to feel their favorite games are alive. They demand you to solve annoying bugs that affect gameplay, they like to have extra content to play through, and they love to see when you are able to introduce community proposals into the game!

This ideal situation means:

  1. You are going to be dealing with the app stores very frequently, which will delay your updates.
  2. This will impact your ability to appropriately schedule updates, limiting your marketing strategy.

It's not all bad news though. There are ways to add new content to your game and having control of when new updates are launched at the same time, so you can keep your customers happy and make reliable marketing campaigns.

What are expandable games used for

Imagine you are creating a game with lots of levels, say a match-three game, such as Candy Crush. You'll have to design a lot of levels. Developing triple digit levels takes a lot of time, and you still have to figure out the kind of levels that are going to work best with your audience.

Should you spend all your efforts, money and brains designing all levels for the very first game version?

You could do all of them at once, but luckily, you don't have to. You can set a system that allows you to publish new levels independently of when new versions are published to the stores.

When well structured, using a downloadable content system will help you free your team from publishing all the small tweaks and updates to the stores. Following I'll detail how you can expand your game using DLC.

a-dlc-expandable-01.jpg

First steps to develop expandable games and bypass stores

This is the basic outline you should consider to expand your games. I'll stick to the match-three example I started with, but it can be applied to any kind of game you're developing.

Step One

Use a mechanism to define your levels with an XML file or JSON document.

  • It could be the complete level definition, or just a meta description and a binary file to be downloaded and imported into your game.
  • You could include any information you need:
    • Name
    • Difficulty
    • Level order in a map
    • Images shown to the user
    • Price in virtual coins (when needed)
    • Publish date (for extra control)
    • Version of the content

Step Two

Make your game check for new content every time it's executed.

  • Either from the splash screen or the map screen.
  • In case the new levels are premium content, you could check while players are at the in-game shop.

a-dlc-expandable-02.jpg

Step Three

Download new or updated content when it is found, and import it into your game. This is where DLC comes into play.

Step Four

Let the user know that new content is available.

  • Automatically scroll the map screen to show the new levels, whether they're locked or unlocked.
  • Set a "New" badge, or banner notification on the content category that got updated in your shop.

a-dlc-expandable-04.jpg

Now that you know the mechanism, publishing new content should be easy:

  1. Create the new content
  2. Create the XML file or JSON document that defines it
  3. Make it available on the content server

By doing this, all your active players will have access to new content automatically.

What can you make of this mechanism

The advantages of developing your match-three game (or any game) in small pieces of downloadable content are plenty! You get a more flexible game that can adapt faster to make players happier about the game.

Let's dive into some scenarios in which it is beneficial for you as well.

Scenario #1 Difficulty adjustment

Let's say your analytics reveal your game has a severe player drop at level 6, indicating that maybe this level is too difficult for most players. You don't want to have a majority of frustrated players, because they could decide to cop out of the game.

You could address this player drop rate by adjusting some key parameters in the level. In a matter of hours, all players in all devices would have the updated level 6, avoiding all store delays. Having a quick reaction to player behavior is really important to optimize your business model.

Scenario #2 Bug fixing

Some bugs, especially in the first versions of the game, are unavoidable. Imagine you have a bunch of players complaining about an annoying bug that happens only in certain levels.

If the bug is easy to fix, you could have the error free level up and running as soon as you solve it. It makes your players happier, and hopefully, more loyal to the game they like playing.

Scenario #3 Game extension

As mentioned before, you don't have to release the complete package of levels at once. You could launch with a fraction of the total, and make your game download follwing levels according to the player's progression.

What are the upsides?

  • Your game is smaller, meaning it's easy to download and test. Win-win situation.
  • Your game is ligther on the device because it simply takes the minimum necessary space. In case a player needs to free disk space to install new games or apps, your game will appear at the bottom of the disk-usage list, and will be more likely to live another day. Once again, a winning situation.
  • Your game is updated and players will have downloaded the levels only when needed. They will always have the latest version, which is bugfixed, and with the latest additions to keep them loving the game. Player engagement is also a winning situation.

Once you get the hang of the technique, I'm sure you'll be able to implement more complex solutions and deliver players a better gaming experience.

That's all for now! I hope this introduction on how to expand your games got you thinking of new interesting ways of using DLC and server code in your games.

How do plan to use this? Please, leave a comment.

This was originally posted in Gamedonia blog.

Cancel Save
0 Likes 10 Comments

Comments

LoneDwarf

I considered doing something along these lines but decided against it. The concern was that the costs of hosting the content might be too much. It's really a bit of a commitment.

Have you done this in practice? If so have the costs of serving the content cut into the profits much?

June 12, 2015 04:01 PM
jwezorek

I'd worry about scaling if your game was actually at all successful , especially if the level files are at all large like, say, they have assets in them.

What I mean is I can imagine doing this from a folder on a banal GoDaddy (or whatever) hosted web site and being fine for a couple hundred users, but then you grow to a couple thousand users and you start seeing timeouts at startup, maybe.

I guess the thing to do would be to use Amazon S3 with which you'd only have to pay if you started being successful.

BTW the other thing that this technique is good for that I dont think the article mentions is getting around limits on the size of iOS games.

June 12, 2015 05:49 PM
tnovelli

Just use a CDN in front of your el cheapo web host. Amazon's overkill; try something like MaxCDN.

June 13, 2015 03:33 PM
jsaade

Scaling could be handled if you are connecting to a domain (not by direct IP). You would then change the domain A record if you decide to get another host. Downtime is minimal until DNS refreshes.

Anyways, if you have a large audience and you are actually monitizing well, you should not worry about scaling.

@jwezorek: what iOS game size limit? you mean android. APK size is limited to 50MB! iOS is 2GB.

June 15, 2015 07:14 AM
David Xicota

Hi all! From your responses, there are a couple of issues you’re concerned with.

Costs and timeout issues.

Yes @LoneDwarf, I have used this technique in a couple of games back in the day. Disclaimer alert, so have many of my customers. The trick here is finding a solution or service that lets you cut costs, because setting up all these in-house, if you aren’t that big of a studio, might not be very profitable. So yeah, I’m with you here.

Maybe I wasn’t clear enough in the article @jwezorek. Timeouts wouldn’t be a problem the way I’d make the game. Firstly, when a player downloads a game, he or she should be able to play it as soon as the download ends. Please, don’t make them wait longer for extra download of assets, it’s just bad user experience. Which leads me to the second point. I would never consider not including in the app store download (ipa or apk) the necessary content for a complete first gameplay session.

What I suggested was to download extra content that is beyond the first game experience, or to expand its levels.

That said, what I could see working is serving new bug fixed versions of the game through the server, so you’re able to offer a better user experience, thus less player churn. When this bug fixed version has been tested live, you could submit it to the app stores so it actually becomes the original download package from the store.

The same could work to add new levels, or to adjust difficulty parameters for instance.

This would reduce your costs, but at the same time give you the possibility to react fast introducing bug-free “patches”, or testing “versions” to see which one works best for your goals.

I have another article up my sleeve addressing exactly (for Android) what @jwezorek suggests :-)

Sure! @tnovelli is spot on using a CDN. Serving content from the closest point is really important if your game can be downloaded worldwide.

June 15, 2015 02:15 PM
EDI

This is a great article; I've been working for /quite a while/ on the concept of games being expandable. While this article covers a bunch of aspects common to any type of game; its considerations really end when game complexity gets high (such as an RPG).

One big consideration is how to maintain a save file with provisions for expansion; without 'bricking' user saves; or making your life painful having to accomodate for past revisions.

Here is a document I've written that discusses this in detail:

https://docs.google.com/document/d/1TgCIzKuxiraa2sHC7QDrSHGwDspUE6C9OUN4Pjoihcw/edit?usp=sharing

June 15, 2015 03:35 PM
David Xicota

EDI, I'm glad you chimed in, because your solution is very clean. Congrats!

June 16, 2015 09:44 AM
jbadams

One big consideration is how to maintain a save file with provisions for expansion; without 'bricking' user saves; or making your life painful having to accomodate for past revisions.

Here is a document I've written that discusses this in detail:

https://docs.google.com/document/d/1TgCIzKuxiraa2sHC7QDrSHGwDspUE6C9OUN4Pjoihcw/edit?usp=sharing

Great technique Raymond -- if you're interested, we'd love to republish it! :)

June 16, 2015 10:55 AM
EDI

David sent me a message asking if he could write an article about it; and I said absolutely; would love to get this technique circulated.

It should be known that in terms of battle-testing; this technique is/has been in use within Revel Immortal

June 16, 2015 12:48 PM
David Xicota

Good stuff is bound to be spread!

June 16, 2015 01:11 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement