- Modloader Features |
- Installation |
- Configuration |
- Roadmap |
- Example Mods |
- Creating Mods |
- Contributing |
- License |
- Mod Management: Dynamically load and unload mods from the "mods" folder.
- Live Configuration: Modify mod settings at runtime without restarting the server.
- Dependency Injection: Each mod is fully integrated into the system via the
ModContext
, enabling shared access to configuration, logging, and other utilities.
- Download the Mod Loader: Get the latest Shroudtopia binaries from the release section.
- Extract the Files: Extract the contents into your Enshrouded game or dedicated server folder.
- Download Example Mods: You can download example mods from the release section.
- Create Mods Folder: If it doesn’t already exist, create a
mods
folder and place your mod DLLs inside. - Launch the Server: Start the server. A default config (
shroudtopia.json
) will be generated if it's absent.
Once set up, you're ready to start using Shroudtopia to manage your mods.
On servers: If Shroudtopia is loaded correctly, you should see something like this in the server console:
[shroudtopia][INFO] Config loaded.
[shroudtopia][INFO] Wait before injection. Configured boot delay is 3000ms.
Upon the first launch, a default configuration file shroudtopia.json
is created. For mods you must manually adjust the configuration to their needs.
Each mod can be enabled or customized via the shroudtopia.json
config file. Here’s an example configuration:
{
"active": true,
"bootDelay": 3000,
"enableLogging": true,
"logLevel": "INFO",
"mods": {
"basics": {
"active": true,
"no_stamina_loss": true,
"no_fall_damage": true,
"no_resource_cost": true,
"inf_item_use": true,
"unlock_blueprints": true,
"inf_item_split": true
},
"Flight Mod": {
"active": true
},
"FirstPersonView": {
"active": true
}
},
"updateDelay": 500
}
Mods are free to expose configuration options.
Some may have no fun with fall damage. Others may just want to have kind of a creative mode. You can selectively activate essential basic mods in the configuration file.
Configuration options:
"basics": {
"active": true,
"no_stamina_loss": true,
"no_fall_damage": true,
"no_resource_cost": true,
"inf_item_use": true,
"unlock_blueprints": true,
"inf_item_split": true
}
Enjoy full flight capabilities with the glider. No more losing height!
Configuration options:
"Flight Mod": {
"active": true
}
Play Enshrouded from another persepctive. Example for client-only mod.
Configuration options:
"FirstPersionView": {
"active": true
}
Mods for Shroudtopia are written as dynamic libraries (DLLs) and need to include shroudtopia.h
from ./shroudtopia/
.
They must implement the Mod
interface and provide the factory function extern "C" __declspec(dllexport) Mod* CreateModInstance()
.
Here’s an example factory function:
extern "C" __declspec(dllexport) Mod* CreateModInstance() {
return new BasicsMod();
}
Every mod must implement the following functions to integrate with the modloader:
class Mod {
public:
virtual ~Mod() {}
virtual ModMetaData GetMetaData() = 0;
virtual void Load(ModContext* modContext) = 0;
virtual void Unload(ModContext* modContext) = 0;
virtual void Activate(ModContext* modContext) = 0;
virtual void Deactivate(ModContext* modContext) = 0;
virtual void Update(ModContext* modContext) = 0;
};
ModMetaData
contains essential information about the mod:
struct ModMetaData {
std::string name;
std::string description;
std::string version;
std::string author;
std::string targetShroudtopiaVersion;
bool hasClientSupport;
bool hasServerSupport;
};
The ModContext
is passed to each mod and provides access to core functionality, such as configuration, logging, and mod management. For example, the mod can retrieve config values via:
bool enabled = modContext->config.GetBool("modName", "feature_name", false);
Currently no really game specific functions are implemented in the modContext. This is first try. Anyways, contributions are welcome! Fork the repository, add improvements, and submit pull requests. I would be happy to see more mods for this around.
This project is licensed under the MIT License.

Let's make Enshrouded even more exciting with Shroudtopia! 🌟
Special thanks to the following folks. Their work gave me a headstart implementing most features:
- cfemen
- Turk
- Atamg
- ndoa