the hardest part about making a 2D platformer is LEVEL DESIGN. at least for me. thinking back on it, it’s not a skill I’ve practiced much, which seems kind of weird for someone who likes to make games!
Mysterious Space features procedurally-generated levels (there’s some design there for sure, but it’s very different); PsyPets doesn’t have levels at all; I’ve done a few little things in RPG Maker, but that’s a very different kind of level design. as a kid I drew Mario and Mega Man levels on graph paper, but I was never able to actually implement, play, and test them.
so I’ve been reading up on platformer level design online, and have been learning a lot of good stuff…
but before I talk about that (and the picture above), maybe I should talk about what the hell I’m doing, because it clearly isn’t Mysterious Space! >_>
basically, after playing Mighty no. 9 and being kind of disappointed by it, I thought I’d try my own hand at a Mega Man-like game. I’ve been spending this month playing through bits of the original NES Mega Man games and taking notes on the enemy design, reading articles on level design (including this one, amazing, crazy-detailed analyses on the level design in Super Mario World), and of course actually coding the game. I was able to copy a ton of code from Mysterious Space, but the game physics of Mysterious Space are very different, so there’s a lot of basic stuff I’ve had to do from scratch as well.
besides borrowing code, though, I’m also borrowing some other things. to start, the premise of the game is that – on your way home – your ship has been affected my a mysterious force, draining your fuel, and so, in order to get home, you must visit a nearby planet and find three fuel. besides ripping story/universe concepts from Mysterious Space, I’ll also be ripping some enemy designs and other graphics (trees!)
but let’s talk about the level design! it’s something I’ve been reading about a lot recently, and super-interested in.
this is your ship, and where the game begins, and the only “level” I’ve put any design thought into so far:
you start in your room (or should I say “your quarters” to sound more Star Treky? :P) in the top center of the ship, with an obvious exit – the ladder- but screw that. let’s talk about…
① and ②: we’ve got some flashing things behind some grates in what you won’t even believe for a second to be inaccessible areas. there’s obvious paths through the “solid” parts of the ship that connect those areas to the rest of the ship, including the very room you start in. my hope is that this accomplishes two things:
- informs the player “there are ‘secret’ things, and walls you can go through”
- informs the player “this is what a collectible thing looks like”
it’s not clear from the screenshot, but the yellow diamonds and the little box in the lower-right have blinking outlines. blinking outlines are the game’s “you can collect this” signal, and I want that to be taught from the beginning. (I’ve seen many new Mysterious Space players be frightened of the gently-moving white pick-up boxes. and in fairness, there’s nothing that really makes it clear that they can be picked up! well, until I added the “GET” text that flashes above them when you first see one, but I wanted to avoid relying on reading as much as possible this time around.)
I might even put a diamond in an easily-accessible part of the ship, JUST TO MAKE SURE.
③: on the other side of this gap (which is patrolled by a platform that moves up and down at regular intervals) there’s a glass chamber with a gray arrow bein’ all like “GO HERE”. for the player, clear SOMETHING will happen if you go there, even if it isn’t clear yet, but important, you HAVE to jump in order to get there. the elevator platform doesn’t go much higher than the position seen in the screenshot.
now if this were a console game where a controller was your only option, I’d be happy to leave it at that. but I definitely want to support keyboard, and on the keyboard you’ve got, like, what, 3 billion keys? AND SO: the red “⇑ Shift” text instruction is apparently printed into the hull of your ship to remind its human operators how to jump. (p.s. sorry I relied on reading so soon after saying I didn’t want to >_>)
finally, seeing the letter “z” on its own probably wouldn’t mean anything to the player if it were there on its own, but paired with some red text which is obviously referring to a key on your keyboard, and which has given you some helpful instruction, I’m fairly confident the player will realize that “z” means “try pressing that letter on your keyboard”. pressing “z” fires your weapon, and while there’s nothing to shoot here on the ship, that glass chamber is a teleporter, and whichever level you choose, you can be sure that firing your weapon (and jumping, which you also had to learn in order to get here) is going to be important!
but are these lessons effective?
I have showed this level to precisely one friend. I learned that she’s so used to WASD, that the idea of the arrow keys moving her character did not occur to her >_> BUT ALSO: I learned that the “⇑ Shift” and “z” instructions worked precisely as planned, so that’s good 😛
but again: this was only one user. and one who has played many games. more testing is definitely in order.
finally, there’s the ④.
④: this is the ship’s engine/fuel room. it won’t begin with that blue crystal slotted in, and so a new player might not understand what they’re even looking at when they see it, and that’s mostly fine. I definitely want to improve the graphics somewhat, to really show “HEY. THREE THINGS ARE MISSING HERE.” but even without that, this room’s purpose will become clear once you’ve collected your first fuel. the fuel will be slotted in, as we see here, with an… energy… line… or something, all blinking and stuff. it’s obviously important, and obviously asks that two more of its kind be found. WHAT WILL HAPPEN ONCE ALL ARE COLLECTED?! surly you will not be satisfied until you’ve discover the answer to that question. (spoiler: you’ll win the game!)
I have created another level of sorts, but it’s mostly just a place for me to test the things I’m coding; no real design thought has gone into it, so there’s not much to say about it right now.
however, I’ll be posting again, for sure!
I think my next big focus is going to be on enemy design and placement, as it’s a super-important aspect of level design that I have not explored much yet.
thanks for reading!