👨🏻‍💻

3 Basic Skills for Game Juice in Unity

Learn the 3 fundamental skills for making your Unity game juicy.
Published September 15th, 2021
Jason Tu

When you're developing a game, and you've gotten the bare skeleton of your core loop working, you can get to a point where your game feels a little... mute and lifeless.

At that point, it's time to start working on your game's feel – also known as game juice. It's time to start making your game juicy.

The problem is, how do you make something juicy? How do you make your game come to life? How do you take something from this:


To this:


By the end of this post, you will understand the mental framework for identifying what to juice in your game. And you'll also learn the 3 essential skills you need to immediately juice anything in your Unity project.

Let's get started.

The mental model: feedback loops

To kick off our discussion, let's discuss the concept of a player feedback loop:

Loop diagram from Daniel Cook of Spry Fox

From Daniel Cook's article about loops and arcs.

A loop is a conceptual diagram of how a player interacts with your game. A player begins with an initial understanding (model) of your game, and through performing actions within your game and triggering your game's processing of its rules, the player learns how the game works through feedback.

Thus, when we juice a game, we are really juicing the feedback of each of your game's mechanics. It's a form of audiovisual illustration (and sometimes haptic, like rumbles on your iPhone) that shows how your game works, instead of explicitly telling the player through text.

That might sound like a lot of theoretical nonsense, so let's look at an example.

In my current game project Pocket Pong AR – an adaptation of the classic game of Pong to augmented reality – the ball has several associated verbs:

  1. The ball spawns at the beginning of every point.
  2. The ball serves at a random velocity in the player's direction.
  3. The ball bounces off paddles.
  4. The ball also bounces off walls.
  5. The ball explodes upon hitting a goal collider.

Without any juice whatsoever, bouncing is bland, and doesn't communicate anything beside the fact that the ball bounces:


By illustrating the game mechanic with a few layers of juice – a satisfying *pop* sound, the ball squashing and stretching upon impact, the subtle sparks that fly as the ball bounces – we give the player a sense of power. This paddle has a ton of power! It can bounce stuff back with a bang!


Basically, show – don't tell.

Game juice is the art of showing, and as the example demonstrates, the first trick of game dev showmanship is sound.

Technique #1: Sounds

It may be obvious, but sounds give you the biggest bang for your buck.

You can have the showiest visual feedback that any game has ever seen, but take away all the sound effects, and your game misses an entire dimension of juice.

Take the same example from before, where the pong ball lacks any sound whatsoever:


And with sound, where I added a solid "*pop*" sound to paddle bounces:


Hear the difference?

To add sounds to your own game, the easiest way to get started is to use sound packs:

  1. Imagine the sound that you'd like to play for an action in your game.
  2. Search for that sound on freesound.org, or any sound effect library that you have available.
  3. Play that sound on a Unity AudioSource when the corresponding action occurs.

Alternatively, you could design your own sounds by recording various objects (known as Foley), or try your hand at sound synthesizers. However, using a sound effect library gives immediate results that don't take as much time.

Technique #2: Easing Curve Animations

In my game, Pocket Pong AR, I used the classic animation principle of "squash and stretch" to emphasize the ball's impact upon bounces:


The general principle here is this: you can freely animate the position, rotation, and scale of your game's objects as a form of emphasis.

And to create these animations, your building blocks are easing functions – a family of math functions that spit out a number between 0 and 1.

easing curves website

easings.net is a fantastic website for copy-and-paste snippets of easing curves.

But how would you use these building blocks to make something, you know, squash and stretch? You'd animate the scale!

  1. Choose a beginning scale vector (the ball moving in air)
  2. Choose an end scale vector (the ball becoming fully flattened by impact with a wall or paddle)
  3. Animate between the 2 using an appropriate easing function (in this case, ease out elastic).
ease out elastic animation

As you can see, employing easing curves gives the actors and objects in your game more personality, and are a valuable juicing tool in any game developer's arsenal.

Technique #3: Particle Systems

Finally, while easing curves are great for animation, sometimes you just need a little more visual flair – especially for things in your game that are "fuzzy", such as sparks or explosions.

For these situations, the best tool for the job is Unity's built-in Particle System.

Going back to the example in Pocket Pong AR, I added 2 particle systems (an expanding ring and some spark effects) to ball bounces:


By choosing an appropriate particle texture, and playing with the knobs and whistles exposed by Unity's particle system, particles provide a nice accent as a final layer of juice.

Conclusion

So to summarize,

  1. Game juice is another way of saying "show, don't tell".
  2. If you are just starting out, you can add game juice to your game with 3 simple techniques: sounds, easing curves, and particle systems.
  3. Layering game juice techniques multiplies your game's juiciness, more so than using individual techniques in isolation.

Game juice fosters intrinsic motivation. It's not fun to stare at your game in its bare mechanical form. But adding a little bit of game juice can go a long way in maintaining excitement about your game project.

Did you find this post useful?

Sign up for my newsletter, and I'll notify you when I publish something new about game development in Unity.

© 2021, jasont.co