quote:
Originally posted by Toady One:
<STRONG>Making water soak into the ground would solve the rooftop issue, but then player-controlled water that you want to cover the surface would have troubles -- the core problem is that rain water should be less than 1/7 units, but the game doesn't operate at a finer resolution, and rain is only realized as a flow when it is around the scale of regular water (ie a river).</STRONG>
I'm new to this side of the forum, fairly new to the game, and haven't finished the thread before I made this post. So I apologize if my response is redundant or obsolete.
Instead of making raindrops fractions of a water unit in the data itself, you can make them fractions in the implementation without changing the memory load of your tiles. To do this you can use probability to represent your fractions.
Not only would this allow you to break up your raindrops, but it would also allow you to model the tile's ability to soak up water deposited on it.
As a vague example, each raindrop has a 1 in 8 chance of creating a unit of water when it hits a soil tile. The same raindrop has a 1 in 4 chance of creating a unit of water on a rough stone surface and a 1 in 2 chance of creating a unit of water on a smooth stone surface.
It's a bit more processing, which could be bad if your RNG is heavy, but otherwise requires only a mask, a bit of arithmetic, and a jump. The same method could be used for the process of melting down metal objects or anywhere else you want results determined by fractions.
EDIT:
Alright, with a reread for comprehension I gather that you may already be doing this. But the floor tile's static capacity to absorb rain water could still be modeled with an index of various probabilities based on the nature of the floor tile.
Sorry, again.
Anyway, if you don't want the drain-off pools to form puddles could you use a different placing method?
I think you're already modeling surface tension with your pressure functions, but a different model of surface tension here should prevent your blasphemous circular puddles.
If the tile to which water is to be added has a depth of 1/7 (and maybe 2/7, too) a short list is made of nearby (within 8 or 16 or 32 steps, whatever) tiles that have 0/7 water but are adjacent to tiles with at least 1/7. The new water is then randomly applied to one of those next-to-wet tiles. If you could afford to make it really complicated, the probability of water being allocated to on any single tile could be inversely proportional to the number of adjacent tiles with water.
If you wanted the potentially squiggly shapes water flows in to be relatively consistent over time, providing a hint of uneven surfaces not actually present in your data, you could knock together a simple (ie, stupid and fast) RNG yourself and always seed that RNG with the coordinates of the tile receiving the water. This should lead to puddles forming in the same odd shapes when water is applied from the same runoff.
I suppose once this puddle reaches to a ramp or open-air tile your pressure function would take precedence, somehow.
You know, this is sounding less and less simple than it sounded in my head.
[ June 11, 2008: Message edited by: loser ]