Skip to content

A utility mod and editor tools that provide a framework for New Horizons mod authors to manage their mod data.

Notifications You must be signed in to change notification settings

Hawkbat/ow-mod-data-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mod Data Tools for Outer Wilds

banner

This project aims to create an opinionated Unity-centric framework for defining and editing the various aspects of a large-scale Outer Wilds mod that uses New Horizons: solar systems, planets, ship logs, dialogue trees, etc.

It is not without its drawbacks, as it currently follows an all-or-nothing approach to mod structure, where you primarily work in a Unity project and export/generate your mod from there, instead of working directly with New Horizons' mod structure and config files. However, there are some significant benefits, such as a visual editing experience, edit-time validation of data, and the ability to reference data at runtime without relying on brittle transform paths or hard-coded IDs.

Features

  • Create Unity data assets representing Solar Systems, Planets, Ship Log Entries, Ship Log Facts, Dialogues, Dialogue Conditions, and Translator Texts.
  • Generate New Horizons .json and .xml files automatically from the data assets.
  • Automatically export other assets referenced in the data assets, such as ship log entry photos, solar system skybox images, and more.
  • Override generated files with statically defined .json or .xml files, as needed.
  • Component-based system for placing props and other prop-like things directly in your planet prefabs.
  • Visual ship log editor to arrange and edit ship log entries, with click-and-drag support.
  • Tooltips explaining each field are available by mousing over the field names in the Unity inspector.
  • Preliminary (non-visual) dialogue tree and translator text editors.

Planned Features

  • Visual dialogue tree editor
  • Visual translator text editor
  • Localization support

Usage

For Players:

If a mod that you want to play depends on this one, install this utility mod from the Outer Wilds Mod Manager. Boom! You're done!

For Mod Authors:

This project is comprised of two components, developed in tandem:

  • A utility mod, available on the Outer Wilds Mod Manager, that provides various Unity asset classes representing common mod data (and the ability to interact with them at runtime, if they are included in an asset bundle).
  • A set of Unity editor scripts that can be imported into a mod's Unity project to allow for easy editing of the assets provided by the utility mod.

To use these in your mod, import the latest .unitypackage file from this repository's releases into your mod's Unity project. If you haven't already set up a Unity project for your mod, you can clone the outer-wilds-unity-template repo.

Once you have imported the editor scripts into your Unity project, you can create the various data assets from the Assets -> Create... menu. They can then be edited from the Inspector. If a custom visual editor window is available for a data asset, there will be a button in the Inspector to open it.

You must have a Mod Manifest asset created in your project and configured to represent your mod. This asset represents the manifest.json file for your mod, and determines the export path for your mod data. The full calculated ID of this asset will become the UniqueName of your mod.

When you're ready to package your data into a mod, you can export your data from the top menu under Export -> Mod Data. By default, the project will be exported to %APPDATA%\OuterWildsModManager\OWML\Mods\{UniqueName}. This can be changed in the settings as needed. The Export step will build all asset bundles, generate any New Horizons .json or .xml files, and copy any other static assets to the mod folder.

If you use a separate project for mod code, you can set your Mod Manifest's Filename property to the name of your mod's DLL, and use the standard ModName.csproj.user approach to export your mod code DLL to the mod folder.

Limitations

If you use planets from the base game, or place new planets in the base solar system, you should use the OverrideFullID fields to set up planet and star system assets with the same names as the vanilla ones (e.g. a star system "SolarSystem" and a planet like "TimberHearth" or "QuantumMoon"). If you just need the asset to satisfy the asset hierarchy and don't need a config .json for it in your mod, you can uncheck ExportConfigFile in the asset's export settings.

About

A utility mod and editor tools that provide a framework for New Horizons mod authors to manage their mod data.

Resources

Stars

Watchers

Forks

Languages