I'm going to start putting in this little completion bit until the project's done. I find that it does a good job of showing what I have left, even if it isn't perfectly accurate. I've decided that since the Final Zone doesn't introduce any new puzzle mechanics, I need to add in something to up the challenge a bit. To this end, I've added a timer to the levels. If you don't escape in time, you have to try again. I'm also considering making a change to how lives work. Currently, lives are temporary things. Grabbing an extra life is nice, but once you die it's gone. Instead of this, I'm going to make extra lives increase your maximum life count. This makes an extra life worth that much more, and allows players to make the game more difficult by ignoring them. I'm going to put one in each area, and make them only available on the first run through that area. Be on the lookout for them!

I spent the entire week worried that I was getting nothing done, only to realize today that I'd actually done a fair bit. That makes me rather happy. Seems I haven't lost my touch after all!

Unfortunately, since the game is so close to completion, I've been hardly touching the code at all. I haven't yet decided what to do with the second half of these update posts in the meantime, but hopefully I'll figure something out by next week.

I've had quite a bit of work on my plate recently, but I got equipment in. There are a bunch of new items that can now be found, and you can also view your inventory and equip/toss things from there. Also, I've set things up to add usable items to the game, although I haven't put any in yet. Enemies will also occasionally spawn on their own now, and I made leveling up give you slightly fewer bonuses as things were getting a tad ridiculous. Today, I'll try and put in usable items, as well as letting the player view multiple messages per turn. Tomorrow I'll try to get the final bits of the game done.

3/10/14

I really didn't do much today. I added death, then I added a bunch of new enemies to the game. In theory, the first ~20 levels of the game should have their enemies in now. Tomorrow, I think I'll work some more on items and equipment.

3/8/14

Man, I got more done than I thought I would. Let's start off with a screenshot:

As you can see, I've got quite a bit of basic stuff done. you can walk around, there's some basic field of vision work, and levels generation is pretty much done. The game has ~30 levels at the moment, although I may change that later. Tomorrow will probably be inventory work, along with the possibility of colors and enemies. We'll see.

3/7/14

Changelog:

Fixed a bug where pushing moving objects caused them to be flung in some direction forever.

Added Bombs and Explosions.

Added a reset button in the corner of the screen. It works the same as hitting 'R' in game, but some people were requesting it.

Fixed how multiple lines of text are displayed to make a bit more sense. Before text was wrapping in strange, incoherent ways.

Normally, I'd spend some time here adding technical stuff, but there isn't much to talk about today and I'm rather tired. The bombs were surprisingly simple to add, and consist almost entirely of out-of-engine scripting. I guess I could talk about the pushing bug. As you can tell, I've noticed lately that pushing is quite buggy. Most of the issues with it come from the fact that before Zone 4, it was impossible to ever push a moving object. This is because the only pushable objects are stationary by default, and even when on ice you can't reach them from a different angle before they stop. Of course, conveyor belts changed all that. Another source of issues is that objects that stop on the game's grid do so based on reaching new grid spaces, but the game's collisions don't take grids into account. This meant that you could theoretically push a moving block that's halfway between grid squares, and it would start moving in your direction along with its' current one. However, that change in direction would offset it from the grid, and so it would never reach another space and stop. Since walls and holes are based on that too, that means the blocks will ignore them, and fly offscreen forever. I've now forced pushable objects to be aligned to a grid to move, so the problem should now be gone.

Finally, the 7 Day Roguelike challenge has rolled around again. Last year I wimped out, but this year I'd like to give it a shot. We'll see how well that works...

3/1/14

Changelog:

Revised how object velocity is handled with respect to object collisions.

Added an animation for disappearing locked doors.

Fixed a bug where loading a saved game, exiting to the menu, then starting a new game could start you with the wrong tileset.

Fixed a bug where loading a saved game, exiting to the menu, then starting a new game could cause the camera to start oddly zoomed out.

Smoothed out the camera zoom animation.

Today, I'd like to talk about the second item on this list, the nebulous 'Revised how object velocity is handled with respect to object collisions.' You might be wondering what exactly that means. Basically, prior to this week, any object that collided with a solid object stopped on the spot. While this worked really well up until this point, I started running into issues once I added conveyor belts. Before now, you could hardly ever run into situations where two solid moving objects could run into each other. Now, it's easy:
Let's say there's an L-shaped section of conveyor belts. If two blocks are moving through this and they're close enough, one will run into the other at the turn. Previously, both blocks would get stuck and stop moving. With this new change, objects only stop moving when they collide and are moving towards the other object. Thus, in our L-shaped conveyor belt, the second block will stop until the first one moves, then it will continue. The first block was never moving towards the second, so it shouldn't suddenly stop.