Bruno Willis Posted February 8 Report Posted February 8 This may be way beyond what the V.S. game code could handle, but... I've been thinking about a different way to do water. Buckets would not be able to create water source blocks. Instead: Aquifers would form, in the same sort of way that iron veins form. They would be wide, 2 to 3 block think veins of "aquifer gravel", generating more in high rainfall areas, and generating more commonly in sedimentary rocks, which would cause them to be often close to the surface. If a single aquifer block is exposed to air, it would change to become a "spring" block, a water source which produces up to 2 water blocks, and all the other aquifer blocks would turn to "spring supply" blocks, which would "supply" the spring block with water. Remove too many supply blocks, and the spring dries up. Water would then work differently. Water blocks would flow, using the same flowing method as currently, but without the ability to spit. It would only ever make one stream from one water block, and that stream wouldn't merge with other streams. Each flowing block would check if it had solid blocks or water surrounding it on all sides. If it did, it would fill up, becoming a full block of water. The flowing water would repeat that process until it was all either flowing or full blocks, which would bring it to a standstill in a depression. When these streams meet depressions, they would be able to form pools or lakes. Essentially, when a water stream stopped, the game would check how many water streams connected at that stopping point, and then run a "flood fill" type command, with constraints based on how many streams were contributing. One stream could "flood fill" an area up to 6 blocks by 6 blocks, say, increase it to 10 by 10 for two, or 14 by 14 for three streams. The game would flood fill one layer, then count how many streams now entered the pool, and flood-fill the next layer, stopping when the area to be filled exceeded the flood fill limit (14 blocks by 14 blocks for three streams). It its turn, a pool would be able to support a number of streams equal to the number of streams feeding it, +1. Essentially, you'd be able to take 2 streams from an aquifer, lead them together in a depression, which would fill into a pool. You could then take 3 streams from that pool, lead them together to another depression, and make a larger pool, and so on and so on until you had rivers. The big issue I see is that the game would need to essentially retain a unique identity for each "stream," remembering that they don't mix or spit, except where they become pools. At the pool, a new "stream" would be added to the others. I feel like that'd be a lot of work for the game to keep track of? but I don't code. To take it to the next level, when a flowing block checked if it could become a full block, it could instead erode any soil or gravel block below it, and fill that space with water instead, making nice, indented river beds. The ocean would be considered slightly differently, having an essentially infinite flood-fill capacity. The ocean would be able to self-correct if you dug a block out of the coast, or if it were spilling into a cavern, it would fill that cavern up until the water level was level with the ocean. The flood-fill process might have to take a bit of time so that it wasn't overly taxing on gameplay. Tell me I'm crazy.
Thorfinn Posted February 8 Report Posted February 8 I think you would have to restrict it to only flat and very flat landforms. Otherwise, with generation as is, half of the hillside could easily be open aquifers, filling who knows what low spots. 1
Thorfinn Posted February 9 Report Posted February 9 Surprised no one else mentioned this yet, but what do you propose to do with caves? Many or most would pierce an aquifer, making quite a bit of it either non-traversable or at least not worth the effort.
Bruno Willis Posted February 10 Author Report Posted February 10 (edited) Yeah, looking at the above plan, I think you'd get a lot of flooded caves. I'd hope it would end up producing haff-full caves, running like rivers, but then cave generation is more vertical and wiggly than horizontal and underground-river-like. I think this sort of thing would really have to be part of a world gen re-design. If caves in soft stone generated like real limestone caves do, horizontal, with sink holes into lower horizontal river passages, it would end up working beautifully. Even the caves without water would feel realistic, and be fun to travers. I'd imagine you'd get underground streams, pooling occasionally, and occasionally making it down into big subterranean lakes. There are definitely some flaws though. The good parts are, I think: Water being restricted to streams, which don't spread infinitely, and don't compress down when other streams flow into them. I think that'd get us closer to tributaries, which gradually add up into rivers, and it would make working with water a bit nicer Water using the flood-fill command to flood basins. I think it would be very rewarding to give survival players limited access to that powerful tool, at the cost of having to build realistic water infrastructure. It would also make mucking around near pools when you don't have a bucket less aesthetically painful. I hate leaving random spots of forever disturbed water when I dig up some sand. Water coming from somewhere deliberate. I think world gen could get a bit more realistic if there were a way to assign the starting points of tributaries in some way. Perhaps aquifers are the wrong way to do it, but it would be good if the game could generate water sources high, in valley creases, and let the streams follow the land. It would good if game rules tended towards realistic rivers, not just world gen, so that player action doesn't gradually make the world less and less believable and pretty. Edited February 10 by Bruno Willis Grammar 1
Recommended Posts