An interesting part of game development that I hear so little about are “accidental features”. Sometimes the code doesn’t work quite as intended and produces a resulting system or mechanic that is interesting. This is important for new developers to hear, especially one person teams working on their first or second game. Not every feature of a game goes from the drawing board to the final product. Sometimes the most iconic features started as bugs. Sometimes these features are bugs that couldn’t be squashed so they were implemented into the game as “working as intended”.
I released my first game, Tiny Knight, about nine months ago. It is a hardcore platformer inspired by Impossible Game where you play as a knight who automatically moves to the right of the screen and your only input is pressing the jump button. Spikes are everywhere and each level requires perfect timing to make it through. Despite being a pretty simple concept — which nothing ever seem simple for your first game — I ran into quite a few issues with collision detection. The first being that pressing jump repeatedly against an object would cause the knight to slowly phase through it horizontally. After fixing this problem, though, I came upon a new one. When jumping, if the knight’s front foot landed on the top left pixel of an object her foot would get stuck in that pixel. While in this state, jumping would cause the knight to jump as normal and continue on with the game. I worked on the collision code for many hours across a couple of days and could find no fix for this bug. So I called it edge hanging and implemented it into the level design. Some of the trickier areas in the last level absolutely require this technique to get through. It also acts as a way for the player to assess the immediate surroundings at their own pace as it is the only way to stop the knight, other than running into a wall. Now that Tiny Knight is finished, I can’t imagine it without this “bug”. Don’t think this is something that only first time developers do either.
Probably the most notable accidental feature was Street Fighter II’s “combos”. I use quotations because the original version of Street Fighter II didn’t have combos but there were certain attacks that canceled the animation of the previous attack resulting in both hits connecting without the opponent being able to retaliate between them. This was a known bug to the producer of SFII but he didn’t think that players would push the mechanics enough to warrant fixing it. As we know, SFII: Hyper Fighter mentioned combo attacks in their promotional material and Super Street Fighter II was when the game became to reward long combos with score.
Race ‘n’ Chase was a top down open world game with both police and criminal missions featuring the ability to drive any car or run on foot. The game tested so-so until a glitch caused the police AI to drive recklessly resulting in some heart pumping car chases. The testers found this to be more fun than the core game and began to assault the police until a chase begun just to see how far they could make it. The police missions were scrapped and the insane AI was kept, though the name of the game was changed to Grand Theft Auto.
Finally, we come to Space Invaders. Everyone knows that the game increases in speed as more aliens are defeated. This wasn’t originally intended but was a side effect of how slow computers were. The game couldn’t run at full speed and display all of the sprites simultaneously but as the aliens were killed the processor had more resources and ran the game faster with each death.
Glitches and bugs aren’t always aspects that need to be corrected. Sometimes they are glitchy messes that need to be fixed, but sometimes they can introduce a novel idea or new concept that separate your game from everything else out there.