Thunder Moon is designed from the ground up to be a moddable game. What players will recognize as the game itself is in fact an assembly which implements a particular "IMod" interface. These assemblies are generally the output of a C# project. The game engine provides a wrapper that manages the lifespan of Mods and provides a large number of APIs related to making the actual game, such as asset management, animation, audio and so forth.
With the Windows version of Thunder Moon, users can create their own Mods. The Mod assemblies are discovered when the main engine scans the "Mods" folder and reflection is used on each assembly found to look for any valid IMod types. When they are found, they are put in a list which is made available to the player when starting a new game. For the initial release of Thunder Moon, I plan on having at least two different Mods in the list - story mode and exploration mode.
I have taken great effort to document the API, mostly through the use of XML metadata embedded in the source code and extracted by the Sandcastle help file tool. As always seems to be the case, the docs could be improved further but it's at least on the right track with the tools already set up to automate much of the process.