Live Update: add_mount and liveupdate.game.dmanifest issue

When you use the liveupdate.add_mount function, the archive must contain liveupdate.game.dmanifest, otherwise it gives the error “Failed to find entry ‘liveupdate.game.dmanifest’” and “Failed to create new mount from zip:/some/path/to/zip/file”.

In my project, I am splitting resources into multiple archives. The liveupdate.game.dmanifest generated at build along with resources weighs quite a lot to add to each archive.

Could you please tell me what liveupdate.game.dmanifest is required for in each archive?

Is it possible to add one liveupdate.game.dmanifest in one archive with high priority, and add “empty” liveupdate.game.dmanifest in other archives and how to make them?

Hi!

The manifest contains meta data about the resources. E.g if the resource is compressed or not, as well as the dependencies for that resource. E.g. a collection depends on all the sprites, textures and game objects etc.

“In my project, I am splitting resources into multiple archives. The liveupdate.game.dmanifest generated at build along with resources weighs quite a lot to add to each archive.”

Yes, the recommended way is to split the manifest as well.
You can load the data using protobuf (liveupdate_ddf.proto), using e.g. Python (what we do) or another scripting language that supports it.
It’s a bit of an advanced feature, but I know other studios do this as well.

We intend to simplify this process a lot with this task which we hope to start before the summer.

2 Likes

Hi! I’m having trouble reading data from liveupdate.game.dmanifest using liveupdate_ddf.proto. I’m using protobufjs and I’m stuck at the point where after decode and toObject I get the following data: “Ch4IAhADGAEiFgoU42jQuVDyKVjoMCDCQ7MWxDUgcyASFgoU2jmj7l5rSw0yVb/vlWAYkK/YBwkSFgoUwRdCPaPl4WnTbjERiAtwnSjoUwgafAoW…”

I have no experience with protobuf at all, can you please suggest what to do next and how to get understandable information out of it for further use? Or maybe there is a link to an example how to parse liveupdate.game.dmanifest using liveupdate_ddf.proto?

Any advice and help would be appreciated :pray:

Here is my code, just in case, for better understanding:

const protobuf = require("protobufjs");
const fs = require("fs");

const buffer = fs.readFileSync("liveupdate.game.dmanifest");

protobuf.load("liveupdate_ddf.proto", function(err, root) {
    if (err)
        throw err;

    const ManifestFile = root.lookupType("dmLiveUpdateDDF.ManifestFile");

    const message = ManifestFile.decode(buffer);

    const object = ManifestFile.toObject(message, {
        longs: String,
        enums: String,
        bytes: String,
    });

    console.log(object);
});

It seems you’ve done the first step.
Then if you read the documentation for the format, you’ll notice that the data is a byte blob, which you need to unpack, using the ManifestData message type.

I hope that helps!

2 Likes