You do what you have to do
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.You can turn it around
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 the needs of your users. 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 an external server
#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 side scripts allow maximum 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.
{
"levels":
{
"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",
"coinseveryday":
{ "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 was originally posted in Gamedonia blog.
I think this problem is very real and I'd sure appreciate reading some more elaborations.