I've seen mentionings of water, finite vs infinite, and so on. I suppose the challenge of finite water on infinite maps is that you theoretically have an infinite amount of water, not so finite after all.
While the system proposed sounds pretty good (it would seem that, instead of flooding the World, high-up water released would simply flow until it ran out, or evaporated) but the Quirks mentioned (infinite waterfalls resulting from one tiny pool) make me wonder if a different local system could be devised which Approximates, through behaviors, finite water, while not having the burden of actually calculating realistic fluids dynamics.
My idea stems from a comment on the development blog about water being either static or flowing in a certain direction.
Flowing water can move north, south, east, west, or down. In any direction but down, it is only half a block in height. since it has a direction, it can be said to have a Back, and a Front. if two or more flowing blocks are together, the program would look to the ends of the string of flowing blocks, as if all lined up flows were just one.
The game could then consider several scenarios, and have tiles react accordingly. This set of behaviors seems to work well for all the scenarios I've tried it out on. The game is to check for each condition In Order, and respond to the first one it finds:
= water
[iron] = air
= water flowing to the right
= an obstruction
changes to :arrow:'s could happen in a group, or to just the ones affected. like [iron] could become [iron] [iron] or [iron] [iron] [iron] [iron], either way works.
if a flowing block appears over empty space, it becomes downward flowing. for blocks that are forced to go around corners, it's still considered a string of flowing blocks. for example: >>v
if more than one block is flowing towards a flowing block, the game could randomly choose one path to follow for that tick.
A few exceptions would be if the in is a permeable substance (Sand, Dirt, Gravel, Peat, Clay, Sandstone, etc) and below the Water Line, which I'll discuss in another thread, then it remains as . Any permeable in that's Above the water line would remain as :grass:. This would allow for things like rivers perpetually flowing into lakes, without having to use up CPU, because the system's in equilibrium.
While the system proposed sounds pretty good (it would seem that, instead of flooding the World, high-up water released would simply flow until it ran out, or evaporated) but the Quirks mentioned (infinite waterfalls resulting from one tiny pool) make me wonder if a different local system could be devised which Approximates, through behaviors, finite water, while not having the burden of actually calculating realistic fluids dynamics.
My idea stems from a comment on the development blog about water being either static or flowing in a certain direction.
Flowing water can move north, south, east, west, or down. In any direction but down, it is only half a block in height. since it has a direction, it can be said to have a Back, and a Front. if two or more flowing blocks are together, the program would look to the ends of the string of flowing blocks, as if all lined up flows were just one.
The game could then consider several scenarios, and have tiles react accordingly. This set of behaviors seems to work well for all the scenarios I've tried it out on. The game is to check for each condition In Order, and respond to the first one it finds:
= water
[iron] = air
= water flowing to the right
= an obstruction
condition | Result
[iron] | [iron]
|
| [iron]
[iron] | [iron] [iron]
[iron] |
|
changes to :arrow:'s could happen in a group, or to just the ones affected. like [iron] could become [iron] [iron] or [iron] [iron] [iron] [iron], either way works.
if a flowing block appears over empty space, it becomes downward flowing. for blocks that are forced to go around corners, it's still considered a string of flowing blocks. for example: >>v
if more than one block is flowing towards a flowing block, the game could randomly choose one path to follow for that tick.
A few exceptions would be if the in is a permeable substance (Sand, Dirt, Gravel, Peat, Clay, Sandstone, etc) and below the Water Line, which I'll discuss in another thread, then it remains as . Any permeable in that's Above the water line would remain as :grass:. This would allow for things like rivers perpetually flowing into lakes, without having to use up CPU, because the system's in equilibrium.