(+4) 0374 900 200
contact@avangarde-software.com

Part II – Making Stuff feel good (in Unity)

In our previous article we talked about was is Game Feel, key concept and some general examples. In the next part, I promised to share some demonstration about the concept.

Examples and demos of Game Feel

Here are the two examples that I built in order to demonstrate Game feel concept.

The first one is a small copy of a game which you might be familiar with if you didn’t have internet for a while. In this demo I try to demonstrate how the feeling of a game can change very easily by tweaking some parameters. In this case, we’re going to affect the jumping curve of the dinosaur.

Game feel
Game feel

This type of curve will give you a feeling that the dinosaur is very light and it behaves like a balloon. Objects with significant mass don’t behave like this, let’s tweak that a little bit.

Game feel
Game feel

In this case, I lowered the jump height a little bit, made the dinosaur fall faster and also I added a little squish at the end, because the ground usually has a mass that’s bigger than the object’s, so the object itself has to absorb most of the impact. With some relatively small changes, the dinosaur now feels like a real object. Of course I’ve not stopped here so here’s the next iteration.

Game feel
Game feel
Game feel

Now, the dinosaur feels like he’s a really big and heavy character, an absolute unit. I’ve lowered the jump height even more, made him fall even faster and also remove the squish at the end, instead I created a particle effect for when the dinosaur hits the ground and added a camera shake, all to convey the information that the ground is being affected by the dinosaur.

Here’s a comparison of the 3 jumping curves that I’ve used.

Game feel

For the second example, I’ve built something that resembles an actual game. Here we have our user controlled character that’s just minding his own business, until the user presses a key to fire his spell. The spell is a basic one, it channels for 2 seconds and then releases 5 energy blasts at the target within 1 second. Without knowledge of game feel, going purely by the description of the spell, a game developer might implement something like this.

It’s not a bad implementation, it does what it is required to do, except it lacks a lot of features that make this spell have a meaningful impact. Let’s see what we can do in order to change this for the better.

Game feel

First thing I want to address is something that everyone without an entire art department should do and that is animation blending. Without someone dedicated to animations, your options are limited. However, this cool trick will solve most of your animations problems. Usually, when you create an animations, you will have some keyframes and transitions between them. Spending a small amount of time of just the keyframes is far better and less time consuming for someone without animation knowledge, than working on the entire animation. After that, you can use something called Animations Blending (in Unity this is done by using Blend trees) that do the job of transitioning between keyframes. David Rosen explained this very well in his GDC 2014 talk Animation Bootcamp: An Indie Approach to Procedural Animation. Beside animation blending, we’re also going to add some particles to the charging part of the spell since we would like to tell when it starts shooting (I’ve also added a progress bar, that’s just for you to see the timings a bit better).

Game feel

It looks a bit better, but let’s do something about those energy blasts, they look like tennis balls coming straight out of the character’s hands. I think nobody really knows how an energy blasts actually behave, since they don’t really exist, especially the ones shot from a person’s hands, but we have an idea and we can approximate that. First of all, we expect them to emit some form of light and using particles I’m going to alter the appearance of the energy lasts.

Game feel

Another thing that I did was to change the trajectory of the energy blasts. There aren’t many things that don’t have that element of randomness around us, so we expect some kind of randomness to also happen here. We can’t modify the starting or ending positions of the blasts, but we can modify their path. This has been achieved by creating a Bezier curve between the characters hands, the target’s position (the wall) and a random point somewhere in the middle, different for each path.

Game feel

They look a bit better, however the energy blasts still don’t feel like they’re part of this world. We made them emit light, but the light is not affecting anything, so let’s make the blasts shine light on the ground. Another thing that doesn’t quite feel good is the impact point of the blasts. We expect the system to register the impact with the wall and convey the information back to us, however currently the blasts appear to go through the wall. We can add some explosions to show this information more clearly.

Game feel

Ok, now that we’ve added explosions, these in turn should also have an impact on the world. Usually, when an explosion happens, the closer you are to the event, the force you will feel is greater. We’ve looped through nearby objects and we’ve added a force to them directly proportional to the distance from the explosions and this is the result.

Game feel

However, we can still take it to another level, let’s change some camera parameters.

While charging, we can modify the field of view of the camera and also add some color aberration gradually, so it feels like it actually charges. After that, at the end of the charging part, we can snap everything back to normal values, but this whole process will leave the user under the impression that something has been charged then instantly released. Also, like in the previous example, we can add some screen shake when the blasts collide with the wall.

We can keep adding this sort of changes until we are satisfied with the result, however there’s something very important to keep in mind and that is testing everything with the users. You might feel like something is very awesome and has lots of layers of complexity, but the user might be overwhelmed by the effects and might even understand the wrong idea because the changes might actually alter the intended behaviour. Always test and get regular feedback, this way you will ensure that the users feel exactly what you want them to feel.

Read also: Making stuff feel good (in Unity)

References

 

Ionut Tamas – Senior Unity Developer