System Fault Devlog 8

I’m rapidly advancing toward what I consider an early access demo. My goal is to have a free but limited version of the game available on or around the end of August, and launch early access orders in September. Read on to learn more!

The inventory system received lots of love this week.

  • Pressing 1, 2, and 3 switches the active secondary weapon between stealth grenades, lure grenades, and mines.
  • Pressing Ctrl+1-3 swaps the active and target slots. For instance, pressing 3 selects mines. Pressing ctrl-1 swaps mines and stealth grenades, leaving mines in slot 1 and stealth grenades in slot 3.
  • You can also switch between non-empty slots:
    • D-pad left and d-pad right, or alt left arrow and alt right arrow, switches between non-empty inventory slots.
    • D-pad up or alt up arrow speaks the current slot and remaining inventory.
    • D-pad down or alt down-arrow enters a slot swap mode, where the currently selected slot can be moved left and right and placed between other slots.

It sounds complicated, but I’ve found it very intuitive while playing, and can’t wait to see what players think.

Speaking of grenades, I’ve also added a throwing mechanic. To throw a grenade, first hold return or left trigger for a second to arm the grenade. Once primed, a cycling rising tone indicates the intensity of the throw. When released, the grenade either flies to the end of its arc and explodes, or hits something along the way.

We also now have lure grenades. These detonate harmlessly, but summon all robots within a pretty wide distance to investigate. Not the safest things to use, especially if you botch a throw, but they’re great fur luring robots to mines, or drawing them to an area and sneaking past them.

I also worked in a quick last-minute change that added lots of juice but still needs some tuning–dynamic, in-game music. Each frame, I calculate what I call the perceived and actual tension level based on the AI state of all enemies. An enemy pursuing the player is assigned more points than is an enemy investigating something, and point values are further broken down by robot type. If the points exceed a certain threshold, the music becomes more intense. Unfortunately, the system doesn’t yet fade between tracks, so the switches are rather jarring. Also, my eventual goal is to transition more gradually between perceived and actual tension levels such that you don’t immediately know that a tense battle is ended because the music suddenly fades. Higher tension levels take longer to fade out, for example. Once I’m happy with how that sounds, I’ll make another gameplay recording.

Finally, robots now return to their spawn points after a random delay if they fail to find something they’ve been investigating. This plus the recent environmental audio changes really makes the world feel more alive, as I’ve often been surprised by robots wandering through areas I thought I’d cleared.

But my goal for this month is an imperfect early access demo, and while it’s tempting to polish and polish until this thing shines, I stopped new feature development early this week to fix some bugs and work through a punchlist of non-development and unsexy work. To that end:

  • I now have a studio Twitter account, @LightsOut_Games. Apologies for the screen reader unfriendliness of the name–it’s all I could grab. Better suggestions welcome.
  • The website is marginally nicer, and better changes are on the horizon.
  • I fixed a number of bugs that I’d been putting off.
  • Bevy OpenAL now supports loading MP3 assets. While I prefer OGG and FLAC where I can manage it, some of the assets I want to use are MP3-only, and it made sense to support the format natively vs. re-encode as OGG and take the quality hit.

Next week will probably be lighter on development work as well, and I may skip the devlog entry entirely. Much of my time will likely be spent drawing up demo and early access roadmaps, as well as assembling the infrastructure to build and publish releases.