Right now, water that doesn't fill the surface it's sitting on has a 1/3 chance to spread to an empty tile and a 2/3 chance to evaporate. This random chance is applied to each individual water block that has at least one side exposed to open air. The result of this is that you end up with a clump of water randomly growing and shrinking. Combined with the rather slow rate of spreading/evaporation, water ends up more closely resembling highly viscous blue gelatin.
My proposal is that the spreading and evaporation of water be based instead on the following two variables:
1) The number of tiles that a "clump" of water currently takes up.
2) The maximum number of tiles that the clump could potentially take up if it were to spread infinitely across its horizontal plane.
For the sake of brevity, I will refer to these two values as current_tiles and max_tiles. If current_tiles is 1/3 or less of max_tiles, the clump of water should smoothly evaporate. If current_tiles is 2/3 or greater of max_tiles, the clump of water should smoothly spread to completely fill its horizontal plane. If current_tiles is a percentage in between 1/3 and 2/3 of max_tiles, random chance should decide to either fill up the horizontal plane or evaporate, perhaps weighted by which percentage it is closer to. I think this would result in water that behaves much more believably.
When water floods a basin, though, it splashes around for a bit, somewhat like what is currently done in minecraft right now. Personally, I think what Notch has implemented is good.
It sounds like the calculations for this suggestion would cause a lot of slowdown.
Have rules like for The Game of Life where the adjacent tiles determine the behaviour been considered before?
Making isolated watertiles evaporate and surrounded tiles spread might be achieved that way.
If half tiles of water would be introduced you might also have only them evaporate and full tiles spread into two halves.
Might get some nice wave-like effects from that too if halves and wholes could switch places.
Only thing i dont like about the water is that if the map gets flooded there will still be a few water blocks in corners and so on cause they wont flush away. I would rather see some sort of combining with Water blocks and water on surface of other blocks like fire does...
My proposal is that the spreading and evaporation of water be based instead on the following two variables:
1) The number of tiles that a "clump" of water currently takes up.
2) The maximum number of tiles that the clump could potentially take up if it were to spread infinitely across its horizontal plane.
For the sake of brevity, I will refer to these two values as current_tiles and max_tiles. If current_tiles is 1/3 or less of max_tiles, the clump of water should smoothly evaporate. If current_tiles is 2/3 or greater of max_tiles, the clump of water should smoothly spread to completely fill its horizontal plane. If current_tiles is a percentage in between 1/3 and 2/3 of max_tiles, random chance should decide to either fill up the horizontal plane or evaporate, perhaps weighted by which percentage it is closer to. I think this would result in water that behaves much more believably.
Thoughts?
Have rules like for The Game of Life where the adjacent tiles determine the behaviour been considered before?
Making isolated watertiles evaporate and surrounded tiles spread might be achieved that way.
If half tiles of water would be introduced you might also have only them evaporate and full tiles spread into two halves.
Might get some nice wave-like effects from that too if halves and wholes could switch places.