Advanced Modding Guide

This page is a more detailed guide about Mod development. For a basic guide, see Getting Started Developing Mods.

Resources
Firstly, these are some helpful resources for mod development. Most of these tools or software are referenced on this page somewhere.
 * dnSpy
 * Outward-SideLoader
 * Unity Explorer

BepInEx Utilities
These are utilities for BepInEx which can greatly improve your modding experience.
 * BepInEx Debug: a collection of helpful tools to help with BepInEx mod development
 * BepInEx Utility: an in-game debug logger, and other tools.

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.
 * Sinai's Mods Repo
 * Vheos777's Mods repo
 * Skully250's Mods Repo
 * Lasyan3 Outward Mods
 * McRoberts Grindward

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.


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


 * 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.
 * and are used for stats
 * is used for AI behaviour.
 * is the manager for Characters, and is the manager for local players.


 * 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 is used for managing currently active items in the scene.


 * 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:

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

See the Decompiling Outward guide for more details on how to reverse-engineer Outward.

Reflection
Reflection is a feature of the .NET Framework which allows us to access and modify private members of other classes. This is very useful for modding, since many of the classes we want to work with will be private or protected for various reasons.

See the Outward C# Reflection guide for more details on how to use Reflection with Outward.

Hooks
Hooks are used to override, either for an entry-point or to change the behaviour of the method.

See the Hooks guide for more details on how to use Hooks in your mods.

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.

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

SideLoader has also expanded into other areas such as custom Items, Recipes, Characters and Scenes, and has various helpers for this from XML and C#.