Mod development guide (2024)

Mod development guide (1)

This article is about Modding – changing the original game.
Please note that modding is not maintained by Nine Dots Studio.

This page is a guide for people who want to learn how to get started developing Mods. Outward is made in Unity, and uses the engine version 2020.3.26 for Definitive Edition and 2018.4.4 for Vanilla. The recommended way to make mods is either through SideLoader (C# and non-C# mods) and/or BepInEx (C# mods).

Contents

  • 1 Resources
    • 1.1 Tools
    • 1.2 GitHub Source Code Repositories
  • 2 Creating a non-C# Mod
  • 3 Creating a C# Mod
  • 4 Outward Modding Libraries
  • 5 Viewing Outward source code
    • 5.1 Debugging Outward at runtime
    • 5.2 Important Classes
  • 6 Harmony Patches
  • 7 Releasing mods on Thunderstore
    • 7.1 Required files
    • 7.2 Put the release files in place
    • 7.3 Special considerations
    • 7.4 Make the release
  • 8 Other Tools
    • 8.1 UnityExplorer
    • 8.2 UABE Mods
  • 9 See Also

Resources[ | ]

The following resources may help you with your mod development:

Tools[ | ]

  • dnSpy - a tool for looking at the source code of Outward (see Decompiling below)
  • sideloader - a tool and library for making Outward mods (sinai-dev sideloader no longer found)
  • Unity Explorer - a tool for exploring the game at runtime through a menu similar to the Unity Editor

GitHub Source Code Repositories[ | ]

These are the GitHub repositories for Outward Mods. If you are a mod developer, feel free to add your repo here.

Creating a non-C# Mod[ | ]

The SideLoader is a community tool for Outward which can be used to simplify the process of changing or creating custom assets, and in a way that is friendly with other mods.

While SideLoader can be a powerful library for making C# mods, it can also be used through an in-game menu without any real knowledge of Unity or programming. See the Outward SideLoader Docs for more information.

Creating a C# Mod[ | ]

If you have no experience with Unity or C#, it is recommended to check out these tutorials:

You will need to install an IDE if you do not already have one. Visual Studio Community is a popular, free IDE. when installing, make sure to enable .NET Support in the installed features. Another option is Rider.

From here, see the Outward Mod Template and follow the instructions to complete your first mod. This template is recommended when creating mods, as it comes set up with the correct packages and references you will need for modding.

See also:

Outward Modding Libraries[ | ]

Mod development guide (2)

Note: if you are using the Outward Mod Template, all references (except SideLoader) are already added.

An essential part of C# mod development are your references, which can be added through NuGet Packages (recommended) or through direct DLL references (not recommended, but fine if you know what you're doing).

The Outward modding community has partnered with BepInEx to bring you all the references you should need through NuGet. First, you will need to add a reference to the BepInEx NuGet feed.

For Visual Studio:

  1. Click Project > Manage NuGet Packages (if you don't see this option, select your CS Project in the Solution Explorer first)
  2. On the top-right, change "Package Source" to "All"
  3. Click the gear icon next to Package Sources to open the NuGet settings menu
  4. Click the "+" icon to add a new source
  5. Enter BepInEx for the Name, and https://nuget.bepinex.dev/v3/index.json for the source
  6. Click Ok and close the window
  7. In the "Browse" tab, tick the "Include prerelease" checkbox next to the search box
  8. Important: Double-click on Properties (in the Solution Explorer) and select the Build tab, then enable Allow Unsafe Code.

You can now search for BepInEx and Outward NuGet packages (in the "Browse" tab in Visual Studio). Importantly, the Outward and Unity libraries have been publicized, meaning everything in the assembly has been made public. This means you can access all private/protected members in the assembly without having to use reflection.

The following packages are recommended to develop Outward mods:

  • Outward.GameLibs
  • BepInEx.BaseLib - choose the latest 5.X version available.
  • HarmonyX
  • Outward.SideLoader - optional, if using SideLoader.

After adding references, you should Shift-Select all references (expand the references list to see them all) and then in the Properties panel below, set "Copy Local" to false.

Viewing Outward source code[ | ]

With software such as dnSpy, dotPeek or ilSpy you can look at the source code for Outward's assemblies to learn how the game works or find things which you would like to use.

This guide will cover how to use dnSpy with Outward. dnSpy is a popular, open-source decompiler.

  • Get dnSpy here
  • Drag the file Outward_Data\Managed\Assembly-Csharp.dll into dnSpy. This is the main Outward assembly.
    • Assembly-Csharp-firstpass.dll may also contain things you would like to use.
  • Expand the { } - node, these are main game classes and do not have a namespace.
  • From here, it is a process of exploration, and trial and error.
  • In dnSpy, if you right-click any member or variable, you can click "Analyze" to view how the reference is used.

Debugging Outward at runtime[ | ]

It is possible to debug Outward at runtime with dnSpy, with a bit of configuration.

Important Classes[ | ]

These classes are some of the most important classes in the Outward assembly, which you will likely need to use at some point.

ResourcesPrefabManager

  • This is where the game stores the prefabs for Items (including Skills and Quests), Item Visuals, and Status Effects.
    • Use ResourcesPrefabManager.Instance for the current instance of the manager
    • The functions GetItemPrefab, GetStatusEffectPrefab and GetEffectPreset can be used to get a handle on any item or status effect.
    • The private, static dictionaries ITEM_PREFABS, STATUSEFFECT_PREFABS and EFFECTPRESET_PREFABS contain all item and status effects.
  • Check if ResourcesPrefabManager.Loaded is true before you try to use any prefabs.

Character

  • The class used for all characters (players, allies and enemies). NOT used for NPC's.
  • Contains most of the main fields and methods for controlling a character.
  • CharacterStats and PlayerCharacterStats are used for stats
  • CharacterAI is used for AI behaviour.
  • CharacterManager is the manager for Characters, and SplitScreenManager is the manager for local players.

Item

  • This class is obviously used for all Items and Equipment, but it is also used for Skills, Quests and other miscellaneous objects such as Loot Container objects.
  • The ItemManager is used for managing currently active items in the scene.

Effect

  • This class is used for things like projectiles and blasts, affecting stats, etc.
  • There are many derived classes of Effect. See the derived classes using dnSpy or similar tools.
  • This class is a useful one to override, as it is actually designed to be overridden. This is convenient for custom effects.

Some other important classes include:

  • Global
  • NetworkLevelLoader
  • QuestEventManager

Harmony Patches[ | ]

Harmony Patches are used to override Methods, either for an entry-point or to change the behaviour of the method. Harmony is a powerful hooking API, which comes with BepInEx. It can be accessed through the namespace HarmonyLib.

For full documentation on Harmony, see:

For some detailed Outward-specific example of Harmony, see Mod_development_guide/Harmony.

Releasing mods on Thunderstore[ | ]

Thunderstore is the recommended website to release your Outward mods. The Outward section of the website is maintained by members of the Outward modding community.

Required files[ | ]

  • First, using the information here (thunderstore.io), prepare the files necessary for your package such as the manifest.json, etc. You can "manual download" any package from Thunderstore and look at the contents to use as an example.
  • With your Thunderstore manifest, you should at the very least have a dependency for BepInEx and/or SideLoader, unless your mod doesn't require either of these for some reason. Again, use existing mods as an example for how to do this if you are unsure.
  • Double-check your manifest and ensure everything is correct. You should use a Json Validator to ensure the json is valid.

Put the release files in place[ | ]

  • Read this article (github.com) about how to structure your Thunderstore package for r2modman.
  • Put your release files in your release folder following the instructions in the link above. Depending on the contents of your package it may vary slightly, read the guide closely if you are unsure.

If you have an SLPack folder the structure will be important - your release might look something like this:

MyPackage/ manifest.json README.md icon.png plugins/ MyPlugin.dll SideLoader/ manifest.txt <SLPack contents here>

This will extract to:

BepInEx/ plugins/ <Author-ModName>/ MyPlugin.dll SideLoader/ manifest.txt <SLPack contents here>

Special considerations[ | ]

  • If you are using a SideLoader pack and you need to access your pack from C#, then you will need to use a SLPack manifest file to set the name manually, otherwise your SLPack name will change with every version you release.
  • Your mod files cannot be installed anywhere other than the Outward\BepInEx\ folder, so make adjustments as necessary for that.

Make the release[ | ]

  • If you have not already, make an account on Thunderstore using your GitHub or Discord account.
  • Double-check once more that your package is correct, you may find it helpful to compare it to an existing package.
  • Upload your package and if everything was done correctly then Thunderstore will accept it, it will show up in r2modman within 5 minutes.

Other Tools[ | ]

UnityExplorer[ | ]

UnityExplorer is a powerful tool for debugging the game in a similar manner to the Unity Editor, and was designed by a member of this Community for Outward (although it works on almost any Unity game). It can be used to analyze the game at runtime to understand how Outward works and see how things work in an intuitive way.

UABE Mods[ | ]

UABE can be used for exploring Outward's asset files, as well as exporting and even replacing assets (though, the SideLoader is probably a better option for most kinds of asset replacement or changes).

For more information on UABE, see this article.

See Also[ | ]

  • Modding
  • Installing Mods
Mod development guide (2024)

FAQs

How much do mod developers make? ›

Game modding does have quite high conversion rate. Based on our studies, if you are modding, building shaders or tools for popular games, 51.56% of your free members are willing to pay an average of $5.47 USD per month. The top modders have an average of 5300 paid members and earn up to $29,000 USD per month!

How hard is it to make a mod for a game? ›

Many games are technically moddable, but doing so is difficult. Creating even a basic mod is an achievement, and for anything complex you basically need to be a developer.

Do you need to know coding to mod? ›

A mod can be as simple or as complex as you like. For example, creating a skin for a Minecraft character can be done in a 2D editor with no coding knowledge, whilst creating a total conversion can take years of work and require many creators to collaborate (see the Mod Hall of Fame for some of the most famous mods).

Are mods hard to make? ›

If you mean making mods, it depends on what you want to do. Basic stuff is often very simple but time consuming and can be tedious. Installing mods, fairly basic. Just make sure to read and follow the instructions and that the mod is for the right version.

Is mod a good place to work? ›

UK Ministry of Defence has an employee rating of 3.8 out of 5 stars, based on 1,569 company reviews on Glassdoor which indicates that most employees have a good working experience there.

How much do Mojang devs get paid? ›

Mojang Salary FAQs

The average Mojang hourly pay ranges from approximately $35 per hour (estimate) for an Artist to $72 per hour (estimate) for a Software Engineer.

Is it illegal to make mods for games? ›

Legal status of mods

In the United States context, the mechanisms of how the modder gets into the code of the game to mod it may violate the Digital Millennium Copyright Act or the Computer Fraud and Abuse Act or even simply the end-user license agreement (EULA). Most EULAs forbid modders from selling their mods.

Is it illegal to mod Nintendo games? ›

Are they illegal? It is illegal to import, market, sell or distribute circumvention devices (such as game copiers, USB piracy sticks and mod chips). Nintendo has obtained many decisions from criminal and civil courts across the world that confirms this.

What game is easy to mod? ›

Minecraft - The game that was the entry point to gaming itself for so many, is also a great place to start when it comes to modding. Given the games massive reach and popularity there are a virtual treasure trove of modding resources available.

How do people create mods? ›

Game mods can be done in a variety of ways such as unpacking files or modifying the code of a game to manipulate it. The game modding is largely done using open source methods. This means that the code and instructions are put into online repositories where anyone can use and implement them.

Do mods count as cheats? ›

On a server, if everyone has the same mods, it's not cheating.

Is GTA hard to mod? ›

Installing GTA 5 PC mods

Although Rockstar has enabled community modding, the process isn't all that easy. Games such as Skyrim had dedicated tools for adding mods to the game. However, with GTA 5, modders have to work a bit harder and use third-party applications to apply the mods to the game.

Is modding on PC easy? ›

Mod hubs and official forums have huge collections of user-generated content. They often offer easy-to-use installers and step-by-step guides on the best way to get started, so even if you're intimidated at first, you might be surprised at just how easy it is.

How GTA mods are made? ›

These unofficial modifications are made by altering gameplay logic and asset files within a user's game installation, and can change the player's experience to varying degrees. Frequently created by anonymous modders, modifications are presented in the form of downloadable files or archives.

Is it easier to make mods for fabric or forge? ›

It is known for its extensive library of mods and its compatibility with a wide range of Minecraft versions. On the other hand, Fabric is a newer modding tool gaining popularity due to its lightweight and flexible design. It is more modular than Forge, making it easier for developers to create and update mods.

Do modders get paid? ›

Modders get up to a whopping 25% of the revenue generated by their mod. The other 75% goes to valve and publishers. That's the point of this whole paid mod exercise. It's a great way for valve and game publishers to extract money that they did nothing to earn, from gamers.

How much money do Minecraft mods make? ›

Mod-makers for the block-based video game have earned Microsoft $350 million according to its Q3 report for 2021, thanks to the 140 million active users that Minecraft brings to the table each month.

How much do Minecraft developers make a year? ›

Minecraft Developer Salary
Annual SalaryMonthly Pay
Top Earners$150,500$12,541
75th Percentile$134,500$11,208
Average$109,905$9,158
25th Percentile$84,000$7,000

How does CurseForge make money? ›

Additionally, CurseForge Reward Program is based on revenue generated by ads and subscriptions. Advertisers have publishing budgets with certain, known cycles. In short, the calendar year starts with the lowest advertisem*nt revenue and increases throughout the year.

Top Articles
Latest Posts
Article information

Author: Msgr. Refugio Daniel

Last Updated:

Views: 6078

Rating: 4.3 / 5 (74 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Msgr. Refugio Daniel

Birthday: 1999-09-15

Address: 8416 Beatty Center, Derekfort, VA 72092-0500

Phone: +6838967160603

Job: Mining Executive

Hobby: Woodworking, Knitting, Fishing, Coffee roasting, Kayaking, Horseback riding, Kite flying

Introduction: My name is Msgr. Refugio Daniel, I am a fine, precious, encouraging, calm, glamorous, vivacious, friendly person who loves writing and wants to share my knowledge and understanding with you.