Manifest
Every mod requires a manifest.json file in its root directory. This file defines the mod's metadata, permissions, and configuration.
Example
{
"id": "my-awesome-mod",
"name": "My Awesome Mod",
"version": "1.0.0",
"author": "YourName",
"description": "An awesome mod that adds new quests and features.",
"apiVersion": 2,
"permissions": ["events", "network", "filesystem"],
"dependencies": ["other-mod-id"],
"cover": "cover.png",
"tags": ["quest", "network", "story"]
}Fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique mod identifier. Use lowercase with hyphens. |
name | string | Yes | Display name shown in the Mods menu. |
version | string | Yes | Semantic version (e.g. 1.0.0). |
author | string | Yes | Mod author name. |
description | string | Yes | Short description of the mod. |
apiVersion | number | No | SDK API version the mod targets. Current: 2. Defaults to 1 when omitted. See API Versions. |
permissions | string[] | No | Required permissions. |
dependencies | string[] | No | IDs of mods that must be loaded first. |
icon | string | No | Mod icon image path (shown in Mods menu). |
cover | string | No | Preview image path (shown on Workshop). |
tags | string[] | No | Tags for Workshop categorization. |
workshopId | string | No | Steam Workshop item ID (set automatically on upload). |
API Versions
apiVersion tells the game which version of the SDK your mod was written against. New mods should use the current version.
| Version | Changes |
|---|---|
2 (current) | Added the Http, Time and Scheduler APIs and more VulnerabilityType values. Nothing was removed or renamed. |
1 | Initial release. |
A mod that targets an older version still loads. If every change since that version only added features, the mod runs unchanged and the game logs an info line suggesting the update. If a change broke something, the game applies a compatibility shim and logs a warning. If no shim exists, the mod is marked as an error and has to be updated.
To move a v1 mod to v2, set "apiVersion": 2 in manifest.json. No code changes are needed.
ID Guidelines
- Use lowercase letters, numbers, and hyphens only
- Must be unique across all mods
- Examples:
stealth-missions,network-toolkit,cyber-story
Version
Follow Semantic Versioning:
- Major (
2.0.0): Breaking changes - Minor (
1.1.0): New features, backward compatible - Patch (
1.0.1): Bug fixes
Dependencies
If your mod requires another mod to be loaded first, list its ID:
{
"dependencies": ["core-library", "network-utils"]
}The mod loader ensures dependencies are loaded before your mod. If a dependency is missing, your mod will not load.
