For Cantata, I’m really interested in trying to meet modders where they’re at, and not be too restrictive (or perscriptive) with how they go about modding the game.
I can say right now this is how basic things break down w/r/t modding:
In Game Only:
- Actually “building” the map - ie. placing terrains, units, etc. and exporting a .cscenario file
Possible to be out of game:
- Creating new Interactables
- Creating new Terrains
The final result of most of these is basically just a .json file and a .png (scenario files don’t have a .png), so people could easily crack open a scenario file and edit it. I’m working on my end to make sure I basically validate any scenarios that have been added to the mod directory, to make sure they work in the game. I can think of a few ways that you could break the loading, but what that mostly would result in is a map that doesn’t look right so I don’t think people will necessarily do this.
That said, to your question from here, right now mods will have a single directory structure that sits inside Unity’s “StreamingAssets” folder. This is directly accessible by all users on all platforms, so you could easily place mods together.
I’m very interested in the idea of atomic modding, and Cantata supports that to a degree. Nothing yet about one terrain from one mod makes it incompatible with a terrain from another mod, nor are two interactables necessarily incompatible. This means that a given scenario can hold terrains and interactables from different mods together.
I have a bigger idea about a “Ruleset”, which basically acts as a whitelist for Interactables and Terrains, that way modders (and me) are able to enforce a degree of constancy in the game.
What do you both think about that? What kind of interface for modding would you want to see in a game? Is it better to have open file formats, or should files be binary instead?