[1.0] Centralized Climate Control (v1.5.0 - 21st October '18)

Started by coldtoad, July 11, 2017, 06:50:20 AM

Previous topic - Next topic

coldtoad

Thanks! Glad you liked it.

There is an update coming with Research for the Mod. I have some difficulties in balancing time between university and extra-work (like this mod). There have been some gameplay fixes like the cost etc. and are waiting to be released. But need to test everything before I release it to everyone.

paulvin

i honestly like this mod better than redist heat because its less buggy
i hope you continue updating this and add more intake fans because i have very large rooms and 4 large intakes are not enough

nmid

Can you please explain Thermal Efficiency a bit more?
What does having a Thermal Efficiency more than 100% mean?
I like how this game can result in quotes that would be quite unnerving when said in public, out of context. StorymasterQ

Canute

QuoteValue: 1 Climate Control Unit for 3 Intake Fan (for 100% Efficiency)
I think, you prolly got more intake fan's then your Control unit can handle.



Kori

Post so I don't miss the upcoming update!

Also thanks for this great mod! :)

coldtoad

Quote from: nmid on October 11, 2017, 05:25:33 AM
Can you please explain Thermal Efficiency a bit more?
What does having a Thermal Efficiency more than 100% mean?

From the Steam Guide:
Thermal Efficiency is how well your Climate Units are able to handle the change in Intake Temperature.

So...

Change in Intake Temperature maybe caused by Season, Cold Snaps or Heat Waves etc. Having more TE is always good. It is even good till 75%.

Say your temperature outside drops suddenly, so your Climate Units will take some time to adjust this change in temperature. Thermal Efficiency doesn't have that great effect in the temperature when compared to Flow Efficiency. Flow Efficiency literally stops your rooms from reaching the desired temperature if there are too many vents (i.e. reduced flow).

Check This for more info:
http://steamcommunity.com/sharedfiles/filedetails/?id=1078768280

tase

AirThermal and LargeAirThermal have the same cost? 200 steel 3 components each.

Nightinggale

I have been playing with this mod and I really like it. One thing I noticed right away is that if you use it for your first freezer, expanding, moving or building a new one becomes a lot easier and will not require components. This not only makes the first freezer easier (you can always redo it), it also mean the game is way less annoying once the first freezer becomes too small (which will happen eventually).

I have been thinking about what I would like to see in this mod. This thread already has a bunch of interesting points and I have modified my thinking accordingly, particularly the points regarding exploits.

If we are to apply real physics, heating 1 cc 1 °C takes a certain amount of energy. Let's call this number E. If you then send 100 cc of 22 °C into a room, which is 17°C, it will deliver 100*(22-17)*E = 500 * E. Now if we know E in the heat unit in Rimworld, then we can do lots of interesting stuff, which at first glance looks balanced and scales well, it runs into a serious problem. Imagine outside at 0 °C. A certain room is 20 °C and it needs 25 °C airflow to maintain the temperature. For each cc, it takes 25 E to heat it up, but it only delivers 5 E. This means you will need 5 W for each W you use to heat the room and that is in addition to the fans to create the air flow. Obviously this is not the path to take.

That made me stop and think and I realized the problem is not with my way of thinking. It's with the concept of taking in air from the outside vs just heating the air inside using electric heaters. This means the entire concept might be broken by design, which is why it might seem quite unbalanced. The same goes for redist heat, a mod I stopped using because I had severe problems controlling the pipe temperature.

This brings up the important question: how do you make centralized climate control in a way, which is balanced for gameplay, without exploits and works well with the game engine?

What comes to mind is liquid based heat transfer. In real life water is usually used due to it being easy and cheap to get and it's not toxic if it leaks. The problem with liquid systems is that it requires a return pipe, but if we say a pipe ingame is actually two pipes, one in each direction, then we have that problem solved as well.

Here is how I envision it to work. A pipe is one entity, which has energy stored. Let's called it E (not the same E as in air). The temperature is then T = E / (K * number of pipe tiles), where K is a constant for energy/°C. When a new pipe is placed, the energy in it is K*outdoor temperature. If it's next to a pipe network, this energy is added and naturally the number of pipe tiles increase. Likewise if two pipe system merge, they just add the numbers.

We then add a furnace to the pipe and it can add X energy if it's on. Room heaters, aka radiators will produce a set amount of heat and drain energy from the pipe, but only if the pipe is hotter than the room. They have a set temperature, where they cut off. This is done with a regulator relying on heat expansion, meaning it doesn't require a component. However to change the temperature, a colonist needs to flick the "switch". Automated radiators could be invented, which require a component.

Furnaces have components and you can set a target temperature, just like with vanilla heaters/coolers. When the pipe reach that temperature, the furnace stops producing heat and goes into low power mode. If we set up say 10 furnaces and set the target to 30, 31.... 39 and the pipe is 37°C, then only two will be on and 8 will be in low power mode. When it's winter and it gets cold, the pipe drops to 28 °C and they are all in high power mode and produce heat. This will allow power usage to scale with the heat production in a way which use vanilla code to handle the power usage part.

Cooling is done the same way, except it's reversed. Coolers will lower the pipe temperature and radiators will heat the pipe while they cool the room. Manual radiators will have a button to select if it heats or cools while the ones with a component can connect to two pipes (or to all by default?) and use the one required to aim at the chosen temperature.

It's also worth considering heaters, which requires little or no electricity, but they cool the room while working and can only be on if the pipe is colder than the room. This would be useful for production facilities, which produce heat to the room, heat the pipe with campfires (wood instead of electricity), or even a new use for steam geysers.

Pipe temperature should be capped and the cap should be less strict as you invent more stuff. This means you could make heat/cold traps, but only with advanced technology.

I know it's a major change and most likely a lot to ask for, but I think it will work a whole lot better this way because it completely avoids the issue of having to heat up new air all the time vs just heating up the room.
ModCheck - boost your patch loading times and include patchmods in your main mod.

coldtoad

A New Update has been released. Includes a bunch of fixes & some new art assets.

Research Tech & a new build tab are also included.

coldtoad

Hi Nightinggale,

Yeah, I understand the physics don't really work out for the Mod. Though, I had the idea of storing heat energy per pipe initially. But since I was pretty new to the scene, I thought it was best to keep it simple.

I had two more ideas apart from storing pipe-based energy, I thought of sharing intakes with different climate networks & attenuating energy based on distance from the climate units. Since these changes are some big ones, people who might be using the mod currently might face some issues.

Let's see what we can do. I was thinking of duplicating the code base and implement the above features. If you would be willing to contribute with some of the code, I would be happy to work together!

Nightinggale

Quote from: coldtoad on October 20, 2017, 12:15:30 AMYeah, I understand the physics don't really work out for the Mod. Though, I had the idea of storing heat energy per pipe initially. But since I was pretty new to the scene, I thought it was best to keep it simple.
I don't view physics as mandatory. I'm concerned with game balance and if it takes 5000 W to heat using vanilla heaters, it should take more than 500 W with centralized heating. Thinking about how it scales made me look to physics, but more important math regarding heating/cooling for each W used.

Having energy in the pipe is a simple idea, which has the benefit of having suppliers and consumers. This makes it simple to say if you need 500 W with a heater to heat a room, you can make a radiator to produce the same amount of heat using X pipe energy units. The furnace can then add X pipe energy and it will require something around 500 W, not 200 W and not 2000 W. This makes it much easier to make the mod balanced with the existing temperature devices. The real bonus from having a central heating system would then be that you can have 10 rooms heated by 500 W each, and each heater is on 10% of the time, in which case the heating the pipe will only require 500 W (+loss if implemented) and you don't need to add 5000 W heat capacity. Also you can stockpile heat in the pipe during the day and then drain during the night, meaning like batteries for power supply, you can have peak usages, which are higher than production.

This mod has plenty of potential for awesomeness in multiple ways, but it needs to have balanced energy consumption for the temperature changes.

Quote from: coldtoad on October 20, 2017, 12:15:30 AMI had two more ideas apart from storing pipe-based energy, I thought of sharing intakes with different climate networks & attenuating energy based on distance from the climate units.
I thought about mixers as well. They should connect to two pipes and then reduce air flow from one to get the average temperature in the output to be what the settings request. For instance say two pipes provide 10 °C and 40 °C, both at 300 cc. If you want 20 °C, it will use 300 cc@10 °C and 150 cc@40 °C, which results in 450 cc@ 20 °C.

I also thought about heat exchangers which would change both room temperature and pipe temperature to put them closer to each other. This way you can extract heat from heat producing buildings or steam geysers, though it would require mixers to gain control of the temperature. This would be interesting if heat production has balanced costs. You could even heat a room with camp fires if you have plenty of wood, but low electricity, or as a way to temporally increase the temperature production in case of a cold snap.

It could be beneficial to have valves on pipes to make pipes connect only when on. This way you can disconnect a room with heat exchangers if it's not in use, meaning it won't drain the overall system if left unheated.

Quote from: coldtoad on October 20, 2017, 12:15:30 AMSince these changes are some big ones, people who might be using the mod currently might face some issues.
I don't think you should be too concerned with breaking it for players using the current code, or I would say not while developing. However if you have something, which will break existing savegames, putting it on steam to autoupdate would be a bad idea. Make a new mod if needed.

Quote from: coldtoad on October 20, 2017, 12:15:30 AMLet's see what we can do. I was thinking of duplicating the code base and implement the above features. If you would be willing to contribute with some of the code, I would be happy to work together!
I certainly would like to. However I have two problems with it. One is that I need to spend coding time on something else first, which takes priority and the second is that I still haven't figured out C#. Having years of experience with C++, I don't need to get explained what a bool is or what if (A || B) does. However searching for C# for C++ programmers only results in lists of how to do certain C++ tasks in C#, not how to use C# itself. I haven't found anything including non-C++ concepts such as yield return and I really need that if I am to use C# correctly and not just try to make C# act like C++. Once I figure out this problem, I will likely turn into advanced C# overnight, but until then don't count on me to do any actual coding.
ModCheck - boost your patch loading times and include patchmods in your main mod.

frenchiveruti


coldtoad

Thanks for spotting this out. The fix was deployed to Steam but I forgot to update GDrive and Github.

Nightinggale

Quote from: coldtoad on October 20, 2017, 12:15:30 AMLet's see what we can do. I was thinking of duplicating the code base and implement the above features. If you would be willing to contribute with some of the code, I would be happy to work together!
Just for the record I haven't forgotten this statement and I still would like to work on such game mechanics at some point. However as it turned out, it seemed that first BoneMod and then patching became topics to take my modding time. I still have a point on the todo list where I plan to get back to this mod.
ModCheck - boost your patch loading times and include patchmods in your main mod.

coldtoad

Quote from: Nightinggale on November 27, 2017, 08:52:19 PM
Quote from: coldtoad on October 20, 2017, 12:15:30 AMLet's see what we can do. I was thinking of duplicating the code base and implement the above features. If you would be willing to contribute with some of the code, I would be happy to work together!
Just for the record I haven't forgotten this statement and I still would like to work on such game mechanics at some point. However as it turned out, it seemed that first BoneMod and then patching became topics to take my modding time. I still have a point on the todo list where I plan to get back to this mod.

Awesome. Sorry for not replying, having difficulties in getting time for the mod. If you want to contribute the repository is always open, we can even discuss features here and how to go about implementing / changing them. Code changes for features & fixes are always welcomed!