← back to graph

WynnSolver

WynnSolver is a build optimizer for Wynncraft, built on top of the WynnBuilder codebase. You give it a weapon, an ability tree, and a combo you want to play, and it searches the rest of your equipment slots for the build that hits hardest (or whatever else you're optimizing for) without breaking any of the stat constraints you set.

WynnSolver result panel

Why this is hard

A Wynncraft build has eight equipment slots, each pulling from a large pool of items, with skill-point requirements, set bonuses, and stat interactions tangled together across all of them. The raw search space comes out to roughly 10²⁰ combinations - if you tried to just enumerate every option, it'd take more than a hundred millennia. WynnSolver gives you ranked, real solutions in a few seconds.

Built on WynnBuilder as a calculation engine

WynnBuilder is the go-to class-building calculator for Wynncraft. You feed it items and abilities, and it works out the damage, spell costs, skill points, and everything downstream of that. Its internals are data-driven enough that every stat can be traced through a single evaluation pipeline.

WynnSolver leans on that in two ways: it reuses the same stat math (so you know the numbers match what WynnBuilder would show you), and it adds the two things WynnBuilder doesn't do - a proper closed-loop combo simulator, and a search that actually scales.

Two core innovations

1. Combo damage and mana in a closed loop

Combo entry example

WynnBuilder evaluates each ability on its own. But in actual gameplay, your DPS depends on how you chain spells together: which ability buffs the next, how much mana you regenerate mid-combo, recast penalties, Transcendence reductions, Blood Pact's HP-for-mana mechanic, looped sub-sequences, all of it. So WynnSolver adds a full combo simulator:

  • Sequence-aware damage, with per-ability breakdown tooltips
  • Mana and HP simulation across the whole combo - tells you whether a combo is actually sustainable, and how many times a looped section can repeat before you run dry
  • Dynamic per-ability buffs (Blood Pact %, Corruption) applied automatically
  • Loop brackets, recast penalties, "add flat mana" rows, and toggleable damage/mana exclusions per row
  • Apples-to-apples comparisons of different classes' damage output

2. Heuristic search - full solutions in seconds

The search isn't brute-force - it's an ordered traversal designed so the best builds show up first, and most candidates never get fully evaluated. Roughly:

  1. Filter item pools - by level range, skill-point direction, blacklists, locked items, set restrictions.
  2. Dominance pruning - drop items that are strictly worse than some other item on every stat that matters (and just as easy to equip). This usually cuts each pool by 20-40%.
  3. Sensitivity-based item priority - instead of hand-tuned weights, the solver builds a baseline build, perturbs each of ~80 stats by a pool-calibrated delta, and measures how much the actual scoring target moves. Items get scored by how strongly their stats actually contribute. Constraints, mana sustainability, and spell-cost reductions get extra weight when they're tight.
  4. Priority-ordered enumeration - pools get sorted by that score, which turns the search into a level-based tree walk where level L visits all combinations whose summed rank-offsets equal L. Level 0 is the single globally best-ranked combination, so the very first build you evaluate is the heuristic optimum.
  5. Multithreaded work-stealing - the search space is partitioned across web workers at 4× the worker count, so idle cores can pick up partitions that slower ones haven't gotten to yet. The top 5 candidates merge back to the main thread every five seconds.
  6. Search-time feasibility gates - a cheap O(1) precheck against additive constraints, a mid-tree skill-point feasibility check using suffix-sum upper bounds, and only after that does the expensive combo-damage evaluation run. Most candidates get tossed before they ever reach the costly stage.

End result: configurations that would be mathematically impossible to enumerate become interactive. You type, click solve, and a few seconds later you have ranked builds with the top one loaded directly into WynnBuilder to poke at.

Engineering notes

  • Pure JS, runs entirely in the browser (no backend), parallelized via Web Workers.
  • Built around incremental statMap updates and pre-allocated scratch maps to keep per-leaf GC churn near zero.