The Perfect Plumbing System


Calvin Valerian
  • Branch: Live Branch Version: Windows Pending

 

5bed61ad00cfa_2018-11-15(5)_LI.thumb.jpg.058f46959a85f25787a1a58dff2020b7.jpg

Liquid Pipe A (green circle) is full but plumbing system will always pass liquids with an empty space to Liquid Pipe B (yellow circles).

Current Liquid Pipe Logic Be Like

int main()
{
   if (LiquidPipeA == FULL) {
         if (LiquidPipeB == NOTFULL) {
            createSpacetoLiquidPipeB(); // What's this code doing?
            passToLiquidPipeB();
         }else{
            stopLiquidFlow();
         }
   }else{
      passToLiquidPipeB();
   }
   
   return 0;
}

 

Expectation

int main ()
{
   if (LiquidPipeA == FULL) {
         if (LiquidPipeB == NOTFULL) {
            passToLiquidPipeBWithoutSpace(); // BIG KEY here
         }else{
            stopLiquidFlow();
         }
      }else{
            passToLiquidPipeB();
      }
      
      return 0;
}

So that the end result will be like this:

5bed64a12bf5b_2018-11-15(4)_LI.thumb.jpg.49c895f1a84295ff949de06c3097c469.jpg

Same thing happens to Gas pipe logic.

For Power Wires I don't have any issue with them since it's working at high speed.

I believe it should have the same logic as Liquid & Gas Pipes but it's alright. There's no noticeable difference.

So please fix both Liquid & Gas Pipes logic.

Oxygen Not Included 11_15_2018 3_10_08 PM.mp4

theperfectplumbing.sav


Steps to Reproduce
I added the save file


User Feedback


Liquid will always leave a gap even though Liquid Pipe A is full.

This creates an empty space to liquid pipe B which is unnecessary.

The plumbing could've been perfect if the liquid doesn't leave an empty space between every ball of water.

Edited by Calvin Valerian

Share this comment


Link to comment
Share on other sites

Maybe it's because the game take a short time to look if the pipe A is not full. And since the pipe is not full behind, there's alway a bubble that reach another one with less than 10 kg. So the flow is interrupt when the 2 bubbles are merging.

As soon as your pipe will be full, you'll don't have this issue anymore. ;)

Share this comment


Link to comment
Share on other sites

This can be fixed with a simple pipe bridge going into your skimmer and place the junction at the input of the bridge

When the skimmer is full the water will flow past the bridge without gaps

Edited by Neotuck

Share this comment


Link to comment
Share on other sites

When a pipe is split in a T junction with 1 input and two outputs, the junction will alternate sending packets one direction and then the other. Intuitively, you might expect that if one of the two outputs becomes blocked that all output would go down the open path instead. What happens however is if it is  unable to send a packet to one of the outputs, it simply gives up and sends no packet at all. The result is that each T junction reduces flow by 1/2, even if one of the two outputs is fully backed up.

While I think existing players have gotten used to this and devised their own workarounds using pipe bridges to force priority outputs, I think it's still pretty obviously un-intuitive behavior. I wouldn't be surprised if just about every user attempting to learn how to do piping in ONI encounters this and becomes confused as to why it's happening. I wouldn't call it a bug, but it is something that could certainly be improved on.

Edited by Doddler
  • Like 1

Share this comment


Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now