LD 31 Postmortem – Much Ado About Pirates
I just finished my 6th Ludum Dare! Crazy how time flies. This time last year, I had finished LD on Sunday night and rushed to propose my thesis the next morning. Seems like so long ago. Anyways…
If you’re unfamiliar with Ludum Dare, let me quickly summarize. It’s a worldwide game development event/competition that takes place every 4 months. Developers from all around the world participate in the event and submit their games online. A week before each LD, we vote on different themes for the event (hidden vote totals). Then, right as the event starts, the theme is announced and you have 48 hours to make a game from scratch based on the theme.
I made a 2D platformer this time (surprise surprise). The core mechanic involves shooting a cannon that can be used to push yourself in mid-jump. Mostly it involves platforming and shooting some bad guys. Pretty standard, but I had a lot of fun making it, and it still manages to feel relatively unique.
The theme was “Entire Game on One Screen”. I’ll be the first to admit that my game’s use of the theme is on the weak side. The game essentially takes place inside of a theater. Each time you walk to the right or left of the stage, the curtains close and then are reopened. This reveals a “scene change”. When I started out, I wanted to be able to go above the stage, explore the catwalk and everything, even go behind the stage and whatnot. I ended up not really having time to do all of that, so a narrowing of scope had to occur.
The competition started at 9:00pm Friday night.
I figured out within an hour what kind of game I was going to make. I knew I wanted to do this theater thing with a pirate setting, and that the curtain close transition was going to be really important. I decided to do a cloth sim in Maya. The sim worked pretty well. Unfortunately I didn’t know that importing that mesh to Unity was going to prove next to impossible in the timeframe that I had. So about 2 hours into it, I had to make a pretty big compromise. Instead of curtains opening and closing as a mesh in Unity, I ended up rendering out a video of them moving instead, and put that video as a moving texture on a plane in front of the camera.
I made a quick camera transition script that paused time while the camera moves and the video plays, and then resumes the game when the video is over.
I also did some additional programming while the curtain video was being processed (it takes quite a while). Mostly, getting the movement on the character right. Also I worked on the cannonball shooting with the mouse. By the time I had all of this figured out, it was 4am on Saturday. Time for bed.
Woke up at about 11am on Saturday. (Note: This is the last time I’d be asleep til the compo was over).
I was refreshed and ready, so the first thing I decided to do was get my character animations finished. I opted for a character design very similar to a previous game that I had made.
I wanted more than just running and jumping, so I decided to have ropes in the game. (At this point in time, I hadn’t considered cannon-jumping would be in the game). Luckily the 2D controller that I use has rope functionality built in, so it was just some quick tweaks to make it work (controller made by jnamobile, it’s the best 2D controller for Unity hands down).
I moved on to the final aspect of the character’s movement – the cannonball shooting. I wanted to make the player REALLY feel the full force of the cannon shooting so I decided to do 2 really important things:
A really cool side effect of the second point was that in midair, you could actually push yourself up for more jump height, or over for a further jump. I decided after playing around that it was really fun to do. Immediately that became something that I focused on implementing. It just feels so fun! It’s the feature that I’m most happy with overall else for this game.
Ok. The character was more or less finished. Time to make the level assets. A flat floor isn’t going to be any fun, so we need platforms. I decided on:
Here is the planning sheet that I made while deciding on all the level assets / enemies / bosses. Yeah, I know I can’t draw.
And here is everything that made it into the game on one screen.
After the level stuff is done, I decide to finish the different cannonball types that the player will use. First up is the bomb.
Lastly I made the grapeshot. It was going to fire several cannonballs in a spread, but the code I had in place only supported firing speed and knockback force as customizable settings, and I didn’t know if I wanted to spend the time getting it to work right. So I opted for a more rapid-fire type of cannon.
Pretty sure it’s around midnight or so at this point. I’ve gotten all art assets done for the game except enemies. Time to do that I guess. If you look at my little sketch sheet above, you’ll notice that there’s a shark. I ended up cutting that for time’s sake. Water was initially going to be lethal, and the shark would jump between platforms as you crossed the water. Still, having 2 ghost pirates and a parrot was variety enough for the game length I think.
The way I decided to work was to finish all the art for 1 enemy, and then do the programming for it. That way, even if I just finish 1 enemy AI for whatever reason, I haven’t wasted any time drawing things that didn’t make it into the game. Luckily, all this AI is pretty straightforward. I think it takes about 1-2 hours to do an enemy (art+programming).
At the rate I’m going, I decide to drop the shark and just call it done after the parrot. I immediately realize it’s a terrible decision to color this bird with 3 different colors. I wonder if 2 frames of animation is enough…
Ok, so now it’s like 7-8am-ish on Sunday. I’ll consider this the start of Day 3. The enemies are all finished. I’m pretty much finished. All I have left to do is:
Ah crap. That’s not looking good. I only have about 12 hours left and I’m so tired that I’m not feeling too well. I take a quick shower and grab some food. I decided that I’d just do 1 boss and then make the level.
It’s actually quite a lot of animation to do to shade all of those tentacles. The line work is terrible. And I’m pretty unhappy with the dithering on his head. But honestly I’m in a rush at this point so I don’t have time to be picky. I think he took about 1 to 1.5 hours to draw, and about 2 hours to program the AI.
Alright. At this point It was maybe noon or so. Which meant I had about 9 hours to finish the game completely and I had no level, music, or sound. I was in a big hurry so I stopped taking videos.
Pretty much I finished making a level in a couple of hours and then spent probably 3 or 4 hours doing rather boring stuff. UI, cannonball ammo switching, hints for the player, spawning/despawning rooms, fixing the camera bugs. All that good stuff.
I used abundant-music.com to make the music. I took the first song it randomly generated and threw it into my game. Is it the best song? No, but it’s kind of better than having no song at all. It’s passable at least.
I spend a little time making sounds with bfxr and incorporating them into my game. Not everything needs a sound, but the things that the player spends 99% of their in-game time doing really needs sounds. Jumping, damage, shooting, collecting items. These pretty much require sound. I do the bare minimum and call it good enough.
9pm comes. I finish packaging up my game and submit it. I forgot to think of a name. Joe suggests naming it after a famous play. I pick “Much Ado About Pirates” because I can’t think of anything punnier than that. Breathe a huge sigh of relief when it’s over and swear that I’m never ever ever doing this again like I always do. Proceed to sleep for over 13 hours. Family wonders if I’m even alive.
For all 3 of you who are still reading at this point, thanks for sticking with me. The postmortem is my favorite part, because we got to reflect and learn things.
What went well:
What didn’t go so well:
I should probably wrap this up. I want to thank everyone who has played my game and given me feedback. I also want to thank my friends Q and Joe. We Skyped in a call for over 52 hours while making our games. I think we set some kind of record. You should play their games too!
Til next time,