Jump to content

Welcome to Obsidian Forum Community
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Photo

[MECHANICS] The Big "Attack Speed" Conundrum

Mechanics Attack Speed Recovery Base Values

  • Please log in to reply
122 replies to this topic

#1
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

Attack Speed Calculator

version 1.0.3, PoE v3.05 compliant


 
PREFACE:
- When I have just introduced myself to PoE, I quickly noticed that something feels strange. Weapon tooltips are vague. Attack speed bonuses are providing non-uniform gains. Also there have appeared many questions when it came to the build optimizations.
If you are interested in attack speed mechanics behind the game facade, than here it is, the aggregated info on this topic.

NOTE:
- This is still a WiP. Additional sections/explanations will be added over time.

  
BASICS:
- One of staple notions in PoE is [action]. Action is character's activity, be it a swing, pistol fire or spell cast.
- Every action consists of minimum two phases: [attack] which included the attack animation per se, and [recovery] which role-playing speaking is the duration for your character catching his breath and getting ready for the next attack.
- A specific set of ranged weapons, namely: crossbow, arbalest, pistol, blunderbuss and arquebus have an additional phase called [reloading] during which the character reloads the weapon in question.
 
The phases go one after another. And visually a full action cycle can be presented in the following manner:

RANGED:
 
gcYin15.png
 
MELEE:

UfGeyRU.png

* As you have noticed there is also a small delay between two actions. Tbh I haven't found any trace of it in the source code, but it's always there when you doing frapsing tests. It has a value of 5-7 frames which corresponds to  0.166-0.233 seconds. Most likely it is related to UnityEngine itself and the way it periodically checks for the events; with 1-2 frame variance coming from stuttering in case Unity was busy with something.
 
  
BASE VALUES:
 
- When trying to decide which weapon to choose, an important factor is how fast each weapon is. UI Tooltips are not providing the exact values. And those categories are actually quite inaccurate. So:
 
WEAPON BASE VALUES:
 
QqMIkII.png
 
DRUID FORMS BASE VALUES:
 
J4Ok5DE.png
 
ANIMAL COMPANIONS BASE VALUES:

s8osOtj.png

Speadsheets: link

 
P.S. If you want to check these base values yourself, feel free to use a simple mod I've made for this purpose.
It will print some extra data in the combat log, each time any party member is performing an attack:

QsnJlEL.png
(it will also 'catch' existing recovery modifying talents/buffs/armor; but unfortunately not the weapon enchants; at least not yet)

Installation is quite simple, as it was made to work with IEMod Framework.
- download IEMod. 5.1.0-beta Launcher for 2.03.0788 ZIP content preview will suit.
- copy the INFOMod.pw.dll in the same /Mods folder, where IEMod.pw.dll is
- launch PatchworkLauncher
- add the mod in active mods (you can leave IEMod unchecked)
- select "Launch with Mods"

The dll can be downloaded here: INFOMod.pw.dll
Or you can download the project itself: link


Edited by MaxQuest, 15 April 2017 - 07:43 AM.

  • AndreaColombo, Lychnidos, Ineth and 13 others like this

#2
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

REDUCING ACTION DURATION:
- In order to increase your dps, you can do two things: increase your damage coefficient and reduce the time it takes an action to complete.
- Various buffs, talents and enchants do affect different action phases, and we'll have to examine them each, one by one:
 
 
ATTACK PHASE DURATION: 
- it might come as surprise, but not a single 'attack speed' buff, talent, enchant or modal does affect this phase.
- duration of this phase is affected only by your dexterity modifier:
 
StatAttackSpeedMultiplier = 1f + (float)(dexterity - 10) / 33.3f
AttackDuration = BaseAttackDuration / StatAttackSpeedMultiplier;
 
 
RECOVERY PHASE DURATION:
- is affected by armor penalties and all the buffs, items and enchants that do state that they do affect "attack speed".
- these effects can be grouped in several major categories, namely:

  • ArmorSpeedFactor
  • AttackSpeedMultiplier
  • RateOfFireMultiplier (ranged only)

- and for non-spells (i.e. for auto-attacks, primary-attacks and full-attacks), the following are also factored in:

  • MeleeAttackSpeedMultiplier (melee only)
  • RangedAttackSpeedMultiplier (ranged only)
  • Single1HWeapRecovFactor + SingleWeaponSpeedFactorAdj (otherwise)

* How exactly these categories influence the final recovery duration check the tables below.

 
RELOAD PHASE DURATION:
- is affected by armor penalties and all the talents, buffs and modals that do state that they do affect "reload speed". Specifically there are only 4 of them: Gunner (talent), Sure-Handed Ila (chant), Swift Aim (modal) and Vicious Aim (modal).
- Swift Aim and Vicious Aim are mutually exclusive (i.e. cannot be enabled at the same time)
- Swift Aim suppresses Sure-Handed Ila's reloading speed bonus.

^ These are factored multiplicatively. E.g. a blunderbuss has 5s (or 150 frames) reloading duration.
A character with Gunner talent, Swift Aim and 20 Dex, will have following reloading duration:
ReloadDuration = 150 / (1.2 * 1.5) / 1.3 = 64 frames

A chracter with Gunner talent, Vicious Aim and 5 Dex, will have following reloading duration:
ReloadDuration = 150 / (1.2 * 0. 8) / 0.85 = 184 frames

 
So, these are all speed related categories:
4bGAFiw.png

And this is how durations are computed:
faMjj2p.png
The referenced image is the one that contains weapon base values from the top post: http://i.imgur.com/QqMIkII.png

 

P.S. #forthehistory: Obsolete attack/recovery system can be found here.

 

 
BASHING SHIELDS SPEED:
- bashing shield acts like a weapon in your offhand
- attack with your offhand does not suffer from Single1HWeapRecoveryFactor penalty (i.e. your hand with bashing shields attacks and recovers as fast as an offhand dagger while dual-wielding)
- attack with your main hand (while you have bashing shield in the offhand) still does suffer from Single1HWeapRecoveryFactor penalty.
- 1h + bashing_shield does not benefit from Two-Weapon Style talent. But yes, it does benefit from Weapon and Shield Style.

 
FULL ATTACK ACTION:
Some abilities are marked as full-attack actions. What does this mean is:
- if you have a [1h + nothing], [1h + shield] or [2h]: your action consists of: weapon_attack followed by weapon_recovery.
- if you have [1h + 1h] or [1h + bashing_shield]: your action consists of: offhand_attack, followed by main_hand attack and mainhand_recovery. I.e. you deal damage with BOTH weapons, and offhand recovery is skipped completely. (that's why if you have two weapons, and one of them has speed enchant, it's better to place it in main hand)

 
[1H + NOTHING] vs [1H + SHIELD] vs [1H + 1H]DW vs [1H + BASHING_SHIELD]
Imagine a naked 10 DEX character in following situations:
1. DW daggers: {[delay + MH attack + MH recovery] -> [delay + OH attack + OH recovery]}
2. Dagger + Bashing Shield: {[delay + MH attack + MH recovery] + [delay + OH attack + OH recovery]}
3. Dagger + Simple Shield: {[delay + MH attack + MH recovery]} -> {[delay + MH attack + MH recovery]}
4. Dagger + Nothing: {[delay + MH attack + MH recovery]} -> {[delay + MH attack + MH recovery]}

{} - repeating sequence
[] - full action

V1. There are no buffs:
1. DW daggers: {[5f + 20f + 16.66f] + [5f + 20f + 16.66f]} (i.e. 41.66 frames action for MH, and same for OH)
2. Dagger + Bashing Shield: {[5f + 20f + 33.33f] + [5f + 20f + 16.66f]} (i.e. 58.33 frames action for MH, and 41.66 for Shield)
3. Dagger + Simple Shield: {[5f + 20f + 33.33f]} -> {[5f + 20f + 33.33f]} (i.e. 58.33 frames action for MH)
4. Dagger + Nothing: {[5f + 20f + 33.33f]} -> {[5f + 20f + 33.33f]} (i.e. 58.33 frames action for MH)

V2. DAoM:
1. DW daggers: {[5f + 20f + 0f] + [5f + 20f + 0f]} (i.e. 25 frames action for MH, and same for OH)
2. Dagger + Bashing Shield: {[5f + 20f + 16.66f] + [5f + 20f + 0f]} (i.e. 41.66 frames action for MH, and 25 for Shield)
3. Dagger + Simple Shield: {[5f + 20f + 16.66f]} -> {[5f + 20f + 16.66f]} (i.e. 41.66 frames action for MH)
4. Dagger + Nothing: {[5f + 20f + 16.66f]} -> {[5f + 20f + 16.66f]} (i.e. 41.66 frames action for MH)

V3. Zero Recovery (assuming you have achieved it in all 4 cases):
1. DW daggers: {[5f + 20f + 0f] + [5f + 20f + 0f]} (i.e. 25 frames action for MH, and same for OH)
2. Dagger + Bashing Shield: {[5f + 20f + 0f] + [5f + 20f + 0f]} (i.e. 25 frames action for MH, and 25 for Shield)
3. Dagger + Simple Shield: {[5f + 20f + 0f]} -> {[5f + 20f + 0f]} (i.e. 25 frames action for MH)
4. Dagger + Nothing: {[5f + 20f + 0f]} -> {[5f + 20f + 0f]} (i.e. 25 frames action for MH)

Summary:
1. [1H + Nothing]
- at zero recovery, is the best crit-based dps option, as you deal damage at the same rate as DW, while also having +12 acc and +15% hit-to-crit conversion from One-Handed Style.
- it is the hardest setup to achieve zero recovery with
- it is the worst setup for full attacks (alongside with [1H + Simple Shield])

2. [1H + Simple Shield]
- at zero recovery, you deal damage at the same rate as DW, but also have a bonus of having a shield, plus extra def and reflex via Weapon and Shield Style talent
- it is easier to achieve zero recovery than with [1H + Nothing] because durganized shield reduces 1H recovery penalty
- it is the worst setup for full attacks (alongside with [1H + Nothing])

3. [1H + 1H] DW
- is the easiest setup to achieve zero-recovery and Two-Handed Style helps to do it even faster
- can keep Vulnerable Attack, without losing zero-recovery
- is the best setup for full attacks, as you will strike with both weapons

4. [1H + Bashing Shield]
- is a better setup for full attacks, than [1H + Nothing] or [1H + Simple Shield]. It's especially great if it has any procs attached to it, like Barricade does.
- allows you to benefit from Shield defences, Durgan Enchant:Shield and Weapon and Shield Style talent
- have the same attack/recovery as of small offhand weapon while dual-wielding; but has a higher interrupt duration 0.5 instead of 0.35
- cannot be echanted with weapon quality enchants or lashes.
- at zero recovery, it is a clear dps loss (from auto-attack perspective) when compared with any other alternative. But it can be used by non-dps tanks, on whom you'd like to have some special effect, if present.
- this setup can provide a dps-gain over [1H + Simple Shield], but mostly in the early game and vs very low crush-DR monsters; and yeah the biggest gain would be if you have no recovery reducing means except DAoM potion.

 
CREDITS:
This article was a community effort. As such, thanks to all contributors, testers, motivators, those who gave ideas or spotted relevant errors. Especially to Kaylon and his Attack Speed 2.0 thread were it all started, AndreaColombo, Boeroer, Loren Tyr, Elric Galad, JerekKruger, and others)


Edited by MaxQuest, 04 April 2017 - 09:42 AM.

  • AndreaColombo, oaktownbrown, gogocactus and 8 others like this

#3
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer
Although each point of Dex does increase your attack, recovery and reload speeds by 3%, the relative gain is usually less.
Check the following table for a visual representation:

Me4uwio.png

This is due to the following two factors:
- the inter-action delay, which happens to be ~5 frames between any two actions. I don't know exactly how Unity works, but there seems to be some onUpdate schedule system which ticks periodically and checks for queued abilities, and that could be it's tick rate. If I am not mistaken it's possible to get into the same tick (i.e. get rid of the delay) but you would need to have 500+ dexterity.
- the intristic diminishing returns. It's like: 3/2 > 4/3 > 5/4 > 6/5 and so on. Add a drop to a drop, and you get twice the amount; throw that drop into the sea, and nothing has changed.

Edited by MaxQuest, 28 January 2017 - 08:12 AM.

  • AndreaColombo, gogocactus and Khagmas like this

#4
Yosharian

Yosharian

    (3) Conjurer

  • Members
  • 179 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Backer
  • Fig Backer
Sooo.... 2handers have the same recovery as 1handers? How come?

#5
Lychnidos

Lychnidos

    (4) Theurgist

  • Members
  • 304 posts

No point in reserving the posts, there is only a limited edit period. 



#6
rheingold

rheingold

    (6) Magician

  • Members
  • 796 posts
  • Location:Cape Town
  • Pillars of Eternity Silver Backer
  • Deadfire Backer
  • Fig Backer
  • Black Isle Bastard!
Can we sticky this thread mods please?
  • Marky and gogocactus like this

#7
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

Sooo.... 2handers have the same recovery as 1handers? How come?

Yeap. Both logging and fraps testing have shown that two-handers have the same attack and recovery durations as average one-handers.
 

No point in reserving the posts, there is only a limited edit period.

Hmm, are you sure? I've tried to edit my very first post here (dated jan. 2016), and was able to.

 

 

 
P.S. Updated the mod. And logged some stacking-related info here.


Edited by MaxQuest, 08 May 2016 - 01:16 PM.

  • gogocactus and nem0 like this

#8
Lychnidos

Lychnidos

    (4) Theurgist

  • Members
  • 304 posts

 

 

No point in reserving the posts, there is only a limited edit period.

Hmm, are you sure? I've tried to edit my very first post here (dated jan. 2016), and was able to.

 

It seems things have changed recently, we used to have only half an hour for edits.


  • Xaratas and gogocactus like this

#9
nem0

nem0

    (2) Evoker

  • Members
  • 91 posts

If I am reading this right armor adds a flat recovery speed that is not affected by attack speed multiplier?

 

Also row 3 has 20 Dex listed when I believe it is supposed to read 10.


  • MaxQuest likes this

#10
Gairnulf

Gairnulf

    Cynical Master Thief of the Obsidian Order

  • Members
  • 978 posts
  • Pillars of Eternity Backer
Many thanks for digging through the source code and doing the experimentation. I'm too busy with work to do this stuff myself. I'll update the wiki with the information from here.

Also, one of the things that really disappointed me in PoE was the fact that instead of adopting an equivalent of the personal initiative round system that the Infinity Engine games had, Obsidian designed a combat system around seconds and tenths of seconds, calculated in a nebulous manner so that not even the developers themselves can explain or document it. I really hope they change this for PoE2, or at least heavily tune it, so that combat is easier to read and information is communicated to the player in a clear way.

Edited by Gairnulf, 09 May 2016 - 01:46 PM.

  • Gorionsson, peddroelm and MaxQuest like this

#11
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

If I am reading this right armor adds a flat recovery speed that is not affected by attack speed multiplier?

This requires a longer explanation. Will be able to provide it tomorrow (not from the phone).

Also row 3 has 20 Dex listed when I believe it is supposed to read 10.

Fixed )
  • nem0 likes this

#12
dainbramage

dainbramage

    (1) Prestidigitator

  • Members
  • 26 posts

If I am reading this right armor adds a flat recovery speed that is not affected by attack speed multiplier?

 

Also row 3 has 20 Dex listed when I believe it is supposed to read 10.

 

Recovery multiplier is

 

(2 - prod[1 + IASi] + armour malus)/(1 + 0.03*[dex-10])

 

So lets say you have a speed weapon, durganized weapon, frenzy and heavy plate, then before dex it's

 

2 - (1+0.2)*(1+0.15)*(1+0.33) + 0.5 = 0.6646

 

If you have 20 dex then your final recovery is 0.6646/1.3 = 0.51123


  • peddroelm likes this

#13
AndreaColombo

AndreaColombo

    Arch-Mage

  • Members
  • 3136 posts
  • Location:Budapest (HUN)
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
Subscribing thread.
  • MaxQuest likes this

#14
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

If I am reading this right armor adds a flat recovery speed that is not affected by attack speed multiplier?

Ok, let me explain:
 
There are a plethora of different buffs, enchants, talents and abilities that do affect the final value of your recovery duration.
Generally they can be grouped in specific categories and the game has a variable for each of them, namely:
 
- ArmorSpeedFactor
- AttackSpeedMultiplier
- RateOfFireMultiplier
- MeleeAttackSpeedMultiplier
- RangedAttackSpeedMultiplier
all with default values of 1
 
Looking at the source I see that after each attack (i.e. right after the attacking phase), system computes how long the recovery duration should be. It looks a bit messy, but for a ranged weapon attack, it can be summarized as follows:
 

speed_coef = (ArmorSpeedFactor - 1) + (AttackSpeedMultiplier - 1);
speed_coef+= (RateOfFireMultiplier - 1) + (RangedAttackSpeedMultiplier - 1)
recovery_duration = last_attack_duration * (1 - speed_coef) / recovery_factor
recovery_duration = max(0, recovery_duration)

// where recovery_factor for non dual-wielding is 0.6
// and recovery can't get lower than zero
// also ArmorSpeedFactor is a sum for armor recovery penalties. 
// E.g. durganized leather will result in ArmorSpeedFactor = 1 - 0.3 + 0.15 = 0.85

 
As you can see bonuses from different categories are applied additively.
But bonuses that belong to the same multiplier category are applied multiplicatively.
 
For example:
- having swift aim and gloves of swift aim, will result in: AttackSpeedMultiplier = (1 + 0.2) * (1 + 0.15) = 1.38
- having swift aim and cautious attack, will result in: AttackSpeedMultiplier = (1 + 0.2) * (1 - 0.2) = 0.96
 
Worth mentioning that:
- when trying to figure out what category does a bonus belong, tooltips cannot be always trusted. Vicious Aim for instance does affect RateOfFireMultiplier. (full list to come)
- ranged weapon attacks are affected by ArmorSpeedFactor, AttackSpeedMultiplier, RangedAttackSpeedMultiplier, RateOfFireMultiplier and 1H/DW recovery factor
- melee weapon attacks are affected by ArmorSpeedFactor, AttackSpeedMultiplier, MeleeAttackSpeedMultiplier and 1H/DW recovery factor
- spells and abilities are affected by ArmorSpeedFactor, AttackSpeedMultiplier, and may have their own recovery factor

- spells and abilities, that do quality as AttackRanged, can also benefit from RateOfFireMultiplier.
 
 

Also, one of the things that really disappointed me in PoE was the fact that [...] Obsidian designed a combat system around seconds and tenths of seconds, calculated in a nebulous manner so that not even the developers themselves can explain or document it. I really hope they change this for PoE2, or at least heavily tune it, so that combat is easier to read and information is communicated to the player in a clear way.

100% agree. Obsidian has overcomplicated things bringing the attack/recovery confusion to a whole new level. Mechanics should generally be straight-forward and transparent to the player.


Edited by MaxQuest, 10 May 2016 - 06:16 AM.

  • Gairnulf, peddroelm and nem0 like this

#15
Gairnulf

Gairnulf

    Cynical Master Thief of the Obsidian Order

  • Members
  • 978 posts
  • Pillars of Eternity Backer

100% agree. Obsidian has overcomplicated things bringing the attack/recovery confusion to a whole new level. Mechanics should generally be straight-forward and transparent to the player.

30 minutes with the Backer Beta gave me the same opinion which I still hold now when I have over 160 hours with the full game. It's an interesting game largely in spite of its combat system.

#16
Infinitron

Infinitron

    (12) Mage

  • Members
  • 1842 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Backer
  • Fig Backer

lol you whiners, nobody wants to play a game where tiny daggers attack at the same rate as huge battle axes

 

P.S. AwesomeButton sent me



#17
Elric Galad

Elric Galad

    (8) Warlock

  • Members
  • 1153 posts
  • Location:Paris

lol you whiners, nobody wants to play a game where tiny daggers attack at the same rate as huge battle axes

P.S. AwesomeButton sent me

Attack speed has always been unclear since the beginning of CRPG. It has always involved some weird fractions, decimal number, etc... As the audience (even gamers) are reluctant to see it, game designers are likely to simply hide the numbers instead of showing frightening maths.

For example, I have never found on the web a clear explaination about how Dual Wield and its perks worked in Skyrim.

That's true that there is confusion in PoE, but only for optimal build seekers. I'm pretty sure casual gamers is totally happy with the unclear description from tooltip. That won't change that much game experience. For Casual player, "fast', "faster", "average" and "+20% faster" are clear enough.

Edited by Elric Galad, 10 May 2016 - 08:46 AM.

  • rheingold likes this

#18
MaxQuest

MaxQuest

    (7) Enchanter

  • Members
  • 893 posts
  • Deadfire Backer
  • Fig Backer

lol you whiners, nobody wants to play a game where tiny daggers attack at the same rate as huge battle axes

^ Had a rough day, ehh?
 

It's an interesting game largely in spite of its combat system.

To be honest I actually do like this system. But I don't like non-consistency and confusion. E.g:

- If the weapon is marked as slow, player is logically to expect that it will be slower.
- If action was broken into attack and recovery phases, it could be mentioned which phase exactly is affected by the buffs. 

I hope this stuff will be more transparent in PoE2, and the 'linearity' of dps(spd) gain getting addressed as well :)

For Casual player, "fast', "faster", "average" and "+20% faster" are clear enough.

Hah. I usually do the first run a pure RP one, without thinking of mechanics. But those "increase x by 20%" abilities felt really strange to me. As a new player I just assumed that they were bugged, because full action cycle wasn't shortening proportionally to the tooltip value. And here started the testing...

Edited by MaxQuest, 10 May 2016 - 08:57 AM.

  • Gairnulf and peddroelm like this

#19
Gairnulf

Gairnulf

    Cynical Master Thief of the Obsidian Order

  • Members
  • 978 posts
  • Pillars of Eternity Backer

lol you whiners, nobody wants to play a game where tiny daggers attack at the same rate as huge battle axes

P.S. AwesomeButton sent me

Get out of here Infinitron, go back to the Codex to the other fanboys :lol:

Also, "20% faster" can't ever be clear. "20%" of what?

Edited by Gairnulf, 10 May 2016 - 10:02 AM.


#20
Lychnidos

Lychnidos

    (4) Theurgist

  • Members
  • 304 posts

 

lol you whiners, nobody wants to play a game where tiny daggers attack at the same rate as huge battle axes

P.S. AwesomeButton sent me

Get out of here Infinitron, go back to the Codex to the other fanboys :lol:

Also, "20% faster" can't ever be clear. "20%" of what?

 

 

Speed.


  • rheingold likes this





Also tagged with one or more of these keywords: Mechanics, Attack Speed, Recovery, Base Values

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users