A key underlying idea behind 2D platformer level design is the notion of rhythm, and the timing and repetition of distinct user actions. Manually generated levels frequently contain a series of challenging jumps that must be timed perfectly. Our technique for automatically creating levels is based on this concept, where we aim to have the player feel a particular rhythm in his hands while playing our levels.
The level generator has two tiers: the first creates a rhythm composed of player actions (e.g. 'move', 'jump') and timing information for them; the second is a grammar which generates appropriate geometry for the rhythm provided. Levels are created by stringing together these 'rhythm groups'. Our system provides human designers with some control over the overall style of levels, allowing them to specify the general path that the level should take, and the frequency with which certain components (such as a spring or a moving platform) will appear. All of the levels we generate are fully playable.