Recently I've been trying to create a few simple mods for the game, primarily for my own use, and I've been really surprised just how limited the modding system is. I've always tinkered with the games I play and over the years have enjoyed making small tweaks and occasionally large overhauls, so I like to think I've got some idea what's going on when it comes to modding.
It seems to me that a lot of the limitations stem from the way the game files are structured - everything is grouped into list files/spritebanks. This is what's responsible for the hard limit on how many new sprites a mod can add (no more than 2048x2048px of sprites for all running mods) and also causes some things (such as UI elements) to only be able to be updated by one running mod. I believe the way forward would be to split everything out into its own file - one txt file contains the details of one object, and one png file contains one sprite. So this:
Code: Select all
main.dat
-/data/
--/materials.txt
--/objects.png
Would become this:
Code: Select all
main.dat
-/objects/
--/RoadGate/
---/object.txt
---/sprite.png
--/Door/
---/object.txt
---/sprite.png
-/materials/
--/Gravel/
---/material.txt
---/sprite.png
(etc)
The sprite definition within objects and materials would then become a path to the relevant file. Define rooms like this too and suddenly we can have multiple mods adding room icons without breaking each other. I know this looks unwieldy, but in practice breaking everything down like this makes it so much easier to find exactly what you are looking for and make changes to the right things.
I'm aware this is quite a large scale change and would almost certainly require a complete re-write of the way the game loads pretty much all its data files, but I really think that a strong modding community is one of the best ways to prolong the life of a game (Just look at KSP) and in order to have that you've got to open up the game files as much as you can.
Probably just a pipe-dream, but keen to hear what others think about this. Who knows, maybe the upcoming modding API changes will solve all my problems and this will all be redundant!