jan willem nijman

how 2 game juice 👌

Last updated: 23.5.2016

  • screenshake, zooming, tilting, wiggling/wobbling (hand-held camera)
  • tweening (don’t be afraid to use lerp, sometimes it looks good, when in doubt, a += (b - a) * .1), numeric springing
  • make stuff that doesn’t have to be static dynamic - like decoration and backgrounds
  • post-fx - filters, shaders, overlays… go wild (moderately)
  • 60 fps, please
  • randomisation everywhere! - sound pitching, different sfx variations (where it’s suitable), particle effects, colour tinting, names for stuff, dialogue, game over screens… again, just go wild with stuff you can’t possibly break gameplay with
  • audio panning (3D sound)
  • pretty UI elements - score interpolation (have a separate variable that slowly tweens to actual score and draw that), you can also prepend zeroes to it (this works best if you use a monospace font)…
  • speaking of fonts, use your own if you’re trying to include yourself more into your games
  • transitions (fade in/out, etc… DON’T MAKE STUFF STOP MOVING IN-BETWEEN TRANSITIONS, IT BREAKS THE IMMERSION), this also applies to audio, don’t just suddenly stop your music/ambience
  • procedurally generated stuff can be awesome if you know what you’re doing
  • choose a colour scheme and/or palette and stick to it
  • audio/visual cues are better than tons of text

Basically, the bare minimum you need is tweening and variations.

And sin(). USE SIN().

Feel free to add to this list, I can’t think of anything else right now.

Stuff to watch:

Catching the fish isn’t the end of the gameplay loop in Ridiculous Fishing; instead, the act is punctuated by the player tapping the fish to blow them up with a shotgun. By making the end of this loop so monumental, yet so simple, the player ends every loop feeling as if they’ve done something momentous. It also primes them for the next round, by breaking up the actual fishing with a very different, more hectic activity.