Mods can break the game. They can cause it to perform in unintended ways. Use them at your own risk. There is nothing in the game that prevents someone from doing something harmful to your computer from a mod – so make sure you trust the source of any mod you install.
Definitive Guide to Modding
Though built in Unity, Noble Fates uses several pieces of technologies to enable it to be highly modable.
First, we developed a data definition language named OCTDAT that we use to specify nearly all values and settings for nearly everything in the game. You are free to extend the existing OCTDATS or add new ones. In many cases you can make highly impactful mods just by inheriting an existing OCTDAT and changing a few values. Adding new content that plugs into the existing systems should require no code! The OCTDAT format is a custom text based format. A further article will speak more about the format.
Next, we have the extensible OCTSCRIPT system that we use to script a great deal of what happens in Noble Fates. These can be written without code, but they do require knowledge of the available Conditions and Operations and how they work – we’ll document these better over time, but for now the game’s content should act as a good reference.
In addition, we use the Trilib library to load all of our 3d assets from .fbx files at runtime – this means that you can export a model from Blender (or another program) in the fbx format, setup an appropriate OCTDAT and it’ll load right into the game.
Other content like Sounds, Textures, and Music loads or streams from the StreamingData folder as well.
In order to promote the highest level of moddability, we’ve shipped 90% of the content of Noble Fates as loose files that are loaded from the disk. If you browse to your steam folder (E:\SteamLibrary\steamapps\common\Noble Fates for me) and then navigate to the \Noble Fates_Data\StreamingAssets folders within, you’ll find all of our content.
All of the OCTDATS are contained in the OctDats folder, and all of the Art for the game is in the Art folder. You can load these up in whatever editor, modify them, and update them here – but take note that they will be overwritten when we patch. It’s ok to experiment directly in these files, but it’s far better to develop a mod an place it in a mod folder as outline below!
The first sets the esteem hit for an Unmet Socialization need to zero. This mod is as simple as it gets. It leverages the OCTDAT system to extend the existing socialization need and replaces the values for unmetOpinion and subceededOpinion (when the need bottoms out).
You can find it here.
The seconds adds a Table Plant decoration to the game – it consists of a couple of .fbx files and an OCTDAT that hooks them into the PropManager. This is a content only mod – no code necessary.
You can find it here.
The third adds random drops to the world as though they were dropped by wanderers walking around. This mod has an fbx for the drop itself, and a DLL that was built using classes from the game to add a new System, set of actors, and set of behaviors. This is a more complicated mod – but shows how one would go about standing up a new system altogether. You can find it here.
Where Do Mods Go
The game loads mods from two places – first, you can place a Mods folder in
- C:\Users[name]\AppData\LocalLow\Xobermon, LLC\Noble Fates
and the game will load mods from that folder.
Secondly, you can place mods next to where the game is installed in steam. The game will load these mods first.
In addition to the two folders, the game supports load order as specified by prefixing each mod with a number followed by an underscore. For example, the contents of the 01_dropMod folder would load before 02_noSocialization.
Developing, Testing, and Installing Mods
Normally, any Exception or Error when running the game will cause the game to shut down to prevent data corruption. When developing or installing mods, it can be beneficial to disable this, so we’ve added a Development branch to the game on steam. Note: performance will be worse and the game will continue after errors in this mode, so we don’t recommend using it for your normal playthrough.
In addition, this mode enables the debug menu which has lots of goodies for spawning and testing things in Noble Fates. Press F8 to enable the debug tool and use the tools within at your leisure. Note: some tools may break your game – they aren’t tested to the same level as the normal game.
This type of content and code extension of the game can be done without decompiling the game dll and extending the existing code – we’ll talk about how you could go about modifying existing code behaviors in a further article. We’ll also talk about the breadth of the game classes you can derive from, and how they work in another article.
Thanks for reading and happy modding!