A game, almost by definition, is a confusing multidisciplinary beast. An amalgam of art and scripting and design to form a homunculus software. Sometimes the hardest part isn’t even the individual acts of creation, but the act of fitting these various pieces together to form a coherent whole. This, my friends, is where the pipeline comes in.
The pipeline, in common game dev parlance, is the process through which these disparate crafts meet in-engine to form the game. As Monochrome has tons of hand-animated animations for it’s cartoon characters, that was my focus. I had to make sure that the artist’s work was being represented clearly and effectively to the player in the game world.
Here’s an example of a spritesheet an animator might hand off to the implementation team. We then need to appropriately scale this asset, so that it isn’t four times the size of Otto or barely bigger than his foot.
After that, the sprite sheet must be sliced. Unity has a built in Sprite Editor that can turn this single image into multiple frames of animation. Before the slicing can happen, there are some settings in Unity we need to address.
If the source image we’re handling is larger than the default image size, it must be adjusted accordingly to prevent downsizing. The pixels-per-unit (PPU) in Monochrome is 512, but Unity’s default is 100 PPU. If we don’t adjust it, the size will be way off. For compression, Monochrome uses High-Quality in order to deliver the smoothest, highest-definition experience to the player.
After meticulously filing away these settings, the sprite sheet can be sliced in the sprite editor. I slice it by count, as there is a clear 5×4 grid present. If this runs into any issues, I’ll adjust accordingly, but usually this works quickly.
After slicing, we must create an animation. Unity needs to know what order and speed to show these images at, and where. I create a Game Object with a Sprite Renderer and an Animator. In the Animation menu, I create a new clip and drag in all of the newly sliced sprites in order. Importantly, the sample rate must be set to 24, as these animations are all created with 24p in mind.
If there are no issues, and the animation is complete (i.e. there isn’t a second sprite sheet for the same animation), then we’re done here! I hand it off to another person to implement the scripts which call these completed animations. Usually, something will go wrong somewhere, often nobody’s fault. Staying vigilant for these errors is half the job when you’re implementing stuff like this.
This is the pipeline at work! Transporting dreams and drawings into actual real life video games, before your very eyes. Hope you’ve all been safe and healthy. Peace.
If you liked what I had to say, check out my previous blog post about the process of refinement in crafting level designs. Or follow my twitter, @virtualvolt, where I’ll probably sound a lot less coherent than I do here.
Nothing is for sure / Nothing is for certain / Nothing lasts forever