Notes on Expansion file support, RFC (request for comments)

adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 2,054
edited December 2020 in News from the Dev Team

So we've started preliminary work on expansion file support.

We likely won't be finishing it next week because of the Big Sur issue. I just wanted to get a start on it yesterday to get a sense of what we're getting into and how to design it. I'm gonna set my laptop to update to Big Sur tonight (gives me a weekend to wrestle with any bugs that pop up), so I can start tracking down the Big Sur issues in Mac Creator.

In the mean time, I wanted to give you a sneak peak on how things will work and see if there are any comments (also to assure you that we're really gonna do it this time).

  • Expansion files will be store the main game project. Basically it's going to be a zip file of your game project with some special things going on, like audio assets not being zip compressed to allow for streaming.
  • You will be prompted to upload a second game project file, the loading game.
  • Usually, when the game is installed from google play, both files will be downloaded. BUT it's possible to have the APK installed with no expansion file installed (or in the middle of downloading).
  • When that happens, the game will run the loading game. This game project can be a loading screen, a mini game, or even the first level of your main game. It's main thing is that it needs to let the user know that the game isn't fully there get and is downloading.

So here's the flow, assuming you don't have the expansion file downloaded.

  1. App starts
  2. App checks for expansion file.
  3. No expansion file, app starts background download the expansion file.
  4. App loads the 'loading game'.
  5. Once the app finishes downloading, the game will be able to run with the full game.


Step 5 is where things get tricky, so to get things out to the community quickly, here's the sequence of releases:

Version 1: (Late Dec, Early Jan)

  • The downloading happens in the background.
  • The loading game has no knowledge of progress and just has to be ready for a restart at any time.
  • Once full game has downloaded, the engine will dump the loading game and load the main game.
  • You will likely just want a splash screen here or a mini game that can end at any time.

Version 2: (Late Jan, Early Feb)

  • You will need to add specifically named attributes that we will updated to notify you of changes in the loading game.
  • The downloading happens in the background and will update attributes in the loading game to let you know progress (the bytes total and the bytes downloaded will be sent to you).
  • You can display them or not. Now you can let users know loading progress.

Version 3: (Early Feb, Late Feb)

  • You will also have a publishing time flag that ask if you want the game to automatically restart when download is complete.
  • This will give you the option of including a subset of your game. You can now prompt the users to "restart" the game if they hit the end of your loading game content. If they don't hit the end before the game downloads, everything will work fine as they will just load the full game when they next run the game after the download.

Version 4: (After the next Windows Release)

  • We'll add a new behavior that lets you manually trigger "reloading" the game once the expansion file has finished download.
  • This will let you either manually trigger (through a button) or programmatically trigger (via behavior like on the end of the last scene) a reload of the game.

There is one extra bit of complexity if people want to include gameplay in the loading game. Game attributes are referenced by an internal ID and not by the name you see, so if you want to convey state from your loading game to the full game, you'll need to ensure that all the internal IDs are the same. The best way to do this is to build your full game, then start cutting extra stuff out of your main game until you get under the 100MB APK limit.

We're gonna push hard for Version 1 and then the timings for Version 2-4 will depend on what else is going on in our schedule. We will likely push hard for version 2 as that gets all you need for an "acceptable" experience. Version 3 is icing on the cake, as google's documentation seem to imply that a simple loading screen an okay experience.

The main thing you'll want to consider in timing your launch is your target market and the size of your game. If your game is large and the target market has mostly slow internet connections, you may want to hold off on release until at least Step 2 is available. Basically, you'll want to consider the experience your players will have as they wait for the full game to download after the apk has already installed.

Anyway, that's a big brain dump of how we're thinking expansion files will work. Let me know if anything is unclear, or if you have any suggestions for the flow!

Cheers,

Comments

  • ArmellineArmelline Member, PRO Posts: 5,025
    edited December 2020

    This all sounds great. I'd assume that most people would want to present one of two experiences to their users:

    1. If the extra stuff to be downloaded is small, to throw up a "Loading additional assets" screne with a progress bar and possibly mini-game.
    2. If there's a lot to be loaded, to have the player start the game as normal, and play through it until they reach the end of the amount of game that can fit in 100MB and then when they trigger the next change scene, to "reload" the game, picking up where they left off.

    Sounds like both will be possible. I'm not entirely clear on the difference, though between:

    You can now prompt the users to "restart" the game if they hit the end of your loading game content.

    and

    We'll add a new behavior that lets you manually trigger "reloading" the game once the expansion file has finished download.

    The former is literally saying "Please quit and relaunch the game to continue playing." ? The main thing being that they won't be torn out of the loading game without warning. And the latter lets us trigger it with a button or scene change, without the user needing to quit the game themselves?

    Definitely sounds like for most big games they'll need to use the version 4, but does sound like there'll be enough in place before that that people won't need to delay their games if they have an earlier release needed.

  • UltraLionBluUltraLionBlu Member, PRO Posts: 157

    I understand that it shouldn't take years from one step to the other, but weeks or a few months, so I think there will be no problem waiting for a slightly more advanced version of the work.

    Personally, I set aside my platform for fear that with the graphic part it would exceed 100MB, and so I "fired" a friend of mine who would have made the graphic part for me with a very friendly price. So I started a new project, but knowing that you are starting to work on file expansion makes me very happy, not only thinking about what I can do in the future, but because I think that Gamesalad really needs this functionality to be considered by a wider range of people.

    So congratulations, I hope that if things get complicated there will be little tutorials: D

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 2,054

    @UltraLionBlu also remember that the Amazon store has no such APK limit, so you can work on the game now for launch on iOS and Amazon, while waiting to get the large file support for Google Play!

  • ZwireZwire Member, PRO Posts: 167

    Finally after 5 years of waiting you guys are working on expansion files!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    But why make it so difficult.

    Just let the players play once ALL files have been downloaded. No load game and mini games and restarts etc.

    Downloading will take no time nowadays so whats the problem.

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 2,054
    edited January 4

    @Zwire downloading in no time assumes high speed internet which is not guaranteed in all countries / areas (especially for big games).

    Since the app has to show something during download, I though it would be better to have some options.

    For your use case, you'd just upload a small "loading game" that's just a loading screen.

  • ZwireZwire Member, PRO Posts: 167

    @adent42 Dont games bigger than 100mb need to be downloaded with wifi? So maybe in low speed countrys the regular phone connection is slow but wifi will be a lot faster so large games will still be downloaded in no time.

    If its much easier and faster for you to make I would just disable playing the game until all the expansion files are downloaded. Why try to make all kinds of tricky things in order to let people play a game during download. On my xbox I also have to wait when a game has a large download. Keep it simple.

    Anyway, this is just my 2 cents.

    Hope the expansion files will soon be available.

    Good luck with it!

    Z.

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 2,054

    Then you're stuck with a game where you've "installed" it and there's no indicator as to why the game is not running.

    All of this is to allow you to configure that indicator with a GameSalad game projects.

    If you choose to let people play a game while things are downloading in the background, that's up to you.

  • Chris FitsimonsChris Fitsimons Member, PRO Posts: 108

    @adent42 Hi. Do you have a rough date for Windows creator update release and will this open projects created with mac creator 1.25.101? also then the Android expansion updates are done, can I assume publishing with the Windows Creator can take advantage of the expansion update as its done on the build server? Thanks.

    Jetman Galactic https://fitzsoft.dev/games

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 2,054

    @Chris Fitsimons and heck, everyone:

    • Windows Creator. We're going to be testing it next week, but nothing has changed in regards to file format so Windows Creator should already be able to open projects from 1.25.101. Reach out to support for help with that.
    • Android expansion is in development now. Random stuff kept coming up in conjunction with the year end delaying it. I think we may scratch this whole proposal and go with something simpler, just because I now understand how it works better AND expansion files are deprecated in favor of asset packs inside Android Bundles, so our time would be better spend updating our build system to produce Android Bundles.
    • Yes, publishing binaries and Creator are separate as long as the major / minor versions match (i.e. 1.25). Once we start implementing features that are not backwards compatible, we'll increment to 1.26 or greater.


Sign In or Register to comment.