Introduction
First of all, yes this will have multiple parts as it is quite complicated. I'm starting on the basics and I'll continue deeper down the rabbit hole. The procedure is the same for every game, but out of curiosity, I'll use Guild Wars 2. Especially since Guild Wars 2 actually provides a challenge in comparison to other games. So let's go into the basics now.
Creating Build Rotations
Step 1 - Value Skills
We need a way to tell which skills are better and which do not interest us. For our purpose I'm going to start off with the Engineer's attacks on the rifle then I'm gonna extend to other skills. The engineer provides us with five skills on the rifle. What we need to know about these is, how much damage they do in total and how long they take to use as well as how often we can use them. How often depends on the cooldown of abilities. Since using abilities over and over again would be too strong they have a cooldown on them which disables them for a certain time. That means we can only use the skill every few seconds. So we have one cast per cooldown seconds. One cast deals with a certain amount of damage. This means we have an amount of damage per cooldown seconds. Notice it already? We can divide the damage through the cooldown to get the average damage. Cast times are used for abilities that take longer to use or affect over a longer time. This also means we can't do anything else during this time. So the actual time until we can use the skill again is cooldown + cast time.
Our final formula is for the average damage is:
avgDPS = totalDamage / (cooldown + castTime)Let's check our five skills.
Skill Name | Total Damage | Cooldown | Cast time |
Hip Shot | 739 | 0s | 3/4s |
Net Shot | 568 | 9s | 0s |
Blunderbuss | 2001 + 842 | 9s | 1/2s |
Overcharged Shot² | 1137 | 14s | 0s |
Jump Shot | 2614 + 455 | 18s | 1s |
²: Overcharged Shot adds a knockback when used without stability adding a global cooldown of 1.75s to 2s which is ignored in this calculation.
Okay so first we will list them from highest to lowest damage:
- Jump Shot: 2614 + 455 = 3069
- Blunderbuss: 2001 + 842 = 2843
- Overcharged Shot: 1137
- Hip Shot: 739
- Net Shot: 568
Next let's throw the information into the formula:
- Hip Shot: 739 / 0.75s = 985.33 dps
- Net Shot: 568 / 9s = 63.11 dps
- Blunderbuss: 2843 / (9s + 0.5s) = 299.26 dps
- Overcharged Shot: 1137 / 14s = 81.21 dps
- Jump Shot: 3069 / (18s + 1s) = 161.53 dps
What do these results mean now? The average damage per second we calculate gives us a priority list. If we use hip shot repeatedly we do the most damage. Repeatedly using only the other skills will result in lower DPS. Next up we check the damage numbers. Jump Shot, Blunderbuss, and Overcharged Shot deal more damage than Hip Shot does. So assuming we use these three abilities first and then Hip Shot until they are ready again we should have the highest DPS.
Step 2 - Create Draft Rotation
So our rotation should look similar to this:
- Jump Shot
- Blunderbuss
- Overcharged Shot
- Hip Shot
- .... (repeat until Jump Shot is ready)
- Jump Shot
- Blunderbuss
- Overcharged Shot
- Hip Shot
- ... (and so on)
There's something off on this rotation though. Overcharged Shot, Blunderbuss, and Jump Shot have different cooldowns. That means one will be ready earlier than the other. We need to keep these three skills on cooldown to get the most DPS out of our five skills.
Each Hip Shot takes 0.75s or 3/4s until the next. The lowest cooldown is on Blunderbuss with only a mere nine seconds. This means we can put 9s / 0.75s = 12 auto attacks until it's ready again. However, each skill takes a different amount of time. Something that helps us a lot is a timeline.
Step 3 - Create a Timeline
Each vertical line corresponds to one of the five skills. Yellow means we're casting or using the ability at this 1/4th of a second or for the time that is shown. Blue means it's on cooldown, white means it's ready.
0s to 6.5s
6.5s to 13s
13s to 19.5s
19.5s to 26s
Step 4 - Write Down Rotation
If we convert this to a rotation we get:
- Jump Shot
- Overcharged Shot
- Blunderbuss
- Hip Shot (12x)
- Blunderbuss
- Hip Shot (6x)
- Overcharged Shot
- Hip Shot (3x)
- Jump Shot
- Hip Shot
- Blunderbuss
- Hip Shot (7x)
- ...
Step 5 - Calculate DPS
This rotation is 26 seconds long and includes 22 Hip Shots, 3 Blunderbuss, 2 Overcharged Shot, 2 Jump Shots. Accumulating the damage we get 22 * 739 + 3 * 2843 + 2 * 1137 + 2 * 3069 = 33199.
Dividing through our seconds we have 33199 / 26 = 1276.88 damage per second.
Step 6 - Test & Compare
From here on out we test the rotation in-game, on the golem. Something we did here was to ignore the human reaction time which can play into the cast-time and cooldown. Another thing we can do is change on when we activate the skills in our timeline. You might have noticed an empty field here and there where we waited for a cast to finish or for the cooldown to do the last milliseconds.
Next Steps!
We have only looked at the five skills of one weapon. Unfortunately Guild Wars 2 features weapon sets, in most games, you can swap skills and abilities. There are more than five skills as well. Don't forget that there are traits that change certain skills to function differently from others. Also, the skills may apply debuffs on the bosses or buffs on yourself. This makes the whole procedure even more complicated but for now, I think you get the idea.