Skip to content

AssetManifest

Generated from engine/assets/asset_manifest.h at 862e08b. The text under each declaration is the header's own comment, word for word. About the reference says how these pages are made.

Browse the assets module

#include "engine/assets/asset_manifest.h" · namespace labrador

struct AssetEntry

One asset to load: what it is, where it lives, and what it is called.

kind is a key into whatever kinds the loader has been taught, not something this type interprets. The engine ships four and a game adds its own, so the set is open by construction and no engine header has to learn the word "level" (T1).

name is both the file's stem and the registry name the asset lands under. They are deliberately one string: a manifest saying "sprite_sheet_1" names a file a person can go and find, where a loader told both separately would let the two drift.

std::string kind;
std::string directory;
std::string name;
bool optional = false;

Whether the game still runs when this file is not there.

False for everything by default, because T6 says a broken contract stops the game dead with the reason on screen. This is how a piece of content states that its absence is not a broken contract - and it is stated in the manifest, by the person who knows, rather than guessed at by a loader.

The case it exists for: a wave bank built from source audio that cannot be distributed is not in a fresh clone, and the game would otherwise throw at startup on the very file its manifest names. What the loader substitutes is the kind's business; what this says is only that it may.

Everything a game is made of, as data the loader walks rather than filenames spelt into source (T7). Adding a level or a font is editing this file; the loader is not rebuilt and does not change.

It is also what a device restore replays, which is why the loader keeps it rather than consuming it - see ResourceLoader::reload_device_resources.

std::string source_path;

Where it was read from, so a bad entry can name the file it came out of and not just itself (T6).

std::vector<AssetEntry> entries;

Walked in order: the file's order is the load order, so a kind that has to exist before another can be sequenced by moving a line.

The files that include this header directly. A file can also reach it through another header.

Development documentation (unreleased). Built from Labrador 862e08b of 2026-10-08.