DDO Loadout Optimizer: Your best-in-slot gear, *proven by math*

ShawnVW

Well-known member
It's not clear how to "clear" the form for a new character. When I go back to the first screen and click "Get Started", sometime the character I just worked on is already in the fields. Refreshing the browser on the first page does reset the second page, but it would be nice to have a reset button.
 

ShawnVW

Well-known member
I'm a big fan of "Only What I Own" mode. I asked earlier for ways for the tool to exclude augments that I *don't* own, since it recommends them anyway.

What I should have asked is: do you think this is possible? Someday?

If there are coding issues that makes it just not worth the effort, I'll try to work around it.
 

Sook

Well-known member

UPDATE!​

Priorities are a bit cleaner (still needs some work)​

The Priorities screen was getting a little busy, so I simplified it.
  • By default, each stat now just shows the stat name and the buttons to move it up or down.
  • Min, Max, and Already Have (explained later in this post...) now live under an Advanced toggle. Most people won’t need them for every stat, so they stay out of the way until you do.
  • If you leave Min and Max blank, that’s the normal setting. The optimizer simply tries to get you as much of that stat as it can.
  • The explanation for Min and Max now sits right next to the fields instead of being buried at the bottom of the page.
  • If you set something under Advanced, the collapsed row shows that settings are applied so you don’t forget about a Min or declared bonus further down the list.
  • Already Have (explained in the next section of this post) now explains exactly what it’s for: Trances, enhancements, Epic Destinies, past lives, filigrees, ship buffs, and other bonuses coming from your character rather than your gear (so you dont waist a gear slot trying to max it out).

Accounting for Trances, enhancements, and other non-gear bonuses​

This one is worth explaining because it can change the gear the optimizer recommends.

The optimizer knows your gear. It does not automatically know what your Trance, enhancement trees, Epic Destinies, past lives, filigrees, ship buffs, or other character bonuses are already giving you.

That matters because DDO doesn’t stack two bonuses of the same named type. You just get the higher one.

So if your Trance already gives you Insight +7 something, a ring with Insight +5 something gives you absolutely nothing.

Without knowing about the Trance, though, the optimizer sees that +5 and thinks it found an upgrade. It may happily burn a gear slot on something that does nothing for you in game.

What you’ll see in the results​

Declared bonuses now show up in the results attribution, shared builds, and exported builds.

They’re specifically marked as declared, rather than coming from a piece of gear, so anyone looking at the build can tell which numbers came from the character and which came from equipment.

A couple of things to know:
  • The optimizer trusts what you enter. It doesn’t verify that your Trance really gives +7 or that you selected the right bonus type. That’s why these are labelled as declared everywhere they appear.
  • On/off effects don’t use Already Have. Things like Ghostly, Blurry, and immunities don’t have a numeric flat amount to declare. If you want the optimizer to require one, set Min = 1 instead.
One tradeoff with this update: moving Already Have behind Advanced makes the Priorities screen a bit cleaner, but it also makes the feature a little easier to miss if you don’t know it exists.

I decided the cleaner screen was worth it, but I’ll be watching how people use it. If players aren’t finding this feature, I may need to surface it differently.

Bundles got some love​

A few changes here to make them faster to use:
  • Added a new Warlock bundle with Power in Pact and Eldritch Blast Dice....following @Strimtom 's review on his stream...lol
  • Ability scores are now six separate buttons. Want Constitution? Click Constitution.
  • I reordered the Basic and Ranged bundles a bit based on what most builds are likely to care about first (subject to feedback). Basic now starts with Constitution, and Ranged starts with Ranged Power. If you have opinions on priorities, let me know.

Gem of Many Facets finally behaves like a real set piece​

The Gem has always been a weird one because it can count toward two sets...at any given configuration.

The optimizer understood most of that internally, but the results screen did a poor job explaining what was happening.

That’s fixed.
  • The Gem of Many Facets is now highlighted just like the other pieces of the set it’s completing.
  • It tells you the set the Gem is contributing toward.
  • When you inspect where a set bonus came from, the Gem now appears as an actual source.
  • The Set Bonuses tab now lists every item contributing to a set and the slot it occupies instead of just saying something like “3 pieces.”
  • Augment Sets now show the augment copies and which items they’re slotted into.
  • Shared and exported builds carry all of this information too.
So if your Gem completes a set, the results should now make it obvious how the set was actually built.

12 more stats you can rank​

I found another group of stats living on augments that the optimizer wasn’t exposing properly.

You can now rank:
  • Eldritch Blast Dice
  • Imbue Dice
  • Strikethrough
  • Sneak Attack Dice
  • Sneak Attack Damage
  • Missile Deflection
  • Rune Arm DCs
  • Spell Intensity
  • Damage to Helpless
  • Dodge Cap
  • MRR Cap
  • Max Dex Bonus
These existed in the data, but the optimizer wasn’t giving you a way to ask for them.

Fixes​

A few bugs went out with this update too:
  • Gem of Many Facets set tiers: a set completed by the Gem could show the wrong tier in the results. It might list enough pieces for the higher bonus while displaying the lower one. The display now matches what the solver actually used.
  • On/off stats still support Min/Max: things like Ghostly, Blurry, and immunities keep those controls. Setting Min = 1 still means “my build must have this.”
  • Deception, Smoke Screen, Protection from Evil, and Underwater Action have real numeric values, so they also keep their Min/Max controls.
  • Fixed a caching issue that could occasionally leave you looking at a strange half-old, half-new version of the site right after an update.
As always, if something looks wrong, especially with a strange stacking interaction, an obscure augment, or a weird set bonus, send it my way. Those edge cases have been some of the most useful finds so far.

===============================================

Lastly, I know many of you have asked for some quality of life adjustments, UI adjustments, etc... I'm not ignorning those. Report them as they come. My priority though has been on the engine (solver) itself. I'll get to these other requests in due course.

ENJOY!
 

Synalon

Choose another soldier
I messed around with it today, and it seems like the spell DC priorities are not being interpreted in an intuitive way.

With the following ordered priorities:

Nullification
Void Lore
Void Intensity
Necromancy
Enchantment
Illusion
Conjuration

It gave me a pretty good loudoat, but no sacred, quality or insightful mastery effects. However, both ring slots were empty. You can wear an Argonnessen Eye Band ring for +3 sacred DCs. This increases all DCs, including those listed, by 3. There was likewise no quality or insightful spell focus.

So, for school priorities, it looks as though it checks for the highest specific [school] bonuses and adds those for each specific school, while ignoring focus mastery effects. So, at least from my testing, it seems to be saying "What are the highest necromancy-specific effects we can get", where what the priority should be saying is "get the highest necromancy DC possible".

To get the maximum DC for any school requires the sacred, quality, insightful, artifact and etc. focus items. I.e., it needs to count 'sacred spell focus 3' as '+3 [necro], +3 [enchant], etc. for all schools. Then it would include these in its calculation for school priorities.

I also got suggested a conjuration +13 crafted (Demogorgon) item, and then a conjuration +8 augment in a different item that will not stack.
 

Sook

Well-known member
I messed around with it today, and it seems like the spell DC priorities are not being interpreted in an intuitive way.

With the following ordered priorities:

Nullification
Void Lore
Void Intensity
Necromancy
Enchantment
Illusion
Conjuration

It gave me a pretty good loudoat, but no sacred, quality or insightful mastery effects. However, both ring slots were empty. You can wear an Argonnessen Eye Band ring for +3 sacred DCs. This increases all DCs, including those listed, by 3. There was likewise no quality or insightful spell focus.

So, for school priorities, it looks as though it checks for the highest specific [school] bonuses and adds those for each specific school, while ignoring focus mastery effects. So, at least from my testing, it seems to be saying "What are the highest necromancy-specific effects we can get", where what the priority should be saying is "get the highest necromancy DC possible".

To get the maximum DC for any school requires the sacred, quality, insightful, artifact and etc. focus items. I.e., it needs to count 'sacred spell focus 3' as '+3 [necro], +3 [enchant], etc. for all schools. Then it would include these in its calculation for school priorities.

I also got suggested a conjuration +13 crafted (Demogorgon) item, and then a conjuration +8 augment in a different item that will not stack.

This is a great post. Thanks for this. Stuff like this helps me get right to it. I'll open up an issue for this given these details and get to work.
 

ShawnVW

Well-known member
I'm a big fan of "Only What I Own" mode. I asked earlier for ways for the tool to exclude augments that I *don't* own, since it recommends them anyway.

What I should have asked is: do you think this is possible? Someday?

If there are coding issues that makes it just not worth the effort, I'll try to work around it.

I just thought about this: How about a checkbox that says "Don't recommend augments" that would work in either mode? From my programming experience, I believe this would be simpler than anything else I asked for.
 

Sook

Well-known member

Spell DC fixes are live​

Spell-school priorities were undervaluing DC gear because universal Spell Focus Mastery effects were not being counted toward individual schools.

That is now fixed.
  • Universal Spell Focus now counts toward all seven schools. Sacred, Quality, Insightful, Equipment, and other bonus types stack correctly, while bonuses of the same type use only the highest value.
  • Big DC improvement at ML 34. Test results moved Necromancy 26 to 31, Enchantment 26 to 31, Illusion 25 to 31, and Conjuration 15 to 31.
  • Legendary Argonnessen Eye Band is now valued correctly. Its base Spell Focus Mastery was outdated at +5 and has been corrected to the wiki value of +8. Sacred Spell Focus Mastery +3 is also properly credited to every school.
  • Results now show the actual enchantment name, such as Sacred Spell Focus Mastery +3, instead of relabeling it as a school-specific effect.
  • No-op augments are now guarded against. A reported case paired Conjuration +13 with a same-type +8 augment that would provide no additional benefit. The exact case could not be reproduced, but a safeguard was added without changing existing solved loadouts.
  • Deific Focus remains excluded. It is a conditional, ramping, single-school effect rather than a permanent universal +3 bonus, so treating it as normal gear DC would overstate results.
One thing to keep in mind: priority order still matters. Spell-power priorities like Nullification, Void Lore, and Void Intensity can consume gear choices before spell-school DCs are considered. In testing, Necromancy reached 29 with those ranked first versus 31 with schools alone.

The optimizer also still solves gear only. Feats, enhancements, destinies, filigrees, casting-stat DC contributions, and other character bonuses are not included in the displayed total.

Live in build 08092026.27.

I added a bit more overhead on the solver. The solver can take an additional 13 seconds to power through. Don't be alarmed. If your browser get's mad, just ask it to wait. We can blame 20+ of game mechanics that are all over the place. =P
 

mikarddo

Well-known member
I really admire your effort both with the app and with communication.
Thank you very much for doing this.

Work has me tied down for a bit but soon I shall have time to really play with the app again and see how well it works. I likely wont go upgrading my gear till we see raid items though :)
 

peng

Well-known member
would it be possible to tell it to exclude items from certain packs? or tell it which packs you own?
 

Sook

Well-known member
would it be possible to tell it to exclude items from certain packs? or tell it which packs you own?

You can exclude now, you can block a gear location, or place your own piece in there manually and have the solver build around it.

It currently doesn't distinguish between packs and their content. It's on my least of features being requested. Currently trying tp pin down the core engine mechanics first.
 

peng

Well-known member
can't seem to find enhanced ki
edit: or 'kick em while they're down'
 
Last edited:

Sook

Well-known member
A few more optimizer fixes are live:
  • Enhanced Ki can now be ranked. The optimizer already knew about all 19 items that have it, but there was no way to actually search for or prioritize the effect. That's fixed.
  • It's now called Enhanced Ki everywhere, matching the in-game name. The raw data had it stored as just "Ki." You'll now see Enhanced Ki in the picker, results, shared builds, and exports. Searching for either "Ki" or "Enhanced Ki" works now.
  • Kick 'Em While They're Down is searchable now. Searching for "kick" will find it, along with all 12 items that carry the effect. It's treated as ON/OFF (boolean) since it's something you either have or you don't.
  • No more "null" bonus types. If an effect doesn't have a named bonus type, the results now simply call it untyped.
One known gap came out of this:

Enhanced Ki is actually one of 36 effects sitting in the data that currently can't be ranked for the same reason. That includes things like Efficient Metamagic for Maximize, Empower, Extend, Enlarge, Quicken, etc., plus Tendon Slice and several weapon-block effects.

Rather than blindly turn all 36 on, they're being worked through and checked against the DDO Wiki first so the optimizer understands what each one actually does before it starts recommending gear around them.

Tracking that work in issue #230.
 
Last edited:

Smokewolf

Frequently banned member.

DDO Loadout Optimizer​

Find the best gear for your build using math instead of guesswork.

Try it here:

https://eddiefiggie.github.io/ddo-loadout-optimizer/

It is free, runs entirely in your browser, and requires no login or download.

Have you ever had six DDO Wiki tabs open, plus a spreadsheet, trying to figure out which combination of gear gives you the most of the stats you want without wasting duplicate bonus types?

That is the problem this tool is designed to solve. You enter your build, choose the stats that matter to you, and rank them in order. The optimizer then searches more than 9,000 wiki-sourced items, augments, set bonuses, and crafting options to find the mathematically best loadout for those priorities. This is not a tier list or a list of gear that experienced players usually wear. It is an actual optimization solver that compares gear combinations and builds a complete loadout around your specific character.

Tell It How You Actually Play​

Choose your level, race, armor type, combat style, weapons, and other build restrictions.

It supports setups such as:
  • Dual wielding with a specific off-hand weapon
  • Crossbow and rune arm
  • Specific weapon types
  • Druid no-metal restrictions
The optimizer removes gear your character cannot equip, so it does not waste time recommending unusable items.

See the character setup:
1-character.png


Rank the Stats That Matter​

Add the stats you care about and arrange them in priority order. Your first priority is maximized first. The optimizer then works on your second priority without giving up any of the first, followed by the third, fourth, and so on. That priority order is the actual objective the solver uses. There are also one-click stat bundles to help you get started.

See how priorities work:
2-priorities.png


Get a Complete Loadout​

The optimizer returns a full gear set, slot by slot, usually in under a second. It also shows the exact steps needed to create the loadout, including augments, seals, set pieces, and other crafting or upgrade requirements. The result is not a guess. It is the mathematically optimal loadout for your selected priorities, restrictions, and the item data currently indexed by the tool.

See the loadout results:
3-loadout.png


See Where Every Stat Comes From​

The optimizer shows its work. Every point of every selected stat is traced back to the item, effect, and bonus type providing it. You can see exactly where your Constitution, Doublestrike, Physical Sheltering, or any other stat is coming from. This also makes it much easier to spot overlapping bonus types or effects that are being wasted.

See the stat breakdown:
4-proof.png


Explore the Trade-Offs​

Sometimes the mathematically best loadout is not the loadout you actually want to farm. The tool also shows near-optimal alternatives and explains what you would gain or give up by:
  • Completing a different set
  • Freeing up a gear slot
  • Using easier-to-find items
  • Reducing the number of crafting steps
  • Giving up one point in one stat to gain several points somewhere else
You can select any alternative and compare it directly against the optimal result.

See the alternative loadouts:
5-alternatives.png


Share Your Build​

You can export your results as:
  • Forum-ready Markdown
  • Forum-ready BBCode
  • CSV
  • A clean, print-friendly page
The export includes your build restrictions, stat priorities, selected equipment, and active set bonuses.

Try the optimizer:
https://eddiefiggie.github.io/ddo-loadout-optimizer/

The tool is built on the work of two major community projects:
  • The DDO Wiki, which is the source of truth for item information
  • The DDO Gear Planner by illusionistpm, which provides the core item catalog and crafting data
Huge thanks to both projects and everyone who contributes to them. Please give it a try. I would especially appreciate feedback on incorrect item data, missing crafting options, unexpected results, or anything that makes the tool harder to use.
Question: Does the load-optimizer need an internet connection to run ?
 

Smokewolf

Frequently banned member.
Q: Would it be possible to have a utility scan a Characters currently held items to build a preset?
 

Sook

Well-known member
Question: Does the load-optimizer need an internet connection to run ?

A quick note on how the optimizer actually works, especially for anyone wondering what happens to your builds or inventory data:
  • The whole app runs locally in your browser. It's a static site made up of HTML, JavaScript, and one generated items.json file containing about 9,045 gear variants.
  • The solver runs in your browser too. The optimizer uses the open-source HiGHS MILP solver, compiled to WebAssembly. When you hit Solve, the math happens right there in your browser tab. Nothing is sent to a server to be solved.
  • Your characters and inventories stay local. Saved characters, imported Trove inventories, and backups are stored in your browser's local storage.
  • There are no accounts and no server-side character database. The site doesn't have a backend storing your builds or inventory.
The optimizer is designed to stay client-side and local. That said, unless you bring the files locally (download and set up), you'll still need internet access to access the files through the link....but yes, you can recreate all of this locally.

Q: Would it be possible to have a utility scan a Characters currently held items to build a preset?

The only way we can do that is through TROVE. The game offers no modern API that we have access to. You can however manually add your pieces, and I'm updating the UI to make that a little easier soon.
 

Sook

Well-known member
Thanks, I only saw Legendary Greensteel Belt and Gloves but not Helm, Cloak, Boots, Bracers or Necklace on list.

Greensteel is not fully implemented...yet.

It's not clear how to "clear" the form for a new character. When I go back to the first screen and click "Get Started", sometime the character I just worked on is already in the fields. Refreshing the browser on the first page does reset the second page, but it would be nice to have a reset button.

I agree! This has been bothering me too. I'll add that as a feature request and add it to the pile.

I'm a big fan of "Only What I Own" mode. I asked earlier for ways for the tool to exclude augments that I *don't* own, since it recommends them anyway.

What I should have asked is: do you think this is possible? Someday?

If there are coding issues that makes it just not worth the effort, I'll try to work around it.

I'm a big fan of that too! I love the idea actually that a player can find, from their own stuff, the best loadout given their priorities with affixes. Trust me... once I get the core engine working, this capability will be super simple to add. RIght now I'm navigating 20+ years of DDO gear evolution...lol So many exceptions to factor. It's been fun though! Learning a lot about the game from this project.

I just thought about this: How about a checkbox that says "Don't recommend augments" that would work in either mode? From my programming experience, I believe this would be simpler than anything else I asked for.

Same as above... I have some ideas how to make this work when i get to it.

I really admire your effort both with the app and with communication.
Thank you very much for doing this.

Work has me tied down for a bit but soon I shall have time to really play with the app again and see how well it works. I likely wont go upgrading my gear till we see raid items though :)

Thanks!! I appreciate the support. Wish we had more people commenting about what might need work. I recieve it constructively and it only makes the product better. There are soooo many combinations to consider.

would it be possible to tell it to exclude items from certain packs? or tell it which packs you own?

Yes, this is on the feature request list. Once I am done with ensure the core engine works for all the data exceptions created by this 20 year old game...lol...I'll get to this. Stay tuned! Think this will be simple to implement.
 

Sook

Well-known member
Is this AI generated?

Short answer, the outcomes are not AI generated. I think you're asking if this is using an LLM to produce these outceoms. That answer is an emphatic no.

The optimizer uses the open-source HiGHS MILP solver, compiled to WebAssembly. When you hit Solve, the math happens right there in your browser tab. Nothing is sent to an an LLM tro be solved. Also, give it the same parameters, assuming the same underline data...you will always get the same outcome. It becomes provable by math.

HiGHS works through thousands of combinations while obeying rules like:
  • only one item per gear slot
  • don’t equip conflicting weapons/off-hands
  • respect armor and build restrictions
  • account for bonus types that don’t stack
  • use only the augments/items you’ve allowed
  • maximize the stats you ranked, in the order you ranked them
The “MILP” part stands for Mixed Integer Linear Programming. That sounds complicated, but in practice it means the optimizer can turn decisions like equip this item: yes or no into math and solve the whole gear puzzle systematically instead of trying random combinations.

So it isn’t AI guessing what gear looks good. HiGHS mathematically searches for the best valid solution under the rules the optimizer gives it.

It's literally using math... Where it stumbles is when the underline data has errors or misunderstands stacking rules from some of the legacy content DDO has produced etc.
 
Top