Add Realistic ACS - #191
Conversation
|
Thank you for the nice PR comment layout! Reviewing this now. |
|
Reviewed PluginHub PR head Summary: the manifest validator and Pulsar-real source compilation pass, the pin is the public repository's current Manifest
The GUID The manifest declares no NuGet packages, dependencies, alternate versions, or assets. That matches the loader-real compilation: the selected source needs only Pulsar's game dependency closure. The repository's own Repository and pin provenanceThe target repository is public, owned by the PR author, and the full pin resolves exactly. It is the current tip of the default All 28 tracked paths were accounted for. Every text, source, XML, project, configuration, script, and documentation file was read. The six Security
Project-reference audit: all 48
From-source buildI reproduced the registry path with Pulsar's Game-member behavior was checked against Space Engineers 1.210.014 decompiled source. In particular, Findings1. High: force residual is computed but discarded while its torque is appliedBoth live paths calculate a physical wrench from candidate forces: the RCS allocator accumulates On an unbalanced or authority-limited layout, this permits rotational authority from a force plan that is not a realizable pure couple: the ship receives the torque while the plan's translation vanishes. Please define an absolute/normalized force-residual tolerance and withhold or scale allocations that exceed it, or apply a physically matching full wrench. The first option preserves the plugin's attitude-only architecture but reduces authority on poor layouts; the second changes translation and needs broader flight-control testing. 2. Medium: hydrogen override ownership is not restored on grid loss or unload
Track each touched thruster's original override and restore it on grid switch, world loss, disarm/setup failure, and plugin unload. Preserve pre-existing user values rather than assuming zero. 3. Medium: active control performs several grid scans and bounded brute-force solves per simulation frameEvery Cache grid membership and actuator geometry behind topology/working-state changes, solve at a bounded cadence or only when inputs/state materially change, and replace the visual grid search with an analytic two-axis inverse or cached direction table. Please profile a large grid with many thrusters and pods before release. 4. Low: synchronous unbounded diagnostics use the loader-cache directory
Use a plugin-owned directory beneath 5. Low: two unused NuGet packages remain in the IDE build graph
6. Low: companion-mod asset licensing/provenance is not explicit at repository levelGitHub detects no repository-level license. The only license file is Add a root license that states its holder and scope, and document the origin/license of the |
|
Updated the descriptor to pin Realistic ACS to d746fc45df274ec39b2ad05e65e32e1c5bcfdd42. This revision addresses the review findings:
I also completed local in-game testing for attitude control, override torque/counter-control, AlwaysOn registration cleanup, and restoration behavior. The optional RCS content mod remains separate and is not a PluginHub dependency. Note: the local machine did not have Python available to rerun test.py; the descriptor itself was reviewed and the source net48 build passed. |
|
Follow-up validation: Python 3.13.15 is now installed locally and |
|
Good day Owen / StarCpt,
Subject: Realistic ACS — review feedback addressed
Thank you for the detailed review. I have updated Realistic ACS and
repinned the PluginHub descriptor to the revised public source commit.
The following changes address the review findings:
-
Force-plan safety: ACS now applies simulated torque only from a
near-pure virtual force couple. Plans with a normalized translation-force
residual above 2% are withheld, preventing unbalanced layouts from
receiving torque while their implied translation is discarded.
-
Hydrogen override restoration: the plugin now records each hydrogen RCS
block’s original thrust-override value before changing it and restores that
value on ACS disarm, controlled-grid change/loss, configuration exit, and
plugin unload.
-
Performance: actuator membership is cached and refreshed at a bounded
cadence; allocation results are reused unless control state changes; the
vanilla allocation iteration count is capped; and RCS visual gimbal
candidates are precomputed rather than exhaustively recalculated every
frame.
-
Logging: diagnostics now use a buffered, capped, rotating log beneath
Space Engineers’ UserData directory rather than writing beside the plugin
DLL. The verbose periodic per-thruster/grid dump and temporary test
diagnostics have been removed from active runtime behavior.
-
Dependencies: unused Harmony and Mono.Cecil package references were
removed.
-
Licensing and assets: a root MIT LICENSE now identifies me, KLoverTony,
as copyright holder. An ASSET_PROVENANCE.md document records that the
included custom .mwm models and .dds texture are original project assets
and covered by the repository license.
-
Documentation: the repository and plugin READMEs now document the
virtual-thruster model, residual safety behavior, manual override torque,
inertial-dampener interaction, and AlwaysOn cockpit configuration.
Additional tested functionality added during development includes
proportional torque from manually overridden thrusters, automatic virtual
counter-torque when rotational arrest is requested, and opt-in AlwaysOn
registration for player-configured grids using the vanilla Main Cockpit
designation. Arbitrary/NPC grids are not scanned or managed.
Verification completed:
- Local net48 build succeeds.
- In-game testing covered attitude control, dampener-coupled override
torque, available/insufficient counter-authority behavior, AlwaysOn
registration, and restoration after unregistering.
- PluginHub validation was rerun with Python 3.13.15 and reports: All
files validated.
The PluginHub PR now pins the revised source commit:
d746fc45df274ec39b2ad05e65e32e1c5bcfdd42
The plugin remains explicitly client-side and not multiplayer-safe; a
multiplayer version would require server-authoritative implementation and
synchronization.
Please let me know if you observe any other concerns and I will address
them promptly. Thanks again!
…On Fri, Sep 11, 2026 at 8:07 AM Owen de Bree ***@***.***> wrote:
*OwendB1* left a comment (StarCpt/PluginHub#191)
<#191 (comment)>
Reviewed PluginHub PR head 391886d and
KLoverTony/realistic-acs at pinned commit
09a902b7c57de24d1bac6801c82df25eca3116bf. This is a first registration,
so I audited all 28 tracked repository paths at the pin rather than using a
commit diff.
*Summary:* the manifest validator and Pulsar-real source compilation
pass, the pin is the public repository's current main, and I found no
network, process-launch, dynamic-code, committed executable, or concrete
server-authority-bypass surface. Two physics/lifecycle issues should be
addressed before listing: the allocators can inject torque from a force
plan whose net force is discarded, and hydrogen-thruster overrides are not
restored on every exit path. Performance, logging, unused build
dependencies, and repository-level asset licensing are lower-severity
follow-ups.
Manifest
python3 test.py Plugins at the hub PR head reports All files validated.
The GUID <Id>, <RepoId>KLoverTony/realistic-acs</RepoId>, author,
NETFramework runtime, and commit pin are internally consistent.
SourceDirectories limits Pulsar to acs-client-plugin/ClientPlugin, which
contains 2,390 lines across three .cs files. The solution, build/deploy
scripts, proposal, and optional companion mod are not compiled or loaded by
the hub.
The manifest declares no NuGet packages, dependencies, alternate versions,
or assets. That matches the loader-real compilation: the selected source
needs only Pulsar's game dependency closure. The repository's own
RealisticAcs.xml is a non-authoritative local-development copy and was
not treated as the registry pin.
Repository and pin provenance
The target repository is public, owned by the PR author, and the full pin
resolves exactly. It is the current tip of the default main branch:
comparing the pin to main is identical, with no newer source drift. There
are no tags or releases.
All 28 tracked paths were accounted for. Every text, source, XML, project,
configuration, script, and documentation file was read. The six .mwm
files have Space Engineers model headers/string tables, and the 128×128
.DDS has a valid DDS header; none is in the plugin's selected source or
asset closure. The tree has no DLL/EXE/native library, archive, submodule,
symlink, or Git LFS pointer.
Security
- No network API or destination exists in compiled scope; no
credentials, Steam IDs, machine identifiers, or local content are
transmitted.
- No process or shell invocation, runtime assembly loading,
Roslyn/Emit path, crypto/base64/compression-to-execute path, or encoded
executable payload exists.
- The one reflective invocation calls the fixed private
MyEntity.InstantiateSubpart member with plugin-created model data;
neither the type nor member comes from external input.
- The only file write is realistic-acs.log beside the compiled plugin
assembly. That location and write pattern are a finding below, but there is
no arbitrary path input.
- There are no Harmony patches or AppDomain-wide hooks. The game chat
event is removed in Dispose; angular damping records and restores its
original value.
- Direct Havok torque and angular-damping changes are local. I found
no path by which a server accepts or rebroadcasts unauthorized state,
exposes hidden server data, or otherwise loses authority. Client-only
operation and the repository's multiplayer disclaimer are therefore not
findings by themselves.
Project-reference audit: all 48 <Reference> hint paths resolve to the
installed Space Engineers Bin64, with matching declared assembly
names/versions and Private=False; there are no project, framework, COM,
or analyzer references and no unresolved imported reference file. DirectShowLib
2.1.0.1599 (SHA-256
8402f26b3ca1cc4aebab94386b19c4201b463d9d5dc8510a1f8e13dd28efd45c) is an
installed game binary referenced by VRage.Platform.Windows. EmptyKeys.UserInterface
3.2.0.0 (c6d36cdfb422aa575df6d5820eb87c8547a71c57cdf851fbedcbe233a6e35f12)
and .Core 3.2.0.0 (
f0699f6cc3fe04f34254fae5162aa789617f5d4da783c1393b1edfae11528201) are
installed game UI binaries referenced by Keen assemblies. The selected
plugin source directly uses none of those three.
ClientPlugin.csproj also declares Lib.Harmony 2.4.2 and Mono.Cecil 0.11.6.
Neither is used by selected source or consumed by PluginHub's source
compiler; this is covered as a low-severity build-provenance finding below.
From-source build
I reproduced the registry path with Pulsar's RoslynCompiler at
8aa6a4be6adf0d5975637cb63356b48706ebb623, compiling exactly the three
manifest-selected source files with TRACE, NETFRAMEWORK, and PULSAR
against the game dependency closure: compilation succeeded and returned no
failure diagnostics. A normal pinned-tree net10.0 project build also
succeeds with 0 errors; its only warning says the optional local Pulsar
deployment folder is absent.
Game-member behavior was checked against Space Engineers 1.210.014
decompiled source. In particular, MyThrust.ThrustOverridePercentage is a Sync<float,
SyncDirection.BothWays> value and is serialized into the thrust object
builder, which makes incomplete restoration persistent rather than merely
cosmetic.
I did not run the plugin in-game or execute Init; runtime physics
behavior, large-grid frame cost, model animation, and
unload/world-transition restoration remain manual tests.
Findings 1. High: force residual is computed but discarded while its
torque is applied
Both live paths calculate a physical wrench from candidate forces: the RCS
allocator accumulates TranslationResidual with AchievedTorque (Plugin.cs
lines 894–907
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L894-L907>),
and the ordinary-thruster allocator does the same (lines 1883–1893
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L1883-L1893>).
The live controller checks only torque alignment and injects
AchievedTorque; it never checks or applies the associated net force (lines
365–393
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L365-L393>
).
On an unbalanced or authority-limited layout, this permits rotational
authority from a force plan that is not a realizable pure couple: the ship
receives the torque while the plan's translation vanishes. Please define an
absolute/normalized force-residual tolerance and withhold or scale
allocations that exceed it, or apply a physically matching full wrench. The
first option preserves the plugin's attitude-only architecture but reduces
authority on poor layouts; the second changes translation and needs broader
flight-control testing.
2. Medium: hydrogen override ownership is not restored on grid loss or
unload
UpdateHydrogenRcsFuelDemand writes ThrustOverridePercentage every visual
update (Plugin.cs lines 604–615
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L604-L615>).
When the controlled grid disappears, the code clears only dictionaries (lines
445–454
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L445-L454>);
Dispose() restores the experimental pulse and angular damping but does
not restore RCS thrusters (lines 131–150
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L131-L150>).
Because this game property is synchronized and saved, the last duty-cycle
value can outlive the plugin or grid-control session.
Track each touched thruster's original override and restore it on grid
switch, world loss, disarm/setup failure, and plugin unload. Preserve
pre-existing user values rather than assuming zero.
3. Medium: active control performs several grid scans and bounded
brute-force solves per simulation frame
Every Update() calls visuals, attitude control, and rotational dampening (Plugin.cs
lines 153–162
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L153-L162>).
Visuals scan every grid block each frame; active attitude control scans
again for RCS pods and ordinary thrusters. The ordinary allocator allows up
to 800 full coordinate-descent sweeps over all thrusters (lines 1896–1940
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L1896-L1940>).
Each active pod's visual pose also tests 73 azimuth × 25 elevation
samples—1,825 transforms/dot products per pod per frame (lines 1045–1083
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L1045-L1083>
).
Cache grid membership and actuator geometry behind topology/working-state
changes, solve at a bounded cadence or only when inputs/state materially
change, and replace the visual grid search with an analytic two-axis
inverse or cached direction table. Please profile a large grid with many
thrusters and pods before release.
4. Low: synchronous unbounded diagnostics use the loader-cache directory
WriteLifecycleLog resolves the executing assembly directory and calls
File.AppendAllText for every message (Plugin.cs lines 2344–2355
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/Plugin.cs#L2344-L2355>).
The five-second diagnostic walks the grid and emits per-thruster records,
so a long session repeatedly opens an unbounded file on the simulation
thread. It also puts persistent user data beside Pulsar's compiled output
instead of the game's configured user-data root.
Use a plugin-owned directory beneath MyFileSystem.UserDataPath,
buffer/rate-limit verbose diagnostics, and rotate or cap the file. Keep
game-object reads on the simulation thread if writes are queued.
5. Low: two unused NuGet packages remain in the IDE build graph
ClientPlugin.csproj lines 239–248
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/ClientPlugin/ClientPlugin.csproj#L239-L248>
restore Lib.Harmony and Mono.Cecil, but no selected source uses either
and the hub manifest declares neither. Pulsar does not consume these
project package declarations when compiling registry source. Remove both
until compiled code needs them; this reduces local restore trust and keeps
the project aligned with what users actually compile.
6. Low: companion-mod asset licensing/provenance is not explicit at
repository level
GitHub detects no repository-level license. The only license file is
acs-client-plugin/LICENSE
<https://github.com/KLoverTony/realistic-acs/blob/09a902b7c57de24d1bac6801c82df25eca3116bf/acs-client-plugin/LICENSE>,
whose copyright holder is blank. The separate companion mod contains six
committed models and a texture outside that directory, with no explicit
authorship/source or license covering those assets.
Add a root license that states its holder and scope, and document the
origin/license of the .mwm and .DDS assets. This does not place
executable code in Pulsar's closure, but it removes ambiguity for
redistribution through the linked companion mod.
Verification gaps
- No Windows/Pulsar in-game Init or unload/world-switch test was run.
- Physics correctness and the force-residual behavior need an
instrumented asymmetric-grid test.
- Large-grid CPU/frame cost needs profiling under active attitude
input and rotational dampening.
- The companion model/texture formats were inspected, but their
external authorship provenance could not be independently verified from
repository contents.
Human manual security review and approval still required.
—
Reply to this email directly, view it on GitHub
<#191?email_source=notifications&email_token=BR4XXFZL4HFTCOLHGXMCGCD5OPTJTA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRTGQYTQNBXGQ32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-5634184747>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BR4XXF5VDVAVI3LIHWP5JVT5OPTJTAVCNFSNUABFKJSXA33TNF2G64TZHM2TCMRQGQ2DMMRSHNEXG43VMU5TKNBRGQ3DIOJXG4ZKC5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BR4XXFZVHKPFNDGNUGDRSX35OPTJTA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRTGQYTQNBXGQ32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/BR4XXF7LIDKWV5BLNUZNICT5OPTJTA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRTGQYTQNBXGQ32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
|
Re-reviewed PluginHub PR head Summary: five prior findings are fixed. The performance finding is partially fixed, but the new Prior-finding disposition
Rechecked gates affected by the deltaThe exact hub head passes The changed project file removes both package references. Its 48 game Findings1. High: master disarm still applies manual-override torque
This contradicts the documented master enable/disable behavior and leaves physics mutation active after an explicit off command. Add a distinct master-enabled state and gate every ACS physics or block-property write with it, including controlled-grid and 2. High: hydrogen consumption follows visuals rather than applied RCS torqueWithout pilot rotation input, the visual path clears Hydrogen pods can therefore provide dampening/counter-torque at zero proportional fuel demand, or consume fuel for withheld torque. Drive demand from the accepted RCS allocations actually applied, aggregate simultaneous paths once per frame, and clear it only when no accepted hydrogen allocation remains. Otherwise exclude hydrogen authority from paths that cannot account for its demand. 3. Medium: ordinary grids incur a full-grid
|
|
Good day Owen,
Thank you for the re-review. I have incorporated the remaining findings and
simplified the release scope.
The released Pulsar plugin is now focused on vanilla-thruster ACS only:
- /acs disarm is a true master disable. It stops all ACS simulation
writes, including manual-override torque, inertial changes, and AlwaysOn
processing, until /acs arm.
- AlwaysOn registration failures are throttled to the slow validation
cadence, failure logging occurs only when the result changes, and
[RealisticACS] / AlwaysOn=true is parsed as an exact setting.
- Vanilla virtual-thruster torque now uses a progressive residual rule:
full authority through a 2% translation residual, smoothly tapering to zero
at 10%. This retains a bounded safety model while avoiding an abrupt
control/no-control boundary.
- The experimental custom ion/hydrogen RCS blocks, gimbal visuals, cone
allocator, and hydrogen-demand path have been removed from the released
plugin runtime. The companion mod and assets are retained under an
explicitly marked experimental/ directory for future redesign, but are
not installed, loaded, documented as supported, or required by the release.
The previous corrections remain in place:
- buffered, rotated logs under the game user-data location;
- removed unused Harmony and Mono.Cecil dependencies;
- MIT license and model/texture provenance;
- cached and bounded allocation work;
- local-only/multiplayer-unsuitable scope documented clearly.
The revised plugin builds successfully for net48 with zero errors. We will
complete the focused manual verification pass, then push the final source
commit and update the PluginHub descriptor pin accordingly.
Best,
KLoverTony
…On Sun, Sep 13, 2026 at 11:22 AM OwendB ***@***.***> wrote:
*OwendB1* left a comment (StarCpt/PluginHub#191)
<#191 (comment)>
Re-reviewed PluginHub PR head fead233.
The manifest is absent from the hub base, but the same PR previously pinned
KLoverTony/realistic-acs at 09a902b7c57de24d1bac6801c82df25eca3116bf in
hub commit 391886d; the current pin is
d746fc45df274ec39b2ad05e65e32e1c5bcfdd42. I therefore reviewed the exact
direct source diff
09a902b7c57de24d1bac6801c82df25eca3116bf..d746fc45df274ec39b2ad05e65e32e1c5bcfdd42:
6 changed paths, 627 insertions, and 85 deletions.
*Summary:* five prior findings are fixed. The performance finding is
partially fixed, but the new AlwaysOn path adds a per-frame grid scan/log
on ordinary unconfigured grids. Two new runtime correctness issues remain:
master disarm does not stop manual-override torque, and hydrogen demand is
disconnected from some accepted RCS torque allocations.
Prior-finding disposition
1. *Force-residual gate — fixed.* Attitude and rotational-dampening
allocations now require torque alignment and a translation residual at or
below 2% before torque is applied (Plugin.cs lines 402–410
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L402-L410>,
1325–1342
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1325-L1342>
).
2. *Hydrogen override restoration — fixed.* Original percentages are
tracked and restored on disarm, grid switch/loss, and unload (Plugin.cs
lines 678–717
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L678-L717>
).
3. *Hot-path performance — partially fixed.* Actuator membership,
solver results, and pose candidates are now cached and solve cadence is
bounded; finding 3 below covers the remaining regression.
4. *Diagnostic persistence — fixed.* Logging is buffered, stored under
MyFileSystem.UserDataPath, and rotated at 1 MiB (Plugin.cs lines
2777–2847
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L2777-L2847>
).
5. *Unused NuGet dependencies — fixed.* Harmony and Mono.Cecil were
removed.
6. *Asset licensing/provenance — fixed.* The root MIT license names
KLoverTony and ASSET_PROVENANCE.md covers the companion assets.
Rechecked gates affected by the delta
The exact hub head passes python3 test.py Plugins. Pulsar RoslynCompiler
at 8aa6a4be6adf0d5975637cb63356b48706ebb623 compiles the three selected
files with TRACE, NETFRAMEWORK, and PULSAR with zero diagnostics; the
pinned net10.0 project build succeeds with 0 errors and only the absent
optional deployment-folder warning.
The changed project file removes both package references. Its 48 game
Bin64 references remain Private=False and resolve locally; DirectShowLib
and the two EmptyKeys references remain unused by selected plugin source
and outside the PluginHub loader closure. The six-file delta adds no
executable/native binary or hub dependency. Its new sensitive surfaces are
limited to the reviewed user-data log, fixed-member subpart reflection,
Custom Data read, synchronized hydrogen override, angular-damping changes,
and direct local torque; no network, process-launch, credential,
dynamic-code, or concrete server-authority-bypass path was added.
Findings 1. High: master disarm still applies manual-override torque
/acs disarm changes attitude and inertia state but sets no master-off
state (Plugin.cs lines 260–266
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L260-L266>).
Update() continues calling UpdateManualOverrideTorque for the controlled
grid and every unattended registered grid (lines 185–197
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L185-L197>,
1387–1419
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1387-L1419>);
that method has no arm/master guard and still reaches ApplyTorque (lines
1521–1562
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1521-L1562>
).
This contradicts the documented master enable/disable behavior and leaves
physics mutation active after an explicit off command. Add a distinct
master-enabled state and gate every ACS physics or block-property write
with it, including controlled-grid and AlwaysOn manual-override
processing. Keep the separate attitude and inertia settings beneath that
master state.
2. High: hydrogen consumption follows visuals rather than applied RCS
torque
Without pilot rotation input, the visual path clears
rcsVisualAllocatedForces, and hydrogen demand is then derived only from
that dictionary (Plugin.cs lines 599–602
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L599-L602>,
678–695
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L678-L695>).
Rotational dampening can subsequently apply an independent RCS allocation (lines
1301–1342
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1301-L1342>);
manual-override counter-control can do likewise (lines 1564–1604
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1564-L1604>).
Conversely, visual demand can be written before the live controller rejects
that plan on residual/alignment grounds.
Hydrogen pods can therefore provide dampening/counter-torque at zero
proportional fuel demand, or consume fuel for withheld torque. Drive demand
from the accepted RCS allocations actually applied, aggregate simultaneous
paths once per frame, and clear it only when no accepted hydrogen
allocation remains. Otherwise exclude hydrogen authority from paths that
cannot account for its demand.
3. Medium: ordinary grids incur a full-grid AlwaysOn scan and duplicate
log every frame
Every update calls RegisterAlwaysOnGridIfConfigured; until registration
succeeds, it runs TryGetAlwaysOnCockpit and logs every failure (Plugin.cs
lines 185–192
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L185-L192>,
1365–1374
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1365-L1374>).
The check allocates a cockpit list and scans every block before the normal
unconfigured case fails (lines 1472–1516
<https://github.com/KLoverTony/realistic-acs/blob/d746fc45df274ec39b2ad05e65e32e1c5bcfdd42/acs-client-plugin/ClientPlugin/Plugin.cs#L1472-L1516>
).
Cache or throttle failed registration checks to the slow-validation
cadence, and log only when the result changes. Parse the documented
[RealisticACS]/AlwaysOn setting as an exact key while doing so; the
current substring check also accepts comments, longer keys, and unrelated
sections.
—
Reply to this email directly, view it on GitHub
<#191?email_source=notifications&email_token=BR4XXF72KOZTZLGHVJDEY235O23S5A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRVGQYTMNRWGEYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-5654166610>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BR4XXF76DSXD24KZMQH6J535O23S5AVCNFSNUABFKJSXA33TNF2G64TZHM2TCMRQGQ2DMMRSHNEXG43VMU5TKNBRGQ3DIOJXG4ZKC5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BR4XXF4UWDLSTXVSREGJIO35O23S5A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRVGQYTMNRWGEYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/BR4XXF4Y7E6GBRKNGWOBNND5O23S5A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKNRVGQYTMNRWGEYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
|
Merging this first version. Thanks! |
Adds the Realistic ACS client plugin descriptor.
09a902b7c57de24d1bac6801c82df25eca3116bf