Welcome to Keen Software House Forums! Log in or Sign up to interact with the KSH community.
  1. You are currently browsing our forum as a guest. Create your own forum account to access all forum functionality.

A couple thoughts on water (please don't hit me ...)

Discussion in 'Suggestions and Feedback' started by Gwen, Jul 11, 2018 at 13:38.

  1. Gwen Trainee Engineer

    Hello all,

    First, I'm not requesting or demanding anything, I'm just dumping this here to get it off my mind. Ignore / disparage / ridicule this at your leisure ...
    Second, sorry for the wall of text.

    If I understand correctly, water was nixed in ME because it would be too complicated to manage volumetric water on a spherical planet with gravity.
    Since every voxel can be destroyed, the system would have to calculate each time if water must flow, then manage the flow of water over each surface voxel until the volume under the water line is completely filled, while taking into account the curvature of the world and the direction of gravity.
    Technically possible, but nightmarish to implement, and then the game could only run on the NSA's supercomputers. The secret ones in the sub-basement that's not on the building's blueprints.

    So I thought about it, because having water mills and bridges and castles on lake islands would be awesome, if only for the sights.
    I think it would be possible to do it (enphasis on would and possible), if the devs were willing to depart from basic principles of the game : every voxel is destructible, and subject to the laws of physics.

    So here's how I think it could be done, in several steps that can be implemented separately, or even not at all.

    First, there would be three new types of voxel : Stream, Mud and Water.
    Stream would be in effect a 1x1 ground block with an animation of a small stream in the middle, like the ferns and grass : it's pretty, but otherwise does not actually do anything. Engineers could walk across it like on any other ground.
    Its only purpose would be to have pretty small streams flowing from the mountains down into river or lakes, and an excuse to try and build a bridge.
    Most importantly, it would not be destructible : an attempt to mine or dig would do nothing except a message like "Don't do that, blbec", or words to that effect. It would not be possible to build on it either.

    Mud would be a 1x1 block serving as a boundary between Water and everything else. It would not be destructible, and it would not be possible to build anything on it.

    Water would be a pseudo block, in effect not really a voxel at all : just a cosmetic skin to fill the space between mud blocks. No physics, nothing.
    There wouln't be an actual water table, so no need to manage water level between different altitudes, or any sort of actual flow.
    Water would be completely static, allow no interaction, and just maybe have a pretty animation on the highest graphics settings. Swimming would be essentially enabling flying while the engineer is in water up to his shoulders, with a slower speed, and maybe a swimming animation added at some point.

    At this point, there would be a few small lakes in each kingdoms except the poles, maybe a couple bigger lakes in each kingdom, with "rivers" linking some of the lakes, and streams flowing down the mountains into the rivers and lakes. All of that would be cosmetic, there would be nothing actually moving, and no calculation to do.
    There would not be any sea / ocean, unless the devs are willing to nuke a whole kingdom to get a sea with a couple archipelagoes (tough for the guys who built there).
    It would be possible to build bridges across streams with existing blocks, harder across rivers.
    It would also be possible to dig under the mud blocks, so if you don't want to have a floating mud canal in your world, don't do it.

    That's a very big change in the game, with a lot of development to make it work, a redesign of the planet, and of course consequences after implementation, such as loading a save and finding half of your house vanished because there's a river there now, or your castle cut in half by a stream. Or worse, your whole settlement replaced by a lake, with your engineer swimming in the middle, wondering what the frack just happened.

    It gets simpler after that (for a given value of simpler), since the ground work is laid out.

    The second step would be to introduce new blocks that can be built on water :
    Small wooden bridge and Small stone bridge (1x3, builds a small bridge across a Stream only)
    Large wooden bridge and Large stone bridge (2x3, maybe, same as above but wide enough to allow passage of a cart ?)
    Wooden water support and Stone water support : act like Wooden support and Stone cube, but can only be built on Mud or Water. Also, they have no fixed height : they systematically go from half a block above the water line to the bottom.
    It is possible to build normal blocks on the water support blocks, so they allow building bridges and lake houses.

    Problem : it then becomes possible to build Stone water supports across a river, completely daming the river. I think the easiest would be to simply ignore the case. The water does not overflow, the river does not dry up, daming a river does absolutely nothing except make you look silly atop your useless dam.
    So if you don't want a useless dam in your world, don't build one.

    At this point, it's possible to build bridges across rivers, and to build a structure on the riverside, or even in the middle of a lake.

    Next, it would be possible, but not necessary, to add a Floatability property to objects : it floats, or it doesn't.
    Without that property, if you drop wooden sticks on water, they go to the bottom like a hammer, because from the point of view of the world's physics, the water is not actually there.
    With the property, they stay on the surface.
    Of course, that means that you could drop a plank or a wooden floor in the river, then try to jump your engineers on that to make a raft (Sshhh!! These are not the inconsistencies you are looking for).
    Another possible property for the Water would be flow : FlowStrength, and FlowDirection. It would be 0 for both in a lake, and maybe a fixed value for strength and a fixed 8 points direction in the rivers. That would allow for floating things dropped in rivers (including engineers) to drift away.

    The next step would be mechanical water blocks : Water wheel attachment, and Water wheel (3x3, maybe a second size at 5x5 ?).
    Nothing would prevent anybody from putting a horizontal water wheel on top of their castle, it would just do nothing and look silly.
    But if placed verticaly with the bottom of the wheel in water, the wheel would function as a windmill. If there is no flow implemented, any body of water works, if there is it works only with flow (but that would add a complication due to the direction of the flow, unless that is abstracted ...). There would not need to be a link between the strength of the flow and the water wheel speed, it can be a fixed value.

    At that point, it would be possible to build water mills to power mechanical blocks just like the windmills.
    That's already pretty nice, but I think it would be possible to go further.

    Boats could be a problem because of displacement : at every point, you have to know that this particular voxel is inside the hold, and as such should not be water as the boats pass by. I understand that's quite complicated and costly.
    But what if it's only small boats with no holds ?
    The texture of the block could be made so that it stands just above the water line, so no need to calculate any displacement, the block is just floating over the water line (in practice, gliding on the top of the water voxel, not actually floating in it). No bobbing, no rolling or pitching.
    There could be a few possible boats, all implemented separately, behaving like the small Timber stockpile and small Log stockpile as regards, say, pulling them on the shore or pushing them into the water :
    Small leather boat (Wooden sticks and Leather), a 1x1 boat allowing one engineer, no inventory, just F to get inside, and normal controls for moving about, but without strafing. Animations for getting in/out and rowing would be nice, but not necessary.
    Small rowboat (Timber and Planks) : 1x2 boat allowing two engineers, otherwise behaving just like the first one. First one inside gets to row, second one gets to relax.
    Medium rowboat (Timber, Planks, Cloth, Rope) : 1x3 boat allowing three engineers (up to two rowers), and with the possibility of raising a small sail. The sail would work like the Windmill : there is no actual wind, it just gives a fixed speed value to the boat. Having two rowers could get a higher speed than one too, but that is a detail.
    Large boat (Timber, Planks, Cloth, Rope, Metal parts) : something like the small norse commerce vessels, 2x4 maybe ? It would cost a bunch to build, and allow an engineer to walk inside. The rudder and rowing benches would be stations (F to get in/out), with a possibility to raise a sail. At this size, it would be possible to drop small chests and barrels inside to carry supplies. Up to four engineers as rowers, a fifth at the rudder.
    With boats, there could be new blocks like Wooden dock (acting like Wooden water support, but can't buid on top of it), and/or Stone blocks to make quays and jetties.

    Now, it is obvious that adding water, even a completely static pseudo water like I'm describing, would be a huge change to the game.
    I guess, unless there are technical difficulties I missed, that the real questions would be :
    Are the devs willing to go that route ?
    And if they are, do they have the means ? The man-hour cost would be quite significant, I think. The management could feel some hesitations ...

    Once water is added, the rest would be more or less straightforward, not much more complicated that adding a new block currently is.
    But adding water at all is the great hurdle ...

    Okay, that's it, now I'll maybe be able to think about something else, like what to build next once I'm finished with my copy of Verres Castle.

    Sorry for this mess, and regards,

    • Agree Agree x 2
  2. CanOmer Junior Engineer

    Great and possibly only water model that'd work with ME. For gameplay, shipment of stone or other high demand goods over water would benefit greatly. Coastal towns, ports, dockyards, island castles, bridges...etc would be awesome of course.