2019 July Development Update

On July 12th we went alpha!  Huge thanks to our alpha community for providing excellent bug reports!  Alphas, most of this update is a recap for you; new information is at the end.  If you’re an alpha-level backer and haven’t received your key, check your spam folder. 

Early game fleet building
Early game fleet building

So far the alpha has been a tremendous success.  The feedback has been excellent so far!

Our development pace has not slowed; we’ve already released six updates to our alpha backers.

Here’s what we accomplished in July:


Most of Heru’s time outside of bug fixing went into implementing the end game.  I won’t be giving out any spoilers except to say that you’ll need to use everything you learned to survive the end game.  We will be working on this for some time, so I don’t anticipate releasing it until well into beta.

We put a lot of effort into adding instrumentation to the game to help us identify bugs.  Heru also added some extra in-game tools for formation view debugging.  Over the month we improved these systems multiple times.  We also improved our build tracking and bug handling internally.  We’re getting closer to a fully automated system.

Old save games will no longer load, preventing a relapse of old bugs that were tied to save games.

Abandoned ships in your fleet can no longer be added to a formation.  Similarly, when you abandon a ship it is removed from a formation.

Seized, disabled ships can no longer be added to a formation.

You can no longer save after a game has ended.

Bad things happen when you lose faction leaders.  I promise even worse things will happen soon.

Disabled ships now always return a message when hailed.

Repaired ships now move away once repair is successful and the repair sound effect also plays.

Faction leader state was added to save games to avoid repeats of faction leader announcements.

A new event action called killCrew was added.  Perhaps you can guess what it does?

Gunboats now respond to the Intimidate command, but not the way you might expect.

Heru made it easier and less likely to cause hair-pulling issues with Unity when we update our build.

Faction Leaders now announce themselves, which is very good because prior to that you’d have no way of knowing one was in your fleet.  This is kind of a big deal and a fair amount of work went into this.

Additional logic was added to ensure events that are supposed to end, actually end.

Dropping ships from a water riot now properly penalizes your relationship.

The starmap now shows when a destination has fallen under Harvester control.

Scout's away
Scout’s away

User Interface

Several camera adjustments were made at game start, on resuming a save game, and for the starmap to tactical transition.

The escape key now works as expected, closing windows when they are up, and bringing up the main menu when there are no closable windows.

Resources and other UI elements in the top of the display should theoretically play better together.

Some minor improvements to UI and events were made.

Selecting ships in the fleet list now works as expected: multi-select requires a Shift+Click action.

Trade events now pop out the hailing ship’s info to better facilitate trading.

I made some additional tweaks to the visual bloom effect.

Adjustments were made to the formatting of many dialog boxes.

Ship join/leave sounds were made right.

The hail message was briefly showing the internal ship name instead of the dictionary name.

Mouse icons were added to mouse tooltips where they were needed.

Harvested ships now turn purple and freeze in place.

Timed mission text now change color when time is at 50% and 25%.

The water UI was adjusted to reflect reality not as I see it, but as it is.

Quite a number of visual improvements were made to the UI that add consistency and improve readability.

A frigate sustaining massive damage
A frigate sustaining massive damage

3D Modeling

I improved the hail animation, making it more visible and hail-esque.

The retreat animation needed a little tweaking, so I did that.

Some minor fixes were made to character accessories and models.

I moved the protect animation down so it fully surrounds the target ship.  I’m working on something similar for attack.


The universe size was increased about 60% bringing into play the full range of planetary types.  Planet density is greater on the starmap now as a result.

A couple of options were added to some events.

Some minor fixes were made to events.

Re-entering Harvested space was made a lot more dangerous.  And by a lot, I mean a whole lot.

Several new mid/late game events was added, more to come there.

A lot of minor event balancing was done.  Many many little important tweaks.

A fair amount of work went into updating the events to support the new faction leader functionality.

Faction leaders now appear a little later in the game.

I added a huge amount of written content like the messages when scouts are left behind, and what captains say to you when you cut them from the fleet.

I created a number of events to fill in gaps where you could jump early game and not have an event spawn.

Breaking open a cache
Breaking open a cache


Heru fixed the notorious freeze bug, or at least one variation of it.  It had to do with adding a ship to your formation, moving that ship in the formation, and then losing that ship.  Huge thank you to the alphas for helping us track down this bug and many others!

Formations briefly could not be saved, and that was also fixed.

A smaller but annoying visual bug with the escape key and visual but not actual deselection was fixed.

A bug with the logic on The Water Situation was hopefully corrected.  Repeating text was also removed.

Some small grammatical and logical errors were fixed.  Some (more) minor grammar and spelling mistakes were corrected.

A bug where a ship would be selected but show blue after jumping was fixed.

Dialogs in the game should be less likely to fight with one another.

Heru fixed a bug related to enemy ship positioning.

The jump button now works even if you accidentally click on the plotting course timer now.

Ships in your fleet will no longer attack a once-hostile ship that you have re-crewed and/or repaired.

Several errors regarding saved games were fixed.

Shields no longer remain behind when you send a shielded ship scouting.

If you restart a game while a water riot is in progress the water riot is now cleared.

A different freeze bug that had to do with event timers was fixed.

Heru fixed a bug where hostile shieldships were not doing shield ramming attacks.

An issue where a save game could throw an error was fixed.

Evacuating a fully-crewed shieldship to a gatherer no longer throws an error, and the abandoned shieldship no longer tries to return on autopilot to its formation.

Some more minor grammatical errors were fixed.

Certain events such as The Ruined no longer cause a freeze if preceded by a water riot.

Mouse pointer ‘nope’ properly resets to mouse pointer ‘yup’ after use when collision boxes overlap.

An error on jump was fixed.

A bug related to scanning a ship dismissed from your fleet was fixed.

Heru fixed an error with a new event.

Starting a new game briefly threw an error, but no more.

Some window Zfights were broken up.

I spent some time debugging the logic in an event called The Water Situation.

Some abandoned ship events needed tweaking to make sure they gave the right results.

Our water riot timer briefly disappeared.

A bug related to formation following was fixed.

A bug that caused the scan animation to play when an attack was ordered was fixed.

The dreaded squashed text bug reappeared and was itself squashed.

A sound effect vanished, only to be heroically restored again.  This and a few other sound effect issues had to be taken care of prior to alpha.

One of those issues meant I had to track down a problem with our sound engine that was fixed when a certain value was raised to a sane level.

A minor issue with the water UI and Windows was taken care of.

A small bug with multi-select was fixed.

A few ‘invisible planet’ errors were made visible and fixed.

A case where the battleship attacked itself was amusingly closed.

A shipboard job, Navigation Officer, needed to be tweaked for it to show up.

Jumping away with two scouts out now gives warnings for both.

Issuing an attack order was setting ROE to defend instead of weapons free.

Some bugs with crewing and equipping weapons were fixed.

Some events were cleaned up that required ore to complete.

The abort action had an edge case where it wouldn’t work that has been fixed.

Multiple bugs were fixed related to getters and ore collection.

The fixer now properly shows its abilities.

Issuing a protect order no longer causes some ships to run away.

An edge case where the UI would show +1 water but throw a water riot if crew was added has been resolved.

The equip tooltip was added back to trade.

Ships no longer appear briefly in the wrong place when spawning in.

I patched a few minor things in events, like clearing timers that shouldn’t be visible.

Diagonal mouse movement over the ship info panel is more forgiving for displaying and selecting ships.

The Harvester taker now sits properly on the carrier.

Attack directly was removed as a contextual option as it didn’t make sense any more.

Plotting a course
Plotting a course


Over half of my time this month has gone into preparing for and managing alpha.

I set up and made tweaks to our new private alpha Discord server, wrote this and all the alpha updates, sent alpha keys and all the updates, read all the bug reports, haunted the Discord server, replied to emails/chats, and did a lot of bug replication work from the incoming alpha bug reports.  Whew!

I also I did a lot of fixing up of our website, de-crufting and setting links to be correct.

I made sure our email server played well with others, setting up DKIM and other goodies.

Our summer intern Glen has been playtesting daily alpha builds, checking for showstopper bugs before updating Steam.

Alexander added a bot to our Discord server that allows us to accept game suggestions and do polling.

Lastly, I wrote and tweaked a script to send out alpha keys and alpha updates.  I’ll be using the same system for beta.

Beta: What’s Remaining

Bugs: as of August 8th we have less than 40 known bugs, all of which are minor annoyances.  Of course, there are certain to be bugs we haven’t found yet.

UI: There are dozens of UI improvements that need to be made.  These range from hotkeys to critical visual improvements.

Events: I have quite a number of late game events that I need to write and test, most of these revolve around inter-factional intrigue.  I have a long list of adjustments and tweaks that I may make to existing events before beta, but at the moment these are on hold.

End game: functionality is complete, but it will take some time to get the balance right, and we may need to add additional functionality to make the experience worthy.

We’ll need to get most or all of the above done before beta.  

There is no beta date yet.  Beta will absolutely be this year, and we will absolutely, positively release XO on Steam in 2019.  We are considering Steam early access, because our wishlist is very large and I’d like to be able to keep improving the game even as people play it.

Although we’re not yet ready for native Linux and Mac, XO plays quite well on Linux using Steam’s Proton!  Our goal is full native Mac/Linux playability, but that work will come later.

I am massively grateful for all the testing, bug reporting and suggestions from our alpha community!  It feels great to have people playing XO, and I look forward to getting to beta and release as soon as we can without making compromises.