Making Game “Feel”

22 October 2013

Game “feel” is hard to explain. It is, literally, something you have to feel for yourself: the tactility of a feedback loop that just works. And yet it’s not magic; it’s made, by a person, or by a team, and refined. There’s a good book on the topic. And no developer hits game feel right the first time, every time; it takes work.

I really liked this interview with Jan Willem Nijman from Vlambeer over on Rock Paper Shotgun. Graham Smith pins him down a bit and asks him to talk about why Nuclear Throne feels so good. Vlambeer always have great feel to their games – just think about Super Crate Box! – and it’s something they’ve become practiced at.

Nijman explains, and Smith presses him more and more for specifics. Which is great journalism, as Marsh Davies points out: if you want to talk about the “magical” responses of a technical system, why not interrogate those technicalities? Why not try to understand the medium in its own terms?

In the end, Nijman breaks down the various routines – primarily related to visuals and rendering – that happen when the player fires a single pistol bullet:

When you fire the pistol in Nuclear Throne, first of all the Pistol sound effect plays. Then a little shell is ejected at relatively low speed (2-4 pixels per frame, at 30fps and a 320×240 resolution) in the direction where you’re aiming + 100-150 degrees offset. The bullet flies out at 16 pixels per frame, with a 0-4 degree offset to either direction.

We then kick the camera back 6 pixels from where you are aiming, and “add 4 to the screenshake”. The screenshake degenerates quickly, the total being the amount of pixels the screen can shake up, down, left or right.

Weapon kick is then set to 2, which makes the gun sprite move back just a little bit after which it super quickly slides back into place. A really cool thing we do with that is when a shotgun reloads, (which is when the shell pops out) we add some reverse weapon kick. This makes it look as if the character is reloading manually.

The bullet is circular the first frame, after that it’s more of a bullet shape. This is a simple way to pretend we have muzzle flashes.

So now we have this projectile flying. It could either hit a wall, a prop or an enemy. The props are there to add some permanence to the battles. We’d rather have a loose bullet flying and hitting a cactus (to show you that there has been a battle there) than for it to hit a wall. Filling the levels with cacti might be weird though.

If the bullet hits something it creates a bullet hit effect and plays a nice impact sound.

Hitting an enemy also creates that hit effect, plays that enemies own specific impact sounds (which is a mix of a material – meat, plant, rock or metal – getting hit and that characters own hit sound), adds some motion to the enemy in the bullet’s direction (3 pixels per frame) and triggers their ‘get hit’ animation. The get hit animation always starts with a frame white, then two frames of the character looking hit with big eyes. The game also freezes for about 10-20 milliseconds whenever you hit something.

You just have to watch Nuclear Throne in action to see how meaty it is, how chunky it feels, and how clear the link between action and outcome is. The reason for that isn’t magic; it’s all the decision-making – both human and code – outlined above.

I’d argue that it’s neither science or art – it’s something more profound, that combines the two. It’s craft: the desire for a particular, sensual outcome as an artist; the technical capability to implement it; but above all, the craft of adjusting and readjusting, taking time, taking care, understanding that every possible detail is a thing under your control, and then just doing the work until it’s right.