Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Improved map view

The map view before was too zoomed in to show the whole map at once, and it kept panning the camera around all over the place. Also, the UI was
unclear. I switched to a static camera that overlooks the whole map, and cleaned up the UI:

Cooldown netcode

The cooldown netcode has been a problem for a while. Previously it worked like this. The first time the player performed an action, the server
would add the necessary heat to the cooldown meter, but then instantly subtract the amount of heat that would be dissipated during the network
round-trip time (RTT) between the server and client, to ensure they stayed in sync.

When the client needs to add heat to the cooldown meter, it does so instantly and ignores the cooldown value coming from the server, simulating it locally until enough time has passed for the server to receive a packet and send one back. Then the client overwrites its local heat value with the one from the server. Most of the time, they're perfectly in sync and the handoff isn't noticeable.

However, the server only needs to compensate for lag one time. If you have multiple cooldowns stacking on top of each other, and you subtract the
RTT from each one, you'll get incorrect results. So the server only performed this lag compensation if the heat value was at zero.

The tricky part is, the bolter adds a very small amount of heat to the cooldown meter for each shot fired. It takes less than a third of a
second to dissipate the heat. Turned out, if your ping was high enough (i.e. the RTT was more than 150ms), the server would subtract enough
from the cooldown meter that by the time you fired the bolter again, the heat would be down to zero already, and the cycle would continue. You
could fire the bolter indefinitely.

Long story short, I made the client do lag compensation instead of the server. It takes the current heat value coming in from the server and subtracts the RTT no matter what. Much more simple and robust.

Grapple

As I've said before, the singleplayer portion of the game is basically Dishonored with no enemies and all you do is climb. Well, I wasn't
joking. The game now has Dishonored's Blink ability as a movement upgrade:

It uses the same cooldown system as the rest of the game, which I like because the cooldown is pretty quick the first two times, and slows down
after that.

Triangular minion head

A viewer on Twitch said I should try making the minion's head more triangular. I had no argument against it, since everything else in the game is
triangular. Now all my brand new promotional art is outdated :(

Force field sound obstruction

This was an easy win. I already have audio obstruction/occlusion code, it just wasn't taking force fields into account. It's pretty cool when
someone fires a weapon inside a force field and it sounds muffled and muted.

UI colors

I switched the UI from teal and pink to yellow and pink. Here's how the main menu looks now.