So to be honest, this will be a short one because this month's project may not be for you, anonymous reader. I'm not sure it's for many people at all. It's kind of for me, and kind of for my preschool-aged kid, who has recently been my co-pilot and assistant in some old-school platformer gaming. I could try to make this sound more lofty, an examination of the assumptions we make about gaming and how that knowledge is perpetuated without any formal methods of education on the topic, but really it just boils down to me having one thought - how do people, especially young kids, learn these things these days?
The optional theme of the month is Loops, and that also figured into the thought process - is there a benefit in having the ability to identify specific game mechanics that are used in a variety of games, and giving a young/new player a mechanism to retry each mechanic any number of times with no delay or penalty, and thereby allowing an extremely short iteration loop to facilitate rapid retries?
That led me to 2D Boot Camp.
Building the Skill Set
While watching the little guy sorting out how to aim Mario's feet onto the head of that first goomba in the original SMB, I realized that as an old guy in terms of video gaming, I had it easy. My first video games were so simple, he may never see them as anything but historical novelties that nobody would actually play these days. We had a Pong console. We had an Odyssey II, and an Atari 2600. Much of my early gaming days were spent in a world where there the only options for interaction with most games were the joystick and the button. THE button. Even the computer games I had (aside from the Infocom interactive fiction stories, which are a whole separate topic of their own) tended to only involve arrows and the space bar. In a significant number of those games, even up and down were superfluous. Move the ship left and right and fire upward at the aliens. Guide the paddle back and forth to bounce the ball. I lived through the progression of early home gaming, and by the time the NES came along, I had years of gaming behind me and I was ready for the new challenges and new options.
In 2014, where does a kid learn these things? Cultural osmosis? How does he know that the world expects him to move to the right? That blocks do things when you jump up and hit them with your head? That different blocks do different things? That falling is usually okay, unless you're low on the screen, then falling means you start over? Why can I touch this moving guy on top, but not on the sides? Why are coins good? So many games assume you already know all of these conventions, but if you didn't play through the last decade of games, where do you learn this stuff? Trial and error?
I decided it would be a good exercise for me, and then later maybe for my kid, to make a game that's more of a low-stress trainer for things that the 2D platformer genre expects you to know: where and how you can move, what will harm you, when you need to move in certain ways, and so on. Anything that can kill/defeat/whatever you occurs shortly after a checkpoint at all times, so there's no artificial extension of the length of the experience - if you can't get past something, you can iterate on it right there without interruption until you figure it out.
I started putting together a list of some basic assumptions platformers tend to make, and used that as a worklist for items I wanted to include in 2D Boot Camp. By my best estimate, the end result handles these cases:
Recognize geometry - walls, floors, foreground/background
Recognize visual hints/indicators/directions
Fall to safe location
Crawl under stationary obstacle
Jump over obstacle
Jump over hazard
Required running start for jump
Cross moving floors (either relative direction)
Jump to narrow ledges for vertical progress
Walk past moving hazard
Jump over moving obstacle
Jump over moving hazard
Duck and crawl under moving obstacle
Duck and crawl under moving hazard
Jump onto, ride, and jump off of horizontal moving platform
Jump onto, ride, and jump off of vertical moving platform
Use trigger to open path
Avoid negative trigger
Move object to create path
Duck to avoid hazard while riding moving platform
Jump from moving ground
Traverse series of small platforms
Traverse area of free-floating stationary hazards
Traverse area of free-floating moving hazards
Traverse platforms which move in and out of a hazard
Move horizontally to avoid hazards while riding a vertical moving platform.
I think in the end this was mostly for me. It makes me examine a lot of assumptions, and forced me to implement a lot of boring old basics that a 2D platformer needs to have but I'd never had to do anything with.
Note: the following builds are available for testing purposes but I don't have the ability to test them. These are Unity builds so I don't anticipate any serious issues, but I can't vouch for correctness or performance of these builds.