Warptorio2


Factorio but you build your factory in a restricted space that teleports yourself, the platform, and everything on it to a new and uncharted planet in an unknown corner of space, time and the universe while constantly under attack from enemies. This mod increases the difficulty of factorio by making construction harder and making biters a more significant threat, resulting in a unique experience of factorio'ing in a tight space and under pressure, almost like a tower defence game.

Overhaul
11 months ago
0.17 - 1.1
27.9K
Combat Environment

b warp reactor heatpipe

11 months ago

Placing warp heatpipes seems to prevent the warp reactor temperature from rising above about 502°C. Perhaps I haven't understood how they are intended to be used, but if the purpose is to allow you to set up heat exchangers on a different platform, then this behaviour seems to be a bug that renders them useless.

11 months ago
(updated 11 months ago)

The warp heatpipe severely reduces the energy output of the reactor to the extent that it's fully consumed by a single heat exchanger. This has to be a bug.

Edit: the culprit is the specific heat capacity — since it is only 1/10th that of the reactor, when the heat of both the reactor and heatpipe is auto-balanced, 90% of the energy which should have been transferred from the reactor to the heatpipe is simply lost. I increased the specific heat of the warp heat pipe to 10MJ (equal to the reactor) which fixes the energy-draining behaviour, but the better solution would be to autobalance temperature*specific_heat.

11 months ago

I found the following solution, changing AutoBalanceHeat() so that it calculates a temperature average weighted by specific heat. The result is all entities having the same temperature without any energy loss.

function entity.AutoBalanceHeat(t) -- Auto-balance heat between all entities in a table
local e=0 sh=0 tsh=0
for k,v in pairs(t)do sh=v.prototype.heat_buffer_prototype.specific_heat e=e+v.temperature*sh tsh=tsh+sh end
for k,v in pairs(t)do v.temperature=e/tsh end
end

4 months ago

wrote this since i ran into it too: https://mods.factorio.com/mod/warptorio2-warp-heatpipe-specific-heat

Thanks for that.
This needs some looking into.

4 months ago
(updated 4 months ago)

Yeah, the intent was that the reactor has a higher thermal mass. Which is what I assumed the specific_heat did.

The way that vanilla uses it, is that 1'C = 1'C for transfer purposes, and ignores specific_heat. A vanilla heat pipe and reactor are both specific_heat="1MJ". And the specific_heat is only used on the producer/consumer side to convert degrees Celsius to Joules... Vanilla doesn't have a problem with this, I misspoke.

The warp reactor changes in 1.3.9 > 1.3.10 changed specific_heat from 4MJ to 10MJ, while also increasing the reactor output from 20MW to 160MW. So, nobody noticed the 4:1 loss before, because you were only going from 20MW > 5MW output. But you notice a 10:1 reduction of 160MW > 16MW a lot more. (And I never noticed it in testing the changes, because it says 160MW on the reactor, and I was running like a 4GW reactor setup, so losing 144MW wasn't a noticeable blip.)

I do think chingis_khagan's changes are better than just force-equalizing the specific_heat of all entities. But they should probably be pushed upstream to base Factorio. The workaround for the mod is just changing the specific_heat back to "1MJ" in the warp reactor definition(data_warptorio.lua, line 136). PyroFire needs to update lib_control.lua, since this is only an issue with the warp heat pipes and AutoBalancer function.

2 months ago

Added this to 1.3.11

New response