Some time ago I loosely implemented a very simple modding system into Eden, then the following day I went nuts with the idea, I’ll explain….
The game is data driven with information about all the interesting and relevant things within the game ultimately being loaded from little files that describe all of those interesting things. Not everything about a thing is able to be modded, but over time, my intention is to expose more and more features and functionality to external data files.
Unsurprisingly, these data files are composed of a bunch of JSON describing the nuts and bolts of the things in the game. I bring this up because usually, nobody wants to hand-edit JSON if they don’t have to, sure it’s fine and actually somewhat fun when you have some simple data, but once you get into the realm of dozens, hundreds or thousands of data elements, manual editing is no longer reasonable. This is why I got ambitious (or crazy) and just went ahead and implemented a suite of in-game data editing screens using the more and more outstanding GeonBit.UI system for Monogame.
To top that off, the game now also support hot-swapping of data files. That means that as the user creates new game entities or edits existing ones, they can reload the data files while the game is running and see those changes immediately. That was actually the primary purpose of all this modding stuff to begin with; I built it purely for my development needs for increased speed in developing new game entities as well as testing. Then I figured, why stop there, people love mods, I love mods and mods ultimately extend the life of the game, the game might as well officially support, endorse and encourage modding, so now it does 🙂
The player/developer now has the ability to modify (add/edit/delete) the following game entities:
- Creatures & Plants
- Buildings & Structures
- Items & Weapons
- Crafting Blueprints
- World Details
Over time I’m sure more will be added as the need arises although the above entities compose the greater part of the game as it stands today. What follows are a selection of the screens involved in modding: