Skip to content

Loadout Optimizer: tune exotics without requiring a pinned exotic#11862

Open
delphiactual wants to merge 2 commits into
lo-balanced-core-splitfrom
lo-exotic-tuning-tail
Open

Loadout Optimizer: tune exotics without requiring a pinned exotic#11862
delphiactual wants to merge 2 commits into
lo-balanced-core-splitfrom
lo-exotic-tuning-tail

Conversation

@delphiactual

@delphiactual delphiactual commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

11860:
image
11862:
image

Exotic tuning variants were only generated when the user pinned an exotic, because expanding each tier 5 exotic into 5-6 bucket items grew the search 13.8x. Instead of expanding exotics at all, attach their tuning variants to a single base item and resolve the choice in the per-set tail: a valid set has at most one exotic, so this costs at most 6 tail evaluations per candidate set instead of multiplying the enumeration.

A per-set pre-gate keeps the tail cheap in the steady state: stat-range minimums are updated exactly using per-stat minimum deltas across variants, and the variant loop only runs when some variant could improve the displayed ranges or beat the heap boundary (bounded by the best net gain any variant offers). Pinned and any-exotic searches get faster since their buckets are no longer multiplied by variant count.

Equivalence tests pin tail resolution against the old bucket expansion, both below tracker capacity (identical output) and with boundary pruning active (identical retained totals, ranges, and candidate counts).

Changelog: The Loadout Optimizer now applies tuning mods to Tier 5 exotics even when no exotic is pinned.

Depends on: #11860

Exotic tuning variants were only generated when the user pinned an exotic, because expanding each tier 5 exotic into 5-6 bucket items grew the search 13.8x. Instead of expanding exotics at all, attach their tuning variants to a single base item and resolve the choice in the per-set tail: a valid set has at most one exotic, so this costs at most 6 tail evaluations per candidate set instead of multiplying the enumeration.

A per-set pre-gate keeps the tail cheap in the steady state: stat-range minimums are updated exactly using per-stat minimum deltas across variants, and the variant loop only runs when some variant could improve the displayed ranges or beat the heap boundary (bounded by the best net gain any variant offers). Pinned and any-exotic searches get faster since their buckets are no longer multiplied by variant count.

Equivalence tests pin tail resolution against the old bucket expansion, both below tracker capacity (identical output) and with boundary pruning active (identical retained totals, ranges, and candidate counts).

Changelog: The Loadout Optimizer now applies tuning mods to Tier 5 exotics even when no exotic is pinned.
The note told users to pin an exotic (or Any Exotic) to get tuning mods considered. Tuning now applies without a pinned exotic, so the note is obsolete.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant