• 05/14/15 04:48 PM
    Sign in to follow this  

    Improve Player Retention Reacting to Behavior [Server Scripts]

    General and Gameplay Programming

    David Xicota
    Picture this. After you've fought hard 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 user's 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 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 timing of the game or add more game levels before they get to Level #8, allowing users to be more game-savvy by then.

    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. [code] { "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 } } [/code] 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 [tt]getGameParameters[/tt].
    • 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, 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.

      Report Article
    Sign in to follow this  

    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now


    Report ·


    Share this review

    Link to review

    Report ·


    Share this review

    Link to review

    Report ·


    Share this review

    Link to review

    Report ·


    Share this review

    Link to review