Thanks to everyone who played my LD12 entry, Mr Blocker. As a number of people observed (myself included), it’s not much fun. Partly this was because I was very limited on time, so I deliberately chose a very simple concept so that I could finish in time.
As the game stands, once you have a reasonable idea of how the disasters work, it’s basically a matter of coming up with a strategy to work around them and following that. The simplicity of the game means that there is little variety in useful strategies. Following a strategy just means dropping blocks in the planned places, so there is not much skill or variety in that either.
My original idea regarding the style of play was that disasters should be unstoppable: the player either builds towers specifically to be destroyed by disasters, or builds towers in such a way that the effect will be minimal. A number of people suggested adding a way to avoid disasters, or allowing a level to be completed as soon as the targets were met, rather than after the time expired. That goes against my original idea, but it might make the game more interesting.
I might release an updated version with tidied code, a readme and key repeat for dropping blocks. Thanks to Morre for pointing out the lack of automatic key repeat; I use a strange keyboard with that built in, so I didn’t notice. I won’t be adding any more levels or other features because I don’t think the game would be entertaining for long enough for them to be worthwhile.
The only complicated part of the code is that which determines whether the targets for the level have been met after the time expires. There is a little complexity in the code to determine what gets destroyed in a disaster. Mostly, the code is fairly straightforward.
Because of the simple nature of the game, I thought there might be some entertainment in working out how disasters behave. However, this seems to have caused some people confusion and frustration. In case anyone is interested, here is how they actually behave and how to deal with them:
Lightning – destroys the tallest column on the field and any ajdacent columns of equal height. If there are several columns of equal height, it chooses so as to cause the most damage (by destroying as many adjacent columns as possible). If there are still several options, it chooses between them randomly.
A number of commenters worked this out. The obvious strategy for dealing with lightning is to build a single column higher than any others to draw the strike.
Earthquake – destroys the tower with the greatest height/width ratio. The height is measured from the tallest column of the tower, rather than being some sort of average. If there are several towers with equal ratio, the earthquake chooses between them randomly.
You can limit the damage done by an earthquake by building a tower one square wide and sufficiently tall to draw the earthquake. If you need to build a tall tower, you can put a couple of blocks next to it to increase its width.
Fire – starts at a random square on the surface of the field (at the highest point in a column). Moves one square horizontally in both directions and rises to the tops of the new columns. If it would have to move down to remain on the surface of the field, it stops. Any squares the fire passes through are destroyed.
This seemed totally random to some people. You can reduce the damage by dropping single blocks along the play field and on top of your towers to break the path of the fire.