Soil allows you to load multiple datasets to get content from. Defaults included in game installation are common and soil.
Common includes some default models used for editor, some default textures, etc., and is always loaded as a first dataset.
By default Soil is also loaded, which contains base game's data. You can remove Soil from list in game if you were to create a total conversion mod.
If any dataset contains same file, e.g. vr_frigate.ship, is in two datasets, the one further down the list will be used.
The exception for this rule are language files, which just add more items (or replace them) as they are loaded. Another exception are config files
found in root of each dataset (dataset, experience, scaffold, armor, gas). These are also loaded sequentially and overwrite values from previous configs.
Editor always saves all properties for each config, if you want to overwrite only e.g. experience gain modifier, you need to manually delete all other values in text editor
If a dataset overwrites some files from datasets from above in the list, it will be listed in tooltip in main menu -> dataset so conflicts are easier to identify.
Any dataset created in editor will have Soil as a default dependency. This causes it to be able to use assets from Soil dataset in editor, and it must
be placed in dataset list after Soil. You can add more dependencies by adding requiredDataset = name_of_dataset_folder
lines to dataset.config
in the root of your dataset, or remove dependency on Soil if it is not required (e.g. UI changes or total conversion)
All datasets will contain a full folder hierarchy when created, so it might be a bit confusing when working with something that editor doesn't cover.
This is to prevent unexpected behavior when game searches for data and would create missing folders.
For now, all mods will be located in AppData/Local/Nuclear_Fallow/Soil/mods
, or in mods folder in game folder if using portable.
Language, UI styling, dataset config, and probably some minor things (e.g. gas presets) are not covered by editor, so they need to be changed manually.
Either figure it out by browsing other datasets, or ask in discord. I will add it here later.
Some things that might be helpful for language/translations are in debug menu ctrl + alt + shift + F5
You can also set "variables" (though you should use it more like constants), by variable = stuff | Victory!
, then using it
in other language strings by KEY = Your result: $stuff$
. Useful for names or something.
Some things that might be helpful for UI styling:
- look into soil/data/common/textures/gui/_help.buttongroup
for reference
- ctrl + alt + shift + Home
reloads and refreshes UI styling (in some cases it might not work, so try resizing, see below)
- ctrl + alt + shift + [
and ctrl + alt + shift + ]
change UI scaling. In case refresh didn't work, this might help in case something was cached
For custom buttons, try to figure it out of buttons in common. But basically you supply images for various button states and positions for 9-slicing
If you find yourself in an unfortunate situation of needing to add custom ships to Soil, you need to import them from collada(dae) format.
Units in Soil are meters, pivot points are used as a place where turrets will aim, or it case of turrets, what will they rotate around.
Soil uses Z-up X-forward orientation. So front of a ship, turret, fighter should be looking in direction of X+ axis.
Ships should be split into parts representing subsystems and hardpoints. All meshes must be two-dimensional manifold watertight meshes, if you want to use debris generation in editor
by boolean operations from explosion configs (otherwise you can import debris that you created yourself in debris).
Editor will look for meshes in AppData/Local/Nuclear_Fallow/Soil/editor_data/meshes/{ship,turret,object,fighter}
depending on
what you're trying to load.
This is a very bare-bones intro to modding and will be expanded in the future. For any help with modding, please join the discord (link at bottom of page) and ask there (or write an email if you're not a discord person). I will try to reply in a reasonable time, and update this page with more info. You asking questions will help me to improve the game and modding process, so thank you in advance for asking.
Currently mods will have to be hosted somewhere and downloaded manually. If there is any easy integration with something I can do, please let me know. Getting this game on steam is somewhat planned, but I would also like to get it to more complete state (and maybe even a working multiplayer)