For the last long while, I’ve been working on a procedurally-generated platformer/climber called Lettuce Climb. In the game, you play as a head of lettuce who is climbing a mountain.
At the beginning, you can only roll. However, as you enter each of three temples, you gain an ability: in the first, jumping; in the second, jumping off walls; in the third, double-jumping in the air.
It has definitely been my most challenging coding game so far. But I think it’s going to be a really great game. I wanted to explain some of the elements that went into it.
For the longest time, I’ve wanted to make a platformer. But my poor drawing abilities limit what kind of characters I can create.
I’ve been making a series of games with the same assets, and I wondered if there was another way that I could combine them.
Let me recap the three previous games.
In Tortoise Trails, my first game, you explore a procedurally-generated map looking for a head of lettuce. There are hidden treehouses, temples, and other secrets.
In 60 Shells, you try and find the tortoise hidden in the woods while a timer ticks down. This seems to have been the most successful of them, as it combined an easy-to-understand mechanic with a very difficult-to-master challenge of pattern recognition.
And in Lettuce Walk, you move a tortoise in L-shaped patterns, like a knight, in order to move around a miniature board, attempting to pick up a head of lettuce and return home. At the end of the game, depending on how you have done, a puzzle is displayed.
For an indie gamedev who does not have an army of coders and writers producing explorable content, there are only two ways to make a game worth your effort: the first is to procedurally generate the content, and the second is to make the game incredibly difficult.
A difficult game challenges the player and requires more time to complete. A simple game does not challenge the player and can be beaten quickly. If you have a large army of writers and coders, you can make easy games, because you can make them long enough to provide a challenge. However, as an indie developer, difficulty is your firewall against boredom.
60 Shells was a very difficult game. The timing was purposefully designed to push the limits of what was possible. In fact, I offered to donate $0.60 to charity for every person who beat the game. Ultimately, I only had to donate about $100, and it was well worth the publicity that the give-away generated.
But, crucially, the basic mechanic of the game: clicking on a tortoise, partially obscured by trees, was not difficult, in itself. The mechanic should be easy, while the demands made upon the player’s use of the mechanic should be difficult.
Bad games have hard-to-use mechanics: unpredictable jumping, poorly calibrated controls, difficult-to-understand controls, etc.
The second way to increase replay value is through procedurally-generated content.
The benefits of procedurally-generated content are two-fold. One benefit (already mentioned), is that it is possible to procedurally-generate more content than you could ever create by hand. But there is a second benefit, which I think is even more important.
Procedurally-generated content allows for exploration and surprise. In a game whose levels are clearly mapped out, there can be no true exploration, because it is always possible for the player to Google the map or ask a friend. Even if they do explore it the first time, they will soon run out of new areas to see and will only be revisiting old ones.
The major deficit of procedurally-generated content is that it is, frankly speaking, not as good as hand-created content. This is undoubtedly true. The ability of a creator to particularly craft the world far outpaces the world he could probably program a computer to create.
On storytelling in games.
One of the things that bothers me about most games is their poor storytelling. I think that games generally suffer from an inability to unite mechanic with theme. You make a shooting game that’s about pacifism, for example. But this is impossible, because all you can do in a shooting game is shoot.
Lettuce Walk tells a simple, thematic story about climbing, life, death, and belief. I don’t want to tell you too much of the story. But it is told through three basic methods.
The first is through text that appears inside the temples, written in the black space, not a diegetic part of the world but presented for the player. Other than those sentences and the title of the game, there is no text in Lettuce Climb. This is to preserve its central aesthetic.
The second is through the climbing mechanic and its consequences: this is a story of a head of lettuce rolling, jumping, and bouncing up a mountain. During this, the lettuce will periodically miss a platform and fall back down a long way. This is undoubtedly a frustrating experience (hopefully, at least: see “On difficulty”), but it will also make the ultimate reward much sweeter.
The third is through sound design. When you start the game, you are at the bottom of the mountain, and you hear the birds chirping in the trees. As you go up the mountain, you see fewer trees (because they can only be placed on tiles that are not blocked from the sky), and you hear fewer birds.
The sound of the birds slowly fades away until you hear just a soft wind. That wind, itself, turns darker and creepier, until, eventually, it fades into a choir, singing a holy song. This is the song you hear as you enter the cave at the top of the mountain and find…
Well, you’ll see.
On Sound Design.
Sound is crucially important to good game design. Your sounds should fit your theme. If you have a game set inside an arcade cabinet, you should have 8-bit sounds. If you have a war game, you might need gunfire.mp3s.
In the case of Lettuce Climb, I again wanted to reuse the musical assets from Tortoise Trails/60 Shells/Lettuce Walk.
When you jump, you hear a low note. When you bounce off a wall, the pitch goes up a bit. By chaining bounces, you can play up a scale until the notes get high and thin. This encourages the player to chain these bounces, as they are musically rewarded for doing so.
In addition, the sounds of the birds were purchased on an audio site (for like $3), the wind was found in Final Cut Pro X, and the choir was made in GarageBand. Sometimes, the simplest and the easiest tools are the ones you have to use.
Sound Design is easily overlooked because you might be listening to music when you play the game, but you have to remember, when making video games, the player is only engaged by two senses: sight and sound. It is really insane to ignore half of the senses when designing a game.
Of course, it’s common to talk about juicing now, which is when you add particle effects, shaking effects, etc., to a game: superficial quirks that make it more engaging but don’t affect the actual gameplay. This is great. However, in Lettuce Climb, often I introduced new elements and found that they took away from the simplicity of the game.
It’s important to always think about the central mechanic, the central theme, and the central aesthetic. I will write another post about those three things soon. Right now, I just wanted to get all that out of me so that I could go to sleep.