
I've only ever finished a single game before today. It was a small, Java-based platformer/action game that, quite frankly, wasn't terribly interesting or fair. But it was a game I finished and I was proud of it.
Ten years later, I've finished my second game—as part of Ludum Dare, no less! Entering a real, proper game jam is something I've always wanted to do, but never felt like I had the time or skills to do so until (very) recently. So I did!
And let me tell you, Ludum Dare was fun. I had an absolute (mostly) stress-free blast. The theme wasn't what I was expecting (or even wanted), for starters, but it definitely got me thinking about how to deal with it. (Which, I suppose, makes it exactly what I wanted.)
After a relaxed game night with some friends, I set to thinking, and decided to try my hand at a rhythm game. With cardboard boxes. They'd come down a conveyor belt and you'd have to knock them off and into a pair of delivery trucks in sync with the music.
There was a lot of uncertainty around that idea, as I'd never before made a rhythm game, but I didn't have anything else and figured I could keep the scope small enough to be feature complete in two days (leaving one for art and polish).
So I fired up Unreal and got to prototyping.
I had the basics down in about an hour: a track, some notes, and a space bar to hit them.

For keeping time, I went with a sample-based approach. All the notes and graphics are tied to sample positions (44,100 per second, in my case) in the song so no matter what happens, what the framerate is, which direction the song is playing... everything will always be in sync. There is no prediction or beat/note analysis.
Lacking a level editor meant fishing for easy solutions, too. I landed on manually placing each note as a track marker in FL Studio, which I could then choose to export as part of a .wav file, and, in turn, read it into the engine alongside that marker's sample position. It's then an easy matter of then placing everything in the right spots and making sure all the moving parts get fed the right positions.

A bit (lot) tedious, but it got the job done and let me move on to gameplay, and I ended up charting it in sections as I needed breaks from everything else.
Over the course of the rest of the night, I put in the typical placeholder assets and some mouse control to see if this would even be any fun.

...and it was! I spent entirely too long just knocking boxes around.
But I did have a game to finish, so I got back to work and added a couple conveyor belts to carry the boxes into the eventual trucks and hit accuracy windows (and associated text). Some particle effects did a great job at conveying the accuracy of the hit—so much so that I never ended up changing this despite every intention to have done so.

At this point, I was about halfway through my self-alloted 48 hours of gameplay development time and was well on track to finish, so I treated myself to a slightly different shade of prototype-gray and set the gameplay area in stone:

The original plan involved just dumping missed boxes off the end of the track, but it came up while talking to a friend that it would be way more fun to dispose of them with fire instead. After all, every game needs fire.

Soon, the boxes were piling up, half the song was charted, and through lots of play testing, I'd squashed all the bugs I could find (one particularly nasty engine (?) bug was receiving a single tick of old song data when restarting a level (despite loading the level again entirely)—this one has several workarounds that took a while to find, all of which involve just discarding the first tick of data). Calibration made its way in, too, with a little refactoring. Sunday night was spent implementing all the menus, screens, scoring systems, and wrapping up the charting.

And, finally, I had a complete game. I went to bed, ready to tackle art and polish on Monday, plus a couple issues in the chart I'd noticed. But it was done.
When I got up, the first order of business was replacing the debug sphere I was using for the mouse cursor. Some particles fixed that up nicely:

I wanted the gameplay to be precise, but fast and swoopy. So while I didn't have time to implement a better scoring system for style, I could at least make the cursor bright, colorful, and very fun to fling around the screen.
After that was done, I went through all the assets in the game and gave them a makeover. Nothing too unusual here. I wanted to keep the stark, corporate look for most of it, but really make the track and notes stand out. Here's the final setup:



I'm so happy I got to participate (and finish!). I'd forgotten how good game development feels, and I'm absolutely stoked to share this game with everyone.
My friends tell me it's fun, but brutal. There's no way to fail, though. I'd love to know if you can beat my current high score:

But for now? Taking the rest of the night off. Tomorrow? Checking out so many other jam games, which I'm just as excited about.
You can play Beat Boxes here:
https://ldjam.com/events/ludum-dare/53/beat-boxes
Edit: I had no idea the entirety of the post would be visible all at once, lol. Sorry for the length. :heart: