Skip to content

TAImatem/owml

 
 

Repository files navigation

Outer Wilds Mod Loader

OWML is the mod loader and mod framework for Outer Wilds. It patches Outer Wilds to load mods, and provides mods with a framework to interact with the game. OWML is inspired by SMAPI for Stardew Valley.

How it works

OWML does the following:

  1. Patches the game to make it call the mod loader.
  2. Starts the game.
  3. The mod loader loads and initializes installed mods.

Installation

With Outer Wilds Mod Manager (recommended):

  1. Download the latest release of the Mod Manager.
  2. Use the Mod Manager to install OWML and mods, and start the game.

With Vortex:

  1. Download OWML and extract the zip file.
  2. Put the OWML folder in the game's root folder, usually C:\Program Files\Epic Games\OuterWilds.
  3. Install the Vortex extension.
  4. Use Vortex to install mods and start the game.

Manual install:

  1. Download OWML and extract the zip file anywhere you want.
  2. Download mods and put them in the Mods folder, each mod in a separate folder.
  3. Start the game with OWML.Launcher.exe.

Sample mod

One mod is included as an example. It's disabled by default, enable in manifest.json.

Sample mod Description
OWML.EnableDebugMode Enables the built-in debug mode in the game. Highlights: cycle through debug UIs with F1, warp to planets with the number keys, and explode the sun with the End key.

For modders

Refer to the sample mods for examples.

Get started

  1. Create a class library project targeting .Net Framework 3.5.
  2. Install the OWML Nuget package.
  3. Reference the following files in {gamePath}\OuterWilds_Data\Managed:
    • Assembly-CSharp.dll
    • UnityEngine.CoreModule.dll
    • More Unity DLLs if needed
  4. Inherit from ModBehaviour.

For more info, see For modders.

Configuration

OWML is configured by OWML.Config.json:

Key Description
gamePath The path to the game files. OWML will try to locate the game automatically, set this manually if needed.
verbose If this is true, errors from all of the game will be displayed and logged. Intended for modders only.

Each mod is defined in a manifest.json file:

Key Description
filename The filename of the DLL containing the ModBehaviour class.
author The name of the author.
name The name of the mod.
uniqueName Usually {author}.{uniqueName}.
version The version number.
owmlVersion The version of OWML the mod was built for.
dependencies Array of dependency names. Make sure to use the unique name.

Each mod can be configured with an optional config.json file:

Key Description
enabled Whether or not the mod will be loaded. Default: true.
requireVR Whether or not the mod requires VR to work. Default: false.
settings An object of mod-specific settings. Default: empty.

Example:

{
  "enabled": true,
  "requireVR": false,
  "settings": {
    "enableMusic": true,
    "foo": "bar",
    "lol": 1337
  }
}

More info about config can be found here.

Compatibility

  • Tested with all versions of Outer Wilds up to and including v1.0.7.
  • Currently Windows only.

Feedback

I'm working tightly with the mod community to improve OWML and aid in mod development. I'm Alek on the Outer Wilds Discord.

Feature requests, bug reports and PRs are welcome on GitHub.

Nexus page

Credits

Authors:

Special thanks to:

Dependencies:

About

The mod loader and mod framework for Outer Wilds

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 98.8%
  • Batchfile 1.2%