Being Kind To The Player

I really like designing games that stack the deck in the player’s favour. Not in an obvious or patronizing way, just enough that the player is allowed to make some minor mistakes or has small advantages that they hopefully aren’t even aware of. At the risk of ruining some of the magic, I thought I’d outline a handful of things like this that I put into Bleed or am implementing in the sequel.

 

Hitbox Bias

Wryn’s hitboxes in Bleed and Bleed 2.

I do my best to ensure that every object and enemy in Bleed has a fair and accurate hitbox… except for Wryn. In Bleed they’re a bit smaller than you might expect, and in Bleed 2 they’re much more so. The idea is to let Wryn dodge through super narrow gaps and be more stylish and daring with her actions! Taking damage also feels more fair when there’s such a large margin for error.

 

Hidden Damage Volumes

The hidden volumes only last a split-second and do less damage than bullets, so it’s always better to play properly.

Wryn holds her arms straight out to fire her weapons, so the bullets spawn a fair distance away from her body. This can lead to situations where she won’t actually be able to hit enemies standing right in front of her — which is accurate as far as the game is concerned, but is moronic to look at and play through. Most weapons in the game have invisible damage volumes that are spawned between Wryn and the muzzle every time she fires to cover the empty space.


One Last Hit!

I couldn’t really think of a visual to put with this one (sorry!) but I like the mechanic where even the most powerful attack won’t outright kill you, but take you down to a single hit point instead. It’s not always easy to tell just by looking at a health bar how many more hits you can take, so this eliminates the guesswork and makes it explicit when you’re about to fail. It also has the benefit of letting the player mess up one additional time per life.

 

Aim Assist

The lines have been made thicker so they’re easier to see. The left is on Easy, the right is on Very Hard.

In the original Bleed, collision detection for pistol fire was done with a line (the bullet graphics are just for show.) I can’t remember why I did it that way, maybe so pistol attacks would be instant, even in bullet-time…? Anyways. Using a line to detect collisions made the pistols incredibly precise and hard to hit with when they were supposed to be easy to use. To offset this, I changed it to two lines that are slightly offset from the muzzle, effectively creating one thick line that acts as a basic aim assist. It’s not an incredible amount, and on higher difficulties the lines pull in until they provide almost no assistance at all.

 

Input Buffering

Here’s the biggest one, or at least the longest description. Let’s say you want to attack. Many games handle that as follows:

1. Pressing the attack button tells Wryn to attack.
2. If she is ready to attack, she does. (If not, she doesn’t. If that seems obvious then bear with me.)
3. When she attacks, a timer begins counting down. When it reaches zero, she is ready to attack again.

That’s simple and it works okay, but it has some problems. Let’s say the a timer makes it so that Wryn can attack once every 200ms. Well, what if a player is really awesome, and they can hit the attack button faster than that? A lot of their attack inputs are going to be dropped and the only way for them to attack optimally will be to press the button precisely every 200ms, which I think is incredibly unfair. So here’s an altered way to do it:

1. Pressing the attack button stores the player’s desire to attack for a brief time.
2. Wryn actus upon the player’s desire to attack as soon as she is ready.
3. When she attacks, a timer begins counting down. When it reaches zero, she is ready to attack again.

In this way, pressing the button faster than attacks are possible will result in optimal attacking, because the input is stored and acted on at the first available moment.

Attacking every 150ms with a 200ms cooldown. No input buffering on the left. It’s easiest to tell the difference if you focus on the speed of the sword in her hand.

You can apply this kind of thought to other actions, like jumping. If the player wants to jump as soon as they land on the ground but they press the button a few frames too early, you can be forgiving and let that result in a jump once they’ve landed. If they run off a cliff and jump a few frames too late, you can let them jump anyways then too. (This doesn’t usually apply in Bleed because jump inputs in the air result in air-dashes, but you get the idea.)



Ultimately I think these kinds of features improve the experience and make the game more fluid to play. Like I said at the top of the post — as long as they aren’t done in an obvious or patronizing manner, it helps players to forget about the controller in their hands and get lost in the game in front of them.