All Projects → modio → modio-ue4-legacy

modio / modio-ue4-legacy

Licence: MIT license
Unreal Engine 4 Plugin for integrating mod.io - a modding API for game developers

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
C#
18002 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to modio-ue4-legacy

PsWebServer
Civet web server integration plugin for Unreal Engine 4
Stars: ✭ 24 (-71.08%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
AnimationPreviewer
Plug-in for previewing Animation Asset
Stars: ✭ 39 (-53.01%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
tsu
TypeScript plugin for Unreal Engine 4
Stars: ✭ 62 (-25.3%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
DlgSystem
Dialogue Plugin System for Unreal Engine | 🪞 Mirror of https://bit.ly/DlgSource
Stars: ✭ 136 (+63.86%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
MaRLEnE
Machine- and Reinforcement Learning ExtensioN for (game) Engines
Stars: ✭ 47 (-43.37%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
ProceduralDungeon
This is an Unreal Engine 4/5 plugin to generate procedural dungeon.
Stars: ✭ 95 (+14.46%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
RyansUE4Helpers
Extremely helpful helper functions for developing Blueprint and C++ projects in Unreal Engine.
Stars: ✭ 55 (-33.73%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
UE4-Plugin-Resources
A list of community resources for Slate, Graphs, and UE4 Plugin Development.
Stars: ✭ 105 (+26.51%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
PsData
Flexible data model plugin for Unreal Engine 4
Stars: ✭ 34 (-59.04%)
Mutual labels:  ue4, unreal-engine-4, ue4-plugin
UE4-BYGLocalization
Simple CSV localization system for Unreal Engine 4
Stars: ✭ 54 (-34.94%)
Mutual labels:  ue4, ue4-plugin
BMeshUnreal
Based on BMesh for Unity (https://github.com/eliemichel/BMeshUnity). It provides a half-edge data structure inspired by Blender's BMesh, which makes many mesh manipulation operations simpler. Especially useful when using mesh data for logical instead of visual purposes (e.g. irregular grids)
Stars: ✭ 45 (-45.78%)
Mutual labels:  ue4, unreal-engine-4
DiscordGameSDK
Unofficial Unreal Engine 4 plugin for the Discord Game SDK
Stars: ✭ 20 (-75.9%)
Mutual labels:  ue4, unreal-engine-4
ue4-uitween
Unreal 4 UMG UI tweening plugin in C++
Stars: ✭ 178 (+114.46%)
Mutual labels:  ue4, unreal-engine-4
Flopnite Ue4
A remake of the popular battle royale game, Fortnite, made in Unreal Engine 4 and integrated with Amazon GameLift
Stars: ✭ 250 (+201.2%)
Mutual labels:  ue4, unreal-engine-4
LocalizationUE4
Translation Editor for Unreal Engine 4
Stars: ✭ 59 (-28.92%)
Mutual labels:  ue4, unreal-engine-4
Unreal Polygonal Map Gen
An Unreal Engine 4 implementation of the Polygonal Map Generator for generating islands found at http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
Stars: ✭ 229 (+175.9%)
Mutual labels:  ue4, unreal-engine-4
Nano
A tiny template for tiny Unreal games.
Stars: ✭ 117 (+40.96%)
Mutual labels:  ue4, unreal-engine-4
X3daudio1 7 hrtf
HRTF for Arma 3, Skyrim, and other titles that use XAudio2 + X3DAudio
Stars: ✭ 192 (+131.33%)
Mutual labels:  ue4, unreal-engine-4
LivePP
A UE4 plugin wrapper for Molecular Matter's Live++ Hot-Reloading Library
Stars: ✭ 105 (+26.51%)
Mutual labels:  ue4, ue4-plugin
Awesome Unreal Engine 4
UE4/UE5 Ressources Collection (Plugins, Effects, Doc, Tools, etc...)
Stars: ✭ 153 (+84.34%)
Mutual labels:  ue4, ue4-plugin

NOTE: This codebase is now deprecated.

The latest version of the mod.io Unreal Plugin can be found at https://github.com/modio/modio-ue4.

mod.io

Legacy mod.io Unreal Engine 4 Plugin

License Discord Master docs

Welcome to the legacy mod.io 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 mod.io API. We have a test environment available which offers developers a private sandbox to try the Unreal Engine 4 Plugin out.

unreal

Features

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

Documentation

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.

Usage

Browse mods

Alt text

FModioSortCreator SortCreator;
SortCreator.ModSortType = EModioModSortType::SORT_BY_DATE_UPDATED;
SortCreator.Ascending = false;

FModioFilterCreator FilterCreator;
FilterCreator.Sort = SortCreator;

Modio->GetAllMods(FilterCreator,
                   { 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<FModioMod> &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.

Alt text

Modio->EmailRequest("[email protected]", 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.

Alt text

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

Alt text

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
}

Oculus Auth

Alt text

Modio->OculusAuth("zBOBKszK..txDHJvjAC",// nonce proof
  3485509464809317, // User id
  "OCAf57IgZCf9JphLvM3dY...lVxWf5tenZBoOLAZDZD", // access token
  "[email protected]", // Email, optional parameter, skip with ""
  "rift", // rift and quest authentication supported
  0, // Expiry date, skip with 0
  FModioGenericDelegate::CreateUObject(ModioManager, &UModioManager::OnGalaxyAuth));
// ...

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

Steam Auth

You will need to setup the following:

  • Add your Encrypted App Ticket Key from your Steam Partner game into your game options on the mod.io web
  • In your game code, retrieve the Encrypted App Ticket from the Steamwoks SDK (or by using a Steamworks plugin of your choice)
  • Also encrypt the Encrypted App Ticket under base 64 before using the mod.io Steam Auth function

Alt text

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
}

Subscriptions

Download and remove mods locally by subscribing and unsubscribing.

Subscribe

Alt text

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
}

Unsubscribe

Alt text

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
}

Functions compatible with Polling Disabled

DownloadModfilesById

Mods are updated returns true if all provied mods are updated, if at least one mod is not updated false is returned and the mods are added to the download queue.

⚠️ Don't call this or any other callback proxy repeatdly (in loops or tick events) to avoid bad performance.

Alt text

DownloadSubscribedModfiles

Mods are updated returns true if the current user's subscriptions are updated, if at least one mod is not updated false is returned and the mod is added to the download queue.

⚠️ Don't call this or any other callback proxy repeatdly (in loops or tick events) to avoid bad performance.

Alt text

Mod submission

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

Create a mod profile

Alt text

FModioModCreator ModCreator;
ModCreator.Name = "My Mod";
ModCreator.LogoPath = "ModExample/logo.png";
ModCreator.HomepageUrl = "http://www.webpage.com";
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

Alt text

FModioModfileCreator ModfileCreator;
ModfileCreator.Path = "ModExample/modfile/";
ModfileCreator.Version = "v1.1.0";
ModfileCreator.Changelog = "This is a change log...";

Modio->AddModfile(mod_id, ModfileCreator);

Listeners

Download listener

Alt text

Modio->SetModDownloadListener(FModioListenerDelegate::CreateUObject(ModioManager, &UMyModioManager::OnModDownload));

// ...

void UMyModioManager::OnModDownload(int32 ResponseCode, int32 ModId)
{
  // ResponseCode should be 200 when a mod was just downloaded
  Modio->InstallDownloadedMods();
}

Upload listener

Alt text

Modio->SetModfileUploadListener(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 mod.io, to get an API key and access to all functionality mod.io offers. Next, input your Game ID and API Key under the mod.io 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 mod.io by using the intuitive mod.io functions, callback proxies and structures. Don't forget to connect the Process node yo your Tick function for the callbacks can take effect.

Alt text

C++ layer

Import the mod.io subsystem and get the Subsystem pointer to start interacting with mod.io. Remeber to call Modio->Process() regularly to process the async funcionality.

#include "ModioSubsystem.h"

// ...

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

// ...

void UModioManager::Tick(float DeltaTime)
{
  Modio->Process();
}

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.

Building

You can use the standalone build.bat file to compile it after you have done modification to the plugin. If you're looking for integrating mod.io 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 v23
build.bat 22

:: Build with the latest 3 UE4 versions supported
build.bat all

Other Repositories

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].