Fission reactor extention/changes/overhaul

Reactor documentation now available: https://mechaenetia.com/1.7.10/gt6fission.pdf

I plan on expanding the nuclear reactor in GT6 to be a bit more interesting and nuanced.

My goals are as follows:

  • Allow measuring a reactor
  • Make measuring a reactor useful:
    • Critical fuels, fuels with a rising neutron count
  • Breeding, new “crafting” system of bombarding material with neutrons
  • Allowing non-critical fuels to go critical:
    • Moderation, raising neutron count, but making neutrons unusable for breeding

I want to get some feedback on some of the changes I’m planning, before I implement them.

The measuring part is the easiest to archive, I’ve even got it working already and made a pull request, so there is a good chance you’ll be able to use it yourself soon.

Critical fuels require the most changes to implement, so they are probably the most debatable change. Critical fuels are fuels which neutron count doesn’t simply stabilize at some neutron value, but exponentially increases over time if left untouched.

I’ve decided it would be best to stick with the current system, fuels of a factor greater than 1/4 are critical. The big drawback of this is, that critical fuels will have no randomness, so measuring the
neutron count of them is kinda irrelevant, you just need to shut them on and off constantly to archive
stability at the current neutron count. But since archiving the intended neutron count requires
measuring and most people probably want to build a safe reactor, I think randomness wouldn’t
change much, if anything at all for players.

No matter what, the way durability works on reactor rods needs to be changed making it not tick down with time but be reduced by the number of neutrons emitted. This is because with criticality comes the option to run fuel rods at almost infinitely high neutron outputs, making it possible to extract almost infinite amounts of power from one rod.

This would also mean that the current way of how efficiency works would no longer apply, so a new way needs to be added. Having fuel consume less durability when outputting more neutrons would probably not be sufficient, as that heavily encourages reactor designs with a single fuel rod running at very high neutron outputs, because the max efficiency is infinite. It’d be better to have an “optimal neutron count” stat for each fuel, rising efficiency the closer to that value the neutron count is. Because the efficiency is finite, highest when exactly at the value, having more fuel rods is encouraged for getting higher energy outputs.

Sadly the current reactor designs will probably not be compatible in most cases, because I’ll edit existing fuels into critical ones and probably generally rebalance them to fit the new durability system.

To make controlling a critical reactor not a flickery mess, I’ve decided it would be best to only update neutron counts every second. I also plan to change it, so neutrons don’t get immediately wiped when a fuel rod is toggled off, but slowly decay (but not heating the coolant, so no worries).

Implementing a breeding system will however be very easy and will not conflict with anything. The basic plan is to have neutrons fill the durability bar of the breeding rod, basically the material absorbing the neutrons. The neutrons on the breeding rod would generate less heat and there will be some extra durability gained from having larger amounts of neutrons on the rod.

For moderator rods, my simple idea is a rod that just outputs as many neutrons on each side as it has. The moderator would not heat the coolant. Rods effected by a moderator can’t be used to breed. Maybe to make it not a too overpowered version of the reflector, it should also reduce the heat output of neutrons.

Other ideas I have:

Combined rods (reflector-absorber, moderator-absorber), which would enable higher efficiency, but can’t be shut of, but switch rod type to absorber if off.

New coolants (distilled water, heavy water, liquid metal, etc.) with unique properties that synergy with certain reactor types (or are just cheap but dangerous).

Any feedback and ideas are welcome :blush:

8 Likes

I like the thought of basically all this, though I wonder if existing setups could be done so they won’t break until the user touches them or so though?

3 Likes

This is a very important theme for me, because I really enjoy nuclear power. Fusion is decent, but fission really got the short end of the stick, as anyone can read from the changelogs. Sadly, Gt6 doesn’t have the kind of traction GT5 had many years ago and I’ve found it unlikely that we’ll ever get an overhaul for anything now that the old gragster is coding his game, bless his soul.

I’ve tried using many fission replacements like reactorcraft (impractical because of dragonAPI/GT interactions) nuclearcraft (which turned out to be rather bland before the 1.12 updates) and even IC2. Of all those, only IC2 (because of nuclear control et al) is the only one that really was worth anything, but I dislike adding the entire suite of IC2 to GT6, which is the only IC2-free version of GT and is rather bulky to begin with, just because I wanted a better nuclear reactor.
I wish you luck in your endeavors in the future and I will watch the progress with interest.

5 Likes

Greg accepts PR’s for GT6 though, and he’ll still work on bug fixes. Large changes are still very possible, they just need to be done by someone else (like OP is wanting to do) rather than Greg himself. ^.^

Huh? What interactions? GT6 has support for Reika’s mods.

3 Likes

Yeah, but by default having dragonAPI alongside GT doubles the loading times of any pack.
I went and grabbed a quote from here GT6 Modpack and Server Recommendations

  • RotaryCraft, ElectriCraft, ReactorCraft, DragonAPI and other Reika Mods
    These Mods will approximately double the Loading Time of your Modpack when installed alongside GregTech, but apart from that they are working as “fine” as Reika Mods usually do.

I have no idea if what part of dragonAPI + GT makes the game laggier or more unstable and it might just be on reika’s end, but I remember a rant about Reika’s mods behaving kinda wonky in a GT environment with reika blaming greg and greg blaming reika, so to be on the safe side I’ve always thought it was usually a bad idea to mix them.

5 Likes

That’s only because of how long Reika’s mods take to load. DAPI used to have some bad interaction with dynamic recipes and ores like GT6 uses but that’s been fixed for almost two years now (and what was the original cause of that message) but nowadays it’s just because each take a while to load (though Reika’s longer than GT6). But otherwise they work well.

Not any laggier or more unstable. Reika’s mods have a few CME and NPE issues due to misdesigns within it but it’s not any worse with them together. Since DAPI fixed it’s GT6 interaction issue a while back the initial ‘lag’ (like NEI taking a long time to load for some Reika machines) that happened doesn’t exist anymore.

A few of us have been trying to help reika with some of his mods performance and stability issues lately as well, it’s made a lot of strides lately though still has a lot more to go.

5 Likes

Well, that’s certainly interesting, the only pack I know that mixes reika and GT6 is Artorus, which started as GT+reika many moons ago but dropped reika support a while ago, so I’ve been mainly talking about hearsay out of my hinderquarters here. Good for you for the fixes and general support, Reactorcraft really is one of the most interesting and complete additions regarding fusion across the entirety of minecraft’s version history.

In any case, as far as suggestions are on the table it might be in the interest of everybody involved to scramble some kind of workaround with nuclear control, which is an amazing, small mod that really stands on its own. I don’t know just how much GT6’s fission is different from IC2 fission, I’m completely ignorant in that regard, but unless it requires a complete rewrite, I’m guessing it would be more efficient to find a way to fork it to remove the IC2 dependency and add compatibility for GT reactors, instead of rewriting the entire thing from scratch.

5 Likes

Okay just as a note for the older Setups. Simple, if IC2 Coolant is used then old Behavior, if any other Type of Coolant is used (you should add a new Type of Coolant ofcourse), the Reactor can decide “hey I’m gonna use the New System”. That way nothing will break. ^^

4 Likes

The thing is that the incompatibility would stem from changes to the fuel rods not to their behavior. Introducing new fuel rods instead of editing would fix this, but it would be a little strange that plutonium is not critical and I’ll have to invent some new materials or limit myself to obscure ones.

Having other coolant types simply double the factor to make many fuels critical would be an option though and probably the best way to handle it. (Although I’ll probably update the fuels to have double the factor and make IC2 coolant half it, as that will establish the new factors as a standard and the IC2 coolant as a special coolant)

The durability system however can’t be controlled by this, as that would make the tooltip on the rods hugely inconsistent, as well as pose some balance concerns. But since that change won’t make existing reactors explode, it shouldn’t be an issue.

3 Likes

You can add new Behaviors to Fuel Rods based on which Coolant they are in. Also if there is no Coolant, its pretty much always Boom so that case doesn’t matter. ^^

And Tooltips can always be changed. Remember, this isn’t some API thing, everyone has full Source Edit Access. :smiley:

4 Likes

Wait, is the coolant not also the moderator of the fission reaction? It almost always is in almost every reactor design (since if the coolant boils off or something then the moderator is also gone so the reaction stops, water is the most common use here). o.O

3 Likes

If the fuel needs moderation from the coolant to archive criticality, that is. Could maybe be converted into a nice little mechanic to allow players to make less explody reactors with certain low factor fuels not boosted through active moderator rods.

4 Likes

I agree that the faster you burn the fuel rod ( bombard it with more neutrons per tick ), the faster it should get used up.

But where did you get this “critical” idea? RL fission doesn’t work like that. Why would you want its neutron output to increase over time? That seems like a real pain to control.

And isn’t breeding already taken care of by centrifuging the spent fuel?

5 Likes

Ever heard of Critical Mass? it’s the thing that makes Nukes work.

4 Likes

Yes, it is when you get enough radioactive material in close proximity by explosive compression. It is not sitting around and waiting for long enough.

5 Likes

The “critical” idea is actually a lot more realistic than the current system and actually kinda simulates how a real neutron economy of a fission reactor works: Neutron economy - Wikipedia

What I describe as critical is actually supercritical, so I might change the name of that. It’s not really pain to control, thanks to the new neutron sensor, but it also isn’t super trivial when working with more compact reactors. The goal was to make it like a little dangerous puzzle with some moving parts.

Technically breeding being just reprocessing used fuel is a bit more realistic in some ways, but having it as a separate mechanic is a lot more interesting and fun gameplay wise. It’s also an abstraction of real breeding, which is often very different from just reprocessing fuels. After all, I want players not just to be able to breed nuclear fuels (U238 -> U235 for example), but also non fissile materials, like hydrogen into deuterium.

4 Likes

A small update post:
A lot has happened in the last couple of weeks. I’ve coded and finished up most features, with only neutron moderators and some new reactor coolants remaining. There will be a bugfix update for GT6 soon, that will add the neutron sensor and reactors running on distilled water, allowing for supercritical reactors, soon. A pull request for neutron breeding and updates to the fuel durability system is also active, but won’t be merged in before this update.

The neutron sensor was the first thing I added and thanks to Gregs excellent design it only required like one line of original code, which was really helpful to get me motivated, having not coded a mod in years. The functionality of the sensor is pretty self explanatory, it returns the sum of neutrons on a given reactor block and returns the sum of neutron maximums as the maximum value, although that is a feature limited to the new pull request.

Getting critical fuels working was also relatively easy, only requiring to rebalancing some fuel rods to have a factor lower or equal to 1/4, which could be easily done by just doubling the factor of all fuel rods. Greg thankfully urged me to add a new coolant for reactors and keep the IC2 coolant without the balance changes, which makes the changes fully backwards compatible :smile:

The new coolant is distilled water, which turns directly into steam, not requiring the use of a heat exchanger. While distilled waters enables running supercritical reactors, as fuels in it only have half the factor compared to running in IC2 coolant, fuels also have four times lower base neutron outputs compare to the IC2 coolant. This makes the reactor only really effective when used as a supercritical reactor.

To make the addition of supercritical reactors not break the balance of the mod, I had to change the durability system. In the soon to be released version, the durability loss is directly proportional to the neutron output of the reactor (although there is a small math error in that version, making the durability loss slightly higher than it should be). Because the reactor output now doesn’t relate to the efficiency, i.e. energy per durability, anymore, which would just be constant without further changes, I added a new efficiency system, based on a new fuel stat: “Neutron optimum”. The neutron optimum describes the optimal neutron output of a fuel rod, at which it will only consume half the durability. This system can soon be played in the new GT6 update, but it won’t stay.

To make supercritical reactors more controllable, the neutron values of the reactor only update every second now, as opposed to every tick. It’s also a much less processing intensive.

This whole durability and efficiency system, although it sounded good on paper, wasn’t as fun or intuitive as I thought, it actually confused me so much, I implemented a completely different system, because I thought there were issues in the system, that weren’t really there. But there were other issues, which is why I decided to keep the completely different new system, which I now think is vastly superior. I could go into detail comparing the two systems, but for the sake of making this already huge update post not even bigger, I won’t.

The new new durability and efficiency system is much closer to the original durability system. The durability consumption is constant, like in the original system, making higher output equal more efficient, to a certain point. Fuel rods have a new stat, the neutron maximum. When the neutron output of a fuel rod exceeds the neutron maximum of that fuel rod, the durability loss will be four times higher and scale with neutron output. So for efficient reactors, you always want a neutron output as close as possible to the neutron maximum, but never exceeding it.

Adding fuel breeding was a much simpler affair. New breeder rods absorb neutrons and upon having absorbed a certain amount of neutrons, will transform into new fuel rods. The more neutrons they absorb at once, the more extra progress will be added, which is scaling exponentially. So you want to have neutron outputs as high as possible when building your breeder reactor, to have the best efficiency for converting breeder rods into fuel rods. But be careful, when a breeder rod converts into a fuel rod, that fuel rod will be running in the reactor, producing neutrons, so you need some extra redstone automation to not build a nuclear bomb.

Currently there are Uranium 238 and Thorium 232 breeder rods, which turn into the new Plutonium 239 and Uranium 233 respectively. These new fuels are a bit more powerful than their other isotopes, to make breeding a worthwhile experience.

Everything above has already been implemented by me, now I’ll tell you what I still have planned:
The biggest feature and last new mechanic will be the neutron moderator rod. It’ll allow building supercritical reactors with fuels having a factor lower than 1/4. I currently have it planned to essentially be a reflector rod on acid. It will not just reflect every neutron back, but reflect back multiple as many neutrons. The factor to how many times the neutrons it will reflect back is dependent on how many fuel rods are adjacent to it, so it will have a maximum of four. This allows fuels down to a factor of 1/16 to run a supercritical reactor. To not be completely superior to the reflector, the moderator comes with some downsides:

  • It’s much more expansive, as it requires graphite, which is currently only obtainable as a rare byproduct of diamond ore.
  • It has a one second delay for updating the factor, which makes controlling reactors harder.
  • Fuels interacting with it can’t be used to breed breeder rods, although I’m not quite sure how I’m going to implement this.

I also plan to add some new reactor coolants, but I haven’t yet figured out how to implement the new liquids in the correct way, I’ll have to ask Greg about it. These are the coolants I want to add:

  • Liquid metal (Will probably be sodium, although NaK, lead or tin would also be possible): Neutrons will only produce half the heat energy per neutron in this coolant. This is bad for energy generation, but allows making more efficient breeder reactors running on much higher neutron counts.
  • Heavy water (Maybe also semi-heavy and tritiated water): This will act as the “pressurized water reactor”, not directly producing steam, but hot heavy water. Otherwise it will be much like distilled water. The heavier the water, the higher the energy density of the hot version.
  • Gas (CO2 and He): Probably making moderation/reflection and base neutron output more powerful at the price of a lower neutron maximum. So less efficient and stable, but cheaper reactors. Helium will be a direct upgrade to CO2, lessening or removing the lower neutron maximum effect.
  • Molten salt: Will probably raise the neutron maximum of fuels, but lower the base neutron output of fuels, which will make it ideal for very stable supercritical reactors and allow for the most efficient reactors of them all.
  • Liquid fluoride thorium: The coolant is also the fuel! Now idea on the exact mechanics or implementation yet, but it’s certainly a cool concept.

I’ll not make the combo-rods anymore, as implementing them in a clean way would require a rather large rewrite of the reactor and that could introduce bugs and would overall be a lot of work.

Any feedback and suggestions are of course welcome!

6 Likes

Are you able to add control rods? Similar to reactorcraft but it can control the energy depending on how far they are inserted

4 Likes

Graphite is relatively cheap. There are:

  1. small graphite ores near bedrock,
  2. graphite veins (quite hard to find),
  3. graphite bedrock veins
  4. it can be extracted from crushed purified coal/lignite by bathing in hydrogen fluoride.
  5. byproduct of diamond ore
5 Likes

I agree, I think the best way would be to make it require graphene, which requires either a nanoscale fabricator or a matter replicator, both of which can only be crafted in the lategame, instead of graphite.

4 Likes