House Dominae was built to be moddable by default, almost by necessity. In accordance with the game’s vision, I needed a way for creative players to extend whatever I would be able to accomplish on my own. It also needed to be simple enough to not require a degree in computer science.
XML-based content model
When the game starts, it loads all of its content from a folder containing XML-files, which are just regular text files you can open and view in any text editor. The majority of the game’s original content works the same way, so a ‘mod’ is simply a change or amendment to what’s already there. That being said, there’s of course a fully functional packaging system for mods so they can be enabled/disabled in the game and shared with other players.
A mod can be small enough to be a single text-file and even be embedded in a character file.
Definitions and rules
Rather than using scripts as a means to add functionality, there’s a framework based on definitions and rules. A definition could be an item, a trait or an activity. A rule is a conditional expression that states how or when an item, trait or activity can appropriately be used. Rules are generally made up of just words, which could refer to traits, status effects, flags or other rules.
The strength of this system is how flexible it is. A rule can be changed as part of a mod, opening up for interesting exceptions and quirks that would, by definition, be respected through-out the entire game. Activities work similarly, with rules determining who and when can perform them. The framework handles the rest.
This, combined with a limited set of commands for things like usable items, lets you do quite a lot without requiring any kind of advanced programming or scripting.
But also scripts (just in case)
In addition to this, I’ve decided to supports the LUA scripting language as well, in a limited capacity. You don’t have to use it. Rather, it’s an alternative way for modders who prefer to write code instead to do so.