Mod Versioning

The integration process continues. This week I mostly worked on the integration of event mods and event generators into the simulation. For that I tried to repurpose a great deal of the code I created for discovery mods in 0.3.3. There are some major differences in implementation though. So I had to actually go back and rewrite a small part of the discovery code to better match the design goals of the new mod framework (a more in-depth rewrite will come later).

One of the major issues I have yet to tackle is that of support for mods in version 0.3.3. There are at least a few mods that players have already contributed to the game and I don't want to make them completely unusable for version 0.3.4. So I want the game to be able to load both 0.3.3 and 0.3.4 mods. I want to give game modders time to do a proper transition while allowing users of older mods a chance to continue playing with them, though my intention is not to support older version mods forever.

Currently I have implemented a simple versioning system that will detect the target version for a mod. This system will expect mods to have a target version (0.3.4 for instance). If none is found, the game will assume that the mod is targeted for version 0.3.3 which was the first to support mods. The game will use different mod loading paths for each version, and I have made sure so far that code intended to load older mods works alongside newer code. In any case, my hope is that I don't have to do too much work to support 0.3.3. If at some point it becomes too much of a hassle then I will discontinue support for older mods as I don't want to spend time unnecessarily trying keep deprecated code alive.

Next week I'll finish up event mod integration which is essential for the continuing integration of decision mods. If everything goes right, I'll be able to finish decision mod integration a week after that and start running tests.