All Projects → modio → Modio Unity

modio / Modio Unity

Licence: mit
Unity Plugin for integrating mod.io - a modding API for game developers

Projects that are alternatives of or similar to Modio Unity

Modio Sdk Legacy
SDK for integrating mod.io into your game - a modding API for game developers
Stars: ✭ 75 (+41.51%)
Mutual labels:  api, engine, modding, sdk
Centrifuge
Cross-platform runtime mod loader and API for any Unity-based game. Supports Unity 5 and up!
Stars: ✭ 18 (-66.04%)
Mutual labels:  unity, modding, sdk
Vainglory
(*DEPRECATED*: The API no longer exists, so this will no longer work) A Javascript API Client wrapper for Vainglory
Stars: ✭ 32 (-39.62%)
Mutual labels:  api, sdk
Minimumaudioplugin
Minimum implementation of a native audio plugin for Unity
Stars: ✭ 33 (-37.74%)
Mutual labels:  unity, plugin
Meshstreaminggrasshopper
Plugin for Grasshopper to stream mesh geometry through web socket.
Stars: ✭ 52 (-1.89%)
Mutual labels:  unity, plugin
Tremor
Tremor mod, for tModLoader Terraria
Stars: ✭ 26 (-50.94%)
Mutual labels:  mod, modding
Resharper Unity
Unity support for both ReSharper and Rider
Stars: ✭ 953 (+1698.11%)
Mutual labels:  unity, plugin
Unitypluginwithwsl
Unity native plugin with WSL (Windows Subsystem for Linux)
Stars: ✭ 39 (-26.42%)
Mutual labels:  unity, plugin
Compositor Api
Compositor is a lightweight utility API for compositing images quickly and efficiently in Unity.
Stars: ✭ 9 (-83.02%)
Mutual labels:  api, unity
Soflow
A ScriptableObject oriented design SDK.
Stars: ✭ 43 (-18.87%)
Mutual labels:  unity, sdk
Bepinex
Unity / XNA game patcher and plugin framework
Stars: ✭ 1,001 (+1788.68%)
Mutual labels:  unity, modding
Nodejs
Everything related to the Node.js ecosystem for the commercetools platform.
Stars: ✭ 47 (-11.32%)
Mutual labels:  api, sdk
Aeris Ios Library
Contains a demo project utilizing the AerisWeather SDK for iOS to help you get started with using our library.
Stars: ✭ 21 (-60.38%)
Mutual labels:  api, sdk
Gocertcenter
CertCenter API Go Implementation
Stars: ✭ 21 (-60.38%)
Mutual labels:  api, sdk
Flutter Woocommerce Api
WooCommerce API in Flutter, connect and start developing with the available endpoints like get products, create orders and more.
Stars: ✭ 31 (-41.51%)
Mutual labels:  api, plugin
Hsplugins
Various Honey Select plugins
Stars: ✭ 21 (-60.38%)
Mutual labels:  unity, mod
Annwvyn
Annwvyn C++ Open Source designed-for-VR game engine and application developement framework
Stars: ✭ 34 (-35.85%)
Mutual labels:  engine, sdk
Js Api Client
Typeform API js client
Stars: ✭ 51 (-3.77%)
Mutual labels:  api, sdk
Pluginmanager
Unity Plugin Manager
Stars: ✭ 18 (-66.04%)
Mutual labels:  unity, modding
Waliyun
阿里云Node.js Open API SDK(完整版)
Stars: ✭ 40 (-24.53%)
Mutual labels:  api, sdk

mod.io

Unity Engine Plugin

License Discord Master docs Unity 3D

Welcome to mod.io Unity Plugin. It allows game developers to easily control the browsing and installation of User-Generated Content in UGC-supported games. The C# interface built on the Unity Engine provides an easy way of connecting to the mod.io API. We have a test environment available which offers developers a private sandbox to try the Unity Plugin out.

Features

  • Platform agnostic (support 1 click mod installs on Steam, Epic Games Store, Discord, GOG, itch.io and even consoles in the future)
  • Clientless (it has no other dependencies and works behind the scenes in your game)
  • Ready-to-go, fully functional and customizable mod browsing UI
  • C# interface built on the Unity Engine for connecting to the mod.io API
  • Powerful search, filtering and tagging of mods
  • Player preference and accounty management

Installation

Requires Unity 2017.3 or later. Tested on Windows, and MacOS.

Asset Store or .unitypackage

Import a package from the Asset Store or the Releases page. If you have any previous versions of the plugin installed, it is highly recommended to delete them before importing a newer version.

Alternatively, you can download an archive of the code using GitHub's download feature and place it in the Assets/Plugins directory within your Unity project.

Getting started

  1. Implement support for user-generated content in your project. Maps, skins, or game modes are often a good place to start.
  2. Set up your game profile on mod.io (or our private test environment) to get your game ID and API key.
  3. Add the plugin to your game using the installation instructions above.
  4. Drop the ModBrowser prefab into your menu scene, or adapt the Example Scene for your purposes.
  5. Input your ID and API key by selecting "Plugin Settings" on the ModBrowser component inspector, or under the Tools/mod.io/Edit Settings menu item
  6. In your code, make a call to ModManager.QueryInstalledModDirectories() to get a list of mod data your player has installed (read our wiki for detailed instructions)
  7. Setup complete! Join us on Discord if you have questions or need help.

All mods submitted to mod.io will be automatically fetched and managed by the plugin, and are instantly downloadable and testable.

Usage

Browse Mods

// -- Get as many mods as possible (unfiltered) --
APIClient.GetAllMods(RequestFilter.None,
                     null,
                     (r) => OnModsReceived(r.items),
                     (e) => OnError(e));


// -- Get a specified subset of filtered mods --
RequestFilter filter = new RequestFilter();
filter.sortFieldName = API.GetAllModsFilterFields.dateLive;
filter.isSortAscending = false;
filter.fieldFilters[API.GetAllModsFilterFields.name]
	= new StringLikeFilter() { likeValue = "mod" };

APIPaginationParameters pagination = new APIPaginationParameters()
{
	offset = 20,
	limit = 10,
};

APIClient.GetAllMods(filter
                     pagination
                     (r) => OnModsReceived(r.items),
                     (e) => OnError(e));

User Authentication

// -- Authenticate using external service using wrapper functions --
UserAccountManagement.AuthenticateWithGOGEncryptedAppTicket(ticketData, ticketSize,
                                                            (userProfile) => OnUserAuthenticated(userProfile),
                                                            (e) => OnError(e));



// -- Authenticate via email-flow manually using APIClient --
APIClient.SendSecurityCode("[email protected]_address.com",
                           (message) => OnSecurityCodeSent(),
                           (e) => OnError(e));

APIClient.GetOAuthToken(securityCodeFromEmail,
                        (token) => OnTokenReceived(token),
                        (e) => OnError(e));

LocalUser.instance = new LocalUser();
LocalUser.OAuthToken = receivedOAuthToken;

APIClient.GetAuthenticatedUser((userProfile) => OnProfileReceived(userProfile),
                               (e) => OnError(e));

LocalUser.Profile = userProfile;
LocalUser.Save();

Manage Subscriptions

// -- Sub/Unsubscribe --
UserAccountManagement.SubscribedToMod(modId);
UserAccountManagement.UnsubscribeFromMod(modId);

// -- Fetch and Store ---
APIClient.GetUserSubscriptions(RequestFilter.None,
                               null,
                               (subscribedMods) => OnSubscriptionsReceived(subscribedMods),
                               (e) => OnError(e));

int[] modIds = Utility.MapProfileIds(subscribedMods);
LocalUser.SubscribedModIds = new List<int>(modIds);

// -- Download, Update, and Install Subscribed Mods --
activeSceneComponent.StartCoroutine(ModManager.DownloadAndUpdateMods_Coroutine(modIds,
                                                                               () => OnCompleted()));

Submit Mods

// -- Changes to a Mod Profile --
EditableModProfile modEdits = EditableModProfile.CreateFromProfile(existingModProfile);
modEdits.name.value = "Updated Mod Name";
modEdits.name.isDirty = true;
modEdits.tags.value = new string[] { "campaign" };
modEdits.tags.isDirty = true;

ModManager.SubmitModChanges(modId,
                            modEdits,
                            (updatedProfile) => OnChangesSubmitted(updatedProfile),
                            (e) => OnError(e));

// -- Upload a new build --
EditableModfile modBuildInformation = new EditableModfile();
modBuildInformation.version.value = "1.2.0";
modBuildInformation.version.isDirty = true;
modBuildInformation.version.changelog = "Changes were made!";
modBuildInformation.version.isDirty = true;
modBuildInformation.version.metadatBlob = "Some game-specific metadata";
modBuildInformation.version.isDirty = true;

ModManager.UploadModBinaryDirectory(modId,
                                    modBuildInformation,
                                    true, // set as the current build
                                    (modfile) => OnUploaded(modfile),
                                    (e) => OnError(e));

Dependencies

The mod.io Unity Plugin requires the functionality of two other open-source Unity plugins to run. These are included as libraries in the UnityPackage in the Plugins directory, or in the repository under third_party:

Benefits

mod.io offers the same core functionality as Steamworks Workshop (1 click mod installs in-game), plus mod hosting, moderation and all of the critical pieces needed. Where we differ is our approach to modding and the flexibility a REST API offers. For example: 

  • Our API is not dependent on a client or SDK, allowing you to run mod.io in many places such as your homepage and launchers
  • Designing a good mod browsing UI is hard, our plugin ships with a UI built in to save you a lot of effort and help your mods stand out
  • We don’t apply rules globally, so if you want to enable patronage, sales or other experimental features, reach out to discuss
  • Our platform is built by the super experienced ModDB.com team and is continually improving for your benefit
  • Your community can consume the mod.io API to build modding fan sites or discord bots if they want
  • Communicate and interact with your players, using our built-in emailer

Large studios and Publishers

A private white label option is available to license, if you want a fully featured mod-platform that you can control and host in-house. Contact us to discuss.

Contributions Welcome

Our Unity 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.

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].