Drop Shadows and the Importance of Legacy Knowledge

Do what thou whilt shall be the whole of the law.

Keeping tenured developers on teams and ensuring they are in a position to pass down their knowledge and ensure that certain solutions to problems aren’t lost is crucial and yet often forgotten. Problems that were solved on what today we would consider anemic hardware are often being forgotten not just how to solve them but that they’re even problems to begin with.

When gaming first started going 3D, there was a lot of consideration put into making that a transition that would be simple and intuitive. There’s been several different issues and they’ve been solved several different ways. When as things moved forward it’s like they forgot everything they’d already figured out.

Different developers had different solutions for the Z buffer problem and yet now it’s like they forgot it’s even a constitution now that they usually use these big engines to build their games on where the low leveling rendering routines are taken out of the hands of the developer. I bet if you asked a bunch of modern game designers what the Z buffer is, many of them would have no idea. It’s a problem.

The Z buffer is a layer of data that the program keeps track of in addition to the X, Y, and 3 color values for the screen render matrix. It’s used to calculate scene composition. To put it simply, in addition to a given pixel’s location and color on the screen, the computer also keeps track of how far that is away from the camera. (Camera being an invisible object in the game world that the scene is rendered in relationship to as if it was a TV camera.) When it starts drawing a scene, it starts drawing the objects one by one. When things start to overlap, it looks at the Z buffer to see which one is closer to the camera and then that one is the one that gets drawn. It’s not that complicated a concept but it’s extremely important to understand when it comes to rendering 3D graphics.

Ok so now that you know what it is, what does it have to do with game design beyond just the rendering engine? A lot actually. When you’re playing a 3D game on flat screen, your eyes can’t see depth. It guesses depth based on clues like things look smaller when they’re further away. For most things that is good enough to understand what’s going on in a scene for passive media like TV and movies. However when it comes to games, some genres need to keep that lack of depth protection in mind or it can become extremely frustrating for the player.

The genre the tends to effect the most is platformers. We’re talking about games like Mario, Sonic, Rayman, Pac-Man World that sort of thing. Games where a lot of the time you spend your time using joysticks and a jump button to move your character around in an environment and jump on top of platforms and other such things. So what’s special about them that the z buffer being something the player can’t see is more of a problem than other genres?

Platformers, due to the nature of the beast, involve a lot of precision to make sure you land on what you intended rather than some other thing nearby or worse, falling to your death.

For 2D platformers, this isn’t an issue. Everything you need to know is right there on the screen. Up down, left right, that’s it. Walk along the X axis, jump along the Y. Simple. However when 3D comes in now you have a problem. Sure, seeing where something is on the X and Y axis on the screen is relatively simple but the TV can’t show you depth so how do you know how far into the screen something is in the game world? All you can see are flat shapes on a screen.

Well as far as drawing convincing 3D graphics that’s simply a matter of projection, which is a method in mathematics which draws an interpretation of an object in a higher dimension into a lower one. You probably learned about it in school but even if you didn’t that’s not super important right now. What is important is the different ways people have gone about solving the problem. So how did they solve it? Well, I personally have seen 3 different solutions. There may be more I’m unaware of but these are the ones I know about.

The first solution I call the fixed camera method. This is the one that the developers of the first Crash Bandicoot games used. Simply put, they always took a direction of movement away from the player so they’re never in control of too much at once. In the main stages, the camera perspective is fixed behind Crash and while it moves forward and back when he moves, it will not move side to side. This means that the distances between objects on screen will always look the same not just in that level but all levels that are in that style.

Then the second solution is what I call the Kirby Solution because it was the method used for Kirby 64. It was also used in many of the Crash Bandicoot bonus level areas where the game essentially plays like a 2D platformer that’s simply being rendered with 3D assets. I’ve seen some call this 2.5D but I don’t because it can get confused with the style of software rendering used in early first person shooters like Wolfenstein 3D, Catacombs 3D, and Doom, which is often also called 2.5D. To get a bit more technical, this solution simply takes away the Z axis and only lets the player, platforms, enemies and such move along the X and Y axis. So we have solutions that simply take some type of control away from the player to sort of just work around the issue rather than actually solve it directly. It’s a perfectly valid approach but it can be limiting at times both in terms of level design and player freedom.

So what solution is there that tackles the problem directly and leaves the player with the most freedom? The answer, one that’s been used in 3D platformers pretty much from day 1 is called the drop shadow. With the drop shadow, all objects that it’s important to be able to judge the distance of the Z axis there is between two points is to have a shadow that’s dropped straight down onto the surface directly below the object regardless of where the light is common from. It’s a really elegant solution because it’s unobtrusive, easily understood and used without explanation, and easy to use in a game. By having the shadow this way, you can see on a relatively flat surface the distance between things shown in 2D while being in a 3D world.

Now, it is slightly less realistic in terms of photo realism to have a shadow directly under the object even if there’s no lights directly above them to cast it, but it makes everything way less frustrating and in a subtle way that isn’t going to distract from any of the other visuals in a major way like something like a HUD might do. Plus, it’s great for both the developers and players alike. Developers don’t have to restrict themselves as much in terms of world design and believable locations, and gamers get more freedom to move around and explore without losing track of the size and distance of objects on the screen.

So why am I talking about this? Well, as you can probably guess, modern developers seem to have completely forgotten not only this solution but that the problem even exists in the first place. So many modern platformers are being made without and it’s really a shame because they can become really frustrating really fast.

A great example is the infamous Rail Canyon in Sonic Heroes. You spend most of the time grinding on rails and hoping between them as you travel along the side of a cliff face. Most of the game is pretty good about drop shadows but suddenly they’re gone and the difficulty and frustration ramps up dramatically. It’s hard to land jumps, see when things are coming, and just navigate the world in general. The game has drop shadows but because of the level design of having no ground beneath your feet, only rails, means you have no idea where you’re jumping and if you go too far.

Unfortunately it looks like Sega never learned their lesson either because it’s even worse in Sonic Frontiers. There’s no drop shadow at all. Now this isn’t a problem due for a surprisingly lot of the game but there’s two mini bosses in particular that become a massive pain because of this. There’s this mini boss you have to fight by grinding along circular rails in the form of rings. It shoots a spinning laser at you and you have to jump between them to collect blue orbs while avoiding the red ones. Simple enough concept and decently clever without being overdesigned but the execution is godawful because there’s no drop shadows. The rails are only distinguished from each other along the Z axis and spins just so that it never shows you any other angles. Then the orbs have no shadows at all which makes it hard to tell where they even are compared to the rails. Then the laser is translucent which means it’s hard to judge its location. And nothing has a drop shadow, and the faux sun shadow is at such an extreme angle you usually can’t even see it. It’s a tremendous exercise in frustration and one that’s totally unnecessary if they’d just add something that’s been a known solution to this problem as long as the genre existed.

At the time they were originally intended, drop shadows were the only kind of shadows they knew how to render quickly, but even as things went forward they seemed to understand the importance of it and have it in addition to a “natural” shadow until more recently where they seem to have just completely forgot the problem entirely.

So to reiterate the point I’m making in this case, it’s extremely important on any team to take advantage of the knowledge held by more senior members because they may well know the solution to a problem you didn’t even realize you had.

Now, there is a fourth solution I’ve seen that we haven’t talked about and that’s because it only deserves a slight mentioning because it’s the hardware solution; 3D screens. The most famous version of this is the 3DS and Super Mario 3D Land, which plays a lot with perspective and the extra information given to you when you can see depth. There’s also Lucky’s Tale, which requires you to wear a VR headset and is one of the few games I’ve found that uses the headset as a camera rather than the player’s head. Most VR games are first person but Lucky’s Tale is a 3D platformer. It feels a bit like playing the game with action figures.

Ok, now that I’ve gotten that out of my system it’s time to give that mini boss a second go.

Love is the law, love under will.

Determined,
Vanessa