Help Noah the astronaut to rescue his girlfriend and all the endangered aliens across the universe in this randomly-generated platformer.
How I managed to design the randomly-generated levels of Space Disorder
Posted by mikah on Mar 19th, 2012
As you might now, Space Disorder has randomly-generated levels. It took me a lot of time to figure out how to properly balance the level design. But, again, I learned a lot of stuff the hard way.
Space Disorder is divided in 6 sectors (levels). Each sector is divided in X rooms, depending of the sector. Later levels have more rooms. Each sector has its own rooms, corresponding to the sector’s difficulty. Each time a level is started, the game choose randomly X rooms in the difficulty pool and fill the sector with. As you might notice, it’s not the rooms themselves that are randomly-generated. This is because I believe nothing replace hand-crafted levels. And also, I want the player to memorize the rooms to get better at the game.
To make the game even more random, I designed an item spawn table. Every items in the sector are randomly chosen from this table during the level generation. But they are always placed at the same spot in a given room. Meaning that if you memorize the rooms, you’ll know where to find the items, but the items will be different.
The spawn table needs a bit more work to be balanced, but I’m very happy with it. Item chase really gives a tempo to the game and forces the player to make decisions as, often, you need an other item to access an other one.
I would ike to add an inspector that fix the spawn if, for exemple, the game generates only grenades all across the level. It already happened!
Even if the game is Divided in rooms, what you do in a room is persistent and apply to the others. If you invert the gravity, the gravity is still inverted if you go in an other room. As well as changing the lasers from red to blue. This was a bit tricky to handle when designing the rooms because each room is playable in 4 different ways (gravity inverted/not inverted and red laser/blue laser).
But I’m cool with this, because it’s an opportunity to add more unexpected situation to the game. Each time I design a new room, I decide if it will be more difficult if the gravity is inverted. Or if all the items will be inaccessible if the lasers are blue, for exemple.
Those were late to join the game design marmalade. At first, I wanted to add enemies just to give more life to the empty levels. Which worked! But when I started to test the game with those little bastards and inverted the gravity, I was like “Wow! You should die if you fall in this laser, robot!” And I understood that they could bring some very interesting mechanics that would fit the game perfectly. They were tricky to implement in the level design because of the persistence explained before.
The walkers are not very dangerous. They are more like walking chests as they loot an item when destroyed. Sometimes it might be hard to pick up the item, especially if you make the walker fall on a laser.There is an other enemy type I will introduce in an upcoming article.
Balancing has been one of the most interesting part of the process. The best way for this is just to have people try your game. Having very different demographic is very important. So I just gave the iPhone to the tester and watched him/her playing. I was paying attention about how and where the player was dying. An unexpected death is due to bad level design. For exemple if a laser appears from nowhere while navigating the room. The player should be aware that a danger is ahead of him. If he can’t prepare himself to avoid a danger, just change your design. Otherwise it results in frustrated deaths and the player won’t be willing to restart, thinking that the game is unfair. And he’s right!
When designing new rooms for advanced levels, I was just making them the hardest possible. They I was making them tested. Then I was reworking them accordingly to the difficulty they were meant for.
I tried to add a new mechanic in each sector. Exemple : Sector 2 brings enemies, sector 3 brings jumpers. So the player can familiarize with the different mechanics, and it gives me a theme to design the rooms. Also, combining different mechanics together always gives interesting results. Sometimes it doesn’t work but it gives you new ideas.
The camera of my game is very close to the main character, restraining the view field. Most of the platformer have very far camera from the character. While I understand it’s for the design, I hate it. You don’t see shit, especially on an iPhone. Balancing the walking and flying speed accordingly to this contraint fixed the issue. So I can enjoy the nice graphics of my game and play it well!
So the levels are designed with 3 objectives in mind :
Of course I didn’t came up with those objectives from the beginning. They started to appear while I was iterating the different versions and how the game was played by the testers. It’s a mix of hard work and luck. Which is a creative approach I love. Share you experience and opinions!
Thanks for reading!