Archive of dev-blog

    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.

    I've just finished week two of development for Starlight Revolution. This week, my main focus was on the AI-driven narrative aspect of the game.

    What do I mean by "AI-driven narrative"? Well, one of my goals with Starlight is to have the player feel like they're a part of a living universe, one which not only reacts to their actions, but also creates conflicts and interesting situations for players to react to themselves. The way I'm looking to achieve that is by using an AI to drive a procedurally generated plot.

    So far, I've only written the framework for that feature. Right now, the system can load plotlets from a file and fill out the plot's roles with characters that closestly match a given set of criteria. So, for example, if a plot requires an insectoid villain, it can search all the existing characters for one that has the "insectoid" tag. If it doesn't find one, it will create one instead.

    I am hoping that by carefully using tags and queries, the system will be able to string together plots in a manner that makes sense to the player. Because the system tries to use the best matching existing character, it's possible for characters to have their own interesting story arcs. You might anger a priest from Solatab III at the start of your game, only to find later that they've left their order and devoted their life to making you miserable. Further encounters could involve ambushes, hired thugs, and even the priest starting a criminal empire.

    Another thing I did this week was to continue my survey of spaceship designs. I focused primarily on the look and feel of spaceship engines. This is an interesting area, because we really have no ideas about what an engine capable of FTL travel would look like-- but even so, I've isolated some common shapes and will be playing with them in the future.

    Finally, this week I also setup a mailing list, which you can subscribe to here. I'll be using this list to send out monthly progress emails, so if you're interested please sign up. Also, If you've got comments or questions, or just want to chat, drop me a line on twitter @JeckDev.

    The first week is officially over. As you can see in this animated gif of my whiteboard, I've gotten a lot done this week.

    There were a few major things that I focused on, but the most visible one would be that I redesigned this website. The new look is cleaner, clearer, and (I think) much more professional. I also settled on an initial logo design (at least, the iconography- the type is still giving me trouble) for Starlight Revolution, which you can see below.

    Starlight Revolution Logo

    Another artistic task I focused on this week was a survey of various spaceship designs, with a close focus on wings and core shapes. Doing this has allowed me to identify some key aspects of ship design that will result in ships that look interesting and functional. That last bit is important-- one of the things I learned this week was that there are some clear design elements that help to convey a spaceship's function and scale, and taking advantage of these elements will improve the quality of my own work.

    On the code side of things, I spent some time prototyping a Faction/NPC system. One of my goals with Starlight Revolution is to have a living universe, and part of my effort to acchieve that goal is to develop a system where NPCs interact with eachother in an organic manner. I'm not done with this yet, but the initial foray into this area shows promise.

    That's what I did this week. If you're interested, drop me a line on twitter @JeckDev.