Ok so I've had a rather interesting debate going on on official tq forums last few days basically dealing with WHAT leads to our actions in pvp (from a cognitive aspect). Through this I've come to a mini conclusion for how I want to write my new version of my companions/duelist bots.
Basically in my theory of how players attack (this is NOT related to anything other than where a player will aim/their accuracy) is that there are stages of targeting which influence
A: Where we will aim/where we think a player is jumping to
B: If we will attempt an attack (eg: we know that hitting at this stage of targeting is VERY unlikely)
So yes... Before we can address the 'chances of hitting' with any accuracy I'll need to measure player performance. I'm thinking I'll set up a fairly basic 'player skill quotient' PSQ to give an indication of how good a player is at aiming. This will also serve as a rather simple way to detect possible aimbotters almost instantly (if the likely hood of a hit you landed was EXTREMELY improbable and you manage to do it 5x in 5 minutes then chances are you should be investigated)
So yes... for my base calculations I'm thinking I'll ONLY measure in 1v1 fb/ss only fights (That way results are not conflated with issues of players using other skills/trying to determine who they are targeting)
The main factors that would influence difficulty/skill of a shot would be the following imo... What would you guys think though? I need some input here.
Total attacks
Total hits
Average time since last jump
So for a temp calculation I'm thinking...
Skill = 1000 * ((Total Hits / Total attacks) * 100) / Average last Jump
So lets say we setup a 1v1 duel where the two players are A and B
Stats for A:
Total Attacks: 25
Total hits: 10 (winner)
Average MS since Last jump: 700
In this case skill would be calculated as: 57
Stats for B:
Total Attacks: 20
Total Hits: 9 (loser)
Average Ms since last jump: 500
In this case skill would be calculated as: 90
So in this case we get what I would argue to be the 'correct' answer that player B, even though they didn't land as many hits was far better at fastblading.
Time since last jump compares the last time the opponent jumped with the time you try an attack (miss or hit).
Because in this case we are assigning such weight to time since jump we are saying that hitting earlier in the jump requires FAR greater skill. We may wish to limit this factor in practice though by reducing the jump time's weight (eg dividing the average jump by 1.5 or 2 or w/e)
Note: This would work for aimbot detection due to the fact that they attack RIGHT as you jump and have very high accuracy. This would cause the PSQ to go through the roof!
Example PSQ for aimbot
Total attacks 12
Total hits 10
Average Jump time: 200ms
Skill: 416
When PSQ is at that level of insanity we can fairly safely say that the player is aimbotting and send someone to investigate.
So yes... what do you guys feel about my very basic PSQ calculation? What would you change? Would you say other factors effect relative skill of targeting? Maybe take into account the time since YOU last jumped? (eg: Range or time since YOU last jumped?)
Eg: calculate the odds of a hit using the distance/angle simply based on the statistics of how accurate your clicks must be to cause that hit and take into effect when you jumped (so lets say you jump and 200 ms later land a hit on a target that is just starting a jump.. seems to me that takes significantly more 'skill')
So yah... once I'm done with a calculation that at least in some way works I can apply it to a controlled situation (eg: 1v1 duels, not hectic combat situations) and use it to start collecting player data to influence how I write my AI system for the duelists which will be added in late beta stage.