Add realistic nuclear reactors including a breeder reactor type and cooling tower. The reactors must be controlled through integrated circuit interface signals. The thermal energy output is dynamic and depends on reactor core temperature. The reactors require sophisticated designs of their cooling system and heat-pipe network. If the operational conditions aren't met then a reactor core meltdown with dangerous consequences occurs
Mods introducing new content into the game.
I'm not a nuclear engineer but as I understand it, there are control rods which can be raised and lowered to different degrees, but this mod only has full on/off with a timer. As I understand it, totally inserting the control rods 100% is not the same as SCRAMing the reactor.
So I think there ought to be 3 signals
"start" - begins the reaction, requiring electricity
"scram" - end the reaction, requires the cooling tower
"control rods" - let you better balance the reactor WITHOUT shutting it down and wasting fuel.
If you really wanted to get crazy you could break up the nuclear reactor into 2 components- a pile and a rod-inserter. It would be rad if you had a rod-inserter that connected to the nuclear-pile, that can push/pull graphite control rods. Of course, these rods would be controlled by signals and it gives the opportunity to create a whole new ingredient and entities.
I think I understand what you mean. The current logic will mostly remain, however we're going to introduce another tier which will have control characteristics close to what you describe. Although this part is still in development, and considered as future plans.
Regards,
-max23344
Is this documented somewhere? I'm definitely interested in your future plans. I have some of my own ideas: https://github.com/adamwong246/chernobyl
Hmm i see. Actually the RBMK reactors function in a different way. https://en.wikipedia.org/wiki/RBMK is a good entry point. At the same time there is a clone https://mods.factorio.com/mod/RealisticReactorsRevived which roughly does what you describe. I think we can talk on discord if you are interested in future development here. Contact me via max2344#2539 thou we're mid of 3.0 finalization currently.
Regards,
-max2344
I would like to renew development talks about this, the ideas displayed here are great
Well, stepping away for a while, I come back with some new ideas for a more complex reactor... not necessarily a more "realistic" one, but a factorio toy thats more fun than the vanilla reactor.
1) The reactor should accrue damage when it operating above the safe temperature. In Vanilla, there's no consequence to running the reactor full-tilt, other than the fuel cost.
2) The Reactor should emit radiation that's harmful to the character, making it imperative that you use your remote tools to work around the reactor. This challenges the player to NOT do everything manually.
The reactor should eat both fuel cells and control rods and, rather than signals to control the reaction, the reaction is controlled by, literally, the number of control rods in the machine. To start the reactor at full tilt, you put a cell in as fuel but you must also remove any control rods. The fewer the rods, the faster the machine heats up. Add some control rods and the temperature slows. Remove some more and the temperature drops. You can try to balance the perfect number of control rods to get the best temperature but the reaction is a function of its current temperature and the current number of control rods, and control rods themselves are used up a non-linear rate, itself a function of the reaction. So it's imperative that you use temperature signals and logical controls to make a feedback system that "balances" the right number of control rods by adding, and removing, control rods.
Under this system, you might implement an auto-SCRAM yourself by building a mechanism that fills the reactor's inputbox with 100 control rods and removes all fuel cells if the temperature exceeds a critical threshold.
TL;DR
1) the reactor should force you to work "remotely" by making radiation a hazard.
2) the reactor should have a range of working temperatures, with a complex function of efficiency and speed, dependent on the actual number of control rods present.
3) The player is forced to build in-game feedback systems, rather than the functionality delivered as part of the mod.
3) the consequence of mis-managing a reactor should be severe and hilariously explosive
I was actually thinking about a feature like this years ago, but I never got to the point of implementing it.
First of all I think controlling the rods other than by signal would be difficult from a technical point of view. For example adding another consumable slot for the rods like described in the post before is a nice idea, but it would be a hell of an effort to program.
The main reason why I never implemented this is because I think mostly the reactor would run at 100% anyway all the time. But the overclocking-feature described above never occured to me, I think that could be a nice addendum. When you are able to get additional power by overclocking while emitting radiation and maybe damaging the reactor - I think that could work in-game.
The only thing I'm not sure about atm is the interaction or dependancy between control rod level and cooling the reactor via ECCS. Lowering the rods should probably having a more mid- or long-term effect, it should not be an alternative to ECCS. No idea how that could work in-game though...
I'm just writing my ideas here as a user, the decision of how to implement this is totally up to dodo.the.last and max2344 - they do all the work nowadays :)
One thing that keeps me from adopting this mod IS the ECCS- I believe the pre-made functionality of a signal is actually an anti-feature that robs the player of a valuable use of sensors and signals. It also confuses my understanding of heat-as-fluid, because to my mind the real task is 1) stopping the reaction and 2) shunting away dangerous excess fluid-heat, not "hot water". But most importantly, it's just funny that you must build your own safety systems, which may or may not collapse right when you need them. Also, signals and heat-fluid are tragically underused.
But it also points to a fundamental aspect of the game- nothing ever runs too much. It appears to me the designers have explicitly designed a system where no machine can ever be said to "go too fast", only "at an inefficient speed". And that's the fundamental loop of the game- let the machine run until a supply line starts to run out. You fix that and another appears, etc etc. But machines never overload and break, they only get clogged and stop. So your machine only ever goes forward. The only thing that can ruin your stuff is enemies and your own weapons. It appears to me that a main tenet of the game is: your factory can't really hurt itself.
Of course, this leads me to try to implement such ideas in mods and after pondering it for a long time, I think I might have a solution. I've been working on a mod where your machines will be damaged of the contents are full. And this applies to all machines but in this case, let's just focus on the reactor and the heat pipes. Under this mod, if the reactor can't push its contents as heat, then it's literally emitted as harmful radiation. And if the heat-pipes can't move THEIR contents, they'll emit the excess as literal explosions. How do you solve this? This mod provides a custom Cooler but there's no reason another entity can't be made that consumes heat and water. I'm pretty sure there are mods for signal-switchable heat pipes and water pumps.
My point is that with RealisticReactors, the reactor now eats water and emits hot water on a signal. I think rather, 1) the reactor ought to only produce heat but it's damaged by being "full" and 2) the ECCS ought be implemented by shunting away fluid-heat, not a signal that switches the mode of the reactor.
Nuclear Engineer's thoughts:
I prefer the idea of using a signal for the control rods to well.. control the rate of power change. I checked out the Revival clone and it nails it pretty much on the head. Reactors don't physically remove control rods from the plant/pile to a separate area, just moved slightly up/down out of the active area of the fuel/core and are not frequently replaced (unless you're breeding Co-60, but that's a Canadian exception to the rule) so they don't really need to be here either, especially since there isn't really a "maintenance" concept in game (thankfully).
On the topic of overclocking: I'm not sure why we would need that here for power generation, as the other power sources don't have this function so it appears to be out of place (also, one does not simply operate fuel above its power rating - that's how you get fuel failures and radioactivity release!)
@max/Igno if the offer still stands to discuss this on Discord, let me know.
Cheers!
The number of rods, as I understand it, was implemented through the neighborhood bonus. This is approximately how the base reactors are now kept from idle operation, their number is regulated depending on consumption.
Remembering the first attempts to make a simulation of a nuclear reactor, there were ideas with modular buildings.
And you can try to return to more reasonably small models. Make them less powerful, but play around with the bonus from the neighborhood.
As for the temperature range. Hasn't this already been implemented in Realistic Reactors? In the same place, there seemed to be even formulas for different types of fuel in which, with increasing temperature, the efficiency first increased and then fell. Ideally, I want to come up with a system that would itself analyze the most favorable temperature (probably something like a neural network). If some penalties and heat loss are implemented depending on the operating mode of the reactor, this would be more relevant.
Rod control is needed. Only for this I do not return from the Revived version. There, not only do the rods do not react immediately, but also the energy generation itself has even greater inertia. However, thanks to them, you can easily keep the temperature at a given level and at the same time there is a risk of an uncontrolled reaction in the event of a sharp decrease in consumption. But without them, I probably returned to the scheme of stopping the supply of fuel when filling a certain energy buffer, as with basic reactors. Then, for realism, I propose the option of reducing the power from the remaining fuel, (I don’t know if you can pull out this variable), at least some interest will then appear in the balance of the number of active reactors.
Control rods could also just reduce the production of heat for the reactor; both for the heat pipes and core. Thus, while effective at reducing heat buildup, they would not actually cool the reactor down, just prevent MORE heat from being created, thereby preserving the necessity of ECCS.
In addition to this, reactor control rods would not change the consumption rate of fuel cells whatsoever; i.e. any heat absorbed by the control rods is effectively wasted.
There's plenty of ideas here to choose from. Can we get an official yes or no on these?
Bump.
2024-05-11
Here are my ideas on the subject. I might or might not play with it in my fork of the mod (RealisticReactorsForK2).
I think that control rods are capable of removing the challenge because they will allow to throttle the reactor directly, without lowering its temperature first.
I have considered several different ideas already, here is what seems to be the best so far:
* if rods are pulled out, the reactor will speed up
* if they are inserted it will slow down.
* rods position is specified with the circuit network signal.
* if specified position is equal to neutral position the reactor will maintain the power level
* The neutral position is dependent on either the temperature or actual power.
* SCRAM signal might be replaced with "autoshutdown" - SCRAM doesn't activate unless power drops below 5MW (i.e. if you already almost shut it down yourself).
* easy mode: invert rods direction, see example 3 below.
Example 1, temperature:
position is in 0...1000
neutral_position = temperature
lower positions speed it up, higher positions slow it down.
reactor at 20 degrees has neutral position of 20. Positions 0...19 speed it up so it will be slow to start.
reactor at 997 degrees keeps running with rods almost completely inserted - only 3 notches left that will cool it down.
Example 2, power:
position is in 0...current_power2
neutral_position = power + min(1,start_signal)10
reactor at 0MW:
Only has position 0 if start signal is not given. That position is neutral => nothing happens.
If start signal is given, then neutral position becomes 10, input remains at 0, reactor starts speeding up.
reactor at 100MW:
Has positions 0...200. Position 100 keeps it at it current level (if start signal is not given). Position 101 will very slightly slow it down. Position 99 will very slightly speed it up. Everything else just has a greater effect.
== Easy mode ==
Just invert the speedup/slowdown direction
Example 3, power:
Control rods are set at 40 (MW). Reactor is running at 35 MW. No start signal.
Neutral position is therefore 35, current position is 40 -> reactor will speed up until it reaches 40MW. Then it will just hover there.
it seems that it was quite easy to implement that logic. Now this immediately triggers the question of how to handle the transition states.
It seems to be quite natural to replace current startup and scram sequences. Instead of fixed 30-second startup and fixed 180-second scram it could be done flexibly.
startup: set reactor power to at least 0.5MW, force all control rods out, wait until reactor reaches 10MW, then consider it started.
shutdown: force all control rods in, wait until reactor reaches 10MW, auto-activate SCRAM, wait until it reaches 0.5MW, then reset it to 0 and consider it stopped.
I am also not convinced if we need third input signal. Technically it is enough to have the two we already have: the start signal and scram signal.
We could use the fact that they could take values different from 1:
The "control rods" signal could then be an output signal between 0 and 100 and show how much the control rods are extended/retracted.
Obviously, this logic will require abandoning the concept of "moving neutral" because the neutral becomes fixed at zero. On the plus side, the reactor controls become much more intuitive.
Thinking further about this, I have definitely wandered into the "mod revamp" territory. Nothing described in this or previous update is implemented, but should I dare doing that, I have at least a clear plan, how to.
The control rods do indeed remove challenge. You can push them just right to the "neutral position" and your reactor will keep pumping heat out 24/7 - as long as you have a steady supply of the fuel cells. And if you pull the rods all the way out - no problem, your reactor has maximum power in any case. Yes, it is dependent on the temperature, but still - I ran my reactors at about 997 degrees with the rods all the way out - merely by providing adequate cooling.
BTW: when I write "rods all the way out" I don't mean that I was using rods at all. I am referring to the usual way this mod works - the reactor just jumps to the maximum power determined by the temperature and stays there.
So what we can do is to remove the cap. So that you can remove the cap of your reactor in-game, if you understand what I mean. The new mechanic could look like this:
I seem to be using this post as my developer blog now. Hope that's OK. I am currently mostly removing the functionality from the mod, nothing new and exciting added yet beyond what was mentioned in the first update and even that will likely be re-implemented.
Here I'll think more about the point (7) above: the fuel cell "fullness" and its effects on the reactor:
Sounds lovely, let me know if you need anything ;)
From my point of view you could also upload your fork here when it's finished, I dont think there is any need for two Realistic Reactor mods.
Although the new rod signal logic will probably mess up existing reactor builds, so maybe I would wait until Factorio 2.0 comes out - I guess most people will start a new factory then, so breaking backward compatibility should not be that big of an issue.
I probably haven't understood all of your plans yet, just some thoughts on it:
- I wouldn't do an extra item for control rods, signal is enough.
- I like the non-constant power output mechanic depending on cell fullness level, which has to be countered with control rod level.
- I also like the change mechanic below 90% fuel cell level.
The general rule when doing something like this is: keep it as simple as possible. I feel like this is already one of the main problems with this mod, it's (probably) hard to understand for a first time user...
Thank you for the feedback, IngoKnieto!
So, yeah, my "plans" were actually mostly "thinking aloud" in a discussion thread, then experimenting, then thinking aloud again - possibly saying things that contradict the previous update or build up on an idea that was considered "for later".
I am a fan of KISS as well so it would indeed be nice to avoid complex mechanics.
Regarding the publishing of the changes: as you probably know, I have a fork named RealisticReactorsForK2 - it was started because I was only starting with Krastorio2 and didn't understand all its mechanics. I got an impression that the RR+K2 is a dead end because it doesn't allow for Tritium breeding and tried to fix it by playing with efficiency (basically setting it as low as 5...10% at 995 degrees Celsius). And even though it happened because of misunderstanding - something grew out of it and I do consider it to be an improvement to the RealisticReactors, however slight. Therefore I would be hesitant to publish my current changes there and would rather start a second fork (was thinking about RealisticReactorsOverhaul). However, if you are open to taking RR4K2 changes into the "main" branch - I could publish it there so that others could also try it out and give feedback.
Anyway, now to the
I have achieved a point at which the code mostly works. I even built myself a "test rig" consisting of 1.3k Radars working as an electricity sink, 50 steam turbines and 24 heat exchangers. The heat pipe network was pre-heated with vanilla reactors. BTW, here is already a quirk: my changes somehow broke the startup: the reactor currently have problems starting at 15 degrees Celsius. It starts, then immediately shuts down, starts again, shuts down again. All that at 1MW power. But eventually these puny 1MW heat up the reactor to 16 degrees after which it keeps going. I guess with cold heat pipe network it will take almost forever.
I also have a trivial circuit network controlling the reactor: a single arithmetic combinator that takes in the neutral point, adds zero to it and outputs it as "rods position". Apparently this is enough to achive this ultra-stable cycle:
The whole cycle takes 144 seconds: 96 seconds stable, 7 seconds starvation, 10 of shutdown and 30 to recover.
Another mechanic is reactod damage: once reactor goes above 150MW - it starts taking damage proportional to excess power. I tried changing my combinator setting to force the reactor to run away. In that case it works like this:
I am slightly worried by the "core replace" mechanic. The mod does some juggling in the backgroud to scale the reactor power. For that it creates 250 hidden reactor prototypes - from 1 to 250MW. It might be possible to have just 10: 1MW, 2MW, 4MW, 8MW, ... 256MW, 512MW. Then create all 10 at once and just keep switching them on and off. These reactors could be fed with real fuel cells so they will produce real depleted cells directly. Heat flow will also happen all by itself. Obviously such reactor will require a whole stockpile of fuel cells to start and should shut down if stockpile runs low.
Didn't think about achieving efficiency scaling yet. May be it could be some bonus production of the FULL fuel cells that would be simply added to the stockpile.
Another thing that I potentially want to fix is the bonus production.
There is a Krastorio2 challenge that is effectively a production of some insane amounts of electricity without using an anti-matter reactor. That means - using fusion reactors. Well, technically, I guess, it would be possible to produce these using also other means up to and including wind turbines, but it would be just grind.
Running something like 10 fusion reactors requires some serious amounts of Tritium which could be bread using U-235. Which means that one must breed U-235. There is a bug in NuclearFuels mod that leads to no breeding of U-235 at all, though you do still get some trace amounts of Tritium. This is, in fact, the bug that led me to creating RealisticReactorsForK2.
However, even if you avoid this bug (by selecting a different option from the mod settings menu), the breeding speed of the U-235 is still not amazing. I have solved it by tweaking the efficiency chart to go really low if you run 4 breeders in the same heat pipe network. That works and will certainly also work with control rods, but I don't quite like it. It is unintuitive.
Effectively, one has to figure out that running your reactors at high efficiency is only good if your goal is power. But if you are breeding then you are actually targeting low efficiency because all you care about is to burn the fuel cell as soon as possible to get that sweat sweat used fuel cell for the purposes of reprocessing.
I think it would be nice to make efficiency charts go up only marginally with few reactors and go real high with high number of reactors and bind the production bonus of the breeding reactor to the efficiency at which it runs. In scope of control rods that means that you not only has to keep the power as high as possible (to rotate cells fast) but also maintain your reactor temperature at certain level to hover near the maximum efficiency.
That might be the next that I try to implement.
I am starting loosing steam on that effort. So I have packed up what I have at this point and uploaded it as a new version of RealisticReactorsForK2. Give it a try and leave feedback.
I have wrote the new mechanics explanation document. Looking at it, I can only conclude that KISS principle (keep it simple, stupid) was definitely thrown overboard during development. It is anything but simple. Check it out: https://mods.factorio.com/mod/RealisticReactorsForK2