Publishing To Thunderstore
VotV mods can be packaged to work with Thunderstore, as it allows streamlined mod installation as well as cross-version support. Thunderstore mods packages use the UnrealShimloader package format.
Folder Format
A typical .zip
file for Thunderstore may look like this. The files icon.png
, README.md
, and manifest.json
are required, while all other files and folders are optional.
Additionally, if you are including a .lua
or .dll
file in your mod, an enabled.txt
is also required in the mod folder (it can be blank, it just needs to exist).
🗂️ MOD_AUTHOR-MOD_NAME-#.#.#.zip
📄 manifest.json
📄 README.md
📄 CHANGELOG.md
🖼️ icon.png
📁 mod
📄 enabled.txt
📁 scripts
📄 main.lua
📁 dll
📄 main.dll
📁 pak
📄 MOD_NAME.pak
📁 cfg
📄 MOD_AUTHOR-MOD_NAME-cfg.json
The Manifest
The manifest.json
is a file that contains information about your mod to be included on your Thunderstore mod page. The file is a .json
file that contains the following values:
Key | Description | Example value |
---|---|---|
name | Name of the mod page, with no spaces. Allowed characters: a-z A-Z 0-9 _ | "Some_Mod" |
description | A short description of the mod, shown on the mod list. Max 250 characters. | "Hello world" |
version_number | Version number of the mod, following the semantic version format Major.Minor.Patch | "1.3.2" |
dependencies | List of other packages that are required for this package to function. | [ |
website_url | URL of the mod's website (e.g. GitHub repo). Can be an empty string. | "https://example.com/" |
For example, a manifest.json
might look like this:
{
"name": "TestMod",
"version_number": "1.1.0",
"website_url": "https://github.com/thunderstore-io",
"description": "This is a description for a mod. 250 characters max",
"dependencies": [
"MythicManiac-TestMod-1.1.0"
]
}
You can read more about packaging mods, file formats, updating your mods, and dealing with common issues on the Thunderstore Wiki.