Probability Director integration
Review draft. This source page has not completed website editorial and release-specific verification.
InventoryDirectorProbabilityBridge is optional. Inventory core remains independent of Probability Director, and Probability Director remains independent of Inventory. Enable the bridge only when the project wants Probability-owned item-pool decisions.
The bridge maps eligible pool entries to generic Probability candidates. A stable entry key identifies the authored pool position. Weight becomes the candidate’s neutral base weight. SelectionRank is an ordinal preference tier used only when a signed bias is supplied. Inventory does not pass its pool structs to Probability and does not calculate rank attenuation.
Sequential and keyed calls
Section titled “Sequential and keyed calls”Sequential selection uses a registered FProbabilityStreamId and advances the Probability-owned stream. Keyed selection requires the caller to provide both a registered FProbabilityStreamId and a valid FProbabilityDecisionKey. The bridge does not generate keys, own FRandomStream, or persist Probability internals.
The submitted Blueprint entry points are SelectPoolEntrySequential(Pool, StreamId, SignedBiasPercentagePoints) and SelectPoolEntryKeyed(Pool, StreamId, DecisionKey, SignedBiasPercentagePoints) on UInventoryDirectorProbabilityBridgeSubsystem. Native overloads also accept a resolved FProbabilityBiasBreakdown.
The Probability subsystem owns stream persistence and restoration. Sequential save/reload behavior follows the configured Probability stream policy. Keyed behavior follows Probability’s stable stream/key contract and is suitable for anti-save-scum workflows where the project supplies stable campaign and decision identities. The bridge does not create or own an FRandomStream for this path.
Bias and rank
Section titled “Bias and rank”The bridge can receive a direct signed bias or a resolved FProbabilityBiasBreakdown. Source systems resolve their own values and may preserve source Gameplay Tags in the breakdown; Probability does not look up Character State, Relationship, or other Directors. Bias is clamped by the Probability contract to [-100,+100].
At bias zero, Weight alone determines selection. Positive bias favors higher ordinal SelectionRank; negative bias favors lower rank. The generic Probability curve uses geometric tier attenuation. At +100 only the highest eligible tier survives, and at -100 only the lowest eligible tier survives. Multiple candidates at the surviving tier retain their relative base weights.
SelectionRank is ordinal: only ordering and ties matter. Ranks 1,2,3 behave like 10,20,30 when the order and ties match. Rank spacing never changes the preference strength. Direct signed bias is useful when the caller has already resolved one value; a breakdown is useful when several systems contribute independently. Probability composes contributions but does not resolve their source values.
Failure behavior
Section titled “Failure behavior”The bridge returns structured status for invalid pools, no eligible entries, missing Probability subsystems or streams, invalid keys, Probability rejection, and unresolved selected candidates. It never silently switches to the legacy caller-owned FRandomStream path.
The legacy V1 pool APIs remain available and continue to accept a caller-owned FRandomStream. That path is separate from the optional Probability bridge and has no Probability persistence semantics.
If Probability rejects a request, the bridge reports the failure. It does not silently retry using Inventory’s legacy random path.
Packaging and dependencies
Section titled “Packaging and dependencies”The core InventoryDirector plugin packages without Probability Director. The optional bridge is validated in a host that contains InventoryDirector, ProbabilityDirector, and InventoryDirectorProbabilityBridge together; an isolated bridge-only BuildPlugin invocation is unsupported because Unreal’s single-plugin packager does not supply its required external plugins. The bridge’s supported deployment is therefore the dependency-aware host topology.