A Look Back on Creating Gust of Wind Intro Cinematic

Background

I made this intro cinematic for Gust of Wind, a hobby project I’ve been working on with Unity, in early 2023. The game was nearing its early access launch, and with some lengthy dialogs in the first meters of the story, I felt like it needed something to quickly show the player what they can expect the gameplay to be about.

This post is a mixed bag of notions of my workflow, things I learned, things I probably did wrong, and things I was able to improve when coming back to it a couple of years later.

Here’s the final cinematic, with music by Olli Oja.

Storyboard

I started by painting a storyboard. The main gist of it is that the character we follow was sent on a sabotage mission. He got caught while carrying it out, which is why the main character of the game was sent in his stead on a voyage that the story of the game is set on.

Setting

I had recently watched the Michael Mann film Thief from 1981 and really liked the atmosphere of its opening sequence with a combination of early morning lighting and wet streets.

I aimed for something similar for the lighting, adapted to the setting of the game, a post-apocalyptic world left behind by an Industrial Age civilization.

For the environment, I chose a long, dilapidated factory hall, since it gives a wide berth for using closer and more distant shots without being very laborious to model. Some barrels, an overhead crane and the train of compressed air carts provide some hiding places for the sneaky character.

The factory hall needed to be modeled and textured for the cinematic. However, it didn’t require that many pieces. Here are the beams and metal sheet variations I used to piece it together. The textures aren’t great, but good enough to do their job in hazy lighting.

Lighting

For the original version of the cinematic, I used real time lights since dynamic shadows were important and baking lighting is quite time-consuming.

Volumetric fog combined with a directional light radiating at a low angle contributed nicely to a mood of early morning.

The lighting consists of:

  • Directional light
  • The firelight of the barrel
  • 11 point lights there just to fake indirect lighting, or add some clarity to some shots that would’ve otherwise been too murky.

Since the shadows, particles and post effects made the scene quite heavy, I later ended up pre-rendering the cutscene by screen recording it in half the normal playing speed, and increased to normal speed in video editing (which provided a better frame rate than playing it in normal speed).

However, fiddling around with the scene now, almost two years later, I tried baking the indirect lighting to see what it looks like. The video at the top of this post has that baking applied, with some subtle global illumination on the shadows (while the direct lighting is still handled real time).

Below are some views from the version of the cinematic the early access launched with, compared to new ones with some subtle changes I made now:

  • Baked indirect lighting (It’s hard to distinguish but you can maybe see some some hint of bounced light on the barrels and the walls of the hall in shadow)
  • Slightly better quality in volumetric light (less dithering)
  • The shadows on characters are slightly brighter as well, probably due to having Screen Space Global Illumination disabled in the original version.

Rain Effects

For the rain, to save some performance and to get refraction to the droplets, I used this technique instead of having the rain completely consist of particle effects. The position of the rain cylinder is animated in the cinematic so that it’s always centered to the camera currently in use.

The ripples on the ground are produced by a regular particle effect with a flat box emitter. It would’ve been possible to make a mesh of the needed part of the terrain and use that as the emitter, but in this case the ground is pretty much completely flat (apart from the puddles, which are just dents on the plane added with parallax).

Working Neatly in Unity’s Timeline

Arranging things neatly in nested timelines not only saves time, but helps keep the visual result of the sequence tidy as well.

If you animate everything on a single timeline, there’s likely to be some annoying flickering when the camera angle changes and perhaps a light or a character is meant to get enabled or disabled precisely at the same time. Getting those timings synced is a pain when there’s a big number of tracks.

Unfortunately I didn’t know you can nest timelines when working on the cinematic. Only when working on a video in UE5 later the same year, I noticed to how handy it is to be able to group cameras and lights in separate shots, and I wondered why you wouldn’t be able to do the same in Unity.

But as I later found out, you can, by making your shots as separate timelines, and nesting them inside your “master” timeline. Here’s what it could look like:

Based on a bit of experimentation, this method seems like a much handier way to animate a sequence with several shots. You can also have animated elements with continuous motion in the master timeline, and when you’re modifying one of the nested timelines, that animation shows up with correct timing.

For comparison, here’s my timeline from the cinematic, looks pretty overwhelming.

Adding Character Animations

Most of the character animations are ones used in the game as well, a few of them having some minor alterations for the versions used in this cinematic.

However, I had to make one new animation for opening the bolt with a wrench. I added a rotating bone for the bolt the wrench is supposed to open and a helper object linked to the bolt bone (so that it rotates with it). The hand IK is constrained to the position and rotation of that helper object when the wrench is turning the nut. Without constraining it this way, it would’ve been impossible to get the wrench positioned just right.

This is the shot in question. In the gif below, the rotating bone of the nut and the hand target bone linked to it are highlighted:

As a handy detail about character animations, the Timeline tool lets you add an “Override Track” on an animation track. This would be a separate animation masked to a certain part of the character. A case in point is the enemy character carrying a weapon while walking. The carrying pose is a separate animation clip, which I added on an override track. That override track has an Avatar Mask applied, which defines which body parts the animation affects (in this case, both arms).

There are plenty of nifty things in Timeline, like how easy it is to add transitions between clips, and triggering functions from the timeline (which I haven’t gotten into). However, I think these were the main notions I had for this small post mortem of the cinematic. Thanks for reading!