Mod Builder
Manifest
Version 1 manifest.json generated by the Arsenal Mod Builder.
The Mod Builder still writes Manifest Version 1. You do not edit this JSON in the UI. Preview Manifest and Build produce the cleaned document below.
Empty optional fields are stripped at build time. Required fields stay even when they are empty strings.
Schema
{
"Version": 1,
"Guid": "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",
"Name": "string",
"Description": "string",
"IconPath": "string",
"Options": [
{
"Name": "string",
"Description": "string",
"Include": ["string"],
"Image": "string",
"SubOptions": [
{
"Name": "string",
"Description": "string",
"Include": ["string"],
"Image": "string"
}
]
}
]
}Root fields
| Field | Required | Notes |
|---|---|---|
Version | Yes | Always 1 |
Guid | Yes | UUID. Changing it creates a new mod identity in users' libraries |
Name | Yes | Non-empty string. UI max 120 characters |
Description | Yes | May be "" |
IconPath | No | Relative path. Omitted when empty |
Options | No | Omitted when the builder has no options |
Option object
| Field | Required | Notes |
|---|---|---|
Name | Yes | Non-empty. UI max 60 characters |
Description | Yes | May be "" |
Include | Conditional | Folder paths relative to the mod root. Omitted when empty |
Image | No | Relative path. Omitted when empty |
SubOptions | Conditional | Omitted when empty |
An option should have Include, SubOptions, or both. Having neither is a warning at build time, not a hard error.
SubOption object
Same fields as an option except there is no nested SubOptions.
| Field | Required | Notes |
|---|---|---|
Name | Yes | Non-empty |
Description | Yes | May be "" |
Include | Recommended | Empty include is a warning |
Image | No | Omitted when empty |
Path rules
- Paths are relative to the mod root
- Use
/as the separator (Weapons/Gold) - No leading or trailing slashes
- Names are case-sensitive and must match folders in the zip
Cleaning on build
| Field | Empty behavior |
|---|---|
Description | Kept ("") |
IconPath | Removed |
Image | Removed |
Include | Removed if the array is empty |
Options / SubOptions | Removed if the array is empty |
NexusData | Kept only when both ModId and Version are set (not edited in the builder UI) |
Builder-only data (option colors, collapsed cards, option ids) stays in the .hd2a_project metadata and never enters this file.
Examples
No options
{
"Version": 1,
"Guid": "12345678-1234-4123-8123-123456789abc",
"Name": "Simple Texture Mod",
"Description": "Replaces default textures"
}Options with include folders
{
"Version": 1,
"Guid": "12345678-1234-4123-8123-123456789abc",
"Name": "Quality Selector",
"Description": "Choose texture quality",
"IconPath": "icon.png",
"Options": [
{
"Name": "Ultra Quality",
"Description": "4K textures",
"Include": ["Ultra"],
"Image": "ultra_preview.png"
},
{
"Name": "Performance",
"Description": "1K textures",
"Include": ["Performance"],
"Image": "perf_preview.png"
}
]
}Sub-options
{
"Version": 1,
"Guid": "12345678-1234-4123-8123-123456789abc",
"Name": "Weapon Customization",
"Description": "Primary weapon skins",
"IconPath": "icon.png",
"Options": [
{
"Name": "Primary Weapon Skins",
"Description": "Choose a skin",
"SubOptions": [
{
"Name": "Gold",
"Description": "Golden finish",
"Include": ["Weapons/Gold"],
"Image": "gold_preview.png"
},
{
"Name": "Carbon Fiber",
"Description": "Carbon wrap",
"Include": ["Weapons/Carbon Fiber"]
}
]
}
]
}Build-time error and warning lists are on Projects and build.