This past weekend I took part in Ludum Dare 17. Ludum Dare is a periodic informal competition where participants make a game in 48 hours based on a certain theme. This time, the theme was “Islands.” By the end of the weekend, I created a game called “Waves,” which can be played on my site. Kayla Kinnunen posted a postmortem of her own experience, and I thought it would be fun to do one of my own.
Note that the work-in-progress builds linked below will probably require you to click on the game to give it focus before it will react to your keystrokes.
This wasn’t really a 48-hour competition for me. Saturday evening I had a LARP that I needed to attend and serve as assistant GM at, and Sunday evening I had a D&D game that I needed to run. Because of that, I planned on having only 24 hours, minus about 16 hours of sleep. That left me with about 8 working hours, so I knew I needed to use a familiar toolset (Flixel) and keep my game concept very, very small.
The theme was announced while I was on my way home from a dinner with an old family friend of my fiancée’s. It was “Islands.” Ideally, the theme for an event this large is one which provides a wide array of possible designs. You want people to have the highest chance possible to come up with a concept that fits the theme, and the lowest chance possible to make a game that’s very similar to someone else’s. Some past themes (in competitions I didn’t participate in) have been things like “Exploration,” “Minimalist,” and “Chain Reaction.” These are very loose yet provocative themes. This event’s theme, though, isn’t quite as good; it’s on the level of past themes like “Caverns” or “Roads.” Concrete nouns lend themselves more poorly to a wide array of games.
My brainstorming led me to a few ideas. First, I wanted to be somewhat literal with the theme. My games tend to be artsy enough without deliberately picking a very conceptual interpretation of “Islands.” However, I didn’t want my game to be too similar to the majority of the games produced. I figured that the most popular perspective would be top-down, so I went for a side view. As soon as I thought of this, I remembered the XKCD comic for that very day. This informed the ideas that my fiancée and I brainstormed.
Islands are small bits of land in the middle of a wide ocean. They are relatively safe, in contrast to the unknown depths around them. At the same time, islands are really just the tips of underwater mountains, with an entire world beneath the surface. Islands are unmoving and stable, and moving on them is limited to walking or running. Water, on the other hand, is free-flowing, permeable, and fast; it supports boats and swimmers, and is much more dynamic. I decided I wanted to contrast the two environments by making a game where movement and gameplay was very different below and above the waves.
Some ideas I didn’t use:
- The island as player character
- A spinoff involving the island (really a coast) from “The Majesty of Colors“
- Islands floating in the sky
- Starting in the center of a large island and making your way to the sea
- Riffing off of Rainbow Islands
Some of these occurred to, and were used by, other participants.
I started by working on the movement. I wasted half an hour or so coding up a complex bouyancy system before realizing it was way too fiddly. Many times, when coding up a game, it’s best to abandon complicated physics or logic and use “handwavey” rules instead. I figured out how I wanted the game to work, and just coded up those simple rules. It’s not faithful to actual physics, but it was quicker and more fun to play. After two hours or so, I had a decent playable prototype.
Here, you can see that movement beneath the waves is faster than on land, but harder to control. This matches the dichotomy I had in mind: the land is safe but slow, and the water is dangerous but fast.
Making It a Game
Next, I needed to have an actual goal. When movement is integral to a game, collecting things, following paths, and exploration are all natural goals to use. I combined the first two and added collectibles that were arranged in reasonable movement paths underwater. I also put in some graphics. I wanted to have sloped land, but Flixel doesn’t do pixel-perfect collisions out of the box, and I decided that I didn’t have enough time to code them up myself. As a result, we have blocky tile-based land. Saturday morning, after another 2 hours or so of work, I had a version with these things included.
Fleshing It Out
To increase the dichotomy between land and sea, I added enemies to the water: sharks that chase you around and bite you, making you lose points. I also added more islands, with interesting architecture to jump around. There are now several paths through the world from west to east to choose from. The graphics also got enhanced, and I added a score counter. Saturday afternoon, I had a mostly finished game.
Because the difference in speed between environments was something I wanted to focus on, I added a sort of time-based element. A helicopter arrives periodically at the east end of the map, and the longer you wait to be “rescued,” the lower your point multiplier at the end is. This leads to an interesting choice: do you collect all the high-value gold stars, and get 1x a high number, or do you race through on an optimally-scoring path and get 3x a smaller number? I also tweaked the level layout a bit, to minimize places where a player can get stuck.
The first title of the game, other than the working title of “Islands,” was “The Safety of Islands.” Lissa recommended against duplicating the structure of “The Majesty of Colors,” so I came up with the title “Waves.” An alternate title that describes her testing experience would be “Oh, Shit! Sharks!”
I wanted to put in Mochi services, to provide a high-score list that promoted competition and to make a few bucks off of advertisement. However, it’s tricky to integrate their services with Flixel, and I already felt uncomfortable putting ads in this tiny, unsponsored, just-for-fun game, so I left them out. I still think that a high-score list would enhance the experience. I still wish I’d had time to implement sloped surfaces. It’s also a bit unclear how the helicopter works; if you miss it, does it come back? (Yes.) And how does it affect the scoring multiplier?
All in all, I’m proud of myself for putting together a finished product in eight hours or so. It was a lot of fun working “side by side” with a bunch of other game developers in this event, and I’m enjoying the voting process. I hope that this experience has made me a better (and quicker!) designer and coder. I think it has. I’ll definitely take part in other, similar events.