-
Approche d'un problème
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.
-
Disclaimer : je ne réponds pas directement à ta question ;)
Ce que tu veux faire me semble bien compliqué et pas forcément fiable (mesurer un temps sur quelque chose qui passe par le réseau... Je comprends le principe mais je trouve ça trop aléatoire).
En général pour contourner les aimbots on regarde plutôt du coté du pourcentage de toucher (même si les "bons" aimbots contournent déjà cette sécurité en ajoutant des miss).
-
Une réponse reste une réponse et je t'en remerci.
Pour la question de fiabilité, il y a la réalité serveur et la réalité client. Il y auras un décalage entre ces deux réalités et les évènements qui se produisent selon le temps de réponse d'une ligne. Ici je m'intéresse à la réalité serveur.
Il est possible de mesurer le nombre de tirs réussis mais je ne suis pas encore certain si ca nécessite un package qui seras téléchargé par le client. Il est également possible de mesurer la quantité de "dégats" infligés à chaque tour.
Je suis conscient qu'il y a une série de techniques pour éviter la détection mais je souhaite uniquement m'occuper des joueurs qui ne font aucun éffort pour cacher le fait qu'ils trichent et qui s'amusent à vider les serveurs.