(Sorry, no SCP – CB updates yet, you’ll still have to wait some more time for SCP-966)
I’ve been trying to make Subsurface as easy to mod as possible. Just like in SCP-CB, all the assets are uncompressed and can be easily edited by anyone. All the characters, sprites, items and things like that are configured in .XML files that can likewise be edited.
But what happens if you join some server with your modified files, or if the server is running a modified version of the game? I solved this by using a system that I call “content packages” (subject to change if anyone comes up with a better name).
The content packages are basically just lists of files the player wants to use. The game calculates an MD5 hash for each content package based on the selected files, and this hash can be compared between the servers and clients to figure out whether the files match.
Making sure the files match could’ve been done without this kind of system, just by comparing some specific files and the contents of some specific folders, but that would’ve made switching between different mods and versions a huge pain. Changed a couple of values in reactor.xml while playing the single player mode? Downloaded some mod which replaced some files in the game folder? Ok, you won’t be joining any multiplayer game before all the files are back the way they were.
Keeping the original files in tact is much easier with the content packages: if you want to do changes to a couple of files, you can make copies of them, leave the old ones alone and make a content package that’s using your new files instead of the old ones. Downloading and switching between mods should also be much easier: the maker of the mod can put all the necessary files in some separate folder without the need to overwrite any of the original game files, and create a content package that determines which files should be replaced with the modded ones.
Also, the first pre-alpha version of Subsurface will be out in ~2 weeks!