Skip to content

Asset Lifecycle

This page connects the server operator and mod developer views of Anomaly assets without documenting internal transfer messages.

Server assets start in the configured AssetDirectory. When a client joins, Anomaly compares the server’s asset list with the client’s local cache and downloads only what is missing.

After transfer, client-side code can load server-provided textures and bundles through AnomalyResources.

Players can also place files under <MelonLoader UserData>/Anomaly/Overrides/ to replace supported local assets. Under loadouts, that usually means the active runtime UserData/ linked from GameRoot/loadouts/<name>/runtime/UserData/. The layout mirrors asset kinds:

UserData/Anomaly/Overrides/
├── AudioClip/
├── Texture2D/
├── Sprite/
└── Mesh/

Audio overrides are available today. Texture and mesh support depends on the specific catalog page and runtime support for that asset kind.

Downloaded server assets are cached under the shared Anomaly data directory, not inside a single modded install. This means a player can reinstall Anomaly without redownloading every server asset.

The cache is managed by Anomaly. Mods should use public asset APIs instead of reading cache files directly.

If a server companion plugin uses Anomaly’s asset spawn and override APIs, Anomaly remembers the current state and sends it to late joiners after their asset check finishes.

This keeps late joiners visually aligned with players who were already in the round.

SymptomLikely cause
Asset API returns falseThe file is not cached yet, the server did not offer it, or transfer failed.
Reconnect downloads againThe local cache is missing or not writable.
Late joiner misses an overrideThe server plugin applied the change outside Anomaly’s asset APIs.
Local override is ignoredThe asset kind or path is not supported, or the server-provided override takes priority.

API and Namespace Index.