Sponsored By

Improve player retention reacting to behavior [Server Scripts]

Picture this. You’ve fought hard to release your game, you get many downloads, BUT players get tangled up in level #8 and can’t get past it. According to analytics, they seemed to enjoy the game so far, but now they log in at lower rates. What's going on?

David Xicota, Blogger

April 27, 2015

5 Min Read

Picture this. After you’ve hardly fought to release your game and you’re lucky enough to get a pretty decent number of users downloading your game, they get tangled up in Level #8 and can’t manage to get past it.

According to your analytics service, they seemed to be enjoying the game so far, but now the users are logging in at a lower rate. You’re losing active users. What’s going on?

There’s no question they like your game. Why would they play up to Level #8 if they didn’t? The thing is maybe you overestimated the users ability to reach enough proficiency in the game to advance to further levels. Level #8 might be too difficult for most users and that’s why they’re are no longer logging in to the game. Thus, you’re losing users.

There are many solutions to the problem. You could reduce the number of enemy waves, add player stamina, change the time of the game or add more game levels before they get to Level #8 allowing users to be more game savvy by then.


Submitting to Stores Takes Too Long

Ok, you decide to modify the game’s parameters to ease it on your users so they keep on enjoying the game and choose to stay. Say you’re a programming beast and that you’re able to swiftly adjust the code and successfully test the game mechanics in one day. That’s good and all but you still need Google Play or the App Store to approve it and publish it - a day for the former and a whopping 7 days for the latter.

The lack of control over the response time for the in-game modifications hampers your ability to make the game progress. I don’t want to be a bummer, but you’re still losing users.

Having passed the period of time for the changes to go live - which seemed longer than you care to admit - users still have to accept to download the latest version of the game. Some of them do it right away, some might do it at a later time… or never at all. After all that rush to get the newest version active, it is still up to your game users having the latest version if you want to see whether the fixes have a positive effect.

Right, you continue losing users.

It’s really hard to get good feedback from the users - and react accordingly - when not all of them are running the latest version.


Adapt or You're Done

The use of external servers to store game mechanics data is a rapidly increasing tendency among game developers. Offering flexibility and a quick response is key to be adaptable to your users needs. Imagine a service that cuts your response time to a minimum, gives uninterrupted game play to your users and lets you test different approaches at the same time.


Why Store Parameters in External Servers

#1 Never let others dictate your response time

Your response time shouldn’t be much longer than what you spend on tweaking your code. Fixing it to have the changes go live barely at the same time, you’ll be able to deliver a quicker response to your users’ needs and keep them engaged. Getting user data faster allows you to decide if the changes came to effect or if you need another iteration of changes.

#2 Don’t annoy users with a game update download

Having your users experience the updated game on-the-go, releases their need to download any game updates manually. They’ll always play the latest version of the game so you’ll get very reliable user data because there won’t be different versions running at the same time.

#3 Find solutions on-the-go

Upload different solutions to the same problem to simultaneously test which one performs better among users. Split testing subtle code differences will return twice as many data, which means reducing the time you spend to find the best adjustments for the game.


Server Scripts Equals Max Configurability

Take this as an example. You could create a config collection in the server side to keep a simple config JSON. This would be the code for it.





"1": { “difficulty”: 1, “time”: 60 },

"2": { “difficulty”: 3, “time”: 70 },

"3": { “difficulty”: 5, “time”: 80 },

"4": { “difficulty”: 7, “time”: 90 },

"5": { “difficulty”: 9, “time”: 100 },


“adsplatform”: “iads”,


{ “1”: 10, “2”: 20, “3”:30, “4”: 60, “5”: 100 }



Every time a user opens a new game session you can check if this config has been changed or not. If it has, it’ll start the download of the new game’s config and will start using them right away.

Besides, you can also implement A/B testing with one custom script very easily.

  • Create two or three JSON config samples in the collection.

  • Define a custom script - new server function - called getGameParameters.

  • Call this function every time a user logs in to your game.

This function will be a simple Javascript - using a round robin technique - that will decide what JSON has to be sent: A, B or C. This way the decision point is on server side and can be easily changed and you will be able to test different simultaneous configurations to get better results.


Now you know you can improve user experience storing game mechanics in the server side, what other situations do you think you could use this for your game?

I'd like to know, leave a comment.


This was originally posted in Gamedonia blog.

Read more about:

Featured Blogs

About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like