Search Unity

How to setup game updates in a smart way

Discussion in 'General Discussion' started by SplashFoxGames, Jul 11, 2019.

  1. SplashFoxGames

    SplashFoxGames

    Joined:
    Oct 10, 2012
    Posts:
    53
    good day,

    how'd you advice to setup game updates for an online game with backend support?

    for example I have items in Shop - like daily gifts, special offers,
    I have emojis - can change their pictures and amout of them
    can change amount of VIP cards (on backend side)
    have active casino multiplayer game inside the app

    what I was thinking is to have game versioning like X.Y.Z
    if I change Z on backend - user will be forced to app restart and update data
    if I change X or Y - user will need to download new version/update from the appstore.

    but what about small updates, like, for example, amount of emojis or their pictures? I don't want to call restAPI every time I open a new screen (list of emojis etc) - I want to load this data at app startup (preload). What kind of flags I'll use to know when to update shop section or emojis list ?

    if one user has 1.1.13 version, another 1.1.14 - second one can have data about 4 vip cards, when first one knows only about 3 - so for sure using 2 different versions will cause issues...
     
  2. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Most publishing platforms have an auto-update feature. I'd leverage that as much as I can. Anyone who escapes an auto-update you could pop up a window that an update to the build is available and required to play. I don't know how your data is set up, but if you could just send a version or checksum of the data, you'd be able to determine if the data is up to date or not. If not up to date, then you go through figuring out what specifically needs to be updated. You could also just include things like emojis with the build and let the publishing platform push those as well.

    For example, Steam is nice for this just throwing everything into the build. They use compression for transfers, and chop the build up into blocks and only send changed blocks for an update. This applies both to customer downloads and dev uploads. My current game is 1.7GB, but the initial upload or customer download is less than 400MB transfer. I make a new build with new images, code, etc, and push it to Steam. Usually only a few MB gets sent, and done transferring in seconds. I just set this build to be the active build now, and all my users get the update in just seconds as well, even though again it is a 1.7GB build.
     
    Ryiah and SparrowGS like this.
  3. SplashFoxGames

    SplashFoxGames

    Joined:
    Oct 10, 2012
    Posts:
    53
    thanks for the answer, yes, sounds good.

    Let's check some examples.

    For example, I can enter poker multiplayer session. I have emojis - 20 of them. When I enter the game I make a list of 20 items. Player #2 will enter the game in few minutes later and on backend we have now 21 items. So player #2 will have 1 more item than first one. When player #2 will try to send emoji number 21 - it will cause "index out of range" or any similar issue for player #1 because he doesn't know about that element. How to avoid such situation?
     
  4. AndersMalmgren

    AndersMalmgren

    Joined:
    Aug 31, 2014
    Posts:
    5,358
    We use steam, and we only let players on same build play with eachother. That way we can ensure everything will be in sync. Downside is that steam is not very direct in updating a new version (sometimes you even need to restart steam for it to take). So if you lots of update risks are people will not see any servers because they are on the wrong version.
     
    Joe-Censored likes this.