MASSIVE WALL OF TEXT FOLLOWS. TL;DR VERSION AT THE END..
I also want to bring up something different, but yet related. I have, for quite some time, wished for Regnum Online to use a more adaptive pseudo-random distribution. Well, to be fully honest, there is no information whatsoever (?) regarding the current random system, but my guess it's something like this:
Code:
if (rand > K)
trigger event
endif
Where
K is some kind of value that depends on the current stats and active spells (both on attacker and target). There is, however, a problem with that system (as we've seen in a few threads in the past), and that is that such a system is - belive it or not - totally random.
Why is this a bad idea in a multiplayer game like Regnum Online?
Well, to begin with, this means that there is nothing that stops a target from evading/resisting
all or
none of the incoming attacks. It also means that the probability to evade/resist another attack is just as high as it was to evade/resist the last attack. This may lead to much frustration and anger since once in a while someone gets really lucky with the RNG and resists 20 spells in a row.
I will try to keep this post at a very non-technical level (i.e. exclude unneccesary use of math) and just try to develop the more general idea of a random distribution "with memory". What does that mean, what is there for a random distribution to remember? Well, it means that one could create a random distribution that also takes into account consecutive evades/resists (or hits) to make the game seemingly more fair for the players. This means that the total amount of resists/evades can be conserved, but the endlessly boring consecutive evades/resists will become fewer.
This sounds just great, why don't we do it right away?
Well, to be honest, it's mainly because it's kind of messy to do this in a proper way. Ok, we want the total number of evades/resists to be a certain number (above,
K). This number could be just about anything, so we need to create or calculate a sequence of probabilities (i.e. one for hit at first attack, one for hit at second, one for hit at third etc.), and this is where we find the big problem.
If we want to calculate this, we need to increase the number of calculations done by the server (or client?), which is not really something we want to do in order to keep the lag down and performance up. Other games that has used such a system (Blizzard used it in their WarCraft III engine) made a few restrictions (only probabilities at given 5% intervals were allowed) and pre-calculated the values in order to make a look-up instead of an actual calculation.
Before we go on, I must admit I don't know the actual impact (performance-wise) an implementation of such a system would have. Therefore, I cannot say that we can or cannot use this kind of system. But I still want to bring it up to discussion in case there is someone with better knowledge about this out there.
Besides, there might be a small margin for exploiting such a system, since you could e.g. find a mob, make it attack you until it hits you/you miss the mob so that the next attack will have a lower/higher chance to hit. But I guess we could live with that.
Can this be merged with Comp's suggestion in any way?
Well, yes, I think it could. If we actually reduce the evade/resist chance to zero and then make sure evasion is discretized to certain values (for which probabilities can be pre-calculated) this would work great! However, it would also mean we have to ditch a great part of the current mechanics in the game, and I have a small feeling NGD is not really happy about having to re-design the entire evasion-mechanics section of their game..
TL;DR VERSION
Make evade chance a function of previous number of evasions/resists.
Some inspiration:
http://www.dotastrategy.com/forum/ftopic18287.html