Game Designer Bryan Singh uses Unity to break down examples of gameplay mechanics feedback.
Game Designer Bryan Singh uses Unity to break down examples of gameplay mechanics feedback. Bryan will be covering more of Unity and working with art assets in his Intro to Unity class at CG Master Academy. You can get more details on the official website.
Unity has a bunch of useful systems available for you to use when you are making your game project. It can be intimidating or tempting to noodle with systems that don’t necessarily improve the design or feedback of your game. In this example, I will step through adding visual polish to an example project while keeping focus on supporting the gameplay mechanics.
Note that the decisions I make are extremely subjective and coming from the perspective of a gameplay designer, not an artist.
Choosing Your Battles
I threw together this example project in Unity to serve as our base game. The object of the game is to aim the laser to blast away enemies before they reach you. When adding visual polish to this project, we are going to focus on the main interactions of the game, instead of art, environment, or atmosphere. This style of polish is often described as making the game “juicy” or improving the “game feel.”
In the game, the laser takes some time to destroy the enemies. They actually have an invisible HP number in code that is counting down to zero before they are destroyed. We are going to try to communicate this system more clearly to the player by representing the enemy HP visually. A common go-to in games is displaying a health bar for the enemies. We will go with a more integrated (and simpler) approach.
Just about every Unity editor option can be modified by scripts as the game runs. The standard material editor has an “emission” value we can use to make an object glow a specific color. In this case, we will use a script to map low enemy HP to a red emission value. This mapping works especially well because both input and output are analog values.
The interaction of enemies attacking the player is lacking strong feedback. In general, things that affect the entire screen correlate well with effects on the player.
Unity has a “post processing stack” that allows you enable a handful of predefined post processing effects. “Vignette” is one of the post processing effects available. It is normally used to darken the screen’s edges to approximate a physical camera lens. But we will tint it red to give the impression of pain or damage. On impact, a script will crank up the intensity suddenly and then gradually fade it out.
Destroying enemies is the main goal for the player, so we want to make it as satisfying as possible. Something with snappy initial motion will do a great job of punctuating the moment. We’ll use Unity’s particle system to add an explosion.
The effect that we are using is a tweaked version of the explosion from Unity’s asset library. It is composed of a few layered particle systems for sparks, smoke, and a blast of light. The bright yellow and red colors help correlate it with the lasers, making it feel like part of a cohesive system.
Next we are going to bring more attention to the business end of the laser, since it is the single point on the screen the player can interact with the world.
We are using three layers of Unity’s particle system to build up sparks that come from the impact location. The first layer is a long spark with a trail that bounces off the ground, this helps illustrate directionality. The second layer is a soft round puff to emphasize the impact point. The last layer adds more density to the sparks to bring more attention to it.
Next we add some more to the emission point of the laser. We want to balance illustrating the directionality of the mechanic, but not taking attention away from the more mechanically important locations of the screen.
This effect uses one particle system and a shadow-casting light that jitters. It’s a small touch but it helps bring to life one of the elements of the game the player is engaging with.
The enemy spawning is another gameplay event we can add some visual polish to. We need to use restraint here, though. Since this isn’t an event critical to player success, we want to make sure it doesn’t distract from more important things on the screen.
We use a simple particle system here. It is a single emitter that punctuates the enemy spawning. We avoid using the yellow and red colors reserved for critical gameplay actions, and instead keep the colors and intensity more subtle.
Bloom is a screen effect that will add a glow around any pixels on the screen that get bright enough. It aligns with our game’s design perfectly because we have already been making our points of interest very bright. The bloom will draw more of the player’s attention to the spots were care about.
Bloom is one of the post processing features available in Unity’s post processing stack. To enable, you simply toggle on bloom and turn up the intensity. This is always on and does not need to be modified at runtime.
The vignette alone is a bit weak feeling. We can keep with the idea of enemies exploding and make a bigger explosion for the player getting attacked. Because this is an infrequent and important event, we can feel free to crank up the intensity without interfering with gameplay.
The effect we are using is a larger version of the same explosion with flames added.
Shaking the screen is a simple and effective way of adding emphasis to any game action. In our game we will use camera shake to intensify two different kinds of feedback. For increased positive feedback, we add a small shake when destroying an enemy. For increased negative feedback, we add a big shake when getting attacked.
And that’s it! With just a handful of features we have made the game look way more polished. But more importantly, the polish has made the interactions more clear and satisfying to engage with.
This has been a high level example of how easy it can be to work with Unity. A Thorough introduction to Unity and a guide to working with art assets will be covered in the Intro to Unity course at CG Master Academy. Visit the course website for more details and send all registration inquiries to firstname.lastname@example.org