Jump to content

Doors take their building temp from the average of the two tiles when opening begins rather than when it ends.


Zarquan
  • Branch: Live Branch Version: Windows Fixed

This bug has been seen before, but the exact mechanic was misstated, and therefore the root cause of the bug was not included.

When a door opens, it has to choose a building temperature to set itself to.  Unfortunately, the code currently has that temperature be set to the average temperature of the two tiles of the door when the open command was received.

In this video, we can see this in action:

On the first door open, I used debug to spawn in the doors and open them instantly.  The doors are 20 C, but the steel between the doors lost temp to the doors to standard conduction.

Then I close the doors.  This creates the two physical tiles of the door at 20 C, showing that heat was, in fact, deleted.

Then I let the simulation run for a few seconds and pause, looking at the actual tile temps of the doors.  The right powered door's bottom tile is 291.3 C and the top tile is 226.2 C, which averages to 258.75 C, which is rounded to 258.7 C.  The left unpowered door starts with tiles at 191 C and 83.7 C, which averages to 137.35, which averages to 137.4 C.  But, while the doors are in the process of opening, the tiles pick up a lot of heat from the steel, which is then destroyed.

I would consider this a very important bug due to how common doors are used as heat injectors in builds involving high temperatures.

(EDIT:  Actually, I'm less sure now about the severity of the bug.  I was measuring massive heat deletion, losing 1.69 times more heat spent than the system should have been drawing from my heat source, but I am having trouble reproducing those numbers.  I'm still losing heat, but a far less drastic amount.)

I think this bug would be fixed if the door's physical temperature was chosen when the physical tiles are replaced with vacuum rather than when the doors start opening.  In the code, there is probably a function that gets called when a door is done opening.  If the door's temperature were set in that function based on the current temperatures of the two tiles before they are removed from the simulation, then this heat bug would not exist and doors would not delete (or create) heat.


Steps to Reproduce
  1. Build a door (preferably unpowered to magnify the effect) next to a heat source.
  2. Pause
  3. Check tile temperatures of the door and average the two values.
  4. Order the door to be opened using debug or sandbox.
  5. Watch tile temps of door continue to increase as the door opens.
  6. Watch the door's temp be overridden by the average temp you measured in the step 3.



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.

I ran a bunch of trials on a petroleum boiler.  When I do the math, it should cost around 109700 DTU/s to run.  With a liquid loop and a shutoff (no door), it runs at 109143 DTU/s, which is close enough for me to be happy.  But when I use a door, I get all kinds of numbers.  I did a run with a steel teel door: 111263 DTU/s.  When I run it with an unpowered gold amalgam door, I got 136696 DTU/s.  That is a massive amount of heat loss, so I hope this bug can be fixed.

(I ran more tests, but they used modded doors, so I won't include them here.)

Edited by Zarquan

Share this comment


Link to comment
Share on other sites

2 hours ago, ONIZone said:

Is this not the mechanic behind the exploit in the Unlimited Cooling Power video by Luma plays?

I don't think so.  I think that build is based on an older bug where the temperature of a door was set to the temperature of the lower tile, so that when the door opened and closed, it would set the temp of the top tile to the bottom.  I think the current bug is a result of their attempt to fix it.  I could be wrong though.

EDIT: You could do something similar with the current bug.  Basically, you get a door to temperature, then you close it completely then open it as soon as it closes.  It will either dump its heat or suck in heat, the reset it's temps to when it was ordered to be opened.  If you can do this precisely enough, you don't need a heat source at all.  But I doubt it can be done perfectly, so you would probably detect when the door is outside the acceptable temp ranges and then apply heating or cooling.

Edited by Zarquan

Share this comment


Link to comment
Share on other sites

A fix is welcome as I prefer realism in my sim games.  I wonder how many DTUs I've lost in my geothermal builds over the years.

Share this comment


Link to comment
Share on other sites

10 hours ago, ONIZone said:

A fix is welcome as I prefer realism in my sim games.  I wonder how many DTUs I've lost in my geothermal builds over the years.

If you are playing Spaced Out, there is an alternate solution to doors that it pretty good.  Put a loop of liquid uranium with a liquid shutoff, then let thhe uruanium flow when you want heat transfer.  My tests showed no major heat anomolies.

Edited by Zarquan

Share this comment


Link to comment
Share on other sites

This bug does not appear to currently be fixed, at least on the test branch.  Observe, as the door resets to it's temperature as the door starts to open when it completes its animation, losing all the heat it gained while the door was opening.

 

Edited by Zarquan

Share this comment


Link to comment
Share on other sites

I got a little too trigger happy marking things fixed, I have a fix for this for U59 but it wasn't fully covered by the door changes that made it in u58.

  • Like 2
  • 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

×
  • Create New...