Steal My Game Idea: MOPUS

Nobody is going to steal your game idea, no matter how awesome you think it is. And to prove it, I’m talking about all of my favorite game ideas, in public, out in the open, nigh begging them to be stolen. Will they be? Not likely.

Today’s game is probably the weirdest one, certainly the hardest one to understand without playing it: MOPUS.

There this Flash game I really like called Pel. You control a paddle that can move to three specific spots, and the object is to catch falling squares. The hook is that the squares fall in seemingly random patterns, but there’s always a “right” order to catch them in that ensures you won’t miss any.

Something I found interesting about the game was the way the action is timed so the sound effects only occur on set intervals. Combined with a few pitch variations, as the game ramps up, the bleeps and bloops start to congeal into a sort of chaotic but rhythmic song.

This led me to think: Could I take it a step further and use a similar catching mechanic to guide a player through creating random songs that make genuine musical sense?

The music theory nerd in me got an immediate boner.

I call this game MOPUS, (short for Magnum Opus). The pitch goes like this. We already have two (well known) kinds of music games: Games like Guitar Hero and Rock Band, where note tracks are hard coded to match up with a prerecorded song, and games like Audiosurf, where the note tracks are procedurally generated by analyzing a song to create a level on the fly. Both types have some variations (Rez immediately comes to mind), but the general idea is the same: Create levels from the music.

Now what if I can go the other way, and create music with randomly generated levels?

So I built a prototype catch-balls-with-a-paddle game. In the background, the game chooses a progression of chords at random, and then chooses notes that fit into those chords, also at random. It then does a buttload of algebra to spawn balls assigned to these notes and time them so that, if the player does successfully catch them, they’ll form a simple song.

Here’s a video of it in action. Something worth noting: This version has a basic I-IV-V-I chord progression hard coded in. I have a version that does pick chords at random, but I can’t seem to get it running anymore. Also, MOPUS used to be called Muse before I got a C&D from Lucasfilm. :P

So that’s fine. It shows that, with lots of refinement, we can indeed make a random song and have it sound nice. What’s still missing here is player agency. All you get to do in this prototype is catch the balls, without actually participating in the creation of the song. What can we do about that?

You’ll notice I left some space below the paddle with these little icons scrolling across the screen. In the real game, those will be replaced by multicolored glyphs. When you begin a song, there’s a back beat playing, but no notes are spawning. While the back beat counts off a measure, you’ll have the chance to tap one of the glyphs, which will activate the music logic. The game will assign that glyph a random chord, and begin spawning notes to catch.

Some of these notes will be good notes that fit into the chord, and some will not, and the notes will be color coded to indicate this. Non-fitting notes aren’t necessarily bad, though! If all we did was fit our musical phrases perfectly into prescribed chord sequences, music would never have progressed past the 1800s. Weird note and chord combinations make music interesting!

So, depending on the song, you’ll be encouraged to catch more or fewer “off” notes and chain together chords that don’t necessarily dovetail perfectly. The notes you catch will be saved to a pattern, assigned to the glyph you tapped, and then the glyph will be posted along the side of the screen, ready to be reactivated later. You can then activate it again right away, or tap a new glyph to create another pattern with a new chord. Over time, the filled glyphs will age and die out, so you’ll have to constantly be ready to create new and interesting patterns. You’ll also be able to pinch-zoom in and out to other tracks to add multiple layers of instruments.

As you continue to add variety to your song, a little meter called the Muse Meter fills up. As long as the amount of weirdness you’re introducing fits in with the type of song the current game level needs you to create, your muse will stay full, giving you score multipliers for each note you catch.

Perhaps this makes a better TED Talk than a game, but the great thing about it is that, if done right, this game can theoretically have unlimited replayability. Every time you play, you’ll create something new! There can even be a sandbox mode where you get to choose some parameters (from concrete things like tempo, instrument types, syncopation, etc., to more abstract qualities like, say, weirdness and umami), then create a song that can be shared online.

This is obviously a really ambitious project. Naturally, we can’t just pick chords and notes completely at random, so much more sophisticated logic will be needed on that front. I don’t know when I’ll actually build this game for real, but at the very least, I’d like to pull the chord and note creation logic out into its own music engine to use in all of my games. Maybe even open source it? Imagine being able to have a different soundtrack every time your game is launched that fits into a musical feel that you prescribe with a few settings but that never repeats itself. Not only would this keep your soundtrack fresh and interesting, but you’ll also never have to worry about music in your game again!

Mind you, I can’t imagine this could ever replace a real musician, but even the best composers follow a set of subconscious rules. I think this could be really useful for small teams on a tight budget.

This entry was posted in Indie Game Development, Steal My Game Idea and tagged , , . Bookmark the permalink.

2 Responses to Steal My Game Idea: MOPUS

  1. GregH says:

    Nice idea! You should finish it :-)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>