ArmoreR: Destiny 2 stats assessment and loadout builder created in R and Shiny

ArmoreR grew from two things: a vague dissatisfaction with building loadouts in DIM1; and an impossible compulsion to tinker with data in my own way.

ArmoreR relies on the export of armor data that DIM provides. Load your data by setting the minimum power ceiling that you want to filter for; the default is currently the season 13 power ceiling of 1310, so all armor pieces included in the analysis will have a maximum power of at least that value. ArmoreR will exclude modified or masterworked stats unless you un-check the option to include only base stats.

Armor Tiers: You can finely control how much armor to include in the application, by turning quality tiers on or off. Armor tiers are defined as follows (see credits for more):

The default is to exclude the v category because it tends to be the largest. Calculating loadouts is combinatorial, so just a few extra armor pieces can increase the total processing time by quite a bit. You’ll get a tier distribution plot after loading in your data, and can adjust per your preferences for most complete versus speedy. If you’re the kind of person who keeps multiple copies of exotics in different energy types, or if you know you’re looking for a loadout with a specific exotic, you’ll definitely gain speed by turning off the irrelevant categories.)2

After loading your data, it will display the set of single highest statistics obtainable by your armor for the class you’ve selected. Use that as a guide for where to start: If you want a high mobility Hunter build, for example, use that stat as a starting point to begin adjusting the sliders. As you adjust the sliders, a real-time display will show the possible values of your remaining stats. If you slide any stat out of range, the distribution display will vanish. Notch that little slider buddy back down to get it back.

Pinning exotics: ArmoreR will let you pin an exotic so that all loadouts use that armor piece. After importing your data file, the pinned exotic dropdown will be populated with the exotic armor available to the class you’ve selected. As you adjust the pinned exotic, the total max stats and stat distributions will be updated. If you get an error or don’t get any loadouts with a specific pinned exotic, you may need to relax your criteria (by including some “g” armor, for example, but it’s also possible that ArmoreR can’t make a loadout using ).

Adjust all the sliders until you get a build you’re interested in seeing. ArmoreR will tell you how many total loadouts meet the criteria you’ve set.

When ready, click the SHOW LOADOUTS button. If you’ve opted to view a stat set with more than a few dozen loadouts, you may have to wait and it may even produce an error! If that happens, narrow your criteria a bit. You’ll get two plots as output of this operation:

So you have a nice Mobility build; now slide mobility back to zero and see the options adjust, and now try a Strength build. The limits will update in real-time and the app will show you how many loadouts meet your criteria. When you’re ready, SHOW LOADOUTS again and the new build will be added to the previous picture of the cumulative armor sets.

Rinse and repeat until you get a set of loadouts that make you feel super cool.

Cross-loadout commonality

One of the very best parts of this tool is that it will show you what armor appears in multiple loadouts. Read across the columns for a given armor piece: Those that appear in multiple loadout columns are particularly valuable! Hello, random Simulator Boots drop. This is what originally drove me to explore this after starting with building loadouts in DIM.


So you’ve found a handful of loadouts. What now?

You can take them to DIM! When ready, first click the ‘Store’ button, which will convert the data set to an object that you can download; then you can click the download link and ArmoreR will produce a .CSV file for you to save. This file will look something like this:

"1","Holdfast Mask","""6917529197201679191""",3097544525,"keep"," ARMR:(Mob 9 Dis 4 [24283])"
"2","Simulator Boots","""6917529199943369683""",3030715588,"keep"," ARMR:(Mob 9 Dis 4 [24283])"
"3","Equitis Shade Rig","""6917529200119481443""",813277303,"keep"," ARMR:(Mob 9 Dis 4 [24283])"
"4","Holdfast Grips","""6917529200458956704""",3750210364,"keep"," ARMR:(Mob 9 Dis 4 [24283])"
"5","Holdfast Strides","""6917529199609659127""",3136019014,"keep"," ARMR:(Dis 4 Rec 7 Res 4 Str 4 [6117])"
"6","Iron Will Vest","""6917529216811359406""",2509940440,"keep"," ARMR:(Dis 4 Rec 7 Res 4 Str 4 [6117])"
"7","Seventh Seraph Grips","""6917529227587515477""",2701297915,""," ARMR:(Dis 4 Rec 7 Res 4 Str 4 [6117])"
"8","Cinder Pinion Cowl","""6917529255544184798""",1413409069,""," ARMR:(Dis 4 Rec 7 Res 4 Str 4 [6117])"

DIM will import this file at the preferences screen (way down at the bottom) and will update your data with the revised Tags and Notes that this file contains. ArmoreR keeps any annotations that you have previously made, appending its own notes. ARMR:(Mob 9 Dis 4 [24283]) means

You can see in the file snippet above that there are two distinct loadouts represented: combo 24283 and combo 6117. In DIM you can input the query notes:24283 to see the included armor pieces highlighted, and then easily drag them into a new loadout!

If ArmoreR puts an armor piece into multiple loadouts, you’ll see each one included in the notes field.

I will be delighted if a few people think this is fun and/or useful. I’ve had a good time and learned a ton putting it together.

See you Shiny-side, Guardians.


The armor tier definitions and my first approach to implementing this process comes from Serena Altschul’s fantastic guide How To Armor Stats: A Guide (and Excel template) for Curating Your Vault. Serena wrote far more than I can about why this approach is a good way to understand building your loadouts scientifically and therefore, obviously, maximizing your fun.



  1. I love DIM. It’s an amazing creation of untold value to the Destiny community and I use it every single time I play the game. But as someone with utter analysis paralysis, I just didn’t feel well informed about the decisions I make in DIM’s loadout builder.↩︎

  2. The current filters won’t include an armor piece that has only one very high stat, like a 20+, with all other stats being below 15. If you have favorite armor piece that doesn’t meet any of these inclusion criteria but you really want to include it in the loadout calculations, you can tell the app to keep it by putting ARMR in the notes field in DIM, then re-export your data. Or you can make sure it’s included by setting the arbitrary inclusion level and turning on the “a” flag for that armor category.↩︎