Packaging and Compatibility
Peer Melon mods
Section titled “Peer Melon mods”Declare Anomaly’s compatibility attribute:
using Anomaly.Client.Api.Compatibility;using MelonLoader;
[assembly: MelonInfo(typeof(MyMod.Core), "MyMod", "0.3.1", "YourName", null)][assembly: MelonGame("Northwood", "SCPSL")][assembly: MelonAdditionalDependencies("Anomaly.Client")][assembly: SupportedGameVersion("14.2.7^")]The caret form is a patch-line range. 14.2.7^ means greater than or equal to 14.2.7 and lower than 14.3.0. The Launcher reads this metadata for compatibility. It is mandatory and fail-closed for the official Anomaly core; third-party loadout cards surface their declared status for review. Do not add MelonLoader’s required-game-version attribute; Anomaly does not use it for this contract.
Ship your mod DLL and only dependencies not supplied by the installed runtime. Build x64 against the staged SDK’s API/Shared DLLs, XML documentation, and reference metadata.
Managed modules
Section titled “Managed modules”A managed module ships a DLL plus DLL.anomaly.json. Its SupportedGameVersions field uses the same Anomaly expressions and is validated before assembly loading.
{ "schemaVersion": 1, "id": "mymod", "name": "My Mod", "version": "0.3.1", "apiVersion": "1.0.0", "minimumApiVersion": "1.0.0", "maximumApiVersionExclusive": "2.0.0", "supportedGameVersions": [ "14.2.7^" ], "dependencies": [], "conflicts": [], "capabilities": 0, "publisher": "YourName", "sha256": "<64 lowercase hex characters>"}The SHA-256 covers the assembly. Dependencies and conflicts are resolved before any module starts. See Managed Modules.
Manual distribution
Section titled “Manual distribution”A peer client mod release should include:
MyMod-v0.3.1/+-- Mods/MyMod.dll+-- UserLibs/<private dependencies>+-- UserData/i18n/mymod/<locale>.yaml+-- README.mdDocument the exact install paths, compatible range, dependency hashes, source/license, and changelog. Users place files under a loadout’s local directory. The development launch policy inventories executable files and permits local builds without per-build hash approval.
Do not distribute remote v1 content as bundles, meshes, models, or generic spawn packages. Custom items use stock templates, text, and optional PNG icons.
Official Anomaly artifacts
Section titled “Official Anomaly artifacts”Official core delivery is separate from third-party mod distribution. The Launcher requires a trusted ECDSA P-256 release signature, key ID, target/package metadata, dependency inventory, sizes, hashes, and post-extraction verification. When a loadout uses an official core, local files cannot replace or remove its verified files. A development loadout can instead select a local core; see Local and Dev Mods.
Continue to Compatibility and IL2CPP Patterns.