Modding System

Play with Mods


Introduction

Daggerfall Unity includes modding support. A mod for Daggerfall Unity has .dfmod extension and it can contain different kinds of assets, including C# scripts. Mods can interact directly with the core game and affects many aspects of the game, as well as add new features on top of Unity and Daggerfall Tools for Unity.

Mods benefit of an integrated replacement framework which provide artists a code-free platform for graphic improvements of the original Daggerfall; this avoid any incompatibility and make use of the load order to smoothly handle duplicates. Certain assets, such as textures, sounds and music and even new quest files, can also be imported directly from folders on disk as loose files.

Finally, several mods created for the dos game are still functional with Daggerfall Unity since the original assets are accessed; other mods may be not compatible or are simply made obsolete.

Security considerations

Our stance on security is the same as Cities Skylines:

The code in Mods for Cities: Skylines is not executed in a sandbox.
While we trust the gaming community to know how to behave and not upload malicious mods that will intentionally cause damage to users, what is uploaded on the Workshop cannot be controlled.
Like with any files acquired from the internet, caution is recommended when something looks very suspicious.

There is a button named Extract Text in game, available from the load order window, which can export C# scripts to disk as text files for review. Overall, we suggest to take the same precautions with mods as any other download from the Internet. If you prefer, you can always disable mod support from settings, or simply not download any mods in the first place.

Installation

Mods can be placed inside StreamingAssets/Mods or any subfolder inside this one. Loose files are placed inside other specific folders inside StreamingAssets; always refers to ReadMe and developers for any additional indication.

StreamingAssets folder is located inside DaggerfallUnity_Data on Windows and Linux, while on Mac is found by right-clicking the player and selecting “show package contents”; the folder is inside Contents\Resources\Data.

On Windows, mods can also be installed with Vortex Mod Manager from NexusMods if provided in a suitable format.

Configuration

The load order defines the orders in which mods are executed; if two (or more) mods contain the same asset, the one in the lower position will be used. If multiple mods provides the same features, the load order may help to prevent incompatibilities but you should always referes to mod developers.

More advanced mods may provide support for user settings, as well as presets with predefined values for all or some options. Settings are configurable from an in game UI; additionally new presets can be automatically created from current settings to be shared with the community or simply to store and retrieve a configuration locally.

Note: when upgrading, local settings are reverted to default values if incompatible with the new version.

Share presets

The presets creator window has a button labelled Export. When you click on it the selected preset is exported to %PersistentDataPath%/Mods/ExportedPresets/%ModFileName% (i.e.  C:/Users/ExampleUserName/AppData/Local/Daggerfall Workshop/Daggerfall Unity/Mods/ExportedPresets/ExampleModName/ExamplePresetName.json).

Presets can be imported from StreamingAssets/Presets/%ModFileName%/ (or %ModRoot%/Assets/Presets/%ModFileName%/ from a mod). For example StreamingAssets/Presets/ExampleMod/ExamplePreset.json.

Released Mods

Develop new Mods


Scripting

A mod for Daggerfall Unity is a Unity assetbundle with .dfmod extension, containing C# scripts compiled at runtime or a precompiled .dll. Read the following pages for more informations about C# scripting.

Import Assets

There are two ways for a mod to provide assets without writing code:

  • Asset Bundle: A single package with multiple assets, retrieved with load order.
  • Loose Files: Individual asset files loaded from disk that override all mods. Not all kinds of asset are supported.

Main Assets

Additional Resources

Additional resources usable in game can also be provided via loose files.

Write Quests

Quests for Daggerfall Unity are written in a simple scripting language, based on Donald Tipton’s TEMPLATE v1.11, which is compiled Just In Time and so can be written and tested even while the game is running. A quest debugger and a quest editor are also available.

Localization

Most of the text used for the UI is drawn directly on background images and can be replaced as explained above. Other strings can be translated using the localization system. Follow development on the forums linked below for more informations.

Release Mods

Once your mod is ready, you can release it to the public. Most mods are hosted on Nexus Mods. If you want to support Vortex mod manager, pack your compressed archive so it can be extracted directly inside StreamingAssets folder; as a readme, put a text file with the same name of your mod inside Docs folder. If you want to use Nexus website but not their mod manager, please enable the option