Salut,
Je lance ce sujet parceque j'ai fini par être complètement bloqué en ce qui concerne un problème que j'ai décidé d'attaquer. Je suis resté tellement longtemps devant le code à réflêchir qu'il n'y a plus rien qui sort. Il me manque sans doute une certaine technique dans mon approche :p .
Le programme en question est un petit script pour un jeu vidéo. Son objectif est de détecter des joueurs qui utilisent un système de visée artificielle (il s'agit évidemment de tricherie). Pour ce faire, j'ai imaginé un moyen de détection qui dépenderas uniquement du serveur et qui seras donc hors d'atteinte de tout client.
La plupart petits programmes utilisées pour avoir une visée "assistée" sont assez simples. Le comportement classique est de systématiquement viser le joueur le plus proche avec des armes qui touchent instantanément leur cible.
C'est là que mon programme dois intevenir. N'ayant pas la possibilité de mesurer directement la vitesse de la souris (ce serais l'idéal), je peut néanmoins déterminer lorsqu'un changement de cible a lieu, l'angle parcouru (Yaw) et mesurer un interval de temps.
C'est à ce stade que je coince un peu car j'aimerais départager les joueurs selon qu'ils aient un comportement "normal" ou "anormal". Pour déterminer ce qui est normal, il me faudrais collecter des statistiques sur une certaine période de temps alors j'ai décidé de voir le problème à l'envers et de voir ce que peut produire un tel système de visée en local.
Donc, pour l'instant je cherche à programmer un algorithme qui tienne compte d'un changement de cible, de la distance de cette cible par rapport à la dernière cible, du temps nécessaire pour passer d'une cible à l'autre et, finalement, l'angle parcouru. Il n'est pas clair pour l'instant comment je devrais combiner ces facteurs (hierarchie ou parallèle ?). Je pourrais ajouter à cela des moyennes ou essayer de mettre au point une approche pour mesurer les x dernières secondes pour déceler une anomalie (à ce niveau il me faudras sans doute programmer un genre de pile car un array ne conviendrais pas).
A partir de là, j'aimerais établir des valeurs maximales et minimales que je pourrais ensuite comparer avec des stats collectées sur des joueurs normaux. Le problème qui va sans doute émerger à ce niveau c'est que je vais demander l'aide d'un admin de serveur publique et que, au niveau des maximas/minimas, je n'aurais aucun moyen de faire la différence entre les deux types de joueurs.
P.S: Si vous voulez des schémas pour y voir plus clair, n'hésitez pas à le signaler.
Partager