Sunday, April 6, 2008

Onward to level design!

Okay, maybe not quite so energetic.
This weekend let me get a number of things done. Now the menus are about 95% complete, and I have the first three levels pretty well set.

The first level gives the player a chance to get a feel for the movement. Just rolling around and letting the physics do the rest.

The second introduces the bounce and sticky walls. By changing your speed you'll hit the wall at a different angle and thus be shot off at different angles. So far everyone that's played the level has figured it out, so I'm definitely keeping the design. The only problem with this one is that hitting the walls just right takes a bit of practice. When you shoot up to the top, you can only get back down by pressing up to shoot your self off of the stage, which adds ten seconds to your score. So the strategy is to get the lower one first.

The third introduces the magnet wall. It's a pretty simple concept, but the design of the level gives a number of options for shortening your time.

Through some testing with my friends, I'm pretty happy with the designs. I'm still not entirely sure of the difficulty of the second, but I think I can overcome this with some sort of message shown to the player during gameplay. Of course, with levels I needed to finish the logic for "winning" the game. So now I have a place for credits and high scores.

The high score list shows the top ten total scores, and lists the player's initials and score per level. This is stored in a binary file (which is just a struct written out and back in) so it will persist.

Something worth mentioning is that I used DropBox to share the executable with my online friends. Doing this introduced an interesting type of concurrency to the game. As the files shared are synchronized across computers, each player was logically using the same files to play. This meant that the scores data file was shared too. Because of this, I could no longer leave a pointer to the file open while the game was running (bad design anyway). After fixing my design, however we still noticed that if enough people were playing, and finishing the levels quick enough, the files may not sync fast enough to prevent overwriting. There's not really much I can do about that, but it was still interesting to try and compete with each other.

Things still left to do are:
build an in-game level editor (extend the lifetime of the game)
finish the rest of the hardcoded levels
animations for the man, and likely the walls

No comments: