Skip to content

Xordas/KSPStoreForward

Repository files navigation

KSP Store & Forward

KSP Store & Forward fixes a limitation in KSP 1's stock CommNet pathfinder. A qualified relay vessel can receive a link through a relay antenna, process it onboard, and send the next hop through a direct antenna on the same vessel.

For example:

Probe 1 transmitter -> Probe 2 relay antenna -> Probe 2 direct antenna -> KSC

The incoming hop still has to be in range of Probe 2's real relay antenna. The mod does not globally turn direct antennas into relays.

Requirements

Installation

Copy GameData/KSPStoreForward into the KSP installation's GameData folder. The final DLL should be at:

Kerbal Space Program/GameData/KSPStoreForward/Plugins/KSPStoreForward.dll

Do not copy the repository's outer GameData directory into KSP as another nested folder.

Default gate

Store-and-forward routing is available when the intermediate vessel has:

  1. an operational relay antenna;
  2. an operational direct antenna; and
  3. either an active engineer aboard or an enabled Store-and-Forward Processor.

The processor is automatically added to probe cores that meet either of these conditions:

  • The core is in the advUnmanned, largeUnmanned, or automation technology node.
  • The core has every stock SAS mode (SASServiceLevel = 3).

The check identifies a probe core by an uncrewed ModuleCommand (minimumCrew = 0). This describes the part, not the vessel. Crew can be aboard, and a capable probe core still satisfies the gate. The processor can be toggled in the part action window.

The difficulty-options page has a Store & Forward section where the feature, engineer gate, minimum engineer level, processor gate, and two-antenna requirement can be changed per save.

By default, a nearby vessel that has both store-and-forward antenna types cannot act as a stock Probe Control Point unless it also satisfies the processor-or-engineer gate. This prevents a crewed guidance unit from appearing as a valid local endpoint after its store-and-forward processor is disabled. The behavior can be restored to stock with the Gate nearby vessel control points difficulty option.

Detailed CommNet tooltip

Hovering over the stock CommNet signal indicator shows an expanded path. Qualified intermediate vessels appear as two stages with their actual strongest operational antenna part names:

COMMNET PATH
Current Vessel                                      100%
Probe 2 (relay: CB-10 Relay Antenna)                 67%
Probe 2 (direct: RB-10 Direct Antenna)              100%
Kerbal Space Center                                  40%

The relay and network endpoint percentages are stock per-link strengths. The direct row is the internal store-and-forward handoff and is therefore shown as 100%.

Mod compatibility

The routing code discovers antennas through KSP's ICommAntenna interface and uses CommNet's already-computed asymmetric link strengths. This preserves the active range model, range curves, antenna combining, occlusion, plasma effects, and signal modifiers, and allows normal antenna part packs to work without hard-coded part names.

Probe-core mods using the stock ModuleCommand and ModuleSAS fields are detected by the same rules. Other probe-core mods can opt in from a ModuleManager patch by adding:

MODULE
{
    name = ModuleStoreForwardProcessor
}

Mods that completely replace stock CommNet pathfinding, such as RemoteTech or RealAntennas, are outside the supported path. The plugin leaves their antenna parts alone, but their replacement network decides routing.

If another UI mod replaces the stock signal-strength tooltip, store-and-forward routing remains active even if the expanded tooltip cannot be installed.

Testing

The current build has been tested on KSP 1.12.5. The test route used an RA-X3 Phased Relay Antenna from Near Future Exploration and a Communotron HG-61 from ReStock+.

The following cases have been tested:

  • Store-and-forward routing with the third-party antennas loaded and unloaded.
  • Disabling the processor removes the route, and enabling it restores the route.
  • Retracting either antenna invalidates the route.
  • An engineer enables an otherwise incapable core, while a pilot or scientist does not. The capability is removed when the engineer goes on EVA.
  • A capable core continues to work while crew are aboard.
  • No-connection and non-KSC tooltip paths complete without exceptions.
  • Saving, reloading, time warp, and switching away from the relay vessel.
  • Ten minutes in a save with roughly 25 vessels while repeatedly opening the CommNet tooltip. No KSPStoreForward warnings or recurring frame spikes were observed.
  • Loading a 30-vessel save, visiting the Tracking Station, returning to the Space Center, and saving. No exceptions or warnings from KSPStoreForward were logged.

The detailed release test record is in TESTING.md.

Building

The SDK project targets .NET Framework 4.7.2 and references the local KSP installation. Override the install path when needed:

dotnet build Source/KSPStoreForward/KSPStoreForward.csproj -c Release -p:KspRoot="D:\Games\Kerbal Space Program"

Copy the resulting KSPStoreForward.dll from Source/KSPStoreForward/bin/Release/net472 to GameData/KSPStoreForward/Plugins.

License

MIT

About

Store-and-forward routing for KSP 1.12.5 CommNet

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages