January 18, 2009

Maestro

Maestro is a crappy tech prototype.

What it will be is a music game that is designed to let you dance with your mouse cursor. I should explain. Audiosurf is a game that takes your mp3s and creates a game level out of them that functions as a sort of action puzzle rhythm game. I like Audiosurf, but I'm upset the fact that I can't hit all the notes and succeed. The player has to strategize frantically on most game modes, and even with the simpler ones you can't just groove out in the game. Maestro is an attempt to create a game that also uses your mp3s to procedurally create levels, but simply asks you to move the mouse around in a way that matches the music.

Another source of inspiration for me was the strange phenomenon of dancing. I hate dancing as it's most often described, depicted, and seen. But I love drumming my fingers, bobbing my head, tapping my foot, and singing along to music. If I really really get into a song, I'll gesture with my hands, moving them around with the action of the song. So I figured that I could just have the player move the mouse in a similar fashion and get the feeling I was going for.

I've had this idea banging around in my head for a while. Now that I've finished Meridian, I figured it was time to see if I could pull together a fun prototype.

So far, I'm just working out the technical details. I can load up a WAV file and display the volume in synchronization with the song, and I can measure mouse movements and graph them in real time. I'm currently experimenting with different systems for smoothing out the different waveforms.

This is a picture of one of the earliest working prototypes. The top line is mouse speed data, the middle is a smoothed version of the top line, and the bottom is mean volume data for the WAV file. The song is Girl by Beck.


Here's a slightly more developed prototype, a few hours later, using the same song. Blue is smoothed audio data, light red is mouse speed data, light blue is adjusted audio volume data, and the last line blends the previous two.


As is mostly evident, I have a lot of work to do before this gets to a satisfying state. If I can make Maestro work well, then I'll redo it as a full production, with fancy particle effects and changing colors a la Audiosurf.

January 10, 2009

Meridian Retrospective

Today, after a four-month development span, Meridian was finally finished.

I wrote previously about its conception and evolution
, but there's still room for the typical postmortem analysis.

It was my first project using XNA and C#, and I loved them both. Partially it's just that I'm a fan of Visual Studio C# Express, but really, everything was so easy. Once you spend an hour or two learning the basic setup, all there is to do is implement game logic, i.e. the fun part. I decided to add sound very late in the project, and XNA made it very easy. A++ would program again.

The art in Meridian was a huge step up from that in Asp. That's mostly because I didn't draw anything from scratch (except for the gates-- the worst sprite in the game by a long shot). For the backgrounds, I did what I usually do: find a cool image (thanks NASA!) and then play around with the filters in the GIMP until it looks cool. Those who know the program will note the use of the Waves and Starburst filters all over the place. For the fleet images, I found a free 3D model of a spaceship, loaded it up in Milkshape 3D, and took a screenshot of it. I also took a couple of perspective shots for use in the victory and defeat screens, which I think turned out very nicely.

I still had a single huge code file (over 3500 lines), but I used Visual Studio's #region tag to make it nice and collapsable throughout, so it never really hindered me. My commenting practices were as nice as they've ever been, and I never made any huge programming snafus that I know of.

But of course, it's design that really counts. The high-level design of Meridian changed very little. That is, I stuck to the original vision. But I had to make a lot of small rule changes in order to make that vision work.

One nice thing about Meridian is that the game states are very distinct in comparison to those in Asp. This meant that there were very few situations in which the game wasn't playing as I intended it to. One consequence of that, of course, is that the flaws in the gameplay are completely my fault. I can't blame this one on technical problems or anything like that.

The biggest problem that Meridian has is that the AI is forced to stay limited. I added boosts to break the inevitable stalemate of both sides avoiding each other. For that to work, the AI can't take boosts into account when considering which hexes are safe from attack, lest we run into the exact same problem as before. So they totally ignore defence from boosts, and suffer for it. The AI is also very vulnerable to the poisoned pawn strategy; it will take whatever it can get.

That's the primary reason I decided to include difficulty levels. I knew that once the player solved the AI puzzle, they'd have to start with a disadvantage to have an engaging experience. I know that Dice Wars is fun even after the player has solved it, and Meridian also uses randomness to provide basic variety, so I have hope that the game can stay fun.

Lastly, I'm very happy with the saving system I used. Because the game employs randomness, players might be tempted to revert back to an old save in order to get good outcomes on every chance they take. To ameliorate this problem, I only allowed one save, and the save updated after each turn and each time the player exited the game. This has the disadvantage of only allowing a single game to be active at any time, but I consider that acceptable in a game of this scope.

January 5, 2009

Commentary: Left 4 Dead

Raph Koster advises game designers to figure out what a game is about and then do nothing that would detract from that focus. I think that the developers of Left 4 Dead took that to heart. Every single aspect of the game system contributes to the creation of the best cooperative gameplay experience I've ever had. I'm a huge fan of pretty much any co-op experience, from side-by-side Gears of War battles to RTS comp stomps, but L4D easily takes the cake.

The general difficulty with co-op gaming is making everybody feel important. When there's a bunch of players fighting an AI, it's difficult to feel like your contribution was necessary. L4D gets past this by making it genuinely necessary that all four players work together (at least on the higher difficulties). If one player runs ahead, he will quickly get incapacitated or mobbed by zombies. If players don't stay conscious of each other's position, they'll end up losing due entirely to friendly fire. If players don't collaborate to use their resources effectively, they'll never make it past a end-of-campaign finale.

L4D does some cool things with the level design and art direction, but I think that the gameplay is its real strength, and the game stands as a testament to the idea that doing one thing and doing it well is a ticket to success.