BDO PvE Damage
This information has been passed over by other mostly/very intelligent members of the game community, including but not limited to:
BigandShiny, you know who he is. His help with Awakening damage was instrumental as well as his contribution on how summons (don’t) work.
Phelsong, owner of Project Ynix and the dude that kicked off a lot of this testing. Initially kicked off this previously small project back in June of 2022 and has consistently kept an eye on it.
Honua_Mea, actual scientist that figured out most of the mechanics explained in this doc and started solo gathering grind spot data all the way back in August 2022 before expanding the research to including deriving the damage formulae the game uses
Mayitra, who wrote the original draft of this doc and repeatedly got Honua off their butt
Sundering, who helped with Character Dice testing and wrote the ‘StupidTally’ software to help visualize manual damage number collection
Members of the Project Ynix discord who watched all this information and associated documents and data come together since August 2022, including figuring out just how AP works, determining Monster DR and its functions, and helping pull together DR data for every grindspot in the game. Guys like Sulfur on the discord rock. Thanks for the tip about those rings!
Members of the Shai Discord in the #Numbers-Talk channel that also put in their two cents helping figure things out by red-teaming, playing opposite sides and just asking tons of questions all the way up until early June 2022 when this was a tiny li’l talk project. Note that this channel is archived at the moment, but you can still read the history by going to the Shai discord.
Portions of this document will be BOLDed. If you don’t have the time to read through the entire doc, reading only the bolded sections should give you a good feel for how things work.
Also, if you just want the damage formula outright, it’s on the outline, but here’s a link if you’re lazy: So, what’s the simplest PvE damage formula?
All links in this document stay within the doc unless explicitly noted.
Every formula in this document was determined via in-game testing. We do not support data-mining in any way, as it is against BDO ToS. In the interest of full disclosure, we do reference one very old, publicly available table that we believe was derived from an old server leak under ‘Character Base Stats’. This table is what led to us evaluating dice expressions for much of BDO’s RNG.
All Monster DRs, AP Caps, and AP Cap Multipliers were empirically derived using damage numbers on BDO Global Labs. Links to our original data supporting these derivations can be found under ‘Resources & References’, and test methodologies and formula derivations are included in Appendix 1.
We also cross-referenced many of our measured values with BDOCodex and actively designed formulas that match BDOCodex values (e.g. DR). However, most of our raw data and numbers were collected blindly prior to cross-referencing with BDOCodex.
To help illustrate our methodology, additional notes will be added to help testers that wish to replicate any of our work. These sections will be displayed in Italics and will often refer to our more detailed testing methodologies in the Appendix.
No, it isn’t. Gear and characters can differ, but at the same AP vs the same DP, damage is exactly the same.
Don’t believe us? See ‘Global Labs vs Live Servers’ (first section in Appendix 1) for simple tests that confirm each of these points.
AP is the baseline damage stat that everything scales off of in BDO. It’s the most tightly regulated form of damage but also the most effective in most cases.
AP comes in many forms, but no matter what, it always functions largely the same in calculations. But, AP may have conditions for it to apply (eg ‘Monster AP’).
This document will only tackle the PvE damage formula in depth.
BDO uses multiple damage formulae, but let’s consider the most basic.
Skill % is essentially a multiplier, with 100% being 1.0. Forward Slash in this example does 678%, so 6.78 times our base damage.
Every point of AP is considered +1 base damage to that skill per 100%. It’s literally, 100% of 1 AP.
If I was to have say, 50 total AP, then Forward Slash would be expected to deal 339 damage, before any randomness.
You can break every skill down like this, multiplying the total AP for your spec (all applicable AP from all sources) together with the skill’s % as a multiplier. 1000% Skills are 10.00 damage per AP, 500% are 5.00 damage per AP, so on and so forth.
For any readers with programming experience, yes, BDO appears to use integer calculations for damage, we discuss that much later in the doc.
The x4 on the Forward Slash is how many times the skill will apply damage on a successful Hit (eg 4 ‘Damage Ticks’).
Building on that previous calculation with 50 AP, you could expect Forward Slash to deal 339 damage 4 times per hit, a total of 1356 damage.
This mechanic is about as simple as that.
Also, a side note (unimportant in most cases, but worth noting):
It is possible for attacks to lose ticks if your accuracy is incredibly low versus a given target, even if the attack passes accuracy, somewhere around under 50% hitrate. If you notice ticks going missing in testing, that’s probably why.
The previous “x4” Damage Ticks differ from “max y hits”.
For a skill with “x4, max 2 hits”, there are two hits, each of which can hit separately, and every Hit of the skill deals damage 4 times.
To illustrate this, let’s take a look at ‘Absolute: Valkyrie Slash’.
The first attack has ‘x2, max 3 hits’, the last attack is a simple x3 single hit. Visually, this skill is a series of 3 slashes, with a final slam.
This translates to having 3 hits from the slashes, each of which will deal damage 2 times on hit. The slam only has a single hitbox, but will deal damage 3 times on hit. If the full skill lands, it would deal 11.11 (1111%) damage per point of AP up to 3*2 + 3 = 9 total times.
To summarize all of this info about skills, your % is a decimal with 100% meaning 1.00, your xN is the amount of damage ticks a hit will cause, and max Y hits is how many hits the skill has. This is all you really need to start reading skills with an educated eye. The rest of BDO’s systems revolve around how it judges your base damage: AP, damage bonuses, multipliers, and our most hated system in the entire game: the 70/30 split.
There is no difference between types of AP.
AP is AP, no matter what.
AP is not Species Damage, nor is it Critical Hit damage, or Back Attack damage, or anything other than simple AP (1 point = 1 base damage). AP does not scale differently in whether it is Sheet, Hidden, Extra AP vs Monster, or AP from buffs / gear / crystals / lightstones / class. Sheet AP brackets obviously add additional AP, but that added AP is just more AP, same scaling.
AP can, however, be conditional. For example, Monster AP only applies when attacking a PvE mob.
Similarly, typed APs (Melee/Ranged/Magic AP) only apply to specific types of attacks: Melee AP to melee attacks, Ranged AP to ranged attacks, and Magic AP to magic attacks. All attacks for a class are considered to be of the same damage type, and the game tells you the damage type your class uses in the character pane. As such, usage of Typed APs usually won’t come up except for artifact choice and some consumables.
For testers, there is one exception: the unequipped weapon ‘Punch’ for every class uses Melee AP, even if the class is a Magic AP or Ranged AP class. We discuss it in more detail here. If you like to test crap, you can test type AP with that info.
However, PVE Mechanics can cause AP as a whole to scale differently per point via different damage formulas. This is where things like AP Softcaps in PvE come in, which we’ll explore soon. It is worth stressing, AP changing how it scales is not a function of AP itself, this is the reason testing in the past was so distorted when it came to AP past certain thresholds.
Note that you are able to see your (mostly) true, actual AP in the newly-added ‘My Stats’ pane, pictured above and accessible from your equipment menu. This pane updates on the fly as you apply buffs, get debuffed, and change gear. Anything that’ll change the stats it shows, it will reflect, without fail.
You can also use this to spot if tooltips are wrong or bugged, since the pane will update with correct information. For a quick example of this, get on an awakened Warrior, use E buff, then use Q block, you’ll see something interesting.
For PvE, make sure to add together your total AP at the top right of the pane (applicable to either your choice of Succession or Awakening), and add it to your ‘Extra AP against Monsters’ to get your total PvE AP. DO NOT add in Extra Damage against Humans, Demihumans, or Kamasylvians. Species Damage is something entirely different from AP.
In the above example, PvE AP for Mainhand would be 292 + 60 = 352 PvE AP. While you also use Mainhand AP for Succession, there’s an extra calculation (see ‘The 70/30 AP Split’).
All Sheet AP does is determine your AP bracket. It doesn’t actually do anything else special.
Over time, sheet AP has become less reliable for determining your actual power due to the increased availability of Crystals, Lightstones, Consumables, Class Buffs, Class Passives, Accessory Reforms, Alchemy Stone boosts, and all other forms of non sheet AP boosts. It is not 2018/2019 anymore. Sheet AP is no longer an accurate, precise measure of one’s ability to do damage. It’s a nice general idea, but that’s it. This means you, too, Garmoth. Gearscore isn’t really an accurate measure either, as a result.
By and large, most buffs to your AP stack (consumes, villa, church, etc) stack together fine following specific categories (Perfumes are exclusive with each other, Draughts exclude Elixirs, basic stuff), but things get a little complicated when it comes to buffs from your class.
BDO has a proprietary “Slotting” system for Buffs from classes. This is completely broken down, visualized, and organized in a spreadsheet.
https://docs.google.com/spreadsheets/d/1d8VIJkmWczw4ym_If4khX8pgwWz9LdLkoFWadraLwLw/edit?usp=sharing
In general, a Slot 1 Buff of the same Type will never stack with another Slot 1 Buff of the same type. However, two buffs of the same type WILL stack if they are placed on separate slots, such as a +All DR Slot 1 Buff, and a +All DR Slot 2 or 3 buff. A great example of the slotting system is Succession Striker, his Prime: Discharge Energy gives 15 DR on Slot 1, while his E buff grants 50 DR on Slot 3. These are different slots, and thus, will stack. Valkyrie can additionally provide a Slot 2 DR Buff, meaning a well-prepared striker can gain three different DR buffs from class effects that will all stack, thanks to slotting.
Some classes also have “Typed” buff effects, a notable example of this is Sage, who has both an All-AP Buff, and Magic AP buff, both of which will stack because Magic AP is technically not the same type of effect as All-AP. This isn’t always the case, many typed effect classes don’t have an All-AP buff and appreciate ally AP buffs.
It is worth noting for testing, that a skill’s buff slotting is NOT per skill, a single skill can have multiple effects all on different slots. One can take a look at Striker’s E buff once more for this behavior; the DR portion sits in Slot 3, but the speed effects, Resists, and AP sit in Slot 1 and generally do not stack with the same type effects.
The 70/30 AP split is one of the most annoying and overcomplicated systems in the game, but it exists, so we have to deal with it. We’ll keep it as simple as possible in this section and explain it more fully once we’ve covered more mechanics.
The 70/30 split is not a split of your total AP or Sheet AP. It only applies to the tooltip APs listed on your Mainhand & Awakening weapons. AP gained through Caphras enhancement counts as Weapon AP.
The full formulas are as follows:
As an example, say you’re an Awakening Class and you equip a Main and Awakening weapon that both have 100 ~ 100 AP listed on both. For damage dealt by your active spec, that 100 AP does not come from a single weapon. It instead comes in the form of 30 AP from your Main weapon, and 70 AP from your Awakening weapon for a total of 100. Flip the two if you’re Succession and using Prime skills.
Now suppose you only have a 50 AP Mainhand weapon. You’d still get 70 AP from your Awakening weapon, but you’d only get 15 AP (30% of 50) from this weaker Mainhand weapon for a total of 85. You effectively lose 15 AP from Awakening skills for using a weaker Mainhand weapon.
This 70/30 effect does not apply to any other source of AP from gear, nor does it affect, or get affected by, anything else. It only affects your Mainhand and Awakening Weapon APs, not your total Awakening/Succession AP. It is an entirely self-contained phenomenon.
This is also the only situation in which your ‘My Stats’ window will actively lie to you about your Total AP, depending on the AP difference between your Mainhand & Awakening weapons. Be very careful about this if you’re running things like a Blackstar Awakening along with a Green/Ultimate Mainhand.
In addition, the Split only applies to Awakening and Prime (Succession) skills. Absolutes are spared this extra bit of math.
This is also admittedly one more way in which the 70/30 split applies, but it’d be difficult to explain without deep-diving into minutiae mechanics. This will be expanded on in the ‘Advanced Mechanics’ section here.
Mainhand & Awakening Weapon APs are not visible in the ‘My Stats’ menu. Instead, you must mouse-over them in your equipment menu. This is painful, but absolutely required for exact damage calculations for Awakening & Prime skills. However, for casual calculations where ‘close’ is good enough, it is possible to easily estimate your Awakening/Succession AP from the ‘My Stats’ window. All you need is the difference between your Mainhand and Awakening Weapons. We’ll use the below example for an Awakening Sorc to explain.
First, look under the ‘Gear (Base)’ column, and calculate the difference between your Awakening & Succession AP (‘Awakening’ row - ‘AP’ row). In our example, these are the numbers in the red oval: 308 - 296 = 12.
Next, multiply this by 0.3. Round down to the nearest full integer. In our example, 0.3 * 12 = 3.6, then round to 3.
Finally, subtract this value from your Awakening AP. If (Awakening AP) - (Mainhand AP) is negative, add 0.3 times the difference (subtract the negative). In our example, we add ‘3’ (from the previous step) to the value in the blue rectangle: 561 - 3 = 558. Our actual Awakening AP is approximately 558. This method is not perfect, but it is always accurate within 1 AP.
Full approximation formula:
True Awk AP =
Or for Succession:
True Succ AP =
DR is a really simple stat in PvE. Every point of DR reduces the AP of a given attack by 1. Note that DR does not reduce the damage of an attack by 1. It reduces the AP by 1.
DR is the main stat-check for every single PvE mob in the entire game. It makes sure a player has enough AP equipped to handle a given monster type. Evasion is usually a secondary check, though not always (eg Crypt of Resting Thoughts).
Every DR for every mob type is hand-picked by the BDO developers, and for the most part, every mob at a given grind spot has the same DR, with some very, very specific exceptions. For example, Bloody Monastery’s Crimson Bell mobs have vastly lower DR than their usual counterparts, and some Boss-type monsters, such as The Butcher of Gyfin Rhasia, have significantly higher DR than their trash-mob counterparts.
However, DR has one big limitation. DR can never reduce the damage of any attack below 5% of its base damage (AP). We refer to this as ‘The 5% Rule’, and it becomes very important to understand this rule later.
This doc will not cover DR in PVP.
DR breakpoints are a result of BDO having two different damage formulae for below and above DR. They essentially act as the minimum AP required for any given spot. Anything under the ‘DR Breakpoint’ only deals minimum damage, according to the 5% rule. Anything over the DR breakpoint scales normally (+1 AP = +1 base damage). You can see this clearly in a damage graph:
As AP goes up, damage goes up. This gain is very, very slow until ~255 AP, then damage scales up 1:1. This is a DR Breakpoint! There’s also a slight bend down at ~320 AP, but we’ll get to that.
DR Breakpoints are the amount of AP you must have before you begin to gain 1:1 damage from AP on any given target. If you aren’t meeting the DR breakpoint at a grindspot, you should not be there, period.
DR Breakpoints:
The second point may seem odd, but it should make sense after an explanation. Did you see any big, jagged jumps in the graph? No! It was continuously increasing; damage never went down, even at the breakpoint. This continuous damage curve is essentially a direct result of the ‘5% Rule’ mentioned earlier.
BDO uses three different damage calculations in PvE:
Like mentioned before, below a monster’s DR, you will always deal at least 5% of your base damage (0.05 * total AP * skill %) no matter what, regardless of the monster’s DR. Note that the slope of the line in the below graph is ~0.05 (5%). Basically, you can never do 0 damage on a successful hit unless you have less than total 20 AP (only achievable via debuffs).
After your AP is higher than a monster’s DR breakpoint, the game switches to formula #2. Above a monster’s DR breakpoint, base damage scales 1:1 with AP again, multiplied by skill %. Note that the slope of the line in the below graph is ~1.0 (100%).
‘But wait!’, you might say. ‘If my AP is only 1-2 over a monster’s DR, and I do at least 5% of my AP below DR, then I would actually lose damage vs formula #1’. That’s actually true all the way up to ~5% over the monster’s DR. To compensate and keep the damage curve continuous, the switch to formula #2 doesn’t happen at DR. It happens at ~5% over it.
The game simply uses the under-DR formula (formula #1) until the player would do more damage with the over-DR formula (formula #2). That’s the real 5% rule. Once a player’s AP is at (monster’s DR + ~5%), the above-DR formula always does more damage than (0.05*AP).
This means that the DR breakpoint is actually at
which simplifies to
Or
In short, the DR Breakpoint occurs at ~5.26% (1/.95) above a monster’s DR.
And to kill a myth immediately, DR shred is 1:1, but it’s obscured by the 5% Rule’s effect on the DR breakpoint. A 30 DR shred reduces DR by exactly 30, but the DR Breakpoint may shift by ~31.6 as a result. More on DR shred later. We also include a full derivation in the Appendix under ‘Proving that the DR Breakpoint isn’t at DR’.
An AP softcap is a seemingly PvE-only mechanic that exists in addition to a monster’s DR and DR breakpoint. An AP softcap is the ceiling for AP’s 1:1 scaling. Above this ceiling, AP loses its effectiveness per point.
Take a look at the original graph from Basilisk Den again, and pay special attention to the downward bend on the right side. We blow up that bend as its own graph to the right, and you can clearly see that AP no longer applies at a 1:1 ratio, but rather at 3:5 (a 60% AP Cap Multiplier).
Like DR, both the AP Softcap and the effectiveness of AP above that cap (the ‘AP Cap Multiplier’) are hand-chosen for every grindspot in the entire game. AP caps apply to every monster at a given grindspot with only a single exception for a declared grindspot: Khalk Canyon in Dreighan.
If any Pearl Abyss employees happen to be reading, please don’t change Khalk Canyon. The absence of an AP Cap creates one of the best places in the game for players to compare actual damage, especially when combined with the Khalks’ low DR & high HP pools.
Other overworld wildlife (eg Gray Foxes) also don’t appear to have AP Caps, but we have not tested this exhaustively.
Every AP Cap Multiplier is a ratio from 0 to 1.0, representing how effective every 1 AP is past the softcap. A 0.7-ratio grindspot causes all AP past the softcap to be applied at 70% effectiveness. Only the amount of player AP over the cap receives this damage reduction. AP up to the cap always remains 1:1.
As an example, if you have 300 AP vs a 280 cap, only 20 AP will have reduced effectiveness. All 280 AP up to the cap will apply at full 1:1 effectiveness. Again, the damage is a continuous curve - it doesn’t suddenly decrease once you’re over the softcap.
As a rule of thumb, most spots operate on a 0.7 AP Cap Multiplier. Most Elvia grind spots operate on a 0.05 AP Cap Multiplier, meaning past AP softcap, AP is only 5% effective in Elvia, and you’d need 20 more AP to gain 1 more AP worth of damage:
Some spots also have unique or special ‘hardcaps’ and were historically known as ‘AP-capped’ spots. In these grindspots (Fadus, most of Mediah, etc), the AP Cap Multiplier is 0, so AP has no value past cap. There are also experimental spots having unique ratios, such as .03 (97% damage reduction over-cap) at Shultz or 0.5 (50% damage reduction over-cap) at Waragons.
There is no in-game way to find a given spot’s AP Softcap or AP Cap Multiplier. You’ll have to refer to outside resources to find it, such as our Spotbreaking document here (external doc, also available):
https://docs.google.com/spreadsheets/d/1mTPUGVLvp-yaZPSQMHEQ9kOY5DV-NlKsyvAvqtOktPM/edit?usp=sharing
This link is also available under ‘References & Resources’.
‘Effective AP’ or ‘EAP’ is a measure of the total base damage you have when attacking a specific target, and represents the actual value you get out of AP in terms of damage output. This term was originally coined by Phelsong, one of the Shai Discord owners, when he was first working on PvE damage calculations, and it has largely stuck.
EAP is calculated as:
The most basic way to get EAP is to gain AP above a monster’s DR but below the monster’s AP Softcap. Every AP in this range applies at a rate of 1:1 (100%). AP then loses effectiveness due to AP softcaps, which by design, make it harder to get more EAP.
EAP has no meaning below DR breakpoint, where a player always deals 5% * AP. Above the DR breakpoint, EAP is the number that scales with skill % and other modifiers (back attack, critical hit, etc).
Controlling a player’s EAP via a monster’s DR breakpoint (a flat reduction) and their AP softcap (a controlled reduction over cap) is essentially how PA regulates how much damage someone with a given gearset should be doing at a given grind spot. PA can use monster DR and AP caps to reduce, or sometimes absolutely lock down, the damage dealt by all types of players. They can ensure that regardless of gear, players usually won’t one-shot challenging mobs… most of the time.
So, with that all in mind, how does one deal more damage when they can no longer reasonably get more EAP? And can you get around the AP Softcap? Well…
Keeping in mind how DR and Softcaps work, this means there is a finite amount of 1:1 EAP between the DR breakpoint and AP softcap of any monster. Basically, every spot has a hard-defined amount of damage that you are reasonably allowed to do to mobs before it gets significantly reduced.
Knowing this, if you could somehow increase the gap between the DR breakpoint and the AP Cap, you could easily get more damage, and it would scale. This means that the most important buff/debuff in the game is not AP buffs, nor is it attack speed, or AoE, or even crit/back/down multiplier increases, the most important effect you can tag most mobs with is DR shred.
By reducing a monster’s total DR, DR Shreds expand the range between the DR breakpoint and the AP Softcap. This increases the amount of available 1:1 EAP.
DR shreds function 1:1. ‘-20 DP’ on a skill reduces the enemy DR by exactly 20. However, due to the 5% Rule, the actual DR breakpoint will shift by slightly more than 20, opening up all of that range as 1:1 EAP. Basically, DR shred scales at ~1.0526:1, slightly better than even AP.
A small side note to consider is that when you use a skill that applies a DR shred, the skill will do damage first on its first tick, then apply the DR shred, then following damage ticks do more damage based on the shred. Keep this in mind for your addon setups. Shred before you use your nuke.
The rules for stacking DR shred are pretty simple. Same types of DR shreds generally do not stack, but different type shreds do stack. Some shreds are special, like Shai’s “Misty Haze” (a minus percent DR shred). Basically, if it has a unique debuff icon, it can probably stack. Addons have their own space for shreds, too.
To summarize, you can apply:
You can visually see how shreds from classes stack up in the following spreadsheet:
https://docs.google.com/spreadsheets/d/1d8VIJkmWczw4ym_If4khX8pgwWz9LdLkoFWadraLwLw/edit?usp=sharing
Other quick note: “Defense Nullifying Damage” seen on Brutal Death Elixirs and Brutal Perforation Elixirs are flat damage increases, and, notably, the damage isn’t actually shown anywhere, even with damage numbers visible. This behavior was found when finding the min/max value of a given hit, then finding on Perforation, the min/max went up by exactly 10. There was a lot of punching people involved.
Species damage is an entirely separate Damage Stat. It is not a direct form of AP, but it can be converted to EAP.
Species damage works separately from AP in the damage calculation and has the most conditions attached to it when being applied to targets. The most obvious restriction is that Species Damage only applies to targets that match the Species Type. There are 4 known species types:
‘Damage to All Species’ applies to all of these types, including ‘Other’. There is no overlap between species types. For example, Ahibs in O’Dyllita don’t also take Human damage, just Kama damage.
‘Other’ species damage is not found in the ‘My Stats’ window, but has been proven to exist. The only way to gain ‘Other’ species damage is through either ‘Extra Damage to All Species’ (commonly found on mainhand & awakening weapons) or ‘Damage to All Species Except X’ on VERY specific items, such as Manos Topaz Rings.
After some research into the KR wikis, we discovered that PA calls our ‘Other’ species type ‘Neutral’. This doc will still refer to it as “Other” because old habits die hard, but go figure.
With some exceptions, if a Species Type applies to one mob in a grind spot, it applies to every mob there. One known exception to this is Padix Island, where both Human & Demihuman mobs exist. Each only takes bonus damage from its respective damage type. Constructs within grindspots (eg towers or walls) are generally ‘Other’, rather than the spot’s species type.
If you’re unsure what Species Type a given Monster is, check their health bar. You should see one of four icons next to their name:
From: The BDO KR Wiki (external link):
https://www.kr.playblackdesert.com/ko-KR/Wiki?wikiNo=67
No, this page does not show up on the NA Wiki, but we have confirmed it in-game. More information and ranting about that in the ‘Resources & References’ section under ‘A Note on PA-Authored Resources’.
The most important thing to know about Species Damage is that Species Damage is not AP, even if it acts like it in a few situations. Whenever you attack an applicable target, the game randomly rolls between 0.7 to 1.0 and multiplies it by your species damage. That is, Species Damage rolls are a completely random roll from 0.7*species_damage to 1.0*species damage. Every value between these two values is equally likely to be rolled. The average species damage roll is 0.85*species_damage, but random rolls will vary widely.
Example: 30 Human Damage
And the average of 0.7 and 1 is 0.85, so
On each hit, BDO will roll a random number between 21 and 30. The average species damage across all hits will be 25.5.
Above the DR Breakpoint
Above the DR Breakpoint, the species damage roll is added to EAP. It scales similar to but slightly weaker than AP, at an average of 0.85:1.
Below the DR Breakpoint
Species Damage does not increase damage at all below the DR Breakpoint.
However, Species Damage does count toward reaching the DR breakpoint, though you really shouldn’t use it for that purpose. Remember that the DR breakpoint is the point at which you do more damage with the Above-DR formula. If the Above-DR calculation with your Species Damage roll would allow you to do more than 0.05*AP, BDO will use the Above-DR damage value.
Once Species Damage is introduced, the DR Breakpoint calculation actually changes again. It occurs at (warning, math incoming):
DR Breakpoint for a min roll:
DR Breakpoint for a max roll:
For any testers, the random nature of Species Damage and the fact that it does not contribute to damage below DR can make the DR Breakpoint very challenging to find, as high 1.0 rolls can suddenly proc much higher, above-DR damage values. It is much easier to find DR Breakpoints if you have 0 Species Damage. Azwell weapons are ideal for this, as they have 0 species damage and a small 5-damage range (1d5 die, more on that later).
Above AP Cap
Above AP Cap is where species damage shines. Species damage is completely unaffected by AP Caps. As long as you are above the DR Breakpoint, Species EAP is calculated the same regardless of your AP.
Since nearly every spot in the game has an AP Cap, and every AP Cap Multiplier is at most 0.7, this means that Species Damage scales better above AP Caps than regular AP. The lowest roll for Species Damage (0.7) is the same or better than the best possible AP Cap Multiplier (0.7). At Elvia spots (0.05 AP Cap Multiplier), Species Damage still applies at a worst-case rate of 0.7 above cap. Species Damage always scales at an average of 0.85 EAP per point, regardless of the AP Cap or AP Cap Multiplier. Once you have enough AP to meet a softcap, it is usually better to stack Species Damage if it is available.
The biggest weakness of Species Damage is its lack of availability. Given the comparatively high availability of AP, it often is still the correct choice to take AP at spots with an AP Cap Multiplier of 0.7 despite the better scaling of Species Damage. 33 AP still easily outscales 10 Species Damage, and most items specifically geared toward Species Damage simply don’t have enough Species Damage to justify the AP loss. As an example, equipping an Ultimate Ain Sword for Demihuman damage ends up losing so much AP vs Blackstar in PvE or even Kzarka in most scenarios, that you will often end up doing less total damage outside of very specific situations with the worst AP Cap Multipliers (eg Elvia’s 0.05 multiplier).
There are multiple types of ‘Special Attacks’ in BDO, all of which multiply damage instead of providing a base damage boost. These are the giant, bouncing, dopamine-boosting text that pops up above monsters whenever you hit them especially hard or under certain conditions. These ‘Special Attack Multipliers’ include Critical Hits, Back Attacks, Down Attacks, and Air Attacks.
Special Attacks apply a multiplicative boost to the total damage of an attack. Due to this, they essentially don’t care about DR Breakpoints or AP softcaps.
While AP and Species Damage are used to calculate the base damage for a given attack, Special Attack Multipliers multiply the total end result of all damage calculations, increasing damage without modifying anything else.
Crit happens
Critical Hits start at +100% bonus damage. Same in PVP.
Et tu, Brute?
Back Attacks start at +50% bonus damage. +20% in pvp.
I get knocked down! And don’t get up again!
Down Attacks start at +50% bonus damage. +20% in pvp.
Air Combo!
Air Attacks start at +100% bonus damage. +70% in pvp.
That is bullshit blazing!
Counter Attacks start at +100% bonus damage. (PvE Only mod)
Literally the only photo proof this modifier works!
Speed Attacks start at +50% bonus damage. (PvE Only mod)
Some types of Special Attacks can be stacked for multiple multipliers. Critical Hits can stack with Back/Air/Down/Counter Attacks. Back/Air/Down (and seemingly Counter) Attacks cannot stack with each other. Only 1 of these bonuses can apply, depending on the state of the target (standing, grounded, in the air, in counter state). When multiple effects apply, both multipliers are applied to the total damage.
As an example, let’s consider an attack that would normally deal 100 damage. Now suppose we get a Critical Hit + Back Attack. Both the Critical Hit multiplier (+100%, or 2x) and the Back Attack multiplier (+50%, or 1.5x) will apply. This means our 100 damage attack first gets pushed up to 200 damage (2x) by the Critical Hit, then gets brought up to 300 damage (1.5x) by the Back Attack.
Side Note:
If your attack decision includes something like getting both Down Attack + Crit, Air Attack + Crit, or Counter + Crit, then the Down Attack, Air Attack, or Counter text will be smaller and gray (instead of the normal red/blue) and tends to show above your big red CRITICAL text. Back Attack still stacks with Crit but oddly does not do this.
Special Attack Damage increases of all forms apply additively to the multiplier. So if you get a +10% Critical Hit Damage bonus, your Critical Hit bonus goes from +100% to +110%. Similarly, Back Attack Damage +10% brings your +50% bonus to a +60% bonus.
In terms of raw damage, this makes Back/Down Attack bonuses more valuable than Critical Hit bonuses. Suppose a base damage of 100 and a +10% Special Attack bonus:
In addition, any buff that says “+% to All Special Attacks” basically just increases ALL forms of multipliers: Critical Hits, Back Attacks, Down Attacks, and Air Attacks (and technically Counter/Speed Attacks though they’re rare & impossible/bugged respectively). Yes, Critical Hits count as a Special Attack, but don’t take our word for it. Check the KR Wiki (external link):
https://www.kr.playblackdesert.com/ko-KR/Wiki?wikiNo=76
Continuing the above example for 100 base damage with a ‘+10% Special Attack’ Bonus:
Well yes, but actually no. A character’s Awakening/Succession state does not affect your pre-Awakening skill damage at all. It only triggers the 70/30 split for your Awakening & Prime skills. Every other damage mechanic we’ve discussed so far applies normally: AP, DR, and AP Caps all apply normally.
However, Awakening & Prime skill damage is far more random. There is extra randomness added by both your Mainhand and Awakening weapons that cause more possible values than usual. As a result, Awakening/Prime skills usually differ from pre-Awakening/Absolute skills by up to about +/- 15 damage above and below any normal rolls. We discuss the internal mechanisms behind this in the ‘Advanced Mechanics’ section.
As an example, consider an 1100% pre-Awakening (normal Mainhand) skill. For a particular player’s AP and monster’s DR, suppose these are all of the possible rolls:
256, 267, 278, 289, 300, 311, 322
For this pre-Awakening skill, you will only ever see these values.
Now, suppose an 1100% Prime skill on the same character vs the same mob. Assume that your Mainhand and Awakening weapon have the same Sheet AP (so the 70/30 split doesn’t matter). We should expect the same damage, and we mostly get it. However, you would suddenly see your damage numbers look like this:
243, 245, 246, … 332, 333, 335
Almost every value within the range from 243 (256-13) to 335 (322+13) would be visible, with some small gaps near the very top & bottom.
Why does this happen? Each weapon has a random die (the range of weapon damage in the tooltip), and Awakening/Prime skills include these dice in the 70/30 split. For the purposes of simple damage calculations, you can ignore this mechanic. In general, you can simply assume that:
Everything you’ve already learned about damage still provides a good approximation for Awakening/Prime skills. You don’t need to worry about damage dice unless you want exact values. Again, we fully explain them in ‘Advanced Mechanics’ here.
If no Awakening Weapon is equipped, BDO will literally ignore the entire AP of your Mainhand Weapon when calculating damage, treating it as 0. Any brackets given by the weapon will still apply, but the Weapon’s AP will be completely subtracted from your Total AP. This behavior is not reflected in the ‘My Stats’ window.
By comparison, Awakening skills cannot be used at all without a Mainhand weapon equipped. PA simply didn’t put the opposite check in place for Succession, as you can still use pre-Awakening & Absolute skills normally with only a Mainhand weapon.
To illustrate this effect, let’s walk through the below example:
Absolute: Slash will deal ~2660 damage ((400-200)*13.3), as expected. However, despite having a higher skill%, Prime: Heavy Strike will do substantially less damage: ~1407. This is because BDO ignores the 100 AP from the weapon entirely. All AP brackets obtained from the weapon still count; only the Weapon’s 100 AP is ignored. This gives us (300-200)*14.07 = ~1407 damage.
If the Warrior equips an Awakening Weapon with 100 AP, damage will immediately behave as expected again (~2214), though it will also have an added random roll again, just like Awakening Skills.
If you’re reading this in early 2023, your immediate reaction might have been ‘But I know my Maegu’s weapon increases my damage!’. That’s absolutely correct: it does.
If a class does not have an Awakening Weapon available yet, its Prime skills behave exactly like pre-Awakening skills. There is no 70/30 split and no extra random roll. As soon as the class gets an Awakening & Awakening weapon, the weird ‘ignore your Mainhand Weapon AP’ effect will kick in unless you equip an Awakening Weapon. Your damage will also start seeing the extra random roll on Prime skills.
If you don’t believe us, I don’t blame you. Still, give it a try while Woosa & Maegu are still Succession-only in labs, then try another Succ class without their Awakening Weapon. We can’t make this stuff up. BDO really appears to have entirely separate code blocks for Prime skill damage calculation depending on whether the class has an Awakening or not.
DISCLAIMER: This formula is meant to be used as a loose guide for your damage output. There are additional hidden factors that slightly influence the result by adding randomized rolls. These are covered in the ‘Advanced Mechanics’ section here.
For the average player, the simplified BDO PvE damage formula is:
Before (1), (2), or (3)
Adjust ‘Total AP’ based on the 70/30 rule, if using an Awakening or Prime skill. See ‘Approximating Awakening AP’ for more details.
Subtract 2 from your (Total AP). Just trust us (or read ‘Subweapons’).
(1) Below DR Breakpoint:
(2) Above DR Breakpoint but below AP Softcap:
(3) Above AP Softcap:
And finally,
After (1), (2), or (3)
Apply any Special Attack Multipliers
This formula should cover 99% of situations you’ll find yourself in.
For anyone performing detailed damage testing, please read through the ‘Advanced Mechanics’ sections. They explain how AP rolls (eg dice), that weird -2 Subweapon offset, Awakening/Prime damage, random ranges, and floor division work in much more detail. While there are no changes to the overall formula, ‘Total AP’ is actually a rolled value based on multiple other hidden dice values.
Let’s do an example calculation for attacking a Kamasylvian type mob with an Awakening Skill (Barrage of Water). The mob has 150 DR, a 200 AP Cap, and an 0.7 * cap multiplier.
Character Stats:
Skill (Awakening):
Step 1 - Compute effective awakening AP:
255 Awk ‘Gear (Base)’ AP - 253 ‘Gear (Base)’ AP = 2
2 * 0.3 = 0.6
0.6 rounded down to nearest integer = 0 (no change!)
538 - 0 - 2 = 536 Awakening AP, + 221 Extra AP Against Monsters
= 757 Effective Awakening AP
Step 2 - Determining which formula to use
AP Cap of 200 versus effective AP of 757
Use the Above-Cap Formula (3)
Step 3 - Calculate Species AP
(74 Kamasylvian damage * 0.7) = 51.8
This means the min roll will be 51.8, and the max will be 74
The average will be fine for most purposes, so we can multiply by 0.85:
74 * 0.85 = 62.9
Species AP = 62.9
Step 4 - Calculate Overcap AP
Total AP = 757 - AP Cap of 200
= 557 Overcap AP
Step 5 - Calculate EAP
AP_Cap = 200
Enemy_DR = 150
Species_AP = 62.9
AP_Cap_Mult = 0.7
Overcap_AP = 557
200 - 150 + 62.9 + (0.7 * 557)
= 502.8 EAP
Step 6 - Calculate Damage
EAP = 502.8, Skill Damage = 1500%
Damage = (502.8 * 1500) / 100
= 7542
Step 7: Apply special attack modifiers
For simplicity, we will consider base Back Attack with no bonuses (1.5), and base Critical Hit with no bonuses (2.0), and calculate damage for a Back Attack + Crit of this ability.
7542 * (1.5 * 2.0)
= 22,626 Total Damage per hit (x8 hits)
It is worth noting that in BDO’s game engine, every attack has to be visually anchored to a player that is currently in the middle of some form of animation.
But you might ask “Wait, don’t some skills still work without me needing to be in an animation?”
Well yes…and no. In short, every hitbox that isn’t directly tied to your character animations and acts independently of you is a ‘Summon’. The animation is simply anchored to another character that has its own stats.
This is Gorr. He is objectively the best anchor/summon /s and a very round boi. You may recognize him if you play Witch. Gorr is the character that some of the Witch “Pet Flows” tie themselves to. If you m2m or move out of the pet flow, Gorr will still perform his attack where he started it, and end it on his terms. Not every summon has to be a pet you have around at all times though! Gorr is just one of the simplest examples.
If you can cancel it and go back into a jog and the skill is still going, then it’s probably a summon. There are some fun exceptions, but it’s a good rule of thumb to follow. This is further muddled by some skill animations making use of your summons as graphics, but they are tied to your animation, example being Striker’s 100% BSR.
It’s also worth noting that Projectiles aren’t necessarily summons, though you can fire off some and still immediately move while they’re traveling. Summons usually take the form of some kind of AoE on the ground or something that fires projectiles or attacks on its own.
Certain effects that apply to the player do not apply to summons. The most notable of these ignored effects are Elvia Weapons, Elvia Buff in Calpheon Elvia, and Gyfin Color Buffs. Rule of thumb worth following is most of your self applied buffs usually work out, but if a spot mechanic involves a buff that you yourself receive, your summons probably won’t get it.
Certain other stats simply don’t apply to summons, and it’s kinda a crapshoot on whether or not something applies. The most important stats like your AP contribution to your summons generally does work though.
As an example, Crit Rate will apply to your summons, but Special Attack Multipliers won’t.
Speed effects on you generally don’t apply, and there’s some weird interactions with Mage summon flows where their flow attacks will try to speed up with you, to varying success. They can, but mostly don’t.
This concept of ‘Summons’ applies to a surprising amount of things. A short (but not exhaustive) list of summons includes:
Once again, astute observers might notice that even without any Species Damage, the damage numbers from each hit aren’t all the same. There is some additional randomness that determines the ‘Total AP’ used in the above formula:
All will be discussed under ‘Advanced Mechanics’, but after accounting for Species Damage and any Prime/Awakening weirdness, they account for all remaining random damage fluctuations in PvE.
Despite what the game suggests, Knowledge levels do not grant additional AP or Accuracy and do not in any way modify mob DR or Evasion. Based on all testing so far, Knowledge levels appear to do nothing beyond showing mob HP bars at C-rank. The drop rate bonus at S-rank has not been tested.
This is either a bug in NA documentation or a bug in the code for all clients (NA/KR/etc). It seems more likely that NA documentation is simply wrong as the KR wiki makes absolutely no mention of Knowledge doing anything except making HP visible and increasing droprate, and this behavior holds up in all versions of the game.
NA Wiki - erroneous (external link): https://www.naeu.playblackdesert.com/en-US/Wiki?wikiNo=10
KR Wiki - no mention of damage (external link): https://www.kr.playblackdesert.com/ko-KR/Wiki?wikiNo=28
Honestly? A lot of reasons. But some places to start might include:
If you’ve done some basic due diligence and still can’t work it out, there are still some deeper combat mechanics beyond a casual level. However, these extra mechanics don’t significantly alter your total damage. Double-check that you didn’t miss something in the formula so far.
This is just a dirty section to dispel a few many rumors, explain incorrect observations, help break meaningless past habits, and just generally correct bad information.
Resources & References
All links in this section are to external docs or sites.
Spotbreaking (Grindspot DRs & AP Caps):
https://docs.google.com/spreadsheets/d/1mTPUGVLvp-yaZPSQMHEQ9kOY5DV-NlKsyvAvqtOktPM/edit?usp=sharing
Raw data for spotbreaking:
https://github.com/honuamea/bdo_grindspot_data
Raw data for original derivations:
https://docs.google.com/spreadsheets/d/1AgWE7Z5hEislvjtFkJJRDp60cnZvYGFQRLZqe-7WXLQ/edit?usp=sharing
Raw data for Awakening/Prime testing:
https://docs.google.com/spreadsheets/d/1NzRr1E9GNmAkfVG_MeCOvwTtT5nNyw3I5kIL8qGjU94/edit?usp=sharing
Full Character Base Stat Breakdown: https://docs.google.com/spreadsheets/d/1hmYjvyzbXX2fiFTLI656uAqZSDMGUf--qCUp7Nld-9I/edit?usp=sharing
Other tools & research notes:
https://github.com/honuamea/bdo_testing_data
Dice distribution simulator:
Example usage: ‘output 10*1d5 + 7*(1d3) + 3*(1d12)’
The Official BDO Wiki from PA: https://www.kr.playblackdesert.com/ko-KR/Wiki
Incoming Rant: When referring to Official BDO resources, DO NOT USE THE NA WIKI. The NA wiki has many, many pages either missing or with outright false information.
Examples:
For the love of God, for your sanity and for everyone else’s sanity, do not use the BDO NA Wiki. If you want actual info, use the KR Wiki:
https://www.kr.playblackdesert.com/ko-KR/Wiki
Even Google Translate does a better job than the paid translators when it comes to moving data over to NA:
!!The casual BDO player
probably won’t need
information beyond this!!
It’s important to note that ‘casual’ in this context is not intended as an insult, reduction or implication that a curious reader isn’t ‘big brain’ enough for the information. Rather, the information past this point is very dry, likely inconsequential, and really won’t mess with your gameplay if you don’t know about it. Honestly there’s some mechanics you might be better off not knowing because they’ll likely just piss you off. Some are just that silly, strange, or even outright maddening in their implementation, and if the mechanics behind the 70/30 split has already infuriated you, then definitely stop here, as it shows up again with a vengeance. This is the last bold text. Beyond here be dragons.
If you don’t have a need or simply don’t care for the inner numerical workings of the game’s combat system, then you won’t really find anything interesting past this point. The rest of this document regards small details that, as a whole, should not affect general gameplay. This includes things that are completely uncontrollable by the player or the minutia required for exact, to-the-number, damage testing. It is intended primarily for people who wish to do deep testing on the game’s internal mechanics.
For those still with us…welcome to…Jurassic…wait, no…
Advanced Mechanics
The backend of the game operates on a dice roll system, following XdY+Z values. This harkens back to the time that BDO was in development as a more realistic, tabletop-like game with more reasonable stats, more damage spread, and tougher, sparse-density monsters. The slower combat that resulted cared a lot less about flair/appearance and a lot more about providing players a challenge.
Ultimately this dice roll system gets skipped over more often than not nowadays, but it still shows up in a few ways.
These aren’t super complicated and most people will probably know them off the top of their head, but it’s worth having these handy for reference.
Below are Base AP, AP from Passives, and total AP formatted as ‘AP (Passives) Total’ for each class at level 63:
One might initially think that some of these APs are really low or that AP is distributed unfairly, like Sorc having as much AP as Shai, or Wizard having more AP than Witch. However, these values often balance out with passives and when you consider the next section, Character Dice. For the above two examples, Shai has a vastly smaller Dice Roll than Sorc, and Wizard has a smaller Dice Roll for his higher AP. Witch has lower AP but a larger Dice Roll, equating to both higher & lower potential rolls than Wizard.
It’s worth noting most classes get some sort of sheet AP from level at 60, a hidden AP at 61, nothing for 62, and a hidden AP at 63. However, not every class follows that path. If your base stats differ from these, check your level, and if your base AP is lower, look at what level you get your next hidden AP. Garmoth seems to at least accurately simulate AP from levels. Regardless, this base AP will always show in your ‘My Stats’ window. None of this is ‘Hidden’ or will prevent you from calculating expected damage.
Every class has a basic dice roll that is completely independent of Weapon Dice and character AP. These dice create a small range of AP before all other AP calculations, even for your unarmed ‘Punch’ attack.
Character Dice are divided up by AP Types, and thus every character actually has Melee AP dice, Ranged AP dice, and Magic AP dice, even if their class does not actually use two of the three dice types. Post-reboot, all class skills use the class’s AP type, with one exception. The unarmed Punch always uses Melee dice, even on Magic & Ranged AP users.
You can test Melee dice for non-Melee classes by unequipping your weapon and using your basic unarmed ‘Punch’ skill. The basic punch has been consistently measured as 100% x1 for all classes tested so far and is the easiest way to determine any Melee character’s Character Dice. For Magic & Ranged characters, it is generally necessary to know all other Weapon Dice before the Character’s main Magic/Ranged Dice can be determined. Note that a non-Melee class’s Base Melee AP will usually be different from their Magic/Ranged AP but will not show in the ‘My Stats’ window. Non-dominant AP types are still hidden, as they are not expected to be used for any skill.
Most classes default to either their old, pre-reboot values (see below) or a 1d1-1 (ie 0) for their non-dominant damage types (eg Melee on a Sorc). This is a relic of pre-reboot classes and particularly classes before Archer, where a class might have used two or even all three types of AP in their skills.
Musa and Maewah are two of the easiest examples. On release, their sword skills used Melee AP, and their Bow skills used Ranged AP. On release, Dark Knights used Melee AP for any sword attacks that made contact with the enemy and Magic AP for skills like Lunacy and most of the Awakening kit. Again, this skill-specific split no longer applies. Musa & Maewah now use Melee AP for all skills, and DKs only use Magic AP.
Sometime in 2018, the character dice up through Mystic were revealed (pictured below), but the dice values have demonstrably changed since Class Reboots.
This chart is no longer accurate, but it provides valuable insight into the original, pre-reboot values. Some of the non-primary APs (eg Melee for Sorc) seem to still hold.
As part of the class reboot, most classes were normalized to a (1d9 - 5). Many of the original modifiers ended up becoming a character’s Base AP. Striker used to be 2d5+46 (52 base AP + (2d5 - 6)) but is now toned down to the same, more standardized (1d9 - 5).
All known Character Dice (through Maegu) are 1d9 - 5, except for the below classes:
* Note that Hashashin could still be 1d9 - 5, but based on extensive testing, his damage rolls still look like they were caused by 2 dice instead of 1. (1d9 - 5) and (2d5 - 6) generate the exact same damage range, but (1d9 - 5) is evenly distributed (all values are equally likely) and (2d5 - 6) observes more rolls clustered around the middle (much as 2d6 are most likely to roll a total of 7 in the board game ‘Monopoly’).
Most if not all weapons in the game also have Weapon Dice. This is actually visible to you on the weapon’s stat screen, and it’s usually fairly easy to tell what the ranges are, with some rare exceptions. Weapon Dice stack with Character Dice instead of replacing them. Both rolls and offsets are added together and the total applies directly to your AP Roll for each attack.
Example:
Total AP: 100
Character die (Striker): 1d9 - 5
Weapon die (Azwell): 1d5 - 3
Combined dice: 1d9 + 1d5 - 8
Min roll = 100 + 1 + 1 - 8 = 94
Max roll = 100 + 9 + 5 - 8 = 106
Every attack this character makes will vary between 94 & 106 AP.
Unlike your character dice, the weapon dice also have a Median (the middle number in a set of sorted numbers, for those out of practice). The Median AP of a Weapon is used for Sheet AP. Likewise, the listed AP stat on your My Stats pane uses the Median AP of your weapons, but damage calculations still roll the entire range. This means any given attack with a weapon can swing high OR low, depending on your luck.
Offsets are usually, but not always, half of the roll range (eg 1d10 - 5). For odd-valued dice, the offset is 1 higher. 1d4 - 2, 1d5 - 3, and 1d6 - 3 would all be fairly common die values.
Main hand weapons are among the lowest variance in your damage (often a 1d5 - 3 for +/- 2), and add a dice roll & offset whenever you use Succession or Main Kit skills. Mainhand Weapons generally provide dice that match their displayed damage range. The range does not change with enhancement level, but reforming the weapon (eg ‘Ultimate’ reform stones) can affect range and thus weapon dice. We list all verified weapon dice below in the format ‘Weapon (Tooltip range): Die - Offset’:
*Theorized but not explicitly tested
Additional contributions are welcome! See ‘Testing Weapon Dice’ for more info.
Note that ‘Ult’-ing green weapons tends to increase weapon dice, adding more randomness to the hit. Regular Azwell weapons are exceptional for testing due to no species damage, a small 1d5 range, and identical weapon dice to the ‘Old’ (starter) weapons for low damage testing. They also have immunity to the (non-existent) Rain debuff, if PA ever decides to actually implement it. For an even tighter range, Krea weapons are 1d3 for +/- 1, but you lose the ‘Old’ weapon die match for ultra-low AP testing.
Awakening weapons comparatively have VERY high variance. Nearly all of them roll +/- 5 AP or +/- 6 AP above/below the Median AP, and some roll even wider ranges. These mainly roll when using Awakening skills, though Prime skills are also slightly impacted.
Blackstar, Godr-Ayed & Narchillan: 1d12 - 6
All other tested Awakening Weapons (including Dandelion): 1d10 - 5
The 70/30 split actually also applies to dice. This is every bit as complicated as it sounds and will have a dedicated section explaining how it works. This is why Prime skills also acquire a little bit (30%) of the Awakening Weapon die.
Subweapons actually have no variance at all, despite what their tooltip may say. Instead, they have a negative offset that remains completely static no matter what you do and invisibly reduce the Total AP roll by a small amount of AP without anything you can do about it. However, weapon offsets are also not uniform. They seem intentionally added and seem to act the way they do on purpose. Much like Weapon & Character dice offsets, Subweapon offsets are not indicated in the My Stats menu. It is entirely possible that the missing Subweapon dice are a bug.
While the average of these ranges is treated as sheet AP, there is no corresponding ‘Offhand Die’. Rosar has 4 possible APs it can roll, Kutum and Nouver have 3, and Oros only has 1 possible AP. Instead of getting actual dice, we simply get negative AP offsets. Again, these offsets are not shown in the ‘My Stats’ window. They are true ‘Hidden’ (negative) AP.
Astute readers may note that offhand offsets still look very similar to the standard weapon die offset formula:
Most offhands still appear to follow this offset rule, further bolstering the idea that the missing ‘offhand die’ is just a bug. The lost AP is so low that nobody, including PA, should realistically notice it unless doing detailed weapon damage testing.
Known offhand offsets:
*Theorized but not explicitly tested
So by now, you’re probably noticing we’ve danced around the topic of Awakening and Prime Skill damage. There is a very good reason for this.
When rolling Awakening Damage, the 70/30 split applies not only to both your weapon APs (which already aren’t listed alone on your My Stats page but rather are bundled into ‘Gear (Base)’) but also to the rolled dice value of your weapon, entirely separately from your weapon AP. We’ll start by giving the formula directly, then explaining the implications in more detail.
True Awakening AP =
True Succession AP =
Looking at these formulas at a surface level, they aren’t so terrible, but both introduce one specific, key difference from the damage formula for Absolute Skills: Fractional AP.
For all below examples, consider the die on the left to be ‘Die A’ and the die on the right to be ‘Die B’.
Usually, combining two dice rolls is easy. We add the results together! Suppose you roll a 3 on Die ‘A’ and a 4 on Die ‘B’ for a total of 7:
Likewise, rolling a 4 on Die ‘A’ and a 3 on Die ‘B’ also gives a total of 7. We actually have many different ways to get a total of 7 (6+1, 5+2, 4+3, etc)!
But what if we weight the values of these dice 70/30, like in BDO? What happens to these two identical rolls?
4 + 3 (3.7) is no longer the same as 3 + 4 (3.3)! Rolls that were previously identical now produce new, fractional values. In fact, there are now no 2 combinations of Dies ‘A’ & ‘B’ that produce the same value. Originally, 2d6 only had 11 unique values. Now, all 36 combinations are unique!
For larger dice, there are some combinations that are still equal, eg (3, 7) and (7, 3). However, we see a much wider range of possible values.
BDO doesn’t truncate fractional AP values until the final step of damage calculation. Until then, fractional AP is very possible, and the 70/30 split provides a way to generate quite a bit of it. When you roll damage for Pre-Awakening/Absolute skills, your dice/roll range is usually fairly comparable to your number of possible damage values. Prime/Awakening skills mix this up, opening up many more possible damage values via Fractional AP.
Just like our 2d6’s above, once you apply the 70/30 split, the possible values are increased by many times, so simple damage rolls with 6-8 values can suddenly start showing 50+ values.
As an example, let’s take a 100% Absolute vs Awakening Skill and a 1000% Absolute vs Awakening Skill. Suppose the smallest possible Weapon Dice combination: Krea mainhand (1d3) and Dandelion awakening (1d10). Let’s also assume the smallest character die of 1d5 (Tamer/Wizard/Shai).
For this example, our dice can roll 3-18. For our 100% Absolute Skill, damage at low AP might come out to 3, 4, 5, … all the way up to 18 damage. Simple as.
When you scale that up to the 1000% Absolute Skill, your roll range doesn’t change, only the final damage does. So you get 30, 40, 50, …, up to 180. Makes sense, right?
But now, if you read through the Awakening and Prime formula, you’ll probably notice that almost every value between 3, 4, 5, 6, and so on is possible for the base roll. Likewise, for our Awakening Absolute, almost every value between 30, 40, 50, and 60 is now possible because almost every combination of dice generates a unique value due to the 70/30 split.
Applying .7 and .3 modifiers to your weapon dice before adding them fills in most of the missing gaps in your final damage numbers. If you test our 1000% Awakening Skill, you’d immediately notice that your range of damage rolls is suddenly batshit crazy compared to the nice, tame 1000% Absolute.
At lower AP values and skill percents, this increased gap-filling between damage numbers manifests as a normally expected distribution (eg 3, 4, 5, 6, 7). It only consistently appears once you hit 10x multipliers and above, and you’ll even start to notice gaps in the numbers at ultra-high skill percents (eg 1500%+), especially at the very low & very high ends of the damage range.
The worst part is, this complexity doesn’t increase damage at all. It only fills in values between the normally-observable damage values. All of this work doesn’t result in any significant change to your Min or Max value, nor is there honestly a real good reason for all this extra math the game is doing. You still have almost the same exact range as before, it’s just more finely distributed.
Damage calculations, however, will be wildly off if you don’t account for this mechanic. Without calculating the fractional 70/30 AP values for both dice, the min & max damage values for a skill are almost impossible to estimate, because it’s not using your Awakening Die or your Mainhand Die. It’s using a strange mix of both that generates a shorter range for Awakening skills, a larger range for Prime skills, and way too many values in between to allow clean measurements. Averages, at least, are still reliable even without this mechanic.
It may seem overly obvious to say, but BDO was written by software developers. This means that we can assume they generally think like software developers and follow well-established development practices for both code performance and scalability. While approaching this project, we actively kept in mind a concept of ‘How would most software developers have implemented this?’.
For anyone unfamiliar, ‘floating-point’ values refer to values with a decimal point, eg ‘1.1’ or ‘0.345’. With integers, there are a finite number of values between, say, 0 and 255. These can be represented with 8 bits (0’s or 1’s) in binary form, the machine’s native language. However for real numbers, there are infinitely many numbers just between 0 and 1, so computers are forced to adopt a new way of representing decimals. A fixed number of bits is used to approximate the decimal you want. Most ‘floats’ are 4 bytes, and there are double-precision ‘doubles’ that are 8 bytes, allowing for increased precision. Due to the special form this data takes, the normal CPU circuits for integer addition/subtraction/multiplication/division cannot be used. Dedicated floating point units in the CPU (‘FPUs’) are usually much slower for basic mathematical operations.
While modern CPUs have gotten much better at floating point operations, integer operations are historically much faster. Most software developers are trained to use integer math instead of floating point when performance is required. Thus from a pure performance perspective, we assumed that all calculations in BDO are likely done with 64-bit integers, the common word-size for modern machines and tailored our formulas to follow this. The results were excellent: we were able to exactly replicate BDO damage numbers via our own calculator, strongly supporting that BDO uses integer calculations internally. Calculations with floating point numbers can vary by 1-2 damage, depending on rounding/truncation error.
Additionally, integer division is the most expensive operation (consumes the most CPU cycles), so we assumed divisions were minimized. If possible, all values should be multiplied together with a single division at the end.
Lots of BDO’s values are clearly decimals. We have skill percentages, AP cap multipliers, and even the 5% rule. So how can all of this be done with integers?
Let’s start by looking at BDO’s base damage (below DR) formula for Punch (100%x1):
Instead of multiplying AP (an integer value) by 0.05 (a floating point value), we can treat the float as a fraction: 1/20. A proper integer expression would be:
In this case, this is optimal, as we’ve exchanged one floating point multiplication for one integer division.
It gets more complicated for skill percents. Let’s consider a skill with 368% damage:
3.68 can’t be easily changed into a fraction like 0.05 could, but we can still represent it as a simple improper fraction: 368/100. With this, our formula becomes:
This is a clean integer operation, but we now have a problem. We’re doing two divisions, which is the most expensive operation. However, we can reduce this down to 1 by making a few assumptions:
Since we know these two things are always true, it’s safe to combine our two division into one within the code:
Again, this is a big improvement, since we’re back to one division. We can also simply pass in the straight skill percent, rather than converting it to ‘3.68’ first. This is both easy and very fast, but there’s still one more problem. As the formula gets more complicated, it can be difficult to keep track of all of your values. If your divisor is 230000 (eg 2 * 368 * 7 / 23000) and you have to change something (say, for a new mechanic), how do you keep the formula clean?
The easiest answer is to keep your denominator as a fixed power of some number: usually either 2 or 10. 2 is the most efficient because there are special operations called ‘shifts’ that the CPU can use for division and multiplication by 2. However, humans tend to learn base-10 growing up, so fixed powers of 10 are much easier for us to read. A clean and performant formula would look like this:
In this case, we converted 0.05 to 5 / 100 and 368% to 368/100. Since these are constants, we unify the denominator into 10000 (100*100). This creates a formula where we clearly see all of the input values, and we can easily check if the denominator is correct by combining all of our powers of 10 used for adjustment. The only cost is one additional integer multiplication, which is still pretty fast (much faster than division).
This might seem like overkill, but it becomes very important when dealing with complex formulas like the above-Cap formula in order to keep them readable but performant.
Using these higher powers of 10 also allows Fractional AP (for Awakening & Prime skills) to exist while still using integers, as 0.7 is just 7/10 and 0.3 is just 3/10. Fractional AP works just fine if we likewise boost up all AP by 10, then divide by 10 at the end. Alternatively, it’s completely possible that PA uses floating point numbers for AP. We’ve seen several rare truncation issues where a value is exactly one less than expected that would suggest floating point error.
We’ve already discussed that integer division is slow, but there’s one more quirk. In most programming languages, (integer) / (integer) does not give a float; it gives another integer. Integer division throws away the remainder (eg 10/3 = 3, not 3.333). This behavior is called ‘truncation’, and division that performs truncation is called ‘floor division’.
BDO probably uses floor division for its damage values rather than rounding. If we calculate our potential damage to be 248.6, BDO will always show a damage of 248. This is easiest to see when you are far below monster DR. While below DR, the damage for Punch (100%x1) will step up 1 for every 20 AP, but you won’t see any improvements in between.
Floor division is generally represented as ‘//’ rather than ‘/’, as some languages like Python 3.x actually auto-convert to float on division. ‘//’ explicitly states that floor division is intended.
Most BDO damage formulas are a chain of multiplications, followed by a single floor division at the end.
It is actually a very challenging problem for computers to generate good ‘random’ numbers. Unlike true-random events like a coin flip or dice roll (which can still be biased), computers must generally use an algorithm to try and generate seemingly-random numbers. These generators are referred to as pseudo-random number generators, or PRNGs.
There are many different algorithms for PRNGs, and it is completely unknown which one BDO uses. Behavior of a program with random rolls can change drastically depending on the PRNG algorithm, especially a bad one. However, random rolls are very common in most game programming, so there are already some standardized libraries available. Regardless of whether BDO actually uses a specific library, these can let us simulate BDO’s random rolls. We use Python’s ‘random’ library for our testing, which uses an algorithm called the ‘Mersenne Twister’ underneath.
Most PRNG libraries contain at least these two methods:
Example for 10 random rolls from 1-10 in Python:
>>> from random import randint
>>> for i in range(10):
... print(randint(1, 10))
...
8
4
5
5
6
10
2
7
7
2
From our testing, BDO always appears to use random integer rolls (eg randint). This occurs for:
Species AP is simply calculated as:
species_roll = randint(7 * species_damage // 10, species_damage)
This means Species AP will take an integer value between a floor-division 0.7*species_ap up to and including the full Species AP value.
Dice rolls (eg 1d5) are calculated as:
randint(1, 5)
For multiple dice rolls (eg 1d5 + 2d3), each die is rolled separately and then added together:
randint(1, 5) + randint(1, 3) + randint(1, 3)
Khalk Canyon in Dreighan:
Known to date, Khalk Canyon is the only grind spot in the entire game that does not appear to have any form of an AP softcap. The monsters have 35 DR, and Break at 37 AP.
For Any form of low to high testing on raw damage, Khalk is probably the best place to go, and if you just wanna see big, fat, fucking numbers.
Waragons:
Waragons have no DR. Like, at all. 0. Their AP softcap comes at around 250 AP, and the softcap ratio is a nice, even, 0.5. You can do reasonably good under softcap damage testing here, and it’s probably the best place to visibly see your damage gain per point shift, for those working on lower gear and optimizing for low AP testing. It’s also really great for finding out Character Dice, since pretty much everything will do full damage and you can get an easy grip on your variance.
Mirumoks:
Okay, so mirus doesn’t really offer any particularly special advantages, but there is a Voraro there, right next to Main Rotation, across the road from the far stump on the right, that we have named Finn. He is the best Voraro there ever was, and he helped figure a lot of early math out.
Some additional useful spots and their benefits are listed here.
Let roll() be an expression to convert dice expressions (eg ‘2d5’) into proper randint() rolls.
a += b is a programming shorthand meaning ‘a = a + b’. Similarly, a -= b means ‘a = a - b’ and a*=b means ‘a = a * b’.
ap_roll = raw_ap # start with our base AP (already includes monster_ap, if relevant)
ap_roll += roll(character_dice) - character_dice_offset # apply character dice
ap_roll -= subweapon_dice_offset # apply subweapon offset (no dice)
if awakening_skill:
if mainhand_weapon is null: # no mainhand weapon equipped
raise SkillError(“This skill is currently unavailable”)
ap_roll -= awakening_weapon_ap
ap_roll += 0.7*(awakening_weapon_ap + roll(awakening_die) - awakening_die_offset)
ap_roll += 0.3*(mainhand_weapon_ap + roll(mainhand_die) - mainhand_die_offset)
else if prime_skill and character_can_awaken:
ap_roll -= mainhand_weapon_ap
if awakening_weapon: # no awakening weapon equipped
ap_roll += 0.7*(mainhand_weapon_ap + roll(mainhand_die) - mainhand_die_offset)
ap_roll += 0.3*(awakening_weapon_ap + roll(awakening_die) - awakening_die_offset)
else:
ap_roll += roll(weapon_dice) - weapon_dice_offset # apply weapon dice
species_ap_roll = randint(7 * species_damage // 10, species_damage) # compute species ap
overcap_ap = ap_roll - ap_cap # figure out how much AP is over the AP cap
if overcap_ap > 0:
ap_roll = ap_cap # reduce our AP roll by the amount over cap
else:
overcap_ap = 0
special_atk_multiplier = 1.0
if critical_hit:
# Assume ‘bonus_crit_dmg’ and other bonuses are already 0.03 for 3%, etc
special_attack_multiplier *= 2.0 + bonus_crit_dmg + bonus_special_atk_dmg
if down_attack:
special_atk_multiplier *= 1.5 + bonus_down_atk_dmg + bonus_special_atk_dmg
elif air_attack:
special_atk_multiplier *= 2.0 + bonus_air_atk_dmg + bonus_special_atk_dmg
elif counter_attack:
special_atk_multiplier *= 2.0 + bonus_ctr_atk_dmg + bonus_special_atk_dmg
elif speed_attack:
special_atk_multiplier *= 1.5 + bonus_speed_atk_dmg + bonus_special_atk_dmg
elif back_attack:
special_atk_multiplier *= 1.5 + bonus_back_atk_dmg + bonus_special_atk_dmg
eap_damage = ap_value - enemy_dr + species_ap_roll
# This check is equivalent to eap_damage < 0.05 * ap_value
# but is faster with no floating point issues
if 20 * eap_damage < ap_value:
# Use the base damage formula and just end here
final_damage = 5 * ap_roll * skill_percent * special_atk_multiplier // 10000
else: # use the above-DR formula
# There are ways to treat ap_cap_multiplier as an integer for use with a single final division
# but there’s complexity that we won’t explain here. A float is nearly always good enough.
unscaled_damage = eap_damage + ap_cap_multiplier * overcap_ap
final_damage = unscaled_damage * skill_percent * special_atk_multiplier // 100
Appendix 1 - Testing Procedures
There appears to be no significant difference between any damage on Global Labs and Live servers. We confirmed this on NA servers via a series of tests, 3 of which are documented below.
We killed a Cron Castle Senior Soldier on both Global Labs and NA Servers with a 62 AP Shai. Gear and AP values were identical, with 0% critical hit rate. 10+ mobs were killed on each client.
The Cron Castle Senior Soldier (external link) has 264 HP. On Global Labs, observed damage with 62 AP ranged from 13-17 (avg 15). On average, a kill should happen in 17.6 hits.
Average Attacks to Kill
Expected average for 61 AP: 18.86
Expected average for 62 AP: 17.60
Expected average for 63 AP: 16.50
Global: 18.00
NA: 17.54
Both NA servers and Global Labs appear very similar for PvE damage, within 1 AP of accuracy.
Centaurus Seekers seem to have less damage variance than other mobs and are ideal for EvP damage testing. We recorded damage dealt by a Centaurus Seeker vs a 30 DR Shai on both Global Labs & NA Servers. 20-30 hits were recorded on each client for the Centaur’s Swipe Attack and 5-10 hits were recorded for its Stab Attack.
Average Damage Taken
Attack | Global Labs | NA Server |
Swipe | 333.3 | 331.3 |
Stab | 550.5 | 556.0 |
Observed Damage Ranges
Attack | Global Labs | NA Server |
Swipe | 314-368 | 318-345 |
Stab | 530-575 | 530-570 |
Damage varied by ~40-45 points but averages varied by only 2-6 points, with neither Global nor NA clearly higher or lower across both mob skills. This data strongly suggests that mobs do the same damage on Global vs Live servers vs the same DR.
To test PvP damage, we had two Trial Shais punch each other on both Global Labs and NA Servers. A 157 AP Attacker (no Human damage) hit a 25 DR defender. 50+ hits were recorded on each client.
Average Damage
Global: 3.70 damage per hit
NA: 3.79 damage per hit
Only 3 & 4 damage hits were observed. This test is not conclusive without:
However, at glance, PvP Damage appears to be very similar, if not exactly the same on NA vs Global Labs.
Global labs offers the ability to view damage numbers (much like other conventional MMOs/RPGs). This feature is not available in the vanilla game (live servers), but to enable them in Global Labs, go to:
To actually see damage numbers, you must have at least C-Rank Knowledge on any monster:
We strongly recommend doing the following when testing:
We heavily leverage the unarmed ‘Punch’ skill for both spotbreaking and character dice testing. To use it, remove your mainhand weapon and simply perform the only attack left to you (LMB on PC). Your character will throw out a basic punch.
We have validated this ‘Punch’ to be a 100% x1 skill, even if there is no tooltip. It allows:
However, Punch uses Melee AP even for Magic & Ranged characters. Be careful to use a Melee character if you’re testing Punch. The Melee AP of Magic & Ranged characters may differ from their primary AP, and only their primary AP type shows in the ‘My Stats’ window.
Some characters have their punch overridden to another skill (Ranger’s unarmed attack is actually her ‘Round Kick’ skill). Some characters also have a 10-15% Critical Hit Rate added on their punch (eg Warrior).
Yes, Punch has proven very reliable for Melee characters across a wide variety of tests.
If you’d like to confirm for yourself that Punch is 100%x1, follow these steps:
WARNING: Punch is the only skill in the game still affected by the Rain debuff. During and for ~10 min after Rain, Punch will only deal 50% damage, regardless of your AP. Be careful when testing with Punch!
‘Spotbreaking’ is the process of identifying the DR, AP Cap, AP Cap Multiplier, and Species Type for monsters in a grindspot in order to build ideal gearsets that min-max damage.
Based on the damage formulas presented in this doc, we can break damage down into 3 ranges:
These can be reduced to finding 3 lines in observed damage:
These 3 lines can be visualized like this:
To ‘spotbreak’, all we’re really doing is finding these 3 lines, the points where they intersect, and the slope of the final ‘AP Cap’ line. At a bare minimum, we need:
If you’re in a hurry, you can always record all values and compute an average. You’ll get decent numbers. However, the rolls from character & weapon dice obviously cause some variance in damage. We can completely remove this if we know the dice!
We do this by recording only the highest & lowest damage values observed for each AP. As an example:
Regardless of how often any value shows up (and min/max will be rarer), we would only record:
Min = 235
Max = 265
We then know that a minimum roll of our Character & Weapon dice gives 234 damage, and a maximum roll gives 254. Instead of recording a value for our 100 AP, we would record two values:
97 AP = 235 damage
103 AP = 265 damage
If desired, you could work out the other dice values, but we’ve found min/max is nearly always enough. This completely removes the effects of dice! These values can be graphed together on the same chart.
Damage below DR will be noticeably low: often just a few consecutive values (like 65, 66, 67). Gather 2-3 of these values, starting very low and moving upward.
When you find the DR breakpoint, your values will immediately jump up to be much higher. Right at the DR breakpoint, you will often see low rolls still showing below-DR damage. This makes it very clear that you’re close. By using the min-max method, you can still get valid data points from these split rolls (1 will be above DR, and 1 will be below).
You can home in on this DR breakpoint more exactly, but Character/Weapon die rolls can make this difficult to measure. Even the lowest die combination (1d5 char + 1d3 weapon), can roll 7 different damage values! To get a more exact damage value, we’ll calculate the intersection of 2 lines.
Collect a few measurements above DR. You should see your damage go up by exactly your skill% for each point of AP (eg 1 point of AP for a 500% skill should show as a 5-damage increase). If it goes up by less than this, you may be above the AP cap. Set aside this measurement for now, and decrease your AP a little.
You now have enough to plot your 2 lines (below DR & above DR). Their intersection is the DR Breakpoint (it is NOT the DR). We recommend using computer software (eg Excel or any number of statistics programs) to compute the least-squares line for Above-DR and Below-DR. 2 points can be slightly inaccurate due to rounding errors. If writing your own software, a Theil-Sen estimator is exceedingly good for this too.
You should have 2 lines:
Below DR Damage = slope_below * AP + offset_below
Above DR Damage = slope_above * AP + offset_above
Notice that slope_below should be 0.05*skill_percent (eg 0.25 for our 500% example). If not, check your measurements. Likewise, slope_above should be skill_percent (eg 5.0 for our 500% example).
Your DR Breakpoint is the AP at which these lines intersect. We don’t have to adjust for your skill percent:
This AP is the DR Breakpoint. We can get the actual DR via the formula from this doc:
DR = (DR Breakpoint) / 0.95
AP Caps are less pronounced. Keep increasing your AP until you observe a lower-than expected damage and/or a reduced range of rolls. The difference between observed min & max rolls should reduce above the AP Cap.
We’ll assume a standard 70% AP Cap Multiplier (the most common, eg 30% damage reduction above cap) along with our 500% skill. Assume that at 250 AP, we see these damage values:
910, 915, 920, 925, 930, 935
We should already know the DR from an earlier step, so we should notice two things:
Once you’re 100% sure you’re over cap (if in doubt, just ook harder and stack more AP), collect a few data points. The slope of this line will be (AP Cap Multiplier)*skill%.
Just like DR, we can find the exact AP Cap by setting the Above-Cap line equal to the Above-DR line to find the intersection:
No additional modifications are necessary. This AP is the AP Cap. ‘slope_above_cap’ is your AP Cap Multiplier.
As a reminder:
Any spot can be a viable testing location for most things if you can easily get:
However, you may not always have DR & AP Cap info, and some spots are more convenient by design. Below are some of our favorite testing for general game mechanics. More details on Khalks/Waragons/Mirumoks can be found here.
The best way to determine character dice varies by the character’s AP type. It is easier to find the dice of Melee characters and slightly more complicated for Magic/Ranged characters.
When testing character dice, Punch is by far the most effective method of testing, as it is a 100% x1 skill and avoids dealing with a weapon die entirely.
The distribution of possible values for a Punch allow us to determine the exact number of dice. 1d5 - 3 & 2d3 - 4 have identical ranges (+/-2). However the distribution of numbers over a large sample can tell you which set of dice a character runs. For a 1d5, all observed values will be equally likely (eg you would see similar counts of 10, 11, 12, 13, & 14 damage). For a 2d3, values will be grouped around the middle values (eg 12 will be the most common value, and 11/13 will be more common than 10/14).
The Punch method is not viable for non-Melee characters, as their non-Melee AP & dice can differ (proven on Sorc). It’s far better to determine Weapon Dice on a Melee character (and/or use a known weapon), then evaluate the range difference with the same weapon type for Magic/Ranged AP users.
Use a low-roll weapon like Krea (1d3) and otherwise follow the same instructions for Melee Dice. The character die will be the number of observed values minus the Weapon Die (-3 for Krea). If you observe 12 possible values with Krea, you have a 1d9. It may take some time to observe the min/max values, as both dice must roll min/max respectively.
When dealing with weapon dice for Magic/Ranged AP users, very large sample sizes may be needed to tell the difference in number of dice (eg 1d5 vs 2d3), but even if you measure incorrectly, the max/min damage calculations will work. Only average values will differ slightly between something like (1d5 - 3) & (2d3 - 4).
You can figure out the exact dice by comparing the distribution of observed values to the theoretical distribution. We strongly recommend using a tool like https://anydice.com/ (external link) to visualize dice distributions.
If you test a 1d5 character with Krea (1d3), the distribution of possible roll combinations should look like this:
By comparison, if the character is 2d3 (same range), the distribution would instead look like:
Notice that with more dice, the middle of the distribution becomes more common, and your min/max values become less common. It may take very large sample sizes to see these distributions emerge clearly.
The die itself is already roughly visible on the weapon. 10-14 is 5 values, or 1d5. However, we don’t know:
For testing Weapon Dice, we recommend using a 1d5 character (Wizard/Tamer/Shai) to reduce the number of possible rolls. Much like Magic/Ranged Character Dice, we start with a known Character Die and use the number and distribution of observed values to determine the dice.
We discovered Subweapon offsets while testing at Sausans. Halfway through the testing, we equipped a base Kutum, but our observed damage dropped below what we had observed before for the same value. We quickly noticed that:
Likewise, the best way to test a subweapon offset is:
To elaborate, if you equip an offhand with a -2 penalty (eg Kutum/Nouver), your observed damage at 100 AP will match the damage rolls for 98 AP without an offhand.
Against a mob with known DR, damage is just skill%*(AP-DR). If you’re using Punch, this simplifies to (AP-DR), so all damage values (including your min & max rolls) will simply be some offset X above the same roll with an offhand equipped.
As noted in the doc, Species Damage is a random roll, and this roll’s range gets bigger as you increase your species damage. As a result, it is not something easy to measure. We need to remove as many confounding variables as possible.
To do this, we recommend testing at an AP-Capped spot: either Sausans for Human Damage (slightly easier to get) or Fadus for Kamasylvian Damage.
This removes all other random rolls. Only the species damage roll remains, which we’ve experimentally determined to be (0.7*species, 1.0*species).
To replicate this experiment:
You should see something like this:
We can clearly see that:
Plotting just minimum rolls and maximum rolls on their own can allow you to determine the exact random range, based on the slopes of the lines:
From these graphs, we very clearly see that Minimum Damage scales with 0.7*(Species Damage) and Maximum Damage scales at 1.0*(Species Damage).
This means that our random roll is between (0.7*species_damage, species_damage). To check if this is a continuous random range, we can record all observed values. Every value should be possible to roll. For example, at 30 Species Damage, we should be able to observe rolls of (AP Cap Damage) + 21, 22, 23, 24, 25, 26, 27, 28, 29, & 30. We have confirmed that this is the case.
From here, it is trivial to confirm that species damage behaves exactly the same at all AP values above DR, not just above AP Cap. It adds a random roll to the AP before scaling by skill%.
To check how Species Damage behaves below DR, we need to perform a similar check. We recommend Mirumok (333 DR), though Kama damage can be harder to get. If you’re already at Sausans, Shultz (240 DR) isn’t a bad option. Elvia Bhiragi Den (390 DR) is also valid but much more dangerous.
Start with a known value just below DR (max roll cannot reach DR), and increment Species Damage. You should observe that your damage does not increase at all. If you add enough species damage such that the max roll of 1.0*(Species Damage) would push you over the DR Breakpoint, you will start seeing a single much higher roll that breaks DR. Incrementing Species Damage from here will start pushing all of your rolls over DR.
To understand this behavior, it is essential to understand exactly how damage is calculated below and above the DR Breakpoint (0.05*AP below or (AP-DR) above, all multiplied by skill%). While Species Damage is not applied at all below DR, the formula switches over to the Above-DR formula, when the Above-DR formula would do more damage. Since the Above-DR formula does include Species Damage, we can cross the DR Breakpoint using only Species Damage. We simply won’t see any damage increase until we suddenly break DR earlier than expected.
Regardless of your choice of AP, you should observe that Species Damage does not increase damage below DR but does shift the DR breakpoint downward. This shift will differ for min vs max rolls (not shown below):
Unlike AP/DR, where we had a big toolkit, DR Shred can only really be tested with skill effects and add-ons.
As established in this doc, DR Shred is pretty simple: it just reduces DR by a flat value in most cases. There’s no extra 5% modifier. So what should we expect to see when testing DR Shred?
We include a figure from our DR Shred testing at Turos to illustrate:
The first major takeaway is that the DR Breakpoint has shifted considerably, as expected. On measurement, this shift is more than 35 AP though! If the exact mechanics behind DR and DR Breakpoints aren’t known, this can easily lead one to believe that DR Shred is more effective than it is (~1.05% effect). This is simply a result of the 5% rule (calculation of DR Breakpoints), but honestly, we had trouble digesting it too. It took a tabulated breakdown to convince us that something else was going on, and this eventually led to discovery of how actual DR relates to breakpoints.
The other major takeaway from this testing is that the AP Cap doesn’t change. We see the same damage reduction at the same AP. However, we were able to break DR earlier, so we gain 1:1 damage from AP for an additional 35 points in this case. This is the magic of DR Shred!
Now, let’s return to the DR Breakpoint shift being more than 35 DR. It’s natural to assume that DR Shred simply applies more than listed on the tooltip, but this runs into a major problem when we start looking at damage differences:
AP | 0 Shred | -35 Shred | Damage Diff | Unscaled Diff |
324 | 267.5 | 268 | 0.5 | 0.0 |
343 | 283 | 283 | 0 | 0.0 |
365 | 301.5 | 323.5 | 22 | 1.3 |
366 | 302 | 340.5 | 38.5 | 2.3 |
390 | 322.5 | 723 | 400.5 | 24.1 |
402 | 364 | 914.5 | 550.5 | 33.1 |
407 | 423.5 | 997.5 | 574 | 34.5 |
469 | 1446.5 | 2028.5 | 582 | 35.0 |
486 | 1729 | 2311.5 | 582.5 | 35.0 |
488 | 1762.5 | 2344.5 | 582 | 35.0 |
489 | 1776 | 2358 | 582 | 35.0 |
491 | 1805 | 2387 | 582 | 35.0 |
492 | 1813 | 2400.5 | 587.5 | 35.3 |
493 | 1833 | 2415 | 582 | 35.0 |
494 | 1841.5 | 2423.5 | 582 | 35.0 |
497 | 1887 | 2469 | 582 | 35.0 |
526 | 2224.5 | 2806.5 | 582 | 35.0 |
584 | 2899.5 | 3481.5 | 582 | 35.0 |
618 | 3295.5 | 3877.5 | 582 | 35.0 |
668 | 3877.5 | 4459.5 | 582 | 35.0 |
This table shows, from left to right:
We immediately see that there is no difference in damage when both tests (with & without shred) are below the DR Breakpoint. A damage difference starts building once the -35 DR Shred hits its Breakpoint, but as soon as the 0 DR Shred testing also hits the DR Breakpoint, this damage increase stops. We see a flat damage difference between 0 Shred and -35 Shred from there on, and that difference…equates to 35 AP. Since we know that damage over DR is very clearly & measurably (AP-DR)*skill%, this makes sense. -35 DR Shred just reduces DR by 35, and this is identical to increasing AP by 35 in our formula.
This led us to question why the DR Breakpoint didn’t also shift by exactly 35. DR clearly functioned as expected for damage. The only solution we could come up with was that the DR Breakpoint was not at DR. As soon as we looked at the difference, we discovered that DR was always off by the same amount - a specific percentage close to 5%. So we solved for this unknown value, knowing that DR shred clearly applied correctly in the Above-DR formula.
Assumptions & Data:
For 0 DR:
Subbing in our known AP0, we find that DR should be ~380:
This is a little surprising. It would mean that DR is different from the DR Breakpoint. It gets especially interesting once we realize that BDOCodex shows the same DR Value!:
https://bdocodex.com/us/npc/21912/ (external link)
Now, let’s take a look at the -35 DR shred case, which has our X:
Subbing in our observed breakpoint (AP35 = 363), we get:
Finally, we sub in the DR we just derived from our 0-shred case (380):
This… is probably 1.0. Our AP0 and AP35 values were measured. They could easily have small errors in them. We also know that BDO uses floor division in damage calculations. Any truncation could have easily led to this small error. Regardless, this means that our ‘mystery’ variable was 1 all along!
Now that we know ‘X’, let’s take another look at a ‘DR Shred’ formula, subbing in X = 1:
And there we have it. DR Shred applies naturally to the DR (no special multiplier), but it gets scaled by the same 0.95 from our 5% rule after the shred. This is what shifts our breakpoint down by ~5%:
Since it’s fresh in the head, it’s also worth mentioning that using BDOCodex as a reference guide for data/information and verification is a wholly worthwhile process.
Like the previous Turo Berserker, almost every mob in the entire game that is actually present in game tends to sit around the listed value on BDOCodex! Exceptions generally are monsters added after the latest data seeding from the side of BDOCodex. Paying attention to patch notes and changes to mobs helps in this case.
As an example, let’s look at the Firewood Orc from Elvia Red Orcs:
https://bdocodex.com/us/npc/24411/ (external link)
Unlike the Turo Berserker, this mob is off from what we measured (600 DR). However, this mob received changes after the latest codex seeding, so when we combine BDOCodex with BDO Patch Notes, the result is still fairly reliable (external link):
https://www.naeu.playblackdesert.com/en-US/News/Detail?groupContentNo=3052&countryType=en-US
Keeping in mind that NA versions of the game mistranslate DR as DP (waiting on a fix, PA), and based on the bottom item in the change log, let’s try increasing BDOCodex DR by 10% (1.1):
550 * 1.1 = 605
This isn’t perfect, but it’s really close to our measured 600! Maybe we just measured a few DR off, or maybe PA was lazy in giving the exact % change. Regardless, it takes a useless outdated DR value and gives us a very good estimate of Red Orcs without ever needing to test there. Of course, we still strongly encourage manual validation of all spotbreaking values.
It is also worth exercising caution and ensuring you have the right mob. There’s a lot of trash mobs and unused variants, and many, many shared names across different mobs.
You can generally verify you’ve got the right mob if:
Testing Awakening Damage is infuriating at best. We strongly recommend against it unless you’re ready for hours of testing and multiple new analytical mechanics for very little gain. While the normal Mainhand/Pre-Awakening damage formula gives a good estimate of Awakening/Prime damage, there is an additional fractional AP roll that creates literally hundreds of unique damage rolls (~30 unique damage values for each roll of your character die). For the smallest weapon & character dice, this is ~5*3*10 = up to 150 values. For the largest dice, this can be up to 9*19*12 = up to 2052 values. You can probably guess how much fun it is to wait for a min or max roll out of 1000’s of possible values…
Still with us? If you insist on testing this, be sure to carefully control every applicable variable:
We can use AP Hardcaps to reduce the range of possible rolls and make our lives easier. Unfortunately, this doesn’t make the lowest values any more common. Only smaller dice will help with that (eg Tamer w/Krea).
We recommend Sausans (190 DR, 280 AP Cap, Human) for a reliable AP Hardcap spot.
To get started:
We know that Blackstar (our recommended Awakening Weapon) has a 1d12 - 6 die, so we ideally want to see enough values below cap to be interesting (allow us to identify patterns). We probably need 5-6 values to be safe.
In our Sausans testing, we throw out 284 AP, because it only shows 1 value (1010) below our damage cap (1012). There simply aren’t enough values to be interesting. Instead, we focus on 283 AP, where we observe 7 unique damage values - something very manageable compared to 100’s or 1000’s!
While testing Succession damage at Sausans, we noticed two things:
Both of these things suggested something nasty: unlike everything so far, the underlying AP might not be integer values! Unfortunately, the BDO UI only shows integer AP values (in ‘My Stats’) and integer damage values. So how can we find out the actual fractional AP internal to the game?
The answer is that we can’t find the internal values exactly, but we can narrow them down to a range with math!
We know that:
This means that, in the absence of any other mechanics like Species Damage or DR shred, we can estimate the EAP just by dividing our damage by Skill%. Furthermore, we can establish bounds for the possible EAP based on integer truncation. The final value can only vary by up to (but strictly less than) +1, or we would have seen a higher value!
Our observed damage must always be less than or equal to the actual, internal EAP times the skill percent:
(Observed Damage) <= EAP * Skill%
Likewise, our observed damage plus one must always be strictly greater than EAP * Skill%. Otherwise, we would have observed a different damage number on screen!
(Observed Damage) + 1 > EAP * Skill%
These simplify to (1) our usual damage formula and (2) an interesting upper bound:
Rearranging (2) as above, we see that our underlying AP can only vary by up to
This is a simple but very powerful relation. This means that:
We can also use this range to determine if a value is a real AP Roll or must have resulted from a fractional AP. If a full, integer AP value does not exist between the unscaled EAP (ie (Observed Damage)/Skill%) and the same value plus (1/Skill%), then it either:
If there is a fractional AP roll, we should see every possible damage value. We actually do see this for most Awakening/Prime skills in the middle of their damage range (near the average). However at the low end of our possible rolls (eg the numbers we see below a hardcap), we clearly see gaps. This means that fractional AP is the most likely explanation.
Now that we’re expecting fractional AP, let’s look at an example for an 1156% skill:
Observed Dmg | Min EAP (Dmg / Skill%) | Max EAP (+1/Skill%) | Exact EAP? |
3080 | 266.4359862 | 266.5224913 | No |
3084 | 266.7820069 | 266.8685121 | No |
3086 | 266.9550173 | 267.0415225 | Yes: 267 |
3087 | 267.0415225 | 267.1280277 | No |
We see that one of the values was probably a straight-up ‘267’ EAP roll, but the others were almost certainly Fractional EAP. Still, using this technique, we can already narrow down the possible internal EAP values to a resolution of ~0.10. Unfortunately, this isn’t enough to make any really good deductions. We need a way to narrow down this range even further!
So how can we narrow down the possible EAP range even more? Well, we could consider using different skills at the same EAP, but:
So varying Skill% is possible, but it has a lot of problems and will be very slow. Instead, we know that some critical hits have that weird +1 behavior. Can we leverage this somehow?
As it turns out, yes! Critical Hits are a reliable 2.0 damage multiplier, but we can also very the damage multiplier very easily:
With these hearts, cups, and crystals pretty freely available on Global Labs, it becomes possible to very easily create and very quickly switch between many different Critical Hit Multipliers:
2.0, 2.03, 2.06, 2.09, 2.10, 2.13, 2.16, 2.19, 2.20, 2.23, 2.26, & 2.29.
We recorded all observed damage values for most of these Critical Hit Multipliers on a Succession Tamer with 283 AP (after adjusting for a Kutum offhand penalty) at Sausan Garrison:
Crit Multipliers: | ||||||||||
Base Damage | 1 | 2.03 | 2.06 | 2.09 | 2.13 | 2.16 | 2.19 | 2.23 | 2.26 | 2.29 |
1012 | 1012 | 2055 | 2085 | 2116 | 2156 | 2187 | 2217 | 2257 | 2288 | 2318 |
1010 | 1010 | 2050 | 2081 | 2111 | 2151 | 2182 | 2212 | 2252 | 2283 | 2313 |
1009 | 1009 | 2048 | 2078 | 2109 | 2149 | 2179 | 2209 | 2250 | 2280 | 2310 |
1006 | 1006 | 2043 | 2074 | 2104 | 2144 | 2174 | 2205 | 2245 | 2275 | 2305 |
1005 | 1005 | 2041 | 2071 | 2102 | 2142 | 2172 | 2202 | 2242 | 2272 | 2303 |
1002 | 1002 | 2034 | 2064 | 2094 | 2135 | 2165 | 2195 | 2235 | 2265 | 2295 |
998 | 998 | 2027 | 2057 | 2087 | 2127 | 2157 | 2187 | 2227 | 2257 | 2287 |
So how can we get internal fractional EAP values from this critical hit data? Honestly, the exact same way we got them for base damage! Unscale them and look at the min & max possible EAP value:
This has the added benefit of amplifying the resolution even further by double (or better) the skill percent, since they’re both in the denominator! And just like before, we can bound this:
Now, let’s take a look at these values just for our ‘1012’ base damage value:
Crit Multiplier: | Crit Damage: | Min EAP: | Max EAP: |
1 | 1012 | 89.95555556 | 90.04444444 |
2.03 | 2055 | 89.98357964 | 90.02736727 |
2.06 | 2085 | 89.96763754 | 90.01078749 |
2.09 | 2116 | 89.99468368 | 90.03721425 |
2.13 | 2156 | 89.97391758 | 90.01564945 |
2.16 | 2187 | 90 | 90.04115226 |
2.19 | 2217 | 89.9847793 | 90.02536783 |
2.29 | 2318 | 89.97573993 | 90.01455604 |
But now we have 1 more cool trick we can do. Every one of these ‘Min EAP’ values is a true minimum (the actual value cannot be below it), so we can take the max of the mins. Likewise, every one of these ‘Max EAP’ values is a true maximum (the actual value can’t be above it), so we can take the min of the maxes.
This gives us an observed possible EAP range of: 90 - 90.00498256. This is accurate within 0.005 EAP!
Doing these steps for all observed values in our critical damage chart, we get:
Base Dmg: | Min EAP | Max EAP | Resolution (Max - Min) | Estimated EAP |
1012 | 90 | 90.00498256 | 0.004982561036 | 90.00 EAP |
1010 | 89.79503776 | 89.80568012 | 0.01064236338 | 89.80 EAP |
1009 | 89.6969697 | 89.70065956 | 0.003689866704 | 89.70 EAP |
1006 | 89.49771689 | 89.50191571 | 0.004198813835 | 89.50 EAP |
1005 | 89.39925572 | 89.40019666 | 0.0009409417887 | 89.40 EAP |
1002 | 89.09754825 | 89.10154173 | 0.003993480643 | 89.10 EAP |
998 | 88.77244056 | 88.8 | 0.02755943717 | 88.80 EAP |
These min & max possible values are so close that we can see a clear pattern emerge (shown under ‘Estimated EAP’). We see that 0.10 AP appears to be the underlying resolution.
In hindsight, we probably could have improved the resolution even further by using Back Attacks for a higher total multiplier.
We see gaps of 0.30 appearing between most of our lowest measured EAP values:
88.8, 89.1, 89.4, 89.7, 90
This number already means something to us, since we know that the 70/30 split exists! 0.3 is simply 30% of 1 Awakening Weapon AP in Succession (or 1 Mainhand AP in Awakening). But if so, shouldn’t we also see 0.7 AP intervals? As it turns out, we do:
88.8, 89.5
89.1, 89.8
Between these two 0.3 & 0.7 gaps, we’ve already explained all observed values! From here, it’s just a matter of (1) deriving the final formula and (2) confirming for other test-cases.
You can read/re-read ‘The Incredibly Stupid, Confusing, and Needlessly Complex World of Awakening & Prime Skill Damage’ for more details on the exact damage formulas, but we proceeded to confirm that these formulas hold for all Awakening & Prime skills.