Game Design Lessons Learned -- From A Bobcat In A T-Shirt
Ever since Mario exploded into a media phenomenon in the late 1980s to early 1990s, game companies have been trying to capitalize on that success by introducing their own mascots starring in their own video games, starting with Sega's Sonic the Hedgehog from 1991. Well, it didn't start with that game, but that was the game that really kicked the mascot craze into high gear and produced a character which could (at the time) challenge the dominance Nintendo and Mario enjoyed.
But the thing is, a mascot really only works if it stands for something. Mario not only represented Nintendo as a company, his games stood for the values Nintendo was widely considered to stand for: fun for the whole family, games for all ages and skill levels. Even Sonic, despite mainly being a big ball of attitude, represented the marketing angle that Sega was taking to compete with Nintendo, producing more complex and more importantly, edgier games that appealed to a late-tween to teen demographic. But really, at the end of the day what does Mr. Nutz represent, besides shameless me-too-ism?
Okay, I'm getting off track. The point is, after Mario and Sonic blew up among the public, every game company felt the need to develop a mascot platformer of some sort. Usually the mascot was a Sonic ripoff -- some sort of cartoon animal with "attitude". These ranged from the interesting (Rocket Knight Adventures), to the merely bland (the aforementioned Mr. Nutz), to the downright awful such as today's subject: Bubsy the freaking Bobcat.
The truly flabbergasting thing about Bubsy is how bad his games are. Every single one of them -- and they just get worse and worse, culminating in the God-awful, franchise-ending cascade of fail that is Bubsy 3D. But they're competently coded; they don't glitch out like, say, Cheetahmen. They're just -- nearly any time the designers had an opportunity to make a game design decision, they made a bad one. Strangely enough, that makes Bubsy a useful learning tool for aspirant game designers like me.
Everybody should play Bubsy to get a sense of what these games do that's so fundamentally wrong. We take good game design principles so for granted that sometimes it takes a bad game -- like Bubsy -- to get us to notice them because they're missing. Just go ahead and track down the SNES version or -- I hear the first couple of games are out on Steam now, so I dunno, you can go get 'em from there. Just play through the first few levels of the first game, Bubsy in Claws Encounters of the Furred Kind. It won't take you long to find the fail.
For one thing, the game messes with your ability to anticipate danger. It just seems like everything in this game is designed to pop out of nowhere and kill you. Other platform games -- such as Mario and Sonic -- have level layouts that let you spot and react to an enemy or obstacle before it poses a real threat. Not Bubsy. For one thing, the first Goomba in Super Mario Bros. is two full screens away, giving you plenty of time to anticipate his arrival. The same goes with the first Motobug in Sonic. Note also how it takes a while for Sonic to build up to his full speed over level ground, so even if you remain at ground level, you still have plenty of time to anticipate the Motobug and jump on or over him. And the game distracts you with a 10-ring item box up on a ledge, so if you go get that, the first Motobug will miss you entirely (but you will still see him so you have some idea of the peril that lies ahead).
Bubsy? The first enemies (plural!) are in the very next screen over from your starting point. Notice how Bubsy is poised when the level starts, like a runner on his mark, ready to book it. The game encourages you to go fast, in a manner like Sonic. Bubsy himself has a steep acceleration curve. He goes from zero to booking it in like two seconds. With the huge sprites in this game, that means he's probably going to run smack into those enemies before you have time to react to them. The game encourages you to go fast and then immediately punishes you for doing so, pointing and going "Ha ha!" like Nelson Muntz. You simply cannot go full speed in this game without paying a heavy cost. You don't even need to touch enemies in order for them to kill you. One very common enemy can literally kill you by sneezing on you. Another problem is that the camera waits for Bubsy to reach the top before scrolling up, or the bottom before scrolling down. This makes it hard for you to see what you will land on when jumping, bouncing, or falling -- and you could land on an enemy (insta-death) or water (also insta-death) without realizing it. If there's a ledge above you, you may not know what's on there until you land on it. Could be nothing. Could be an enemy, or a crate full of thumbtacks. Normally these games are designed to encourage exploration, so that if there's a platform up high somewhere, the player will want to climb up there. But in Bubsy, the levels are laid out in such a way that any route the player may wish to take is fraught with nasty surprises -- and the player won't know what's there until it's too late to respond. That's bad design.
It gets worse. There are secret tunnels throughout the level, and some of them go straight into water without you having any way of knowing -- or doing anything about it once you've committed to taking that route. You just gotta memorize which ones go where -- which is hard because all the entrances look alike -- except the ones that have manhole covers which can kill you.
Another way this game fools with your ability to anticipate danger is there are innocuous-looking things which are actually quite dangerous. For example the manhole covers I just mentioned, which flip around to periodically open and close certain pipeways, but can also kill you if they hit you. There are also the famous gumball machines which shoot tiny, barely visible gumball projectiles that kill you in one hit. They look a fair bit like the halfway marker in Sonic, or at least like nothing that will kill you. But they will. So you have to watch yourself when you encounter anything that looks unfamiliar in this game. In one part of the game, all of a sudden and for no reason, there are yellow cars which endlessly respawn. They're large and they move pretty fast, so of course you have to have Jedi reflexes to anticipate them but they can be killed. Then there are the red convertibles that look almost exactly like the yellow cars -- except when you follow your instincts and jump on them the way you did the yellow cars, you become trapped inside and die.
Did I mention you die in one hit? Because -- yeah, you die in one hit. Touching, or even sufficiently approaching, an enemy kills you (unless you land on top of it with sufficient accuracy), a gumball from a killer gumball machine kills you, water kills you. Seriously, water kills you. Why? Because cats don't like water, HURR HURR. Never mind that some breeds of housecat love water; and bobcats are excellent swimmers. Nope, they just decided to make water deadly for an easy cartoon gag. Not even Sonic did this; Sonic sinks like a stone because of a false belief that hedgehogs can't swim, but water isn't immediately deadly to him and the underwater parts of Sonic stages have interesting (if challenging and frustrating!) mechanics. But in Bubsy water is deadly. Except when it isn't. Falling from a sufficiently great height kills you. Seriously? Falling damage in a platformer? I swear I've died for reasons I couldn't guess, like falling off a rollercoaster in the fourth level. After restarting on a fresh life, I was unable to replicate this death. Strange. The controls are some of the worst.
The controls are simply awful. Basically, there's no implementation of momentum that maps to anything in the physical world. Bubsy accelerates to full speed from a standing stop before he travels one screenful; and he screeches to an immediate halt once you let go of the control pad. Oh, except if he's on a grade in which case he will walk, automatically, at a pretty good clip, down towards the bottom of the hill. Sometimes, when running up a grade, instead of slowing down the way Mario or Sonic might, he will speed up. When he jumps, it's even worse because of the wonky mechanics around what I call jump aftertouch. Jump aftertouch is the ability -- pioneered in Super Mario Bros. -- to steer the character's trajectory after they jump. Bubsy has very unresponsive jump aftertouch -- even worse than Sonic. Unless you jump from a standstill, you are pretty much unable to steer your midair trajectory. And even you think you are jumping from a standstill, you may not be because of the rule about automatically running down slopes. If your takeoff point has the slightest grade to it, you may drastically overshoot -- or undershoot -- your jump, sending you careening into an enemy, or water, or a red convertible, or whatever other hazard lurks just beyond the screen.
All of this is invalidated, of course, if you use the glide. Why does Bubsy have a glide move? It doesn't even appreciably slow his descent. If used it prevents fall damage, it allows much better control over Bubsy's jump arc, and it increases the size of his hitbox for collision detection purposes when he's killing an enemy. (His hitbox is always huge when it comes time to determine if Bubsy is killed...) It's more of a "fix what's broken about jumping in this game" button. Why not make jumping not broken to begin with and give Bubsy some other move? Maybe a dashing scratch on the ground and a homing pounce from the air? Super Mario 3D World with its Cat Mario power-up gives you better cartoony cat-themed gameplay than does any Bubsy game.
And all of these flaws -- poor level layout, the inability to make sense of just what is a hazard in Bubsy's world, the wonky camera, the janky controls, the fact that everything freakin' kills you in one hit -- would be bad enough on their own. Separately they would have made the Bubsy series a mildly annoying, but forgettable artifact of 90s mascot mania. The seething hate for Bubsy comes from the fact that they all occur together and reinforce each other, creating a stacking effect of frustration.
I won't even get into Bubsy 3D. Not only because it brings terrible to new heights that I don't wish to contemplate, but because NullAwesome is a 2D platformer and I want to focus on aspects of 2D gaming that Bubsy is a negative example of. This isn't really a rant about how terrible a game is -- angrily nerding out about video games is plentiful elsewhere -- it's a dissection of why that game is terrible, so that lessons can be learned about how to make my own game good. Or at least not sucky.
Lesson 1: The player should be able to see well ahead of them. Turns out, I really don't know that much about how cameras work. Careful study of Bubsy's terrible camera -- and the really good camera dynamics from Super Mario Bros. -- convinced me that I should not let Lorn get further than halfway across the screen -- in either direction depending on which way he's headed. The way the camera works in Mario is really quite interesting. The screen starts scrolling when Mario is about 1/3 away from the left edge -- but at a slower pace than Mario's walking speed, allowing Mario to continue advancing across the screen until he reaches the halfway mark, at which point the scrolling matches his speed and he remains horizontally in the middle of the screen.
So a good camera system that doesn't let the camera lag behind the player character and prevent the player from seeing what's ahead is paramount.
Lesson 2: Hazardous things should look hazardous. Why does water kill you? They had lots of options: lava, spikes, poison, bottomless pits, nuclear waste, electricty -- and they chose water?! This lesson is a reminder to myself to carefully choose tiles for environmental hazards that really communicate the sense of "hey, you really shouldn't touch that" to the player. They should stand out and be sharp and pointy, or glow menacingly, or sizzle, or crackle with electricity. The same goes for the enemies: I want to avoid putting in any innocuous-looking, but quite deadly, gumball machines. In Mario, anything with mean eyes that's coming at you is probably bad. In Sonic, all of the enemies are robots, so if it's mechanical you probably don't want to mess with it.
I have two main enemy types planned for NullAwesome: Altean guards and robotic drones, with a few subvariants of each. I think I actually want to go one step further and make all of the enemies conform to a specific color scheme, one which contrasts with Lorn himself and matches the ZetaCorp logo -- just so that when the player sees those colors, they think "enemy".
Lesson 3: Put enemies and hazards in the player's way, but not in their immediate path.
So which seems more fair to you? This:
L = Lorn E = Enemy # = Ground = = Elevator ==== L E E ##############################################
L = Lorn E = Enemy # = Ground ==== = = Elevator ==== E E ######################## ######################## L ######################## ##############################################
In both scenarios, once you're at eye level with the enemies, they can spot and shoot you. In both scenarios, the player can see that the enemies are in their way and they must defeat or evade them in order to pass. However, in the first scenario, the player will encounter the enemies simply by walking right. The second scenario puts the enemies up on a ledge, so that the player can't easily stumble onto them. They can stay on the lower level and have a good think about what to do. They still have the same need to overcome the enemies in order to continue, but this time they can choose to engage the enemy on their own terms. Messing with the player's ability to think, plan, and choose is death for your video game.
The same goes for hazards. Again, which seems more fair? This:
L = Lorn # = Ground ! = Lava ## ## L ##############!!!!!!!!!!!!!!!!!!########## ##############!!!!!!!!!!!!!!!!!!##########
L = Lorn # = Ground ! = Lava ## ## # # L # # ############## ########## ############## ########## ##############!!!!!!!!!!!!!!!!!!##########
Maybe the player can stumble into enemies and hazards in the later levels, when they've mastered the controls a bit more. But in the early stages at least, it's better to keep the player out of danger until they've decided to engage the danger by moving forward.
Lesson 4: Surprises in the game should be pleasant. Unpleasant surprises should give the player at least 1 to 2 seconds to react.
"Pleasant surprises" are things like the invisible block that yields a 1-up in Mario. "Unpleasant surprises" are things like being transported to a room full of enemies with the door locked, and you have to defeat them all to get back out. If the player comes across an unpleasant surprise, the player should be given a) a way out, and b) time enough to assess what's going on and react accordingly. Unpleasant surprises that kill the player instantly are to be avoided altogether.
This isn't really a hard and fast rule. An unpleasant surprise that kills the player can be fun in a troll game like Portal, old-school text or graphical adventures, or "kaizo" platformers. But in order for it to be fun, death has to be cheap or otherwise not frustrating. In kaizo platformers, the extreme difficulty and high risk of death is supposedly part of the fun. But in Bubsy, the game goes along relatively consistently (by Bubsy standards anyway) then WHAM! You're killed by a... gumball machine? Or go into a pipe that leads directly into deadly water or something. That's just bad design.
Since NullAwesome is not a kaizo platformer, cheap deaths should be avoided and deliberate tight spots should be carefully designed to give the player time to think and react. If the player is taken by surprise, it should be with rewards and not punishments.
So those are some of the things I've learned from everyone's least favorite bobcat. Because if Bubsy can teach us anything, it's all the things that can "paw"-sibly go wrong in your game design.