Closed Coolthulhu closed 7 years ago
One massive win could be versioning of the core data. No nasty hacks. Old games use their legacy version whereas new versions can use an updated non-backwards compatible variant.
I'm not against the concept, but your examples are overreaching a bit.
Or even just Generic Guns, without it breaking all the time.
I don't see how this would be different, generic guns just blacklists everything and replaces it.
Whitelist mods, because blacklist mods quickly lose sync with the core game
I'm pretty sure this already works, it's just that most whitelist mods would be super long.
One massive win could be versioning of the core data. No nasty hacks. Old games use their legacy version whereas new versions can use an updated non-backwards compatible variant.
We can do inline versioning of the core data, and achieve this without this change.
We have significant progress in this with #19260 merged.
Is anyone interested in completing this project as part of 0.E?
This project was backwards from the start, what needs to happen is someone deciding to make a total conversion mod and using that project to drive further modularization of the code. If there is no total conversion mod, theres no need to do a project like this. Also with no mod as a goal, it's pretty much impossible to call something like this "done".
DDA is quite mature now and slowly reaching the point where "engine" could be separated from "game". Special cases are being removed or moved into jsonized "superclasses", hacks like ID checks are mostly phased out (some legacy ones here and there are still there), most new stuff added is generic in nature rather than hardcoded, improved finalization removes a class of otherwise required special cases and improved verification catches missing entries on load.
Instead of having the core game with mods on top, the system could consider the core game a mod itself. Or even better: a set of mods like Core Guns, Core Zombies, Core Locations etc.
The code part would stay mostly unchanged, it's just that some edge cases would need to be addressed and special cases would need to be explicitly checked on verification (for example, existence of long rope item, which is hardcoded to drop from tied critters).
Benefits would be: