I Dream of a Beam – Postmortem

This was my first Ludum Dare, and I was thrilled to not only finish my game, but actually kind of like it a lot! :) First things first, big thanks to everyone involved in hosting and running LD, thanks to everyone reviewing games, and a big thanks and congratulations to everyone (all 2437 of you) who finished a game!

Screenshot

I Dream of a Beam ScreenShot

 

Minimal Design

I spent about three hours Friday night watching videos of other games. I had come up with several game ideas for most of the top themes from the early rounds of voting, but I distinctly remember thinking there was no way “minimalism” would win… Shows how much I know.  I ended up coming up with an idea for a simple shooter with no actual shooting; just a bunch of things that can be cleared with horizontal and vertical lines so that you can position yourself to maximize the number of things cleared with each shot while ‘minimizing’ the number of shots you need to take. I think this idea came through cleanly and it allowed me to finish the main player mechanics quickly and add more depth by adding different types of enemies. Finally, the theme let me save a lot of time on art by using solid colored rectangles for everything.

Audio – A Risk Rewarded

Things were going smoothly on Saturday, I had player movement, particle explosions, basic enemy types and some simple sounds all done. Then, after dinner, I had this mental conversation:

Idealist Me: “This game would be a lot better with dynamic music and sound effects that sync with the music!”

Realist Me: “I’ve never done that… How am I supposed to do that..”

Actual Me: “Oh well, no time to think about it, time to get it done!”

So, over the next 5 hours, I programmed an audio controller that counts the time to play sounds on beat, made some music on iNudge and recorded it track by track, had the controller randomly add and remove tracks during gameplay, then finally sent all audio effects through the controller to sync them with the music. I also got to bust out some math / music theory to figure out the frequency ratio  needed to scale the sound effects by 5ths for more dynamic sound.

Somehow, it all worked, and was really awesome. The music isn’t all that good, but it’s passable and syncing the effects with it is a great subtle effect. I have been getting a lot of positive feedback on the sound, and I think it really adds a great extra dimension to the game.

Finish Early, then Polish!

This was the approach I took to making the game. After the audio controller was finished late Saturday night (and I got some sleep), I had a basically playable game. I spent the early part of Sunday throwing in a scoring system, then adding as much polish as I could. First was XBox controller support. I think these types of game are better with a controller, and Slick has the option, so why not? Then I added a simple menu, controls screen, and credits screen. These don’t take that much time, but it makes the finished product look much better. Finally, when all of that was done, I worked on making the game more fun by adding more enemy types. I had horizontal, vertical, and diagonal movers, and, realistically, they should never kill you. So, I added the orange following enemies and added a little bit of random behavior in them so they wouldn’t just stack on top of each other. Then the light blue enemies… They were supposed to be sinusoidal, but they’re also at a random diagonal, so they are actually pretty hard to follow (for me at least). Finally, I added a system to spawn enemies at the end of every 4 musical measures (to sync with the music) and I was out of time!

 

 

Screenshot 2

Uh Oh

 

Room for Improvement

First, I had sketches for at least four additional types of enemies that did not make it into the game. Oh well.

I have also received some feedback about the player stopping movement while shooting. This was actually not a bug :) , but a conscious decision. Before I made that change, you could stay alive forever by constantly moving around and spamming shots. You can probably still do that, but this makes it a little harder at least, and I think it looks nicer.

Sometimes the enemies spawn on top of you. There, I said it. OK, well, I did write in a system to make them not spawn on you, but they can still spawn VERY close to you and moving in your direction, so that could be better. I had plans to have a spawning animation so that you can see where they’ll be and plan ahead, but I didn’t have time for that.

Right Tool for the Job?

The other major complaint that I have received is that sometimes the game doesn’t run! Which is bad!!! Particularly, it seems like it doesn’t work at all on OS/X and the applet does not work on Linux (the executable JAR works on Linux, though). I chose Java and Slick largely because I like the idea of code and compile once to get full cross platform support. I want to make it easy for people to play my games. However, something apparently went wrong with bundling and linking OS natives, and I haven’t been able to figure out the problem yet. (I haven’t tried all that hard, sorry).

So, I think I need to switch languages / engine. Right now the plan is javascript and html5. That way compatibility is up to the user and their browser. I am tentatively set on using melonJS, does anyone have other options I should consider?

Submission

Thanks for reading! You can play and rate “I Dream of a Beam” here:

http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=20933