The major win this week was regarding making the game more extensible. I've built a system for asset loading that allows multiple variations of models, meshes, and sounds to be loaded and used for the same purpose. I've always planned to have Starlight Revolution be very mod friendly, and this was the first major step in that direction.
It works by seperating the internal asset id (which no one but the game engine sees) and the way assets are referenced in other files. The internal id is unique, but the way we reference an asset doesn't have to be. For example, I've got several asteroid models that I've assigned to the group "core.props.asteroid". If I want to use an asteroid model somewhere, I only use that reference-- the game engine picks one of the asteroid models and uses it. Assets can be part of multiple groups, which means that instead of talking about what specific asset I want to use, I can instead focus on what way I want to use them, and let the engine select one for me.
So how does this help modding? Well, it makes adding new content simple. Right now I'm only using this for models, textures, and sounds, but eventually almost everything the game loads will run through this system. So if you want to add a new type of spaceship, for example, you can just add it to the proper asset group and it'll automatically be handled in the same way as all the existing spaceship types. New content can be folded seemlessly into the rest with very little effort.
Next week I'll be investigating how I can apply this idea to the procedural narrative aspects of the game. If you'd like more info on what I'm doing, feel free to drop me a line on twitter @JeckDev or leave a comment below. You can also subscribe to the mailing list for email updates on what I'm doing. I'll be sending out the first monthly newsletter at the end of next week, so if you're interested you'll definitely want to subscribe.