October was an eventful month for us… because we mostly worked on the event system. (See what I did there?)
Here’s how events work. Every ship you encounter is associated with an event. Some events feature a lone vessel, but they can also involve different factions and multiple ships.
To start an event, you hail it with one of your ships. Which ship you decide to hail with is important as the ship you use to hail is at risk if something goes wrong…
With each event you are presented with a situation that requires your immediate response; the game pauses while you decide, but no other actions can be taken. You’ll always have the option to ignore a situation, but once you do there is no turning back and you have to accept the consequences.
Some actions are purely narrative, and the consequences of your action will play out right after you decide what to do. Other actions require you to give up resources. But my favorite choices lead to missions.
Missions require you to perform a specific action within a certain amount of time. For example, you must disable or destroy a particular ship, or escort a ship to a destination. Success or failure both have their consequences, and the clock begins ticking immediately after you accept.
The cool thing about events is that you can use any of your ships to complete them. So if you need to disable a ship and you didn’t hail with a warship, you can task a warship in your fleet with that mission.
Success in events brings rewards in the form of improved faction relations, resources, weapons, weapon plans, and even ships. Failure can cost you any of those.
Special actions also appear in some events — if you have the right kind of ship in your fleet, or a faction leader with a particular power. For example, if you have a ship capable of repair and the event features a disabled or damaged ship, you might be given a mission that requires you to repair the ship.
And of course missions carry some risk to the ship carrying them out… meaning you can lose your repair ship forever if you take on a sketchy mission or leave it unprotected.
I’m pretty excited about all the functionality we have in events. For example, we’re able to easily create ship formations. Choices can also branch and recurse. And we can easily chain together multiple results for an event.
I’m also quite happy to say that the core programming for everything I described above was completed in October. The user interface is also implemented except for some bits of polish here and there. Plenty of additional work will be done on the code, but the event system should be code complete by the end of the year.
Of course, all the events still need to be written, and that’s going to be a massive ongoing effort. And we’re certain to need to tweak things as we go forward – for example we’ve already adjusted the timing for how quickly an enemy would return fire if you attacked them immediately on exiting an event.
One more detail I want to announce is about the data format for events: we’re using JSON, which is a text-based method of storing data. What that means is that once we release the game, anyone should be able to create events for XO, just by editing the JSON file! And just to be clear, we’re not asking for help creating events – this is just a bonus.
Most of my time in October was spent writing test events, testing the event system, and fleshing out the UI for the event system. I also worked on some more animations for actions in the game, and took a few hours to migrate our website so it could better handle traffic.
We did a few more things in October outside of events. We made some adjustments to how shields work, so overlapping shields now work as you would expect. Some edge cases with shields and formations were addressed as well.
We added additional admin functions that allow us to test events easier.
The water riot dialog now appears on all screens, forcing you to immediately deal with a water crisis (instead of being able to hide out in the starmap and jump away).
September’s code refactor required the usual bug hunting, and several issues related to lasers were tracked down and dispatched.
So looking back, October was quite full. We have a lot more work to do, but we’re continuing to make excellent progress on major pieces of functionality. I feel great about what we were able to do last month and November has been just as rewarding so far. I can hardly wait to tell you all about it in the next update! At Thanksgiving I gave special thanks at my family dinner table for all of the support and patience all of you backers have shown towards the project. I wish you all a healthy, warm and festive holiday season!