Mod Support

Unreal Engine Plugin for Mod Support

Released (updated ago). Ranked 7 of 11 with 0 (0 today) downloads

Published by INtense! (mod ID: 2)


Welcome to Unreal Engine 4 Plugin. It allows game developers to easily control the browsing and installation of mod files in their games. It provides a C++/blueprint interface built on the Unreal Engine to connect to the API. We have a test environment available which offers developers a private sandbox to try the Unreal Engine 4 Plugin out. You can track our progress and submit pull requests at our Github linked below.


Feature Supported
Windows 64bits (more platform are WIP)
Open Source
Async Callbacks
Email / Steam / GOG authentication
Prebuilt download and upload queue
Mod ratings / dependencies
MIT license


A quick start guide is provided below, in addition to the more detailed wiki. There is also an example project showing authentication and downloading mods.


Browse mods

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->GetAllMods(EModioFilterType::SORT_BY_DATE_UPDATED,
                   { TEXT("Hat"), TEXT("HD") } /* Filter by tags */,
                   4 /* Limit the number of results for a request. */,
                   0 /* Use the offset to skip over results and paginate through them */,
                   FModioModArrayDelegate::CreateUObject(ModioManager, &UModioManager::OnGetAllMods));

// ...

void UModioManager::OnGetAllMods(FModioResponse Response, const TArray &Mods)
  for (FModioMod Mod : Mods)
    UE_LOG(LogTemp, Warning, TEXT("Name: %s"), *Mod.Name);
    UE_LOG(LogTemp, Warning, TEXT("Description: %s"), *Mod.Description);
    UE_LOG(LogTemp, Warning, TEXT("Date updated: %d"), Mod.DateUpdated);

Auth (via email)

First step is to request a security code to your email.

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->EmailRequest("", FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnEmailRequest));

// ...

void UModioManager::OnEmailRequest(FModioResponse Response)
  // Response.code should be 200 if an security code was sent to the provided email

Finish authentication by submitting the 5-digit code.

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->EmailExchange("VBY5A", FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnEmailExchange));

// ...

void UModioManager::OnEmailExchange(FModioResponse Response)
  // Response.code should be 200 if you are now authenticated

External Auth

If your game is running inside a popular distribution platform such as Steam or GOG Galaxy you can authenticate 100% seamlessly.

Galaxy Auth

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->GalaxyAuth("csEYJ2MWR53QssNNqFgO87sRN", FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnGalaxyAuth));
// ...

void UModioManager::OnGalaxyAuth(FModioResponse Response)
  // Response.code should be 200 if you are now authenticated via Galaxy

Steam Auth

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->SteamAuth("NDNuZmhnaWdyaGdqOWc0M2o5eTM0aGc", FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnSteamAuth));

// ...

void UModioManager::OnSteamAuth(FModioResponse Response)
  // Response.code should be 200 if you are now authenticated via Steam


Download and remove mods locally by subscribing and unsubscribing.


<~INNERCODE~ class="lang-lang-lang-cpp">Modio->SubscribeToMod(mod_id, FModioModDelegate::CreateUObject(ModioManager, &UModioManager::OnSubscribeToMod));

// ...

void UMyModioManager::OnSubscribeToMod(FModioResponse Response, FModioMod Mod)
  // Response.code should be 200 if you subscribed to the mod successfully


<~INNERCODE~ class="lang-lang-lang-cpp">Modio->UnsubscribeFromMod(mod_id, FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnUnsubscribeFromMod));

// ...

void UMyModioManager::OnUnsubscribeFromMod(FModioResponse Response)
  // Response.code should be 200 if you unsubscribed from the mod successfully

Mod submission

Share mods by creating a mod profile and attaching modfiles to it.

Create a mod profile

<~INNERCODE~ class="lang-lang-lang-cpp">FModioModCreator ModCreator;
ModCreator.Name = "My Mod";
ModCreator.LogoPath = "ModExample/logo.png";
ModCreator.HomepageUrl = "";
ModCreator.Summary = "Mod added via the SDK examples. Mod added via the SDK examples. Mod added via the SDK examples. Mod added via the SDK examples. Mod added via the SDK examples. Mod added via the SDK examples.";
Modio->AddMod(ModCreator, FModioModDelegate::CreateUObject(ModioManager, &UModioManager::OnAddMod));

// ...

void AModioManager::OnAddMod(FModioResponse Response, FModioMod Mod)
  // Response.code should be 200 if the mod profile was created

Upload a modfile

<~INNERCODE~ class="lang-lang-lang-cpp">FModioModfileCreator ModfileCreator;
ModfileCreator.Path = "ModExample/modfile/";
ModfileCreator.Version = "v1.1.0";
ModfileCreator.Changelog = "This is a change log...";

Modio->AddModfile(mod_id, ModfileCreator);


Download listener

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->SetModDownloadListener(FModioListenerDelegate::CreateUObject(ModioManager, &UMyModioManager::OnModDownload));

// ...

void UMyModioManager::OnModDownload(int32 ResponseCode, int32 ModId)
  // ResponseCode should be 200 when a mod was just downloaded

Upload listener

<~INNERCODE~ class="lang-lang-lang-cpp">Modio->SetModUploadListener(FModioListenerDelegate::CreateUObject(ModioManager, &UMyModioManager::OnModUpload));

// ...

void UMyModioManager::OnModUpload(int32 ResponseCode, int32 ModId)
  // ResponseCode should be 200 when a mod was just uploaded

Getting started

If you are a game developer, first step is to add mod support to your Unreal Engine 4 game. Once mod support is up and running, create your games profile on, to get an API key and access to all functionality offers. Next, input your <~INNERCODE~ class="lang-cpp">Game ID and <~INNERCODE~ class="lang-cpp">API Key under the <~INNERCODE~ class="lang-cpp">Project Settings in your UE4 editor.

Alt text

Once initialized, you are ready to start interacting with either the Blueprint layer or C++. Both have the same funcionality so it's up to you choosing what fits better to your game.

Blueprint layer

Interact with by using the intuitive functions, callback proxies and structures. Don't forget to connect the <~INNERCODE~ class="lang-cpp">Process node yo your <~INNERCODE~ class="lang-cpp">Tick function for the callbacks can take effect.

Alt text

C++ layer

Import the subsystem and get the Subsystem pointer to start interacting with Remeber to call <~INNERCODE~ class="lang-cpp">Modio-&gt;Process() regularly to process the async funcionality.

<~INNERCODE~ class="lang-lang-lang-cpp">#include "ModioSubsystem.h"

// ...

FModioSubsystemPtr Modio;
Modio = FModioSubsystem::Get(GetWorld());

// ...

void UModioManager::Tick(float DeltaTime)

Contributions Welcome

Our Unreal Engine 4 plugin is public and open source. Game developers are welcome to utilize it directly, to add support for mods in their games, or fork it for their games customized use. Want to make changes to our plugin? Submit a pull request with your recommended changes to be reviewed.


You can use the standalone <~INNERCODE~ class="lang-cpp">build.bat file to compile it after you have done modification to the plugin. If you're looking for integrating to your game refer to the Getting started guide instead.

cd build build.bat [UE4 VERSION]

Where [UE4 VERSION] is the UE4 version that will be used for building, it has to be installed on your system beforehand. The following versions are supported:

:: Build with UE4 v19 build.bat 19 :: Build with UE4 v20 build.bat 20 :: Build with UE4 v21 build.bat 21 :: Build with UE4 v22 build.bat 22 :: Build with UE4 v19, v20, v21 and v22 build.bat all

Other Repositories

Our aim with, is to provide an open modding API. You are welcome to view, fork and contribute to our other codebases in use:


Join the community or sign in with your gaming account to join the conversation: