How to divide full-sized game in packages and download them during runtime?

Hey everyone!

I’m developing a mobile game for Android and iOS. Since it is a 3D game with a lot of models, textures, audios, its size is kinda of heavy and that might be a problem later.

The game has 9 different biomes and 2 levels for each, so it is 18 levels plus one scene for Menu and another one for the Workshop.

I’ve been thinking about some way to reduce its download size in store, as if it only downloads the first levels (since the player has to play them in order to unlock the next ones), and through the runtime, it downloads the remaining scenes, so the player can play it while it downloads.

So, here is what I thought:

  • Dividing the scenes through the biomes and the props that are used in each one of them;

  • Download the scenes and props in time to do not let the player waiting when the level is unlocked (Example: If the player is playing the Biome 1 - Level 1, the Biome 2 - Level 1 starts to download already, even though it is not avaliable to play yet.)

  • Keeping the data downloaded in the storage, so the player does not have to download it again.

How can I find a reachable way to do this? Is there a huge difficulty in doing so and there is a need of server knowledge?

Thank you for your attention!

I asked basically the same thing

I pretty much outlined my solution there, but I’ll do it again here shorter:

  1. each level will be represented by a text file (JSON, XML) where every object is represented with all its properties
  2. you can download all or many of these text files at once
  3. when loading a level, you read off all the objects and instantiate them with their properties
  4. you can also make use of AssetBundles to deal with progressively downloading objects so that you can download progressively (e.g. download one AssetBundle for objects needed for levels 1-10, then another AssetBundle for extras needed for levels 11-20)

It’s really complex, and I’m getting really close to getting it working on mobile. I’m still dealing with AssetBundle problems, but nearly there. Once I get it 100% solved I’ll write a blog post about this, because it seems nobody really offers a good tutorial for this relatively common approach.