I really should have blogged more often. It's been an interesting month. The last time I blogged about the game, I was worried about making it behave like the old game did. That turned out to be a fairly easy problem, though an important one. A few levels didn't solve correctly until I corrected the behavior.
It's weird how much behavior arises out of such simple rules. I mean, it's the very nature of complexity, but it still surprises me. For example, the problem I mentioned a long time ago - that a "board" update had to go tile-by-tile, which actually gives some tiles a time-order precedence - turned out to totally break a level. The old game handled this in an unusual way, and it took me some contemplation to realize that it made sense. Namely: ReproMan gets first precedence to move. After that, all of the non-sperm, non-egg objects on the board are asked if they can move, starting at the bottom left and continuing, row-wise, to the top right. Then, the egg is allowed to move, and finally the sperm. Some unexpected consequences are:
- If you have, top to bottom, a rock, grass, and a bubble, and you step left into the grass and back out to eat it, the bubble will rise before the rock falls. The infamous "Great wall of sperm" level depends on this behavior.
- If the sperm flock has three rocks stacked vertically to its right with grass to the right of that (see image), and you clear out the two blocks of grass, the rock in the center falls down and to the right, then the rock at the top falls down. The "Great wall of sperm" level also depends on this behavior. When I had the behavior wrong and simply evaluated all objects bottom-left to top-right, the sperm would step through the hole made by the first falling rock, because it would be asked whether it wanted to move before the top rock was.
Interesting, eh? Also, for some reason, it was very unintuituve to my wife that you could push a rock across the top of the sperm. The rock doesn't kill anything unless it is already in the act of falling when it is above the thing, but the sperm just seem less substantial.
Anyway, I've got everything fixed up now.
I also did some detail work to make the game more easy to understand. Now, if you attempt to use a power but can't, it makes a puff of smoke and a fizzling sound. I also added a "hold the R key to restart the level" feature, which has a fun animation and obviates having to go back to the menu to restart. The main reason I did this was that it otherwise interrupted the music. But I'll talk about the music in another post.
I implemented the save file, which remembers your settings and all the levels you've completed. I'm up in the air about locking levels. What I finally decided was that the game would start by locking all but the first level, since it's important to play that one to understand what keys to press to do things. After that, it unlocks three levels ahead of the last one you completed. So you could get to the end by completing every fourth level, but you won't get the "win" screen until you complete them all. I haven't done the win screen yet ;).
I have some good ideas for the win screen, but I'm not going to talk about them here, because I want them to be a surprise :).
I made the transporters a lot better by making them nearly instantaneous. It made little sense to have that take up time like using a power does. I use a quick "flash" animation and a snappy sound to cue the player. It really worked out nicely.
I changed the way powers worked from the original game. Originally, you got all your powers automatically at the beginning of the level. But the player doesn't really think about the powers when they're just a number at the top right of the screen (I confirmed this both with play-testers and with old YouTube videos of people playing the old version). So I made little sparkly gold cells that the player picks up to gain powers. The cells act like grass, essentially, so adding them can be done without affecting the existing levels.
I did a million other things, too, but it's too much to talk about it all. I really should have blogged more....
One non-cody thing I did was to start keeping a to-do list. This has helped me a lot. I tend not to keep to-do lists because I tend to find myself not using them -- and then they just seem like a waste of time. Not so in this case. I often think of little things that need to be fixed, and if I don't record them right away, I definitely forget them. So. many. details. I'm using the mundane "Reminders" app on OS X, because it syncs with my phone. This turns out to be important, because I often think of stuff out of the blue when I'm not at my desk.
So there you go. Development tip. Keep a to-do list. I bet nobody has ever told you that one before.
[Also posted at dkilmer.com]