Getting Started Developing Mods

This page is a basic guide for people who want to learn how to get started developing Mods.

For further help, join the Outward Modding Discord and ask for help in the Modding channel, or see the Advanced Modding Guide.

Overview
Outward uses the Unity engine (specifically, 2018.4.8, July 2019 build). Most mods are created using C# in Visual Studio, and loaded with a tool like BepInEx.

Note: If you have no experience with Unity or C#, it is recommended to check out these tutorials first (at least skim over them):
 * Unity Basics tutorial
 * Unity C# Scripting tutorial

Before you can develop a mod, you will also need to see Installing Mods.

Non-C# Mods
Thanks to a community-developed tool, you can also mod the game without any real knowledge of C# or Unity, by using the Outward Sideloader.

Creating a C# Mod
Once you have installed a mod loader, the next step is to install an IDE if you do not already have one. Visual Studio Community is a popular, free IDE, and will be used in the guide below.

You should install Visual Studio, and make sure to include C# / .NET in your installation. You can also add support for this after installation if you did not include it when installing.

Project Setup
When you open visual studio, you are greeted with the welcome screen. Choose to create a new project.

Make sure you choose to create a Class Library (.NET Framework) project.

It is recommended to target the 4.7.2 .NET Framework to be compatible with Outward. Create the project, and Visual Studio will create a "Class1.cs" file for you. Ignore that for now.

You may want to change some of the default project settings:
 * 1) In , untick the "Define DEBUG constant" and "Define TRACE constant" settings
 * 2) In this window, you can also change the location your .dll will be built to with the "Output path"

My First Mod Class
Now it is time to write the actual BepInEx mod script. Rename your "Class1.cs" file to "MyModName.cs".

You should change the namespace to something unique by right-clicking it in your IDE and choosing "rename". Then in your Project Properties under the "Application" tab, set the "Assembly Name" and "Default Namespace" to the same name as your namespace.
 * NOTE: outdated picture, should be on 4.7.2 for highest compatibility

Building and Running
Build the solution by pressing Ctrl+Shift+B in Visual Studio, or by choosing Build > Build Solution or Project > Build Solution depending on your IDE.

This will build the DLL file to the output path you have defined in your Project Settings. If you did not change this path, it will be built to the "debug" or "bin" folder by default.

Once built, take your DLL mod file and place it in the folder Outward\BepInEx\plugins\. Run the game and you should see your "Hello World" debug in the file.

Release Guide
For a guide on releasing your mod on Thunderstore, see Releasing Outward Mods.

Advanced Guide
See the Advanced Modding Guide for more detailed modding guides. The example above will not really do anything other than load an empty mod.

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.