Game structure, updates and addons

So, got a question about something I don’t expect to be diving into for about six months, but am starting to wonder if I should begin structuring my project now for iOS instead of redoing everything closer to ship.

  1. For iOS game updates, should we expect to have the users need to re-download the entire game? Or is there a way to format our projects in a way where we push smaller update files?

  2. For add-ons, feature additions, or say special event updates which are downloaded either on game start or via in app purchase, what’s a good way to think about project setup for this? Would these additions be sort of a dll or pak file of sorts, created as a whole new UE4 project?

Like I said, it’ll be a while yet until I need to dive into the trenches and fight this battle, but I know it’s coming. Plus, the idea of finding myself with a nearly finished game just to realize I need to restructure the entire thing, retest, etc…well, botching a first release from a new studio won’t do us any good, so it stresses me already. Maybe there are some good tips learned from the Tappy Chicken release that could be included into the documentation, or maybe if there are no plans to add documentation on iOS update/additions then maybe we can add it to the roadmap to squeeze in sometime this year?

Thanks!!!

Every time you update your game and publish it to the app store the user will have to redownload the entire .ipa. All add-ons will have to be on the ipa from the start.

Many iOS games download additional assets from their own servers. Mobile game publishers will often ask you how much of your game can be updated/changed without requiring a full app update, because they know that features like live events and regular content updates are vital to keep players engaged on F2P games and Apple’s approval process is way too slow and unreliable for that. This is also used to reduce the base IPA size, by having the app itself download the rest of its assets.

Anyway, the app executable cannot be updated this way, neither on the AppStore nor on Google Play. Any changes to C++ code will require a submission and app update. That said, I think it should be possible to update blueprint assets. All we need is a way to “overlay” multiple paths on the file manager, so updated files could be downloaded to the app’s Documents folder and would be loaded in place of the ones shipped with the IPA.

Yes, that’s pretty much what I’m looking for, thank you! I figure as much that the core program would require a complete update, but looking at the possibility of adding on new maps and characters as time goes on for just the reasons you’ve mentioned.

Unless we are exceptionally lucky and get featured on the app store, the ability to keep adding to the game either free or paid will be important. Each core update turns into a new marketing opportunity and each in game addon signals our customers that we intend to continue improvement and extend their entertainment investment into the game. Dealing with mobile platforms, it’d be nice to minimize the amount of download data whenever possible.

I would start looking at the how the engine loads .uasset files. You can package projects without using .pak files, so I assume it should be possible to read files from multiple locations. But be aware that this is just part of a patching system: I’ve worked with games that had to update themselves and there are lots of little details you need to care care of, like having a way to know which “version” of the files the player has and which ones need to be downloaded, dealing with download errors properly and dealing with storage issues (not having enough space to save the files and corrupt files, like incomplete downloads).

We are currently working on a system for this, in fact! We have already added support for “chunking” of content for PS4 and XboxOne (where it’s required for large games). We are extending that to have a generic downloader of chunks to the device, and then the game can update what levels/characters/etc are available for use. Each chunk is a .pak file. It’s currently programmatic (a delegate function in C++) to determine what assets go in which chunk, but we are designing a UI to help with chunk assignment (not started yet).

We are also looking at DLC and patching, using a similar system. DLC is just a chunk that the game doesn’t know about ahead of time. Patching is going to be either chunk replacement, or chunk diffing, where the engine will know to look in the patch file before the downloaded chunk.

The backend for the download server will have to be under your control, but I imagine that there will be an easy Amazon server program that can easily serve files over HTTP, and also return info about what’s available, etc.

As you can probably tell, this is a work in progress, but it is progressing as we speak :slight_smile:

Josh

This is great news and much more complete than I expected, thanks!

Fantastic, thank you for that input Josh! All of you over at Epic are amazing. Can’t wait to try out the system when it’s ready.

This may be a silly question, will this feature also be available for games targeted at the PC?

I’m really looking forward to this. Glad to know it’s being worked on.

+1

Yeah, the engine-side chunking support is cross-platform and should be usable on desktops and consoles as well as mobile. I’m not sure of the exact details, but there is a bit that can be replaced which is responsible for how to get chunks (different for each console, on PC/mobile it might be pulling from a FTP or HTTPS CDN, etc…).

Cheers,
Michael Noland

Great news, thanks for the reply :cool:

:pCant wait to meet such a great solution made by you guys

mobile game need this in game hot update feature very much,if it is possible,not only textures, materials and etc, could blueprints also be updated with out upload a new version of ipa to App Store?

Any word on this feature?
I don’t see anything about it in the Mobile Development section.

I have a question about iOS AppStore updates (e.g. latest version, bug fixes, etc):

A player runs MyGameApp.v1.00.
An arbitrary value of myIntVar[123] is stored in my_config.sav.

If I then publish a MyGameApp.v1.01 to the AppStore and the player installs it using the usual [UPDATE] option in the AppStore listing what will happen to my_config.sav?

Will the .sav file be preserved and still contain myIntVar[123] after the update?
I am assuming that app installation folder onthe iOS device is not cleared/overwritten
by the update process.

I’m not yet able to test this situation, but would like to know ahead of time.

Thanks.