Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Samsa

I made a robot doggie. His name is Samsa. He plays a fairly critical role in the story. Don't worry, nothing bad ever happens to dogs in video games and movies and literature.

I didn't like how he turned out first. He has to unfold into a sort of command center, which dictates certain design limitations:



At this point, the vibe he gave was more Stegosaurus than Golden Retriever. I asked Twitter how to make him cuter, and they told me to shorten and speed up the footsteps, add some Z-axis roll, and add an antenna. A lot of them also suggested "googly eyes", but that was a bit much for this game. I implemented everything else:



The antenna idea was brilliant because it's so easy and fun to animate and adds a ton of visual interest:



Damage buffering

One of the abilities in Deceiver is called "active armor". You hit a button, and any incoming damage gets reflected back at the attacker. Like so:



If you watch that gif closely, you can see that I react well in advance of the actual bolt impact. But what if it was really close? If you look in the top left of the gif, you can see the ping is over 200ms. If I reacted just in time from my perspective, I would be 200ms too late from the server's perspective.

To solve this problem, I created a buffer for all player damage. That means the server acknowledges incoming damage, but waits for a split second before actually applying it. And by a split second, I mean whatever the player's ping is, plus one frame for good measure.

Here's what that looks like. The bolt disappears and spawns a particle effect instantly, but the damage doesn't actually register until 200ms later:



Now I can react to the bolt right up to the moment the bolt impacts. Note that damage buffering is unnecessary and in fact detrimental between two players playing splitscreen on the same client!

Yes, this skews the game against attackers, but I think it's much more frustrating to get killed cheaply due to lag, as opposed to the minor annoyance of having your hits not register. Especially in a game where a lot of damage comes from non-player characters.

While developing this feature, I used a tool Ryan Evans recommended to me called clumsy, which simulates bad network conditions. Brain-dead simple to operate.

Lastly, I added pings to the scoreboard, so you can rage at players who have Comcast.



P.S. - Sound is coming. This is me being completely hyped out of my mind.