Liveupdate strange behavior

We chose LiveUpdate to store static or rarely changing content that has a large volume.
We’re interested in two cases:

  1. We have made one LiveUpdate and within a week we are programming without any problems, without reassembling LiveUpdate.

  2. We made a small game loader (< 20 mb) that loads the whole game from LiveUpdate every time. This loader works for six months without having to download the game from the store. At the same time, we change and add a lot of everything to the game, putting it all in LiveUpdate.

Thanks.

Based on your post above this is still a problem. If non-live update content is changed the system currently doesn’t accept the live update content, even if it is unchanged. I’m not sure how to deal with this. Now that I think of it it feels like something we should handle. But I’m worried about complexity. What if a change in non-liveupdate content is made that affects the live update content (I’m not exactly sure what kind of change that would be though)? What about content that is shared between live update and non live update content?

This case should be covered by the ability to update the manifest, reboot and load missing resources. This should be working as long as the loader is unchanged.

3 Likes

@morgerion and @denis.smirnov.by can you confirm if this case is working for your or not?

We’ll check it out a little later.

1 Like

No. This case doesn’t work.

  1. I made APK and LIVEUPDATE on my PC.
  2. I uploaded it to the Internet.
  3. everything works.
  4. I changed the content of one static image inside LIVEUPDATE (artists provided a new version of the background, for example).
  5. I uploaded the ONLY updated LIVEUPDATE.
  6. nothing works. error LIVEUPDATE_BUNDLED_RESOURCE_MISMATCH.

ERROR:RESOURCE: Resource ‘/main/debug.guic’ is expected to be in the bundle was not found. Resource was modified between publishing the bundle and publishing the manifest?
ERROR:GAMESYS: Manifest verification failed. Manifest was not stored.

Okay, i changed one gui node in the main project. But this node has nothing to do with LIVEUPDATE. None!

Well, as the feature is right now, the live update is supposed to be updated together with the main app. This was part of the MVP of the feature.

We have always intended to add more features to the live update, and being able to upload a completely new manifest was among those features. We’ve just haven’t had time (nor enough users requesting it).

1 Like

Okay, I got it. Is there any way around it?

In our case, the main idea is to update the app and liveupdate separately.

And one more observation.
If a certain collection is excluded (to get into liveupdate), then all other proxy collections inside are excluded too, even if they do not have the “exclude” checkbox.
Is this how it’s supposed to be?

I can’t think of a way around it I’m afraid.

As for what resources are excluded, any resources that are not directly referenced by the main app, will be excluded if their parent is excluded. Think of it as cutting off a tree branch.

1 Like

On the whole, it’s clear.
We have a couple more options for solving our tasks with liveupdate.
We tried to take the whole project to the liveupdate (thousands of files)
And while downloading liveupdate already in the application encountered an error::
ERROR:RESOURCE: Could not calculate valid resource insertion index, resource probably already stored in index.
What is it?

Good afternoon, hello all!
We still won the LIVEUPDATE.
But it was not easy.
Thank you for your help and participation!

Hello, everyone!
We’ve hit a big problem.
Starting with version 173 (and up to 178) LiveUpdate does NOT work correctly.
In particular, LiveUpdate from version 172 works perfectly.

What are the errors? Doesn’t want to save the manifest, says there are no resources (which are actually present). In short, there is very strange behavior.

2 Likes

In particular, the following happens:

  1. start the game
  2. it downloads the whole LiveUpdate
  3. possibly the game will start normally, or possibly it will complain that some resources are missing and crash. (this happens with one and the same build, so it’s not clear what it depends)
  4. if the game is started, you can stably play!
  5. after leaving the game, if you run it again, it immediately crashes because it does not find the manifest.
  6. if you run it again once more, the game again loads the entire LiveUpdate, but this time it does not start normally, but stops forever.

All of the above is repeated in 100% of cases.

second start (p.5)

INFO:DLIB: Log server started on port 43469
INFO:ENGINE: Target listening with name: samsung-SM-N970F - 192.168.1.36 - Android
INFO:ENGINE: Engine service started on port 8001
INFO:ENGINE: Defold Engine 1.2.178 (af6a29c)
INFO:ENGINE: Loading data from: dmanif:game.dmanifest
INFO:LIVEUPDATE: Found /data/user/0/.../files/liveupdate.arci.tmp
WARNING:LIVEUPDATE: Loading LiveUpdate manifest: /data/user/0/.../files/liveupdate.dmanifest
ERROR:RESOURCE: Failed to read manifest /data/user/0/.../files/liveupdate.dmanifest (-2)
ERROR:RESOURCE: Failed to create factory game.dmanifest with result -2

third start (p.6)

INFO:DLIB: Log server started on port 44899
INFO:ENGINE: Target listening with name: samsung-SM-N970F - 192.168.1.36 - Android
INFO:ENGINE: Engine service started on port 8001
INFO:ENGINE: Defold Engine 1.2.178 (af6a29c)
INFO:ENGINE: Loading data from: dmanif:game.dmanifest
INFO:ENGINE: Initialised sound device 'default'
INFO:LIVEUPDATE: Found /data/user/0/.../files/liveupdate.arci.tmp
INFO:LIVEUPDATE: Renamed '/data/user/0/.../files/liveupdate.arci.tmp' to '/data/user/0/.../files/liveupdate.arci'
2 Likes

Thanks for the report!
I’ll look into this tomorrow.
Just to be clear, you verified the bug in 1.2.173? (Helps me narrow down the scope a lot)

We have tested on many versions. I don’t even remember anymore. But almost all of them.

1 Like

This is likely some regression caused by recent changes to Live Update functionality. Thank you for reporting this!

Are you also able to share some minimal project where this can be reproduced?

We will try to organise it, at the very least we will pass the whole project on to you.

1 Like

If you have the time to get us a repro case, that would help a lot. :slight_smile:

1 Like

LUTest.zip (20.0 KB)

You need to set the SERVER_URL global variable in launcher.gui_script to play. Then create android build apk and liveupdate in zip mod. Extract the liveupdate to the folder path: {http server root}/{debug or release folder}/{build architecture, here android}/{there are many unzipped files}. After that you should also create a file named ‘liveupdate_version’ here without an extension with one line {“value”: “1.1.1.3”} - to compare whether you need to re-download liveupdate if different. Run the http server from root folder. Now the android app should download the liveupdate successfully, BUT the second and subsequent launches will have random errors.

3 Likes