My groovy little rhythm game 'Jammer' has now shipped, and is available on Xbox live Community Games! It's too bad that Community Games doesn't have many customers at all yet, but I'm sure at least a few folks will dig it, even if I don't make a profit.
It's been super rewarding making it, and quite a change from working as an game artist. I'm surprised that I actually enjoy programming these days. I stopped programming many many years ago under the assumption that I couldn't stand debugging code, but newer tools make debugging much less painful than the old days (back when programs were composed of multiple clay tablets with imprints made by pointy sticks).
trailer - [ame]
http://www.youtube.com/watch?v=b7VXRvBez_U[/ame]
marketplace page -
http://marketplace.xbox.com/en-US/games/offers/00000001-0000-4000-8000-00005855020c?partner=RSS
Replies
A tech question. Did you convert the music to an intermediate data format or do you use some kind of music analysis algorithm? I have no clue if you can do that in XNA but surprise me
I'll check it out when I get home.
The music is created as a collection of musical elements (loops and one-shot bits). A single element might be a bass line, a guitar riff, a breakbeat, etc. The game engine then functions as a multi-track mixer, creating the final output in real-time.
So does that mean you "create" music by hitting the buttons?
Well, not surprisingly Amplitude is one of Jammer's main influences, so there are definately similarities. The basic gameplay is a bit different. In amplitude you play a musical element for 2 bars, and if you do it right, it plays by itself for a while, and then stops. In Jammer, you play a musical element until you build up enough 'energy' for it to play, and then it plays until the end of the musical section. Once you have 'activated' enough elements, the section is complete. The sections, and the songs themselves end up not having any specific duration. So you can power through a level as fast as possible, creating a 4-5 minute version of the music, or you can noodle around some, creating sort of an extended remix of the base material. In amplitude the base material is unchanging, so the level is always the same length etc.
Jammer has some player input into the musical arrangement, but is basically the first step in adding more and more musical decision making to rhythm game gameplay. Building music in real-time from seperate musical elements opens up all sorts of possibilites. Amplitude had a bit of that, particularly in it's 'remix' mode (or whatever you call it), but being able to change the music was not the game's primary focus. Player input into the music is a primary focus of Jammer, even though I had to cut plenty of features for this first version in order to actually ship the thing.
Examples of future features that might end up in future versions - branching song structures/optional sections, user-created levels/remixes, and user-created sequences/elements. Amplitude could have gone in a similar direction if sequels had been made, but Harmonix got pretty sidetracked once Guitar Hero took off. The low hanging fruit for the big publishers is having customers tap along to pre-created music that players are familiar with, but I think putting focus on players actually improvising music (to some extent) is a lot more interesting in the long run.
I'd say you create a musical arrangement by hitting the buttons, but your not really creating music from scratch. Your choosing what order various intruments appear in the music, and sometimes choosing what gets left out (i.e. you can have an electric piano riff or a guitar riff, but maybe not both in the same section).
I'd love to eventually allow players to create/record music elements in real-time while playing, but that sort of feature is hard or impossible to implement using XNA (the tech used in Community Games), so it's on my wish list. Also, Xbox game controllers are surprising laggy in terms of music. The music creation tools found in Guitar Hero World Tour allow recording music in real time, but its horribly laggy while recording.