PQ contribution - a Wannabe contribution to the devs
Posted: Thu May 12, 2016 10:58 am
First of all, I want to thank whoever is putting his hands into the mess that is the PQs contribution mechanic. It is no easy task and the effort must be commended
That said, I tried to remember how it worked back in the day and I think I came up with something that at least Resembles the logic that was in place on Live servers. I do realize it could be something already well known, so forgive me if I will not take it for granted and try to contribute to the project in the way I can. Before reading on, know this: English is not my mother language and I likely messed up a bit of grammar. Hopefully, not enough to make all this even more hermetic.
BEWARE: Long post Ahead. Tread Carefully and be forgiving.
So, PQs contribution.
Objectives are always of two kinds: "kill the npc" or "interact with the objective". The second one is mechanically easy to implement and hard to balance in a contribution system, so I will focus on the "Kill the npc" part.
A fight, in the end, is just math. The npc does damage, the players does damage and heal the damage they recive, if the npc can't surpass the healing done and wipe the players and the damage the players does is enough to kill the npc in the time limit, then the fight is won. So we have three damage-related factors
Damage done to the "Marked for PQ" Npc
Damage received from the "Marked for PQ" Npc
Damage healed to a player who's suffering damage from a marked Npc
Let's state some ground rules:
Damage done is unuseful if the mob does not die
Damage received is unuseful if you die and the mob survives
Damage healed is unuseful if the healing on a Char surpass the damage this char has suffered while fighting a marked Npc (Overhealing)
Any system stripped of a way to avoid people taking contribution from damage without killing/Taking damage without the mob dying/Healing without your target suffering a same amount of damage will be exploitable and Will Be exploited. It's how it works with players
Any system based only on One of the above factors (like damage) will leave an entire category of characters in serious disadvantage or cut it off from the roll right away
Some classes have Hybrid behaviours allowing them to Mix the 3 sources of contribution (DoKs and Wps, I'm looking at you) and probably obtain contribution by suffering damage from a mob for a time, heal it and then retaliate to kill him, so there must be a limit to the amount of contribution one can personally take from a mob and it's probably better if this limit applies on the overall per-mob contribution instead of one of the separate three sources. Soo... Math. And ground rule for the math.
Damage done: The damage is calculated as it is recived by the npc, after all the armor/toughness/resistence mitigation values are applied. I though about it and saw no good alternative to it. It's the one I saw applied last night
Damage recived: I think it should be calculated Before the mitigation is applied. Otherwise, we might find ourself into the paradox of a dps taking aggro for a very short time and getting as much tanky-contribution as the one guy soaking damage for the whole fight.
Damage Healed: No points for overhealing, it's simple enough.
All the contribution must be applied at the death of the NPC, and ther's a simple and already applied method for it: Two kind of lists. One for every npc of the PQ engaged, that opens at the fight start and closes with the death or the reset of the Npc. Only if the fight ends with the death of the NPC the results is transfered to the Second, general contribution list, linked to the pq and canceled in the very moment the PQ resets. Yes, that makes it possible for a player to contribute to a quest, get away from the quest and obtain a reward if someone else gets it done. There is no way to escape it without cutting out of the roll someone who died, had a power failure or any other kind of issue that forced him away from the PQ regardless of how committed he was
So, a simple version of the equation would be
Contrib= [(DmgDone/MaxNpcHp)*MaxContrib]+[(DmgSuffered/PureDmgDoneByNpc)*MaxContrib]+[(DmgHealed/MitigatedDmgDoneByNpc)*MaxContribution] ---> If Contrib->MaxContrib, set value to MaxContrib
I know, I know. The equation could have been simplified. I stated as it is to make it more understandable.
I'll put some numbers to make an example. Imagine a normal mob ganked by 9 players. A player, a DoK, took aggro first, body pull, took a hit, the mob got killed. The fight against the trash mob was so fast the Dok couldn't heal himself but he had two HOT still active on him and wasn't fully healed from the previous fight, so it's technically not overhealing.
Contrib= [(2680/12000)*20]+[(720/720)*20]+[(1200/720)*20]= [4,46]+[20]+[32]=56,46
56,46>20 , 20
There you can start noticing two problems:
First: Pulling can't be allowed to yeld 100% contribution just because you were faster and the mob got killed before changing target. On the other hand, it Must yeld a lot of contribution, because the tank will never make much of the damage, will never heal and will always be essential to keep on himself the final boss attention. The tank will, likely, take 100% contribution from the Hero of the last step, too. In dungeons, where the tank would take always 100% contribution against the boss, this method would just put the tank on top every time and wouldn't work.
Second: The healing is a bit messed up. Assuming that he healed more with this Npc and less with the previous, he could have lost contribution with the previous and got it back with this one, but he might have lost it anyway if, for instance, he killed it solo and would have got to MaxContrib just with the damage. It's probably fine if the "list" doesn't close when the NPC is killed but 15 sec after. I don't know if there is already a mechanic to hook on for this.
Final review:
The dps factor is good as it is, I think
The Tanking factor is so-so. It would need a minimum threshold for the trash mobs. Maybe a reduction for the I-Tank-The-Boss contribution, so that all this could work in dungeons too
The Healing is ok, I think. Same thing of a minimum threshold, so that they will not make 100% contribution on every npc scratching an armor while falling to the ground
There is the problem that putting the same threshold for a lvl 5 and a lvl 40 PQ would make no sense and even if the solution looks pretty natural to me -setting different thresholds for the PQs in different Tiers- I have no clue about how it could be done. So..let's keep things as they are.
I feel like this could be a good start for a well-rounded, unexploitable Contribution system.
About Balancing it...that's all another thing.
The point of balancing something like this is that Everyone, every single player whose presence was useful for the completation of the PQ, could end up as Max Contribution just by playing better then the others.
That means taking into account a very large amount of factors and working on hypothesis and data collecting after testing. Who Knows. Maybe the DmgReceived contribution needs a TankBalance factor that multiplies it, since a tank is needed mainly when the big boss comes into play. Maybe the DmgHealed need an HealBalance factor to reduce it, since he will heal the 100% of the damage through all the PQ. It's...tricky, to say the least. After all, the only advantage we have over the original developers, is that we remember that it worked. How?...that's what we must hope we'll be able to find out.
That said, I tried to remember how it worked back in the day and I think I came up with something that at least Resembles the logic that was in place on Live servers. I do realize it could be something already well known, so forgive me if I will not take it for granted and try to contribute to the project in the way I can. Before reading on, know this: English is not my mother language and I likely messed up a bit of grammar. Hopefully, not enough to make all this even more hermetic.
BEWARE: Long post Ahead. Tread Carefully and be forgiving.
So, PQs contribution.
Objectives are always of two kinds: "kill the npc" or "interact with the objective". The second one is mechanically easy to implement and hard to balance in a contribution system, so I will focus on the "Kill the npc" part.
A fight, in the end, is just math. The npc does damage, the players does damage and heal the damage they recive, if the npc can't surpass the healing done and wipe the players and the damage the players does is enough to kill the npc in the time limit, then the fight is won. So we have three damage-related factors
Damage done to the "Marked for PQ" Npc
Damage received from the "Marked for PQ" Npc
Damage healed to a player who's suffering damage from a marked Npc
Let's state some ground rules:
Damage done is unuseful if the mob does not die
Damage received is unuseful if you die and the mob survives
Damage healed is unuseful if the healing on a Char surpass the damage this char has suffered while fighting a marked Npc (Overhealing)
Any system stripped of a way to avoid people taking contribution from damage without killing/Taking damage without the mob dying/Healing without your target suffering a same amount of damage will be exploitable and Will Be exploited. It's how it works with players
Any system based only on One of the above factors (like damage) will leave an entire category of characters in serious disadvantage or cut it off from the roll right away
Some classes have Hybrid behaviours allowing them to Mix the 3 sources of contribution (DoKs and Wps, I'm looking at you) and probably obtain contribution by suffering damage from a mob for a time, heal it and then retaliate to kill him, so there must be a limit to the amount of contribution one can personally take from a mob and it's probably better if this limit applies on the overall per-mob contribution instead of one of the separate three sources. Soo... Math. And ground rule for the math.
Damage done: The damage is calculated as it is recived by the npc, after all the armor/toughness/resistence mitigation values are applied. I though about it and saw no good alternative to it. It's the one I saw applied last night
Damage recived: I think it should be calculated Before the mitigation is applied. Otherwise, we might find ourself into the paradox of a dps taking aggro for a very short time and getting as much tanky-contribution as the one guy soaking damage for the whole fight.
Damage Healed: No points for overhealing, it's simple enough.
All the contribution must be applied at the death of the NPC, and ther's a simple and already applied method for it: Two kind of lists. One for every npc of the PQ engaged, that opens at the fight start and closes with the death or the reset of the Npc. Only if the fight ends with the death of the NPC the results is transfered to the Second, general contribution list, linked to the pq and canceled in the very moment the PQ resets. Yes, that makes it possible for a player to contribute to a quest, get away from the quest and obtain a reward if someone else gets it done. There is no way to escape it without cutting out of the roll someone who died, had a power failure or any other kind of issue that forced him away from the PQ regardless of how committed he was
So, a simple version of the equation would be
Contrib= [(DmgDone/MaxNpcHp)*MaxContrib]+[(DmgSuffered/PureDmgDoneByNpc)*MaxContrib]+[(DmgHealed/MitigatedDmgDoneByNpc)*MaxContribution] ---> If Contrib->MaxContrib, set value to MaxContrib
I know, I know. The equation could have been simplified. I stated as it is to make it more understandable.
I'll put some numbers to make an example. Imagine a normal mob ganked by 9 players. A player, a DoK, took aggro first, body pull, took a hit, the mob got killed. The fight against the trash mob was so fast the Dok couldn't heal himself but he had two HOT still active on him and wasn't fully healed from the previous fight, so it's technically not overhealing.
Contrib= [(2680/12000)*20]+[(720/720)*20]+[(1200/720)*20]= [4,46]+[20]+[32]=56,46
56,46>20 , 20
There you can start noticing two problems:
First: Pulling can't be allowed to yeld 100% contribution just because you were faster and the mob got killed before changing target. On the other hand, it Must yeld a lot of contribution, because the tank will never make much of the damage, will never heal and will always be essential to keep on himself the final boss attention. The tank will, likely, take 100% contribution from the Hero of the last step, too. In dungeons, where the tank would take always 100% contribution against the boss, this method would just put the tank on top every time and wouldn't work.
Second: The healing is a bit messed up. Assuming that he healed more with this Npc and less with the previous, he could have lost contribution with the previous and got it back with this one, but he might have lost it anyway if, for instance, he killed it solo and would have got to MaxContrib just with the damage. It's probably fine if the "list" doesn't close when the NPC is killed but 15 sec after. I don't know if there is already a mechanic to hook on for this.
Final review:
The dps factor is good as it is, I think
The Tanking factor is so-so. It would need a minimum threshold for the trash mobs. Maybe a reduction for the I-Tank-The-Boss contribution, so that all this could work in dungeons too
The Healing is ok, I think. Same thing of a minimum threshold, so that they will not make 100% contribution on every npc scratching an armor while falling to the ground
There is the problem that putting the same threshold for a lvl 5 and a lvl 40 PQ would make no sense and even if the solution looks pretty natural to me -setting different thresholds for the PQs in different Tiers- I have no clue about how it could be done. So..let's keep things as they are.
I feel like this could be a good start for a well-rounded, unexploitable Contribution system.
About Balancing it...that's all another thing.
The point of balancing something like this is that Everyone, every single player whose presence was useful for the completation of the PQ, could end up as Max Contribution just by playing better then the others.
That means taking into account a very large amount of factors and working on hypothesis and data collecting after testing. Who Knows. Maybe the DmgReceived contribution needs a TankBalance factor that multiplies it, since a tank is needed mainly when the big boss comes into play. Maybe the DmgHealed need an HealBalance factor to reduce it, since he will heal the 100% of the damage through all the PQ. It's...tricky, to say the least. After all, the only advantage we have over the original developers, is that we remember that it worked. How?...that's what we must hope we'll be able to find out.