Asset Store - DatMoshu/GodotUO GitHub Wiki
Asset Store
The GodotUO Asset Store installs content packs into the client: login and game backgrounds, screen-saver loops, themes, sounds and profile presets. Options > Store shows a catalogue where you can search, filter by kind, install, update and uninstall.
What a pack can and can't do
- A pack is a ZIP of plain files plus a
manifest.jsonwith a hash for every file. - Installing a pack only stores its files. It never runs code, never merges arbitrary settings into your profile, and never replaces game art.
- Art overrides are disabled. UO art is proprietary, and the Store doesn't carry it.
- The supported kinds are
background,theme,soundandprofile-preset.
How installs stay safe
- The catalogue's index gives each pack's hash, and the download is checked against it.
- Every file is then checked against the manifest.
- An install is unpacked beside its destination and swapped in only after every check passes, so a bad download never replaces a good pack.
- The client refuses:
- links, path traversal, names that differ only in case, executables, UO data files and oversized content;
- redirects: packs must come from the configured store address.
- Versions never change once published. An update adds the new version beside the old one, which stays until you remove it. A pack that leaves the catalogue stays removable offline.
- On a remote store, HTTPS proves who published a pack. Hashes check integrity only; they aren't signatures.
Running a store
tools/asset_store (Python standard library only) checks, publishes, indexes
and serves packs from a folder:
python tools\asset_store\run.py --help
python tools\asset_store\seed.py ten CC0 sample packs from the built-in background loops
python tools\asset_store\smoke.py publish, install, update and uninstall, end to end
Point the client at a store with UO_STORE_URL, or set a per-character store
address in Options. The store's root also serves a searchable static page of
pack cards. Hosting the public catalogue on GitHub Pages is planned.
Making a pack
The pack and index format is docs/data_formats.md section 12, which is the
contract for both the publisher and the client. Only publish content you hold
the rights to, and put its licence in the pack's manifest.
The design record is ADR-0019 (docs/architecture/ADR-0019-asset-store.md).
Who goes where
- Players: the game client. Options, Video, Store lists the catalogues, asks you to approve a new catalogue's key, and installs packs. A shard that publishes content installs its packs automatically when you press Play.
- Shard owners and pack authors: the GUO editor's UO Store tab (next to UO World and UO Assets). Browse and
install into the editor's own store, deploy a pack to one of your server profiles (ModernUO, ServUO, RunUO, POL,
Sphere, UOX3), see what each server has deployed and roll back, verify a pack ZIP, publish it to a local store and
prepare the pull request for the official catalogue. See
tools/asset_store/README.md.