-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HFR does not seem to fully observe delta_time #55983
Comments
As I mentioned on the pr, inconsistencies in delta_time usage are bad, however I've given it some thought and I don't think we should be using it in SSair in the first place. I'll go into more detail on that now. Everything in the subsystem is framed around interacting with flow, in this case the main issue is excited groups in particular. Excited groups settle, or breakdown based on the highest amount of change inside them. If wait is raised, more gas would be moved from vents/scrubbers and such each tick, which would fuck with this behavior. The same happens if wait is lowered, since vents/scrubbers would attempt to meet the old output and cause earlier breakdowns. The point of delta_time is also somewhat moot in this case, as atmos is practically built to take longer to run then its wait would suggest. What's important for the subsystem is that things happen in the same proportion each run, not that things happen at the same rate each second. There is a caveat to this, using delta time for stuff that doesn't impact gas-movement is good, so things like burning when your insides are on fire, etc. Conveying that might be troublesome though. |
As I understand it, and please correct me if I'm wrong on this or any other point, the bulk of HFR logic is located (directly or indirectly) from two main callins:
The notes in this issue, and the changes made in PR #56009, exclusively deal with the logic in HFR's
|
wait why is it doing gas things with process_fusion |
It's a bit harder to make normative rather than descriptive statements from just the code, but I think the intent was so that complicated reactions could happen on a slower update, and externally visible atmos changes would happen in Would it be reasonable to merge #56009 for consistency now, and to make any broader redesign/refactor into a separate issue? |
Oh of course, ever if the setup is jank, the pr is more then valid |
Opening for discussion, since there's quite a lot to go through. Please let me know if there's something obvious I'm missing!
Each fusion power level's
var/scaled_production
calculation can double-dip ondelta_time
whenever production is bounded by fuel injection, with unpredictable results:A possible fix might be to split
fuel_consumption
into afuel_consumption_rate
, used for clamping purposes, andfuel_consumption
, used for actually consuming fuel and producing Helium.The fusion level 5 and 6 responses to Healium differ.
Level 5:
Level 6:
Both provide a fixed amount of healing per update, based on the amount of Healium in the moderator. Level 6's response can also up to triple dip on
delta_time
when consuming Healium, sincescaled_production
can already usedelta_time
as a factor twice.Level 5's Antinoblium production produces a fixed amount of Antinoblium per update, based on the proportion of Helium in the fusion mix:
General moderator gas consumption removes each type of gas at a fixed proportion per update, based on
power_level
:Waste removal also ignores
delta_time
:Random radiation and hallucinations also ignore
delta_time
, if we should care about that.The text was updated successfully, but these errors were encountered: