Temperature bug with Pitcher Pump and Petroleum


fishpear
  • Branch: Live Branch Version: Windows Fixed

I accidentally found this when I place many pitcher pump in my petroleum pool and find an abnormal cool area.

When pitcher pump is half placed into petroleum or crude oil, the temperature will automatically but slowly decrease. It is slow enough that can only be observed by tens of circles or by ctrl-U fast mode.

It may occur with other liquids. In my experiments, petroleum and crude oil works, but water not.

The Antigravity Brigade.sav

Tip: If you replace the air with hydrogen, this phenomenon will be more significant

Start with 5b69f694295e9_QQ20180808034302.thumb.png.fe76518033ccce3e6d83feee6e1909d6.png, enable Ctrl-U fast mode and you will get

5b69f69a93ac4_QQ20180808034404.thumb.png.358d9b395eedbadf209d0853fecfd56b.png

the first row is crude oil and the second is petroleum.

different column represents different air density (1g 10g 100g 1kg 10kg 100kg)


Steps to Reproduce
enable Ctrl-U fast mode and watch the temperature overlay

Status: Fixed

This issue has been fixed in either a future version or updated in a previous version.


  • Like 6
  Report Bug


User Feedback


A developer has marked this issue as fixed. This means that the issue has been addressed in the current development build and will likely be in the next update.
....

This bug is a lot worse than you found. A few pumps can inject more cooling power than an aquatuner. I'm going to build an automatic ice maker using this bug and put it in the forums to showcase the problem. 

I've spent the last few hours testing this in many different ways. Here are some findings:

  • The cooling effect seems to come from the left tile on the platform of the pitcher pump, together with the tile below that. These two tiles together can actually cause a HUGE drop in temperature. For example, 3 pitcher pumps can take 6000kg of crude oil from 38.9C to 19.9C in 1 cycle (600 seconds).  An aquatuner running full time on crude oil would only drop the same amount of liquid 14C, but the 3 pitcher pumps together drop the liquid 18-19C.  This is easy to reproduce with the following setup. 
    5b7a261b29ecd_Screenshotfrom2018-08-1920-22-21.thumb.png.e6d92d84c2a51dd95904ebc48adf8c09.png
    The buffers above were set at 200s and .1 s, so that I could stop at 200s intervals and save the results. 
  • Perhaps it comes from the other tiles below the pump as well (your image above shows this is true), but the effect from these tiles is very small. The top tile outputs the most cooling power, and the one below outputs almost as much.
  • The cooling power depends on liquid. Crude oil cools fastest, with petroleum pretty close.  Water does cool, but no where near the same (enough to keep an initial pool of water in the starting biome from overheating, but not to cool it down.  Interestingly enough, it actually causes 20C polluted water to INCREASE in heat, very slowly (not above 40 - no passive boiling, haha).
  • The cooling/heating seems to hit a plateau, which resets and changes upon save/load.  For example, when you first place a pump with 18C crude oil, it will cool to about -8.4C. After a save/reload, it will cool to the negative mid teens.  Another save/reload lets this drop to the negative 20s.  It's really easy to see these plateaus with 2kg crude oil below the pump.  It will almost instantly hit the temp.  Then save reload, and the next level is hit. The pump will never freeze oil, as it heats up -39C oil to about -37C, then -35 on save/reload. 
  • The amount of cooling power seems to be a set amount of heat taken out of the system, based on the current temp (seems to be proportional to the difference between the current temp and the next plateau). So small amounts of liquid will change temp super rapidly, while large amounts of liquid will take more time.  To maximize your cooling potential, make sure you have at least 871 kg under each pump so you get both tiles cooling your liquid. 
  • The material of the pump does not affect the cooling potential.  I now use abyssalite to make sure the pump does not absorb the heat loss. 
  • Liquid oxygen has rather strange unpredictable results, but clearly something is happening.
  • Pure gas (H, O, CO2, Cl, PO) don't appear to change temp at all (on x3 speed).  They might on x10 speed. 

 

Basically, if you use a pitcher pump ever, you are using this bug unless you keep the pump base more than 2 tiles above the surface of the water.  Your initial water supply is kept cool otherwise.  If you made 16 tile long platform above your intial water supply, with pitcher pumps, you would notice your water drop into the teens.  I did one final test of this idea.  In 1 day, 8 pitcher pumps causes 32000kg of water to drop .3C.  After 10 days, this would get noticed. After 30 days... make sure you have coats for your dupes.  See the picture below.

5b7a2e8d20f24_Screenshotfrom2018-08-1920-57-51.thumb.png.f60d70b1103bd3a6d818a4ce48ed15ac.png

Tons more testing could be done. Instead, I hope that this is enough to help the devs see the problem. Something like this makes it easy to run tests. 

5b7a18010954f_Screenshotfrom2018-08-1919-11-40.thumb.png.3b07cc1b89c24002e488a5ecd8069cee.png

Time to go make an automatic ice maker with crude oil and water. Haha.  Free cooling that dupes can drag wherever and put in chests. Of course, you could also combine this with an infinite steam turbine, to generate free heat to boil pw, and then cool it to icecubes.  Ive also got plans for using these to cool water to any temp wanted, using automation doors to disconnect the oil from the pumps when temps get too low.

Oh, by the way, this bug was noticed back in february.  However, it was posted in Steam, not here, so it was probably never found.  Here's a link:

https://steamcommunity.com/app/457140/discussions/3/1699415798763303606/

I only found it by accident because I needed a small pool of crude oil and petroleum to make waterlocks. I put those pools near my base and after a few cycles wierd things started happening.  Now a noramlly 35C area is at 10C and dropping (the whole biome). 

  • Like 4
  • Thanks 2
  • Haha 1

Share this comment


Link to comment
Share on other sites
....

I'd expect it to be caused by the weird interaction of pumps with liquid "in them".

I remember pumps outputting liquid when you deconstruct them. This seems to be fixed, but may have been fixed in a way that doesn't solve related problems.

The "set amount of heat removed" (per save) suggests there is 0K liquid being stored in the pump when it's empty.

  • Like 1

Share this comment


Link to comment
Share on other sites
.... ....
11 hours ago, Oozinator said:

Status: Pending

This issue has not been confirmed by a developer yet.

Just means we haven't made a big enough fuss about it.  I think I'm going to start marking issues as "acknowledge by developer" when someone from the dev team puts a "thank you" on a post about the issue. 

Here is the link to a forum discussion about this bug.

 

  • Like 2

Share this comment


Link to comment
Share on other sites
....

I think the issue is that Pitcher Pumps actually have a "virtual" storage inside them. So if a pump says it has 5t of water available, it's basically treated as a storage bin with 5t of water in it. This virtual storage still exchanges heat with the environment, even though its contents aren't actually supposed to exist. The real problem is that the liquid in this virtual storage is spawned at the element's "default temperature".

You can see the difference in behavior based on the fluid(s) the pump is placed in.

  • Polluted Water has a default temperature of 39.35 C. If you put a pump in PH2O cooler than this, it will warm up, otherwise it will cool.
  • Water has a default of 9 C. This means it will usually cool your base, but only down to 9 degrees.
  • Crude oil has a default of -35.15 C (!), which is what makes it so effective for this. In a full basin, you're basically dropping a -35 ice cube in your reservoir for each pump, based on how much it has access to.

As long as the pump maintains access to the liquid, the "virtual" chunks are not recreated. That's why eventually the effect stops. Because the virtual chunks have reached equilibrium with their surroundings. A save/load cycle causes them to be recreated. I think even disabling/reenabling the building might work.

Assuming I know what I'm talking about, Crude Oil, Petroleum, ViscoGel and Super Coolant should all work equally effectively for cooling. (All have a deftemp of -35.15 C.) The next most effective is Liquid CO2 at -53.15, then Liquid Propane or Chlorine at -73.15. With other fluids you could even use this for heating, assuming you can get the pump to survive.

Spoiler

All Liquids in game with Default Temperatures (in C):


LiquidHelium         -272.15
LiquidHydrogen       -255.15
LiquidOxygen         -198.79
LiquidMethane        -173.15
Chlorine             -73.15
LiquidPropane        -73.15
LiquidCarbonDioxide  -53.15
ViscoGel             -35.15
CrudeOil             -35.15
Petroleum            -35.15
SuperCoolant         -35.15
Water                9
DirtyWater           39.35
Mercury              46.85
Naphtha              76.85
LiquidSulfur         176.85
LiquidPhosphorus     226.85
MoltenCopper         1526.85
MoltenGlass          1726.85
MoltenGold           1726.85
Magma                1726.85
MoltenSteel          1726.85
MoltenIron           2226.85
MoltenNiobium        2726.85
MoltenTungsten       3726.85
MoltenCarbon         4326.85

 

 

Edited by AntiBlueQuirk
  • Like 1
  • Thanks 1

Share this comment


Link to comment
Share on other sites
....

So Pitcher Pumps really do just work like storage bins, but their contents are dynamically adjusted based on how much liquid they can access. They also hide their contents with a flag, but I made a mod to force that flag off, which shows exactly what the problem is:

oni-pitcher-bug.thumb.png.97add0d12ac20f9263d7cfbfba33a0f0.png

I made a room with some cold Naptha in it (it has a default temperature of 76.9), and placed a pitcher pump in the room. As soon as the Naptha touches the pitcher pump, the same amount of Naptha appears in the Pitcher Pumps "contents". (Which are normally hidden.) But importantly, the "fake chunks" in the pitcher pump are actual separate objects from the liquid below. I assume the game does this so that liquids "in" pitcher pumps can be found by Dupes, and so that their contents appear in the resource outliner. But the game doesn't disable interactions with the "fake contents" of pitcher pumps, so they can interact with the environment just as if you had a jug of liquid sitting there. Of course, when the pump creates the contents, it creates them at the default temperature, which can be much colder or warmer than the surroundings.

Note that as long as the pitcher pump still has access to that particular kind of liquid, it doesn't "recreate" the chunk. It just updates the mass, but leaves the temperature alone. But if the liquid runs out (or the pump disabled) the chunk is deleted. When the liquid is available again the chunk will be recreated at the default temperature.

oni-pitcher-heatpump.thumb.png.4db8ecd08b56d00d816e50bdab854645.png

You can create a contraption like the above to do this automatically. Right now, the pumps are all empty, but when the doors close, they force the oil up into the pump's range. The pumps create a bunch of fake chunks at -35 C, which can then cool down the environment. After 20 seconds, the timer lets the doors open, the liquid falls out of pump range, deleting the now warmed fake chunks. Then the hydro sensor starts the cycle again.

Edited by AntiBlueQuirk
  • Like 2
  • Thanks 1

Share this comment


Link to comment
Share on other sites
....
2 hours ago, AntiBlueQuirk said:

So Pitcher Pumps really do just work like storage bins, but their contents are dynamically adjusted based on how much liquid they can access.

I love it!  Thanks for the extra testing. This also helps me reset the cooling effect without having to do a save/load. Now I can build an iron volcano cooler. :)  

I'm going to guess that the effect is most prominent in the upper left tile because the contents do interact with the environment in that one specific tile.  Not all the mysteries are solved with this find, but this is a great addition. Here's some remaining mysteries.

  • Why is it possible to freeze oil with this bug. I've seen it happen, and others have as well.  Maybe it doesn't anymore. 
  • If it really is just a big storage tank that parallels whatever you have access to, then the effect should be the same regardless of water depth. Maybe it is.  I'll do some more tests, but I seem to remember that it's not. It's been 6+ months since I did test.

You have given me a reliable way to use this bug, so thank you. My automatic ice maker, coupled with liquid duplication, will be on the forums soon.

Share this comment


Link to comment
Share on other sites
....

I haven't personally observed oil freezing. From my understanding of how it works, it shouldn't be possible, but maybe there's something I'm missing.

Having a deeper tank means that the "fake chunk" is bigger. It's like the difference between putting 200 kg of ice in your water basin, vs. 20 t. The 200 kg melts *way* faster, but it has less temperature to exchange with the water, so it will cool it down less overall. The 20 t will will eventually warm up enough to melt, and cool the water down a whole lot, but it can take a very long time. Having a bigger fake chunk means that fake chunk will take much longer to warm up, but it will still cool the surrounding gas/liquid the same. Except that because you have more *real* liquid, it's going to take longer to cool down.

The easiest way to imagine it is that there's a bottle of liquid sitting in the left tile of the pump's base. Its mass is however much liquid the pump has access to. (Which can change over time.) The temperature starts at the liquid's default temperature, but once that bottle is made it just exchanges heat as normal for its mass. If the pump stops having access to the liquid for whatever reason, the bottle poofs.

  • Like 1
  • Thanks 1

Share this comment


Link to comment
Share on other sites
....
1 hour ago, AntiBlueQuirk said:

Having a deeper tank means that the "fake chunk" is bigger. It's like the difference between putting 200 kg of ice in your water basin, vs. 20 t. The 200 kg melts *way* faster, but it has less temperature to exchange with the water, so it will cool it down less overall. The 20 t will will eventually warm up enough to melt, and cool the water down a whole lot, but it can take a very long time.

I thought that a 20t chunk of ice, compared to a 200kg chunk of ice, if placed in water, would cause the water temp to drop faster. It has 100 times the mass, so should exchange temp way faster.  This idea is false. Interestingly enough, even if the ice chunk is a block, the rate of change of temp is still the same (I suspected a large mass tile would effect the surrounding temperature more rapidly, false). If you pop in a tempshift plate, there is no effect when the ice is a pile on the ground, but a noticeable effect when the ice is a tile. 

Spoiler

5c820fe006dc1_Screenshotfrom2019-03-0723-31-12.thumb.png.8f88ece2e6c193afa7330d8efdbd5ed7.png

Above, both chunks (200 kg vs 20t) exchange heat with their surroundings almost in the same way.  Interestingly enough, the smaller chunk caused the door to drop in temp slightly faster.

Changing the mined ice to ice blocks has the same effect, until a tempshift plate is added. Once a tempshift plate is added, you can see a very rapid drop in overall temperature from the 20t ice block. 

So the effect is definitely connected to how mined materials and bottles exchange heat with their surroundings.  Because tempshift plates don't affect these objects, and because the rate of change of temperature is almost the same regardless of the mass of the bottle, then you see a more rapid decrease in temp from a pitcher pump that is submerged in just one tile of liquid.

Spoiler

Something similar to this confirms the above. The doors are an excellent way to reset the pump several times a day. 5c8210d4d3071_Screenshotfrom2019-03-0723-24-01.png.eedb85d345afaa1994fd4faf937ccbdb.png

Adding tempshift plates to  the setup actually hurts the build. Why? The tempshift plate makes the change in temp with surrounding materials to be so large that you do not see as much change with the hidden bottle in the pitcher pump. 

Spoiler

The pitcher pump setup on the right actually cools down faster than the one on the left. The coldest tiles are not the tiles with crude, rather the leftmost tile of each door. The largest temperature change is occuring between the hidden bottle and the door itself. Putting a tempshift plate in causes the door and crude temps to equalize, slowing down the transfer of heat out of the pitcher pump.

5c8212635f409_Screenshotfrom2019-03-0723-23-41.png.0aac0107e7f84e09d5d186bd0efebc9b.png

 

  • Like 1

Share this comment


Link to comment
Share on other sites
.... ....
2 hours ago, AntiBlueQuirk said:

I haven't personally observed oil freezing.

I have not seen it today at all. The places we saw this (it was reported in the automatic ice maker post) were back in August last year, when Abysallite was a buildable material. It would not surprise me if people who saw this had placed super cold (below freezing) oil down with debug, and then painted over it with tiny amounts of crude, which would be frozen. Those who reported freezes were always working with very tiny amounts of liquid. 

I think your work explains pretty much all there is to this bug.  R9MX4's comment below, may explain what the devs need to do to fix this.

 

 

2 minutes ago, Oozinator said:

existing exploits collection thread

How about a "Exploits: Everything you need to know" thread. :) 

  • Like 2

Share this comment


Link to comment
Share on other sites
....
1 minute ago, mathmanican said:

How about a "Exploits: Everything you need to know" thread. :)

Nice, do it, or call it
"How to bug the hell out of ONI" ^^

  • Haha 1

Share this comment


Link to comment
Share on other sites
....
Just now, Oozinator said:

"How to bug the hell out of ONI"

We'll go with "Exploits: Everything you need to know (i.e., how to bug the h*** out of ONI)"

Time to get haters on our tail. 

Or maybe just 

"Exploits: Everything you need to know (i.e., how to bug the **** out of ONI)"

that way everyone can insert their own favorite four letter word. 

  • Haha 1

Share this comment


Link to comment
Share on other sites
....

@mathmanican Yeah, I have a lot of experience melting ice in my base, and small chunks work best. Not for cooling your base, mind you, but for actually getting the ice to melt. Just putting 20t of ice in your basin will melt eventually, but it'll take a very long time. Also, having 20kg of water suddenly appear in one tile in your water tank can cause some obvious problems.

I've always been underwhelmed with the performance of tempshift plates. As far as I'm concerned, they're not really useful if you want to transfer heat between buildings or items and tiles, since they only appear to interact with tiles and elements. I mostly use them as an equalizer, to help an area reach equilibrium more quickly. But no, they don't really help as far as items and buildings are concerned. I don't consider them necessary to my contraption, I mostly just put them in to test the effect.

I actually don't think it has anything to do with OverrideExtents. The size of the pitcher pump is not the problem. The problem is that it creates fake chunks of elements, that are only supposed to exist for management purposes, and then actually lets those chunks interact with the world. if the fake chunks/hidden bottles were not allowed to do thermal exchange, their temperature wouldn't matter. Also, I'm pretty sure items in storage don't directly interact with their containers for thermal exchange and such, so the "size" of the building really shouldn't matter.

I personally try to avoid the exploits, since they can take a lot of the more interesting challenges out of the game. But I do like figuring out how they work. :)

Edited by AntiBlueQuirk
  • Like 2

Share this comment


Link to comment
Share on other sites
....

I had another bug some days ago.
Small amounts of liquid (water), dropped from some tiles above (polymer press excess) in a pocket with co² and it instant freezes.
Could not reproduce. Was working, till i tried to figure it out and changed someting.
 

  • Haha 1

Share this comment


Link to comment
Share on other sites
....

Had a weird shower thought and decided to check: Even if you cool the "hidden bottle" down below its freezing point, it does not actually freeze and fall out of the fake storage. If it worked, it would probably be a crazy powerful duplication glitch.

oni-freeze-chunk.thumb.png.b4bc71383b9ac97760e1d0c6252e5556.png

Edited by AntiBlueQuirk

Share this comment


Link to comment
Share on other sites
....

Changed Status to Fixed

I've run a couple different tests for this and it seems to be fixed now. Will be in for launch! Thanks for all the details, everyone. :)

  • Like 1
  • Thanks 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