Donkey Kong II Is a Master Class in Simple Game Design
Game & Watch consoles are great tools for visualizing finite-state machines
As a child, I was immensely fascinated by Game & Watch systems. They were the first truly portable game consoles in the early 80s, and what piqued my interest was how they exposed the entire game design process. There is this magical moment when you first turn one on and see all of the graphics states before you can play. This bootup is a unique characteristic of all Game & Watch systems that pulls back the curtain on what would usually be entirely hidden by code.
The Game & Watch systems are the perfect compromise of functionality and form. At a time where most game systems required a TV, the Game & Watch system took what was mainly the guts of a calculator and turned them into a fully playable game. Nintendo produced these systems until the early 90s. A few other companies were trying to make similar products like Tiger Electronics, which released a paired down version of Mega Man 2, among other well-know titles from the same time. Before the Game Boy was released, these systems were relatively cheap, easy to play, and a great source of entertainment on long boring car trips with the family.
Even at an early age, I didn’t play games as normal kids would; I studied them. I’d take notes, obsessively draw the game art, and create new variations in my head. Before I got my first computer, it was difficult for me to understand how to create video games. Conceptually I realized that there was a collection of instructions that managed artwork, rules, and input, but since I didn’t know how to code, video games were a black box. So when I first discover that you could see all the graphic states when the Game & Watch systems booted up, everything clicked.
A finite-state machine is defined by a list of states starting with an initial one and then the input triggers each transition.
Games are giant state machines, a fact that is obvious to me now after 30+ years of coding them. I wonder why we don’t have more examples of how to program these types of games? When learning how to program state machines, a simple game like this would be a perfect place to start. With that in mind, let’s break down the basic rules of Game & Watch’s Donkey Kong II.
The main goal of the game is to control Donkey Kong Jr and free his father, Donkey Kong. Along the way, there are a few obstacles such as traps, electric sparks, and birds. There are 4 keys that unlock the chains around Donkey Kong’s arms and legs. You start at the bottom of the second screen and using a combination of the d-pad and jump button, climb along vines towards the top of the first screen. Finally, the movemnt is entierly on rails limiting movement to pedefined locations and the enemies are on predictible loops requiring pattern recognition to avoid them.
And that’s it! There’s not much more to the game. Remember, this is running on 40-year-old calculator hardware. Ironically, this isn’t that far off from the original arcade game. I consider it to be one of the more accurate Game & Watch ports. From a design standpoint, it’s easy to understand as well. Due to the hardware’s limitations, they converted a platformer into a turn-based game, which is relatively straight forward to emulate with today’s game development tools. When you add all of this together, it sounds like a fun little experiment in minimalistic game design.
If you’ve followed my work on Pixel Vision 8, then you may be familiar with Christina Antoinette Neofotistou, who designed Pixel Vision OS. She created a cute little HTML5 Game & Watch style game called Wobble Jump that nails the ascetics of these game systems.
I’m a big believer in using games to help learn how to program and make you a better developer. A lot of the time, game projects quickly grow in scope, and most people get bogged down or give up. Learning how to create finite-state machines is a critical design pattern that all developers should know. This is an excellent opportunity to combine the two.
Next time you are looking for a simple weekend code project to challenge yourself, why not build a Game & Watch style game? Map out all of the states, the input required to transition between them, then implement it a language you are comfortable with. Most of the logic can be done with unit tests before you even need to create the graphics. You’ll find that having a clear plan based on the point of reference, like one of these games, can help you learn a new skill.
Game & Watch consoles are a product of their time, and there hasn’t been anything like them since. They can still be a source of inspirtaion for aspiring game developers looking to build something simple from scratch.