Hi, I've been recently doing some digging (mainly trial and error and lots of testing in order to make sense of the values) on what Frame Delay actually does, how it works and I also figured out a proper way to measure it. Here are my findings:
What is Frame Delay?: It's a hidden value that units and buildings have, but that only really matters for ranged land units (it's 0 for buildings and other kinds of units). It measures the amount of time a unit takes to "shoot" a projectile after you order it to attack something. Units with higher frame delay will take more time to shoot their target and vice-versa. It's mainly useful in micro-intensive "hit and run" tactics, where you shoot a unit, then move back and shoot again. Frame Delay is the reason units like Cavalry Archers are more difficult to "micro" since they take a considerable amount of time to shoot after you order them to attack something. On the other side you have Kipchaks, who have no Frame Delay at all, meaning they fire instantly after you order them to do so. Not to be confused with "Rate of Fire" (or Reload Time).
That's the easy way of describing it, but in reality the way the value works is much more convoluted and requires a more in-depth approach. The following is very technical so if you just want to check and compare the final values of each unit and see what changed in DE just jump to the end of the post.
---
First of all, you can't just compare the Frame Delay value (that you can find using the Advanced Genie Editor in the "Units" tab) of different units to determine which ones will shoot faster. That's because Frame Delay actually defines after how many frames of the unit's attack animation the projectile will spawn. What is important to know is that the Frame Delay value directly depends on the unit's attack animation, and since the length and speed of those animations change for every unit, that "base" Frame Delay value is useless by itself. For example, the "Archer" unit has a Frame Delay value of 15.
With that in mind we now have to know those extra values as well, which can luckily be found in the Advanced Genie Editor too. Each unit has an attack animation, and if you go to the "Graphics" tab you can find all the attack animation entries. The two important values to look for are "Frames per Angle" and "Anim Duration".
-Frames per Angle determines the total amount of frames the attack animation is made of. This varies for every unit. For the Archer unit it's 30 frames.
-Anim Duration defines the time in which the entire animation must be carried out (in seconds). This value is also different for every unit. The Archer unit has an Anim Duration of 0.7 seconds.
Alright, with all those values we can now get what I'm gonna call "Effective Frame Delay", which would faithfully reflect the amount of frames of in-game time units take to shoot a projectile and would let us properly compare the Effective Frame Delay of each unit.
Let's start: If you multiply the "Anim Duration" value by 60 (the amount of frames that comprises a second, since the game simulation runs at 60 frames per second) you can find out in how many frames of real game time (at a game speed of 1.0) the attack animation is displayed.
In the case of the Archer unit it's 0.7 x 60 = 42 frames, meaning that the complete attack animation of the Archer unit will take 42 frames of real game time at a game speed of 1.0. Since we also know that the Archer's attack animation is comprised of just 30 frames (Frames per Angle value), it means that they will be stretched to fill those 42 frames of in-game time.
However, the base Frame Delay value of the Archer unit is just 15. So, since the complete attack animation (30 frames) is displayed in 42 frames in-game, using the "rule of three" (math) we get that 15 frames of the attack animation (the amount of frames the projectile is "delayed") would get displayed in just 21 frames in-game (15 x 42 / 30 = 21).
You'll end up with the Effective Frame Delay value, which properly represents the actual frame delay as seen in the game (again, with a game speed of 1.0), and can be checked in-game if you record a video and then count each frame of the unit's attack animation till the projectile spawns in the recording (the game rounds up or down some values here and there, so you can sometimes get a +/-1 frame difference while testing). This is also an actual useful value for players to know (compared with the useless base Frame Delay value), and it can be easily converted to seconds or milliseconds as well if that makes it easier for people to imagine the amount of delay that a unit will have when shooting a projectile. To adjust this value for other game speed settings (1.5, 1.7 or 2.0) you just have to divide the Effective Frame Delay value by one of those speed settings. This means that the Archer unit would have an Effective Frame Delay of 21 frames at a game speed of 1.0 and 12 frames at a game speed of 1.7.
You may now probably be asking: "Ok, but have you figured out that magic value for every ranged unit in the game and then manually tested and checked in-game to see if the theory is actually right?"
The answer is YES! (it took a stupid amount of time though)
Here is a list that shows the Effective Frame Delay value for every ranged land unit in the game (at a game speed of 1.7-normal- since that's the most relevant speed):
Some interesting stuff we can derive from that:
- The Gbeto is the unit with the longest EFD (effective frame delay) in the game; while the Kipchak, Elite Janissary and Mangonel line have no frame delay at all.
- Cavalry Archers have basically double the EFD of Mangudai.
- The Archer line has shorter EFD than all unique archer units (except for the Chu Ko Nu).
- Skirmishers and Genitours have the same EFD, which is longer than the Archer line.
But that's not all! I also did all the math again using the values from patch 5.8 of AoE2 HD, in order to check if the EFD of any unit was changed in DE and here are the only differences:
-The EFD of the Archer unit was reduced by 33% in DE (so that it now matches the one of the Crossbowman and Arbalester).
-The EFD of the Trebuchet was increased by around 50% in DE (this is not really that relevant since you can't really "hit and run" with a Treb lol).
-The EFD of the Mameluke was reduced by 33% in DE, and the EFD of the Elite Mameluke was reduced by 60%! A really nice buff tbh, and you will realize immediately if you try to hit and run with them (specially with the Elite ones), it feels really satisfying.
Well I think that's all! If you have any questions or you think I got something wrong please tell me, or if you don't trust those results you are encouraged to check and test them for yourself as well.
What is Frame Delay?: It's a hidden value that units and buildings have, but that only really matters for ranged land units (it's 0 for buildings and other kinds of units). It measures the amount of time a unit takes to "shoot" a projectile after you order it to attack something. Units with higher frame delay will take more time to shoot their target and vice-versa. It's mainly useful in micro-intensive "hit and run" tactics, where you shoot a unit, then move back and shoot again. Frame Delay is the reason units like Cavalry Archers are more difficult to "micro" since they take a considerable amount of time to shoot after you order them to attack something. On the other side you have Kipchaks, who have no Frame Delay at all, meaning they fire instantly after you order them to do so. Not to be confused with "Rate of Fire" (or Reload Time).
That's the easy way of describing it, but in reality the way the value works is much more convoluted and requires a more in-depth approach. The following is very technical so if you just want to check and compare the final values of each unit and see what changed in DE just jump to the end of the post.
---
First of all, you can't just compare the Frame Delay value (that you can find using the Advanced Genie Editor in the "Units" tab) of different units to determine which ones will shoot faster. That's because Frame Delay actually defines after how many frames of the unit's attack animation the projectile will spawn. What is important to know is that the Frame Delay value directly depends on the unit's attack animation, and since the length and speed of those animations change for every unit, that "base" Frame Delay value is useless by itself. For example, the "Archer" unit has a Frame Delay value of 15.
With that in mind we now have to know those extra values as well, which can luckily be found in the Advanced Genie Editor too. Each unit has an attack animation, and if you go to the "Graphics" tab you can find all the attack animation entries. The two important values to look for are "Frames per Angle" and "Anim Duration".
-Frames per Angle determines the total amount of frames the attack animation is made of. This varies for every unit. For the Archer unit it's 30 frames.
-Anim Duration defines the time in which the entire animation must be carried out (in seconds). This value is also different for every unit. The Archer unit has an Anim Duration of 0.7 seconds.
Alright, with all those values we can now get what I'm gonna call "Effective Frame Delay", which would faithfully reflect the amount of frames of in-game time units take to shoot a projectile and would let us properly compare the Effective Frame Delay of each unit.
Let's start: If you multiply the "Anim Duration" value by 60 (the amount of frames that comprises a second, since the game simulation runs at 60 frames per second) you can find out in how many frames of real game time (at a game speed of 1.0) the attack animation is displayed.
In the case of the Archer unit it's 0.7 x 60 = 42 frames, meaning that the complete attack animation of the Archer unit will take 42 frames of real game time at a game speed of 1.0. Since we also know that the Archer's attack animation is comprised of just 30 frames (Frames per Angle value), it means that they will be stretched to fill those 42 frames of in-game time.
However, the base Frame Delay value of the Archer unit is just 15. So, since the complete attack animation (30 frames) is displayed in 42 frames in-game, using the "rule of three" (math) we get that 15 frames of the attack animation (the amount of frames the projectile is "delayed") would get displayed in just 21 frames in-game (15 x 42 / 30 = 21).
You'll end up with the Effective Frame Delay value, which properly represents the actual frame delay as seen in the game (again, with a game speed of 1.0), and can be checked in-game if you record a video and then count each frame of the unit's attack animation till the projectile spawns in the recording (the game rounds up or down some values here and there, so you can sometimes get a +/-1 frame difference while testing). This is also an actual useful value for players to know (compared with the useless base Frame Delay value), and it can be easily converted to seconds or milliseconds as well if that makes it easier for people to imagine the amount of delay that a unit will have when shooting a projectile. To adjust this value for other game speed settings (1.5, 1.7 or 2.0) you just have to divide the Effective Frame Delay value by one of those speed settings. This means that the Archer unit would have an Effective Frame Delay of 21 frames at a game speed of 1.0 and 12 frames at a game speed of 1.7.
You may now probably be asking: "Ok, but have you figured out that magic value for every ranged unit in the game and then manually tested and checked in-game to see if the theory is actually right?"
The answer is YES! (it took a stupid amount of time though)
Here is a list that shows the Effective Frame Delay value for every ranged land unit in the game (at a game speed of 1.7-normal- since that's the most relevant speed):
Code:
Archery Range
-Archer: 12
-Crossbowman: 12
-Arbalester: 12
-Skirmisher: 18
-Elite Skirmisher: 18
-Imperial Skirmisher: 18
-Cavalry Archer: 36
-Heavy Cavalry Archer: 35
-Hand Cannoneer: 12
-Slinger: 28
-Genitour: 18
-Elite Genitour: 18
Siege Weapons
-Mangonel: 0
-Onager: 0
-Siege Onager: 0
-Scorpion: 7
-Heavy Scorpion: 7
-Bombard Cannon: 7
-Trebuchet: 31
Unique Units (Age of Kings)
-Longbowman: 18
-Elite Longbowman: 18
-Chu Ko Nu: 7
-Elite Chu Ko Nu: 7
-Mangudai: 17
-Elite Mangudai: 17
-Mameluke: 14
-Elite Mameluke: 7
-Throwing Axeman: 35
-Elite Throwing Axeman: 29
-Janissary: 14
-Elite Janissary: 0
Unique Units (The Conquerors)
-War Wagon: 35
-Elite War Wagon: 35
-Plumed Archer: 18
-Elite Plumed Archer: 18
-Conquistador: 14
-Elite Conquistador: 14
Unique Units (The Forgotten)
-Elephant Archer: 14
-Elite Elephant Archer: 14
-Genoese Crossbowman: 18
-Elite Genoese Crossbow: 18
Unique Units (The African Kingdoms)
-Camel Archer: 22
-Elite Camel Archer: 22
-Gbeto: 43
-Elite Gbeto: 43
-Organ Gun: 21
-Elite Organ Gun: 21
Unique Units (Rise of the Rajas)
-Arambai: 21
-Elite Arambai: 21
-Ballista Elephant: 14
-Elite Ballista Elephant:14
-Rattan Archer: 24
-Elite Rattan Archer: 24
Unique Units (The Last Khans)
-Kipchak: 0
-Elite Kipchak: 0
Some interesting stuff we can derive from that:
- The Gbeto is the unit with the longest EFD (effective frame delay) in the game; while the Kipchak, Elite Janissary and Mangonel line have no frame delay at all.
- Cavalry Archers have basically double the EFD of Mangudai.
- The Archer line has shorter EFD than all unique archer units (except for the Chu Ko Nu).
- Skirmishers and Genitours have the same EFD, which is longer than the Archer line.
But that's not all! I also did all the math again using the values from patch 5.8 of AoE2 HD, in order to check if the EFD of any unit was changed in DE and here are the only differences:
-The EFD of the Archer unit was reduced by 33% in DE (so that it now matches the one of the Crossbowman and Arbalester).
-The EFD of the Trebuchet was increased by around 50% in DE (this is not really that relevant since you can't really "hit and run" with a Treb lol).
-The EFD of the Mameluke was reduced by 33% in DE, and the EFD of the Elite Mameluke was reduced by 60%! A really nice buff tbh, and you will realize immediately if you try to hit and run with them (specially with the Elite ones), it feels really satisfying.
Well I think that's all! If you have any questions or you think I got something wrong please tell me, or if you don't trust those results you are encouraged to check and test them for yourself as well.