System Fault Devlog 10

Been thinking lots about game loops this week.

No, not loops as in the game loop itself. But whenever you play a game, you repeat certain steps again and again in smaller and smaller processes, and these are often referred to as loops. I’m sure there’s a more formal definition, and I won’t even bother looking it up. But for now, I’m mentally breaking down System Fault into smaller and smaller stages, then thinking critically about how each one makes me feel.

For instance, I’m overall digging the combat loop. I’ve enlarged the hitboxes such that centering a robot in the sound field gives reasonable chances of hitting it right at the edge of visibility. I even expanded shot range such that firing wildly into nearby rooms has a decent chance of hitting something, though it can also be spotted by nearby enemies as well. But something still doesn’t sit well with me.

I want combat to generally be short and quick. But right now it’s almost too quick. I didn’t necessarily want to shrink the hitboxes, because I like how they feel at the moment. You should have some advantages if you can capitalize on range. But, damn it, I wrote some decent code for sidestepping line of fire and evading gunsights. It’d be nice if it had more of a chance to run. The rate of fire also feels good, but means that players can deploy an immense amount of damage in a short time.

As of version 21.10.08.01 released just now, hit points are fractional, and player shots do less damage at greater range. Since the player’s weapon is energy-based, I used the inverse square law such that it is fairly ineffective at max range but accumulates more quickly as it drops off. I’ll certainly tweak these numbers over time, but they’ve lengthened the combat loop into something more in line with my vision.

The stealth/exploration loops also received some love. In an embarrassing twist, robots were occasionally sent to investigate their own coordinates, leaving a few stuck in an investigation state without having moved. That’s been fixed. Additionally, robots now investigate if they overhear a taunt.

Finally, I’ve tweaked the calculations of what I refer to as tension. Previously, tension accumulated whenever robots investigated or attacked. It also fed into the music system, creating a dynamic soundtrack that adapted to the action.

Now, other systems contribute to tension, and tension drives other encounter rates and enemy responses. I don’t want to say much more, other than to note that playing loud attracts much more enemy attention, and might be something to avoid.

I’ll likely skip the devlog next week for two reasons. First, I’ll be attending GAconf 2021. Next, I’d like to launch early access pre-orders. To make launch messaging less confusing, I’ll be publishing on Windows, Linux, and macOS simultaneously rather than rolling out support over time. This will require a bit of infrastructural work, so I’ll be pausing development to focus on that. You won’t get a devlog, but with any luck you will get an early access launch announcement. Stay tuned!

  • Use new fractional damage model for robots. Damage drops off quickly with range.
  • Enlarge robot hitboxes.
  • Robots now investigate when overhearing taunts.
  • Going loud is far more noticeable. I’ll just leave it at that.
  • Improved performance of robots navigating out of player gunsights.
  • Map exploration improvements:
    • Sound icons continue playing when map is being explored.
    • When a sound icon has focus in exploration mode, bump its gain to make it more noticeable.
    • Pause/unpause robot voices when transitioning in and out of exploration mode.
    • Correctly handle pause/unpause on focus when in exploration mode.