Alpha imminent and 2019 June Development Recap

user avatar

If you are an alpha Kickstarter backer, you already know we are about to go alpha!  There’s a good chance we will release alpha tonight or tomorrow!

The game is now functionally complete; finishing the end game, balancing, bug fixing, and polishing the user interface are all that remain!

Read on for our development update.

Holding off the bad guys from two sides
Holding off the bad guys from two sides

Functionality/Optimization

Heru experimented with antialiasing and bloom, making substantive improvements to our shader to speed things up.  Afterwards I tweaked our new bloom settings.  A good amount of time last month was spent on this.  A tweak was made to the galactic map, and we have properly working quality settings that speed the game up (at a visual cost) on slower machines.  We tested different planet models and made some adjustments there.  At this point we’re finished with optimization, or more accurately since you can optimize forever, the game is fast enough right now.  We will reassess later in alpha if more optimization is required.

I adjusted the game to set graphics to our current maximum as a default; they can be manually adjusted down.  We’ll actually have options to improve the visuals on top of that shortly after alpha.

The protect action now only shows on warships that have a weapon equipped.

You can now crew an abandoned ship with the operating crew from another (faction-compatible) ship.

As part of the optimization process the way planets were rendered was adjusted, resulting in a speed boost.

If the player loses crew for the following reasons they incur a -1 relationship penalty: leaving behind a ship when jumping, jumping before a scout returns, when a scout ship is destroyed trying to scout, and when a ship is destroyed in battle.

I added Google analytics to our main site and steam page.

I completed the teaser trailer for XO which I included in last month’s update.

Issuing the hold fire command now cancels a protect order in action, since you can’t protect anything if you can’t shoot!

The player’s character accessories are no longer duplicated, which cuts down on confusion as to who is talking.

Relationships are now constrained to +2/-2, although the UI does not yet reflect this.  And… it’s just possible that worse things will happen when you are at -2 with a faction than they do at -1.

When a trade dialog is shown, at least one of the weapons must always be a laser or mining laser.

Ships that are dismissed from the fleet how show a specific dialog message based on faction and their current relationship state.

When a player submits feedback via the in-game form, we now automatically attach their save game as well as any bugs seen by the game and some information about events the player had running.

Fleet events were added to our analytics, which it turns out is going to be the most effective way for tracking how well people progress through the game.

Heru improved the getShip action to include an originalId field, which allows me to reference a specific ship in events, for example the ship the player used to hail, or the battleship.

A delete saved game option is now included as part of the main menu.

To speed testing we save games locally to a file.  This will not be included in the shipped game.

Experimental context action tooltips
Experimental context action tooltips

User Interface

Heru fixed a long-standing annoyance with our UI that required a lot of dexterity to select a ship with the mouse if it was far away.  It’s now quite easy to select distant ships, even when they are close together.

Moving the mouse to any of the screen edges now rotates the camera in that direction.  We then added a boundary so you didn’t have to go all the way to the edge of the screen.  A little more fine tuning may be needed on this, but this will not hold up alpha.

Hovering a starmap destination now plays a sound.

When the player runs out of ore, a sound is now played.

Ships now play a ‘jump in’ sound when they arrive (except Harvester fighters).

A sound is now played when a ship joins your fleet.

A skip sound now plays when the player hits skip.

Using the berzerk ROE now triggers a sound.

Losing a scout now plays a sound.

Laying a minefield now plays a sound.

When a ship is disabled a specific sound is now played.

Ships that jump in and jump out now play appropriate sounds.

Water received by the player triggers a sound now.

When the player’s resource capacity increases or decreases, sounds are played.  All sounds are now in the game.  There may be some adjustments to the sound effects, but we are finished implementing them.

Stations no longer show their operating crew.  This is for internal reasons but was causing confusion; in short we add crew to events where the player can perform rescues.

Ships are less likely to briefly appear on the screen in the wrong position when they jump in.  This needs a little more work, but it is a big improvement and was causing confusion.

When dismissing a ship from your fleet due to a water riot, the ship name is now shown in the dialog.

When a scout is lost a dialog appropriate to that specific ship type is displayed.

Scan now auto-pauses while the ship scan dialog is up.

The abandoning a scout ship warning dialog also now auto-pauses.

In order to accommodate our improved fuel/water UI, the ore resource was reduced to a numeric-only display.

The water resource bar now scales horizontally to the right up to maximum water capacity, moving the ore display over as additional water resources are added to the fleet.

At long last we now display the number of crew you can bring into your fleet: it sits right above the water resource bar.

The fuel bar now scales horizontally to the left as fuel capacity is added to the fleet, again up to fleet fuel max capacity.

Heru added explanatory tooltips to contextual actions.  Then I added text for all of the contextual actions a player could take.  This is experimental.

Selecting another ship using the scroll wheel closes the contextual action menu.

The escape key closes all dialogs, except those that require a choice.

The comms in progress message now pulses when the player is in starmap/galactic during an active dialog.  The plot course action is also hidden during this time.

The jump button is now pulsed when the player can jump.  This helps draw attention to it for new players.

I added text to the galactic map telling the player how to rotate it.

I added the correct icon to the galactic map key for the player’s current location.

When the player receives an updated mission an animation plays below the timer bar, drawing attention to it.  This also plays when the timer bar is about halfway expired, and when it is three quarters expired.  They’re a lot harder to miss now.

Multislect only works when the shift key is held down.  It was just frustrating people.

The jump transition summary dialog was removed.  It was on the screen too quickly and didn’t add any real meaningful information.

I created the mockup for our graphics setting dialog, for the final water riot UI, and some other elements – these will be implemented after we start alpha.

Trading with a Rover
Trading with a Rover

3D Modeling

I finished the last two faction accessories: male Irenic hairstyles and female Corp hairstyles.  I kind of love doing these so I held it out as a cookie for myself.

I made small adjustments to the Pact epaulets, making sure they sat right on all character’s shoulders.

One of the male heads needed to have its head adjusted, so I did that.

And I fixed some issues with the way female Empire collars were sitting.

I created an animation for the berzerk ROE and for the destroy contextual action.

I fixed an issue with the seize animation.

Friendly ship dismissal
Friendly ship dismissal

Events/Balance/Testing/Narrative

If you know about face-to-face roleplaying games, you know that if the gamemaster mentions anything interesting, the players are almost certain to pursue it (there’s a legendary story about a GM innocently mentioning a gazebo on a hill…).  Turns out that players take what they read quite seriously too, so I had to make some adjustments to the narrative making sure that what I mentioned was in line with what was possible in the game, and also what led to success rather than frustration.  In some cases I had to completely reverse what I’d written!

This led to a few narrative/balance runs where I reduced the relationship penalties on certain events, allowing a player to buy/bribe their way out of some events without damaging the relationship.

Players can now add ships to their fleet even if it would trigger a water riot; previously that was being prevented; I think it is better to allow the action than not.

I expanded the conditions for Attackship events; ships now respond to more player actions.

During playtesting I found a few situations where early game the player could have no events, and I began filling that case with appropriate events.  The first one I did required the player to have Empire crew aboard their ship.

I fixed a case where your battleship could leave the game in a specific event.

I adjusted an event that didn’t have a condition or dialog for a specific situation.

I created a test event for benchmarking performance and tested as Heru worked through optimization.

I improved the narrative explaining how water worked with contextual content, and added some better text as well.

I made numerous tweaks to events adjusting where ships appear relative to the player.

I began testing XO using Steam and working out our deployment process for new builds of XO.  As part of this I added a script that scans events for tags with missing text.

I wrote a lot of water riot dismissed messages: each ship gets three (one for each major relationship state).

I corrected a handful of issues where the ship type did not match properly in some events.

I added a new crewmember, the supply chief.  They’re used in several events.

I also reviewed all of the quips that can come up when a player tries to hail a ship that doesn’t want to be hailed and made sure those made sense.

I improved the conditions in one of my favorite early events, ‘the separated’ and then balanced it better.  I did the same with an event called ‘the end of support,’ made narrative tweaks to ‘the unwelcome,’ and fixed an issue with ‘the exhausted.’

A few events got small narrative tweaks like ‘the crushed.’

In the event that explains scouting, I improved the narrative to better explain how scouting works.

I finished going over all the existing events and removing a negative relationship penalty when a player took a certain kind of action in refugee-type events.

I expanded events with pirates in them to have a different reaction when a player tries to hail them with a non-warship.

I started improving some events with abandoned frigates and realized I needed to expand this to all abandoned events, so this turned into a bigger project. I cleaned up every abandoned ship event, making sure they all had appropriate triggers for crewing and abandoning the wrong kind of crew aboard.

Substantial adjustments were made to ore and water collection rates.

I added additional conditions for crew boarding to abandoned warship events from different factions.

The flow of the first event was simplified, giving players a quicker route to just play the game and fail faster without a lot of narrative choices.

I tweaked a few event missions, increasing or decreasing the time given to complete them.

An event called the dinner bell needed a lot of adjusting and tweaking to get right, so I made that work.

I adjusted the narrative on ‘destroyed’ events to make more sense narratively.

There’s now text for rules of engagement.

I went through all events and made sure ships that shouldn’t have a jump-in sound, didn’t.

Additional conditions were added to ‘the water situation.’

I removed references to ‘refugee’ as ships of that class are named uniquely now.

A particularly nasty event was made even nastier.  I made similar nasty improvements to another slightly less nasty event.

I added an irate passenger to one of the events.  I hope you’ll find them.

I made quite a lot of narrative fixes – to the start of the game, to the formations fleet event, to scout lost messages, to the water fleet event, the scouting fleet event, and many others too small to merit a mention.

For a long time we had a dialog box pop up when relationships changed.  Players generally ignored it, and it required a click to get rid of.  We removed it and instead pulse the relationship line that was changed in the display.  Makes much more sense now.

Battling it out
Battling it out

Bugs

Heru fixed a long-standing bug dating back to before he joined the team: the flipped grid bug!  Hooray!  This also cleared the biggest Mac/Linux bug we have.

We had a situation where a new game on a windows machine would whiplash the camera around instead of smoothly pan up at the start.  It took a few tries, but that bug is gone gone gone.

Heru quickly fixed a bug that cropped up that was causing all ships at a location to follow you to the next.

I found a situation where a certain type of event wouldn’t ever end, and added the appropriate endEvent blocks to those types of events.

And of course I did the Kickstarter update and updated our website, this always takes about two full days.

I tested Mac and Linux builds of the game and logged some bugs related to them that we’ll have to fix later.  We’ll have separate alpha/beta cycles for Mac and Linux after our Windows alpha.

Heru fixed a bug where text was overflowing into dialog boxes on Windows builds.

We had a bug where a command telling a choices dialog to back up two levels was backing up four levels instead, and that’s gone now.

Zooming the camera to a ship was zooming somewhere else before zooming to the ship, and that’s been fixed too.

In the Windows build, planets displayed in the starmap detail view weren’t spinning, but that’s fixed now.

Some tweaks were made to formations that broke formation movement, and those were corrected.

I did some extra testing on scouting and formations to make sure that worked as expected, and it does.

An event was refusing to end, and it turned out something needed to be fixed, so Heru did that.

We briefly had a fun bug that you could use to make any ship disappear.  Goodbye disappearing ship bug!

There was another bug that prevented mission-type events from starting, which made the game pretty darn easy.  That’s fixed now.

A change was made to formations that wasn’t properly clearing them on a new game, and that was fixed.

An issue with our ‘destroyed’ events caused by duplicate triggers was fixed once the duplicate was removed.

The second player formation was refusing to attack a specific ship type, and that is no longer an issue.

The camera was fixed when returning from a save game – it had gotten re-pointed in the wrong direction.

A hailed ship was displaying the ship’s internal name instead of the correct ship name from the dictionary file.

Heru fixed a bug where a getShip action was failing to trigger.

The gained water sound was briefly playing incorrectly, but now it works as expected.

Weapons were not showing properly when scanning Harvester ships, that’s fixed now.  And related to that, scanning Harvester carriers and devastators now works properly.

For a bit two actions were shown as a tooltip for the same mouse action, that’s been fixed.

Hailing a cache was showing a blank box, it now does what it should.

Hover tooltips in the galactic map went missing but have since been found.

The code to limit the types of heads was broken and needed a tweak.  Tweak given.

Cutting this one close
Cutting this one close

Alpha: What’s Remaining

We are functionally complete!  Optimization is also complete!

I’d say the results of our optimization were a success.  On a five year old core i7 laptop with stock Intel hda graphics, XO ran at 30+fps at 1920×1080 resolution.  We also tested on a new AMD machine with an Nvidia 1080ti and got 90+fps at 4k resolution (and wow does XO look great at 4k!).  During alpha we will be adding some additional tweaks that people can use to increase the framerate even higher, as well as reduce graphics quality to speed the game up.

As of July 1 there were about 26 items marked as necessary before we release to alpha – bugs and minor tweaks. We have added and fixed a few since then, and the number is 2 as of right now, July 11th.

As soon as those two are fixed, we will test.  If the test is good, we release to alpha!

Early fleet building
Early fleet building

Beta: What’s Remaining

Immediately after we release alpha, we will begin making UI improvements.  I already had Heru implement the biggest ones that were scheduled for post-alpha, so we are a little bit ahead on that.

We will also implement the end game.  This will take some time.

As data comes in from the alpha testers we’ll fix bugs, continue game balance, and implement the end game.

I do not yet have a beta date.  Partly it will depend on how active the alpha is.  If it isn’t active enough, or we are not getting many bugs, I may accelerate us to beta while we continue to polish the game.  If we get a lot of bugs, we’ll want to fix those before pushing to beta.

As always, I will post on the Kickstarter page first when I’m ready to announce one.  I can say two things for certain: beta will absolutely be this year, and we will absolutely, positively release XO in 2019.

Alphas, stand by for XO!