Tuesday, August 31, 2010
My secret project, a procedural exploratory game for YoYoGames' summer competition, is ready to show the world. It is called Mayflight.
It's sort of like a Metroidvania in some ways. It is a platformer, and you explore a big mappable space looking for powerups and fighting monsters. However, it has no end. The game world is randomly created every game, and has no edges. Exploring out several areas, bring up the map and zooming out, then seeing the trail of blue rooms extending off-screen is kind of fascinating.
Also, the powerup/map dynamic isn't the Russian nesting doll setup of ever-increasing exploration spheres made available by finding new equipment. Instead your character, Aurora the fairy, is weak in ability at the start, but becomes stronger generally in various areas by finding powerups.
Because there's no end to the world, and the powerups increase ability rather than grant new ones, the point of the game changes. There is a time limit, and the idea is to go as far as you can during it. Although it starts at only ten seconds, you can extend it continually by finding "sparks," which are scattered around with the ubiquity of Mario's coins. The game is played for high score. The two scores provided are raw distance from the starting location upon death, and a more traditional score that generally measures playing ability and accomplishment.
Playing it, it seems to have a nice balance to me. The monsters are challenging without being overwhelming (at least not until you have had a chance to power up), the constant need to extend your lifespan means there is little downtime, and it's challenging while possible to survive for more than an hour with good play. I was even able to squeeze a couple of covert pinball references into the game's interface. I'm particularly proud of the background generator, which is able to produce a wide variety of interesting dynamically-generated looks for areas for relatively little processor time. I post some of the more interesting screens I've seen it generate here.