Since it has been relatively stable, I've just finished updating the default builds to 0.987b on all sites. The "test" links are no longer necessary, and have been removed for now. This updates the following builds:
- Flash version on the official site
- Downloadable versions on official site
- Steam default builds
- Desura client and stand-alone builds (pending approval from Desura)
- DRM-free downloads at Humble Bundle, ShinyLoot, and IndieGameStand
The changes included in 0.987b can be seen in this news item. The biggest feature is modding support!
Apart from build traffic control, today was spent working on plot and mod management.
The plot work continues on the next encounter, and I've given Harald the go-ahead and plans to start speccing that out now. It involves a new location, new clues, possibly new creatures, items, and even factions. Should be some fun stuff to discover, and I think it'll be worth the wait!
In the meantime, I've decided to make mod-management my top priority. As new builds get released, all modders' work is going to get clobbered by my data overwriting theirs. What's more, when two modders use the same IDs for data, their data will overwrite or be overwritten by the other mod. While I could ask that modders re-index their mods every time, this is far from ideal.
In order to give the modding community a fighting chance, I want to see if I can make mods play nicer with each other, and be shielded from the blast of new IDs in each new build.
I've had some really fruitful discussions with players about different ways to handle this, so I think I can see a way forward. It looks something like this:
- All game data is referenced by ID. Usually, this is a number, like ID=132, or ID=547. Items are referred to by ID=12.7 or 104.0, etc.
- A new ID system will look like the above, except it'll have a new prefix. E.g. ID=9:132, ID=0:547, and ID=4:12.7
- The prefix will likely be a number, or may be a string (i.e. string of letters/numbers), and refers to what mod the data can be found in.
- If no prefix is specified (e.g. ID=547), the game will assume the data is base game data.
- There will probably need to be a new table some place that lists which ID prefix corresponds to which file. E.g. 1=TommysMod.xml. Or maybe folder names, so TommysMod is just a subfolder that contains its own neogame.xml.
- There will need to be some way to specify data that overrides base game data (TBD).
- There will need to be some way to specify loading order, so modders and players can control which mod overrides the rest.
The last two points are a bit tricky, and I'm still looking into it. First, though, I'm just going to see if I can make the game load different data sets and merge them at runtime, rather than requiring the data merged in the XML (as it is now).
Modding seems to have really taken on a life of it's own, and I think it'll do amazing things for making the game not only a tool for me to share my ideas, but also a tool for players to share stories and worlds with each other. So I want to make sure it has a healthy foundation upon which to build.
Hopefully, we'll make that dream come true! Have a good night, all!