wowsims / wotlk

World of Warcraft Wrath of the Lich King Classic simulations.
https://wowsims.github.io/wotlk/
MIT License
147 stars 139 forks source link

Bulk Sims #1512

Open jimmyt857 opened 2 years ago

jimmyt857 commented 2 years ago

Making a master issue to centralize the conversation around this. The goal is to be able to configure combinations of settings and then run all of them. A simple example would be "find the best item for this slot" or "show me how this item performs with all of my different rotation setups". We can go further though, and allow multidimensional sims and produce great visuals showing the results.

jimmyt857 commented 2 years ago

Copied from a discord discussion on this:

@Pokpoong: Unfortunately the issues are deeper than that.

Let's start with the user need, which is basically, "tell me which items are bis / near bis for this slot". This is a perfectly valid need that we should try to fill. The problem is that stats are way more complicated now, to the point where it is not possible to choose an item in isolation.

To give a simple example: pick any slot and check out the top 3-5 items in that slot for your character. I gaurantee some will have hit/expertise stats, and some won't. Already this presents the problem: to get the full value out of an item with extra hit/expertise (or any stat with a cap), you need to choose alternatives for different items that trade the overcapped hit for other uncapped stats.

Note that this is still ignoring the gem issue.

Guybrush-style UI worked back in classic, BECAUSE it was classic. The set of relevant items in the entire game could fit on a small fraction of the screen, and stats were simple enough that there was almost always exactly 1 choice for BiS. Replicating the same feature now results in something which doesn't solve the user's need. So we need to come up with something smarter, which solves the actual need.

jimmyt857 commented 2 years ago

Copied from a discord discussion on this:

@lologarithm: I think there is two different kinds of bulk sims, but I think they can have a single UI --

  1. Give me the best combination of items out of a pile of different items (like say 1-3 items in each slot) This could also be used for comparing a couple slots of different items at a time (like say comparing set bonuses vs better item with no set bonus)

  2. Give me the best item for this slot (could be like 30-50 items in the slot). This is best for something like trinkets/relics/ etc where they have very little in the way of EPs but would be useful to roughly order them. well, there is also the "just sim every item and tell me the best" but I think that simulation would take years to complete and isn't worth aiming for

jimmyt857 commented 2 years ago

Copied from a discord discussion on this:

@Pokpoong: I think we should be thinking more generally Simon has a lot of great charts in his spreadsheets, here's a screenshot of one: bulk sims should let you sim across all sorts of dimensions, with gear being just 1 option for dimensions

we basically need a proto for "SettingsDimension" with lots of different sub-options; different types of gear dimensions, a rotation dimension, encounter, talents, etc and then a UI for picking dimensions and generating table results

regarding item dimensions, I think we probably want to make things easier on the user by 1) automate item selection rather than having the user pick them, perhaps using EP thresholds (but this might get complicated) and 2) fix up the gem optimizer to be smarter and then reuse its logic here to auto-gem any changed item

jimmyt857 commented 2 years ago

Copied from a discord discussion on this:

@Char: if you were to compare to an existing use of gear comparisons things to look at would be https://www.raidbots.com/simbot/droptimizer allowing selection of a specific raid and difficulty to look at the best items available from said raid https://www.raidbots.com/simbot/gear being able to select individual pieces of gear or gear sets to compare https://www.raidbots.com/simbot/talents being able to compare various talent selections

the UIs aren't the best for those, but they give an idea of how can handle both the inputs and results, how the results are displayed is quite nice and having the option to import a character using the integrated addon and find the best gear from within that character's bags and bank gear compare can look at multiple items in the same slot, a full gearset, or both simultaneously, the gearsets can be saved for comparison at a later point as well as edited piecemeal

0nlyDev commented 2 years ago

A possible solution to the plethora of possible items/gems/enchants that need to be simmed, would be to use statistical data for rough selection of items/stats (say from warcraft logs) and then only sim the top 10%. Something like that...

raimondi1337 commented 1 year ago

Thoughts on adding a button that says "Simulate all Favorites", brute forcing all of the gear permutations, and displaying the results in a modal? Seems like it would be a quick win and a significant value add, but maybe I'm being naive.

Including rotations/encounters/enchants/talents/buffs seems like a marginal gain that could be omitted. Most of those options wouldn't change anyways, and if a user really wanted they could just re-run it a couple times and capture every viable option. Gemming might be a problem, but really it would just be more time.

lologarithm commented 1 year ago

We were just talking about this as a way to handle simming all items in your inventory. Import them all as favorites and then have a 'sim all favorites' button in the bulk UI

lologarithm commented 1 year ago

We have some basic work completed on this... Using this comment to track some outstanding work

  1. Consider an "aggressive fast mode" that would pre-cull some options to lower the number of combinations. Right now we are limited to maybe 20-22 or so items when running full combinations mode. It could also drop bottom 2/3 of results instead of 1/2 or something (sim core)
  2. Complete Options UI (client)
  3. Consider updating ProgressMetrics to allow for results to stream in (core / client)
  4. Support alternate metrics for sorting (TPS / DTPS / HPS / etc) maybe even support the new "ratios" for each to weight them.