Packaging
The packaging format for Thunderstore is a simple zip file with a predetermined structure. This structure contains the files of your mod put into special direcetories, as well as some files with metadata about your mod.
Why Thunderstore?
This guide will be about Thunderstore and how to package and publish your mods there. You might ask why?
The answer is not too complicated, Thunderstore provides superior dependency management other existing mod managers, alongside that Thunderstore provides a better way of injecting ue4ss that doesn't break your game installs if there is a major version upgrade of ue4ss (e.g. the 2.5.2 -> 3.0 case).
There are also other benefits like mods not conflicting with each other because of their name, a great profile management system, easy sharing of mod profiles using a simple copyable code, etc.
But I don't like overwolf
Me neither, with Thunderstore we're in luck and an alternative client for it exists: r2modman, this is a standalone Thunderstore client which doesn't require overwolf and doesn't contain ads.
Structure
Here's a complete overview of the mod structure:
- ModArchive.zip
-
manifest.json
- manifest describing your mod -
README.md
- readme of your mod to be shown on the Thunderstore webpage -
icon.png
- mod icon -
mod/
- lua / dll mods directory -
enabled.txt
- an empty file, required for your mod to get loaded -
scripts/
- lua scripts -
main.lua
- your lua script entrypoint
-
-
dll/
- native c++ ue4ss mods -
main.dll
- main c++ mod file
-
-
pak/
- pak files -
ModName.pak
- mod pak file
-
-
cfg/
- mod config files -
author-mod-cfg.json
- config file
-
-
The structure should be pretty self-explanatory, however this guide will go into more detail.
While developing your mods, you might've produced several or all of these types of files, here's a table describing their use and where they should be put:
File Types | Destination dir | Description |
---|---|---|
.lua | mod/scripts/ | Lua scripts |
.pak | pak/ | Mod pak files |
.dll | mod/dll/ | Native ue4ss c++ mods |
.json | cfg/ | Mod configuration files |
Manifest
Now that we understand the structure, let's explore the manifest file you need to create to make your mod recognizable by Thunderstore.
Structure of the manifest is a simple json like this:
{
"name": "TestMod",
"version_number": "1.1.0",
"author": "You",
"website_url": "https://github.com/thunderstore-io",
"description": "This is a description for a mod. 250 characters max",
"dependencies": [
"Thunderstore-unreal_shimloader-1.0.2"
]
}