Tuesday, January 10, 2023

Ol' Limberlegs: Ludum Dare 52

Ludum Dare 52 was the weekend before the start of the semester. I was able to get all my necessary work done the previous week and so participated in the compo. My game is Ol' Limberlegs, and this blog post will share a few details of how it came about.

I got out of my last meeting for the week just before 3pm on Friday, and so I was able to check the theme announcement on the walk back to my office. I wrapped up a bit of work before heading home, mulling over the theme: "Harvest." I find game jams to be a good opportunity to explore different genres. For a while, I've wanted to make a Cookie-Clicker-style game, and this seemed like a good opportunity. It also felt a bit too easy, though, sort of like making a game about planting and harvesting plants. Yes, it matches the theme, but it seemed like there must be a hundred of those being made.

One of the genres I've never explored is fighting games, and I have a few bad sketches here of a giant corn man fighting an android tractor. This is where my meager drawing skills are a real limiting factor to Ludum Dare. I turned my mind to other aspects of the harvest, and this got me to thinking about the harvest festival—the party at the end of the harvest. Here there would be music and dancing, so why not make a rhythm game?

I wanted to get the core mechanisms in place, so I started just figuring out how to track the amount of time an audio stream had been playing and synchronizing keyboard input to that. With the audio side of the proof-of-concept out of the way, I turned to making a dancing character. A stick figure seemed the right way to go, and I got that working pretty quickly, but not before spending some time exploring the idea of spline-based rendering. In my imagination, I can imagine a wobbly-limbed stick figure, something like noodle arms. Turns out that my memory of how splines actually work, and my experience with Godot's Curve2D class, were both not up to the task. A simple stick figure it was.

The dancing character was always meant to be a form of fun visual feedback, not something intrinsic to the gameplay. However, as I was working on it, I recognized that he just wasn't dancing enough. My plan was to do a kind of traditional rhythm game, pressing keys to make the guy dance, but this meant he was really just moving one limb at a time. This gave me the insight that I could do something a little different: why not have the player one limb in position, and release it on the beat, and then earn bonus points for jangling the other limbs around? It didn't take too long to prototype this, and right away, I knew I was on the right track. Now, the character had a kind of herky jerky personality instead of just doing the white man twist. This was about the time that I started to really think of the guy as Ol' Limberlegs, named after a folksy wooden dancer in "Mr. Show with Bob and David."

Here is where I lost a bunch of time. I set up my old Bamboo and tried drawing a pudgy hillbilly character with the intention of replacing my stick figure with a cutout animation. I thought I could just whip up something and drop in place, but I'm pretty slow at "whipping up" a drawing. I hadn't used these particular tools in a while and had forgotten all the shortcuts. I didn't know exactly what I wanted, artistically. Also, my code assumed that vertices moved rather than being rotated. What a mess. I finally gave myself a hard deadline, missed that deadline, and then realized I had to go with Plan B. Next task: come up with Plan B. I decided to try doubling down on the Limberlegs idea and see if I could make a wooden man. One Gimp tutorial later, I had a simple wood grain texture, which I could slap onto resizable TextureRects in-engine. This meant I didn't have to know exactly how big each piece would be, which allowed me to tweak settings until I got what I wanted instead of having to redraw upon mistakes. I still had the Bamboo out and used that to make the charming face.

One feature I really wanted, but that took a back seat to some other critical issues, was to have the face animate based on the player's performance. I have some sketches of closed eyes, "O"-mouths, and some expressions that would have been fun to put in. However, as some of my players have pointed out, there's already too much happening in the game to fully enjoy the dancing.

The last feature I added was the little rhythmic wobble of the torso and the head. I think these add an awful lot to the personality of the wooden guy.

That's all I have to share about Ol' Limberlegs. I hope you enjoy it. The next Ludum Dare is right at the end of the semester, and I hope I can participate in that as well, even though it will likely be very difficult for any of my students to join in. 

No comments:

Post a Comment