Where synced media lands
The media folder, the assets the import makes, the index that maps a reference to them, and the one thing a rename changes.
All documentation — Media
Start here
Concepts
Authoring for a build
Playing a story
The generated assets and code
The plugin and sync
A sync downloads the project’s media into its own output directory and then imports it into your project as real assets — textures for images, sound waves for audio — so that a build cooks them like anything else you made. Nothing loads from a file path at play time.
Where
Under the media root set in Project Settings → Plugins → TaleShard — /Game/TaleShard/Media/
by default — in the folder layout the editor shows. The folder is the sync’s: every file it imports
is recorded, and a file the project no longer carries is swept on the next sync. Put nothing of your
own there.
Beside the assets, in the generated folder, the sync writes the media index: where every synced file landed, by the media’s id and by its code. Every entry is a soft reference, so loading the index loads no texture; a consumer resolves the one it needs.
How a reference reaches an asset
A step’s fields, its audio and its cast all carry media as a reference — the media’s id, and where the bytes were when the sync ran. That is not an asset. It becomes one by going through the index:
- the reference is resolved through the index into a media address — the imported asset, as a soft object path — or into a miss carrying the reason;
- the address is loaded with the Load Media action, which hands the asset back on the game thread or fails at once with the reason.
Both halves are on loading media. Nothing here caches: what stays resident is what your own references keep alive.
The address is the code
A media file’s code is what its gameplay tag carries — TaleShard.Media.<Code> — and what
Resolve Media accepts beside the id. Renaming the file in the editor changes the code, and with it
the tag; a Blueprint that held the old tag shows the break after the next sync. The id survives
a rename, which is why every reference the payload holds keys on it: a step’s portrait still
resolves after the author renames the file.
Your own art
A battle sprite, a background, an ability icon TaleShard never synced goes through the same load: Raw Media Address takes a soft object path you assert and hands back an address the Load Media action treats like any other. Its Is Asserted flag keeps it apart in a diagnostic, so a missing asset of yours is never reported as something the sync should have written.