Strange heating/cooling exploit

Started by James0, August 01, 2016, 07:47:43 PM

Previous topic - Next topic

James0


  • build a 10x10 room out in the open
  • stick a heater in the corner, power it, and bump up the target temperature really high (say 300C)
  • notice how the room temperature increases modestly, stabilising at maybe 20C above the outdoor temperature
  • build walls and a vent to block off the heater into its own 1x1 room, with the vent connecting it to the main room
  • notice how the temperature in the 1x1 room fluctuates wildly, while the temperature in the main room starts shooting up to something like 80C above the outdoor temperature

In the attached screenshot the outdoor temperature is -10C, but the temperature in the main room is stable at around 70C. You can use the same trick to get really high temperatures with a geyser (obviously the small room has to be slightly larger to fit it), or really low temperatures with a cooler (with a very low target temperature).

(first post, sorry if I did something wrong)

[attachment deleted by admin - too old]

milon

Great first post!

I assume this is a consequence to the changes Tynan made in how temperature equalizes now. Obviously not a desired consequence. ;)

BlackSmokeDMax


loc978

Sounds like it's not taking the relative sizes of rooms being equalized into account... or at least not affording enough weight to that calculation. I never thought to check that.

milon

It does allow for room size (or at least it has in the past).  But that may need rebalancing now.

mzbear

The vent is bugged. It has a transfer rate of 14 which allows it to transfer WAY MORE heat than the room has in the first place!

GenTemperature::EqualizeTemperaturesThroughBuilding() has a check to see if room was heated or cooled beyond the average, and stops at average if this was the case. Without this check, the heater room would drop to -450C on the very first tick.

Calahan

The same bug is reported in the following thread.
https://ludeon.com/forums/index.php?topic=24529.0

I do not think it contains any new information, but linking it just in case.

Calahan

#7
Update - This issue is still present in v.0.15.1284 - Attached a screenshot and test save game (both heaters are set to 200C).
https://dl.dropboxusercontent.com/u/97382000/Venting%20Exploit.rar

@ ItchyFlea - I've searched the Mantis for "vent", "heating", "cooling", and "temperature", and can not find an entry for this. So I don't think this has been logged there yet. Players have posted about this in GD, and it's been mentioned in the exploits thread. I don't know if this is a genuine bug or simply an exploit (of a WAD mechanic), but it seems like a bug to me though.

[attachment deleted by admin - too old]

mzbear

If it's still present in A15, it means GenTemperature::EqualizeTemperaturesThroughBuilding() wasn't fixed. I checked it in A14 and the code was designed to work with maximum rate of 1 and would risk functioning incorrectly if rate was higher. Vent, however, uses rate 14. Due to this, it only works correctly when both rooms have at least 14 cells.

The heating room pushes out some 500 units of heat, even though it doesn't have that amount of heat in it. There is clamp-to-average when heat is reduced from the source but the unclamped value is used when pushing the heat to the next room, thus the vent amplifies the heat by some 10x (or whatever) in this situation.

AlcoholV

plz fix this issue.
It makes me really annoying.