FR EN DE ES IT PT
Naviguer dans les forums 
Trackers Ankama

La lutte anti bot : vers une modération artificielle

Par glatulien - ANCIEN ABONNÉ - 08 Juin 2016 - 17:06:08
Bonjour,

J’écris ce pavé (oui, encore un pavé, mais je vous rassure, pas aussi long que le précédent) pour vous parler des bots et des solutions que j’entrevoie. Je vous arrête tout de suite, vous qui allez crier au sujet doublon : il s’agit ici d’une approche radicalement différente des approches habituellement proposée et, de par la complexité de ce que je vais parler, il me semble obligatoire d’y dédier un topic (qui coulera faute de personnes capables d’y participer, mais c’est mieux que d’être ignoré sur le topic principal, dans le cas où quelqu’un poste une idée irréaliste juste après).

Premier point que je tiens à préciser. Il s’agit d’une présentation technique et théorique, tout ne sera pas abordable à beaucoup de monde, mais j’essayerai de rendre mes explications accessibles au possible.
Ensuite, je tiens à dire qu’il est possible que je n’ai pas pu voir certains problèmes liés à ce que je propose. Si c’est le cas, merci d’en parler en les exposant clairement. Je mettrai à jour la dernière partie de ce message en fonction des remarques qui m’auront été faites.

Cela fait un moment que je me penche sur le cas des bots. Comme vous tous je suppose, je les trouve pénible et j’aimerais les voir disparaître. Il y a énormément de propositions sur le forum pour s’en débarrasser, mais la plupart se résument assez simplement : filtres, blocage et autres… Toutes les propositions sont en réalité des problèmes car elles peuvent se retourner contre les joueurs. De plus, il me semble assez évident que si un joueur arrive à contourner un blocage en répondant à une question, un bot devrait y arriver aussi, d’une façon ou d’une autre. (On reste loin du test de Turing, certes, mais certains joueurs n’arriveraient probablement pas à le passer de toute façon…)
J’ai longtemps pensé qu’il n’y avait pas vraiment de solution au problème des bots, mais j’ai fini par trouver une idée qui me paraît viable sans être trop complexe à mettre en oeuvre. En fait, je serais moi-même capable de l’implémenter, alors Ankama risque de ne pas avoir de difficulté non plus, mais cela requiert certaines connaissances en informatique théorique et non pas en simple programmation.
Je vais commencer par vous présenter le concept de bots et ses limites, ce qui implique le nerf qu’il faut exploiter pour s’en débarrasser. Ensuite, je vais vous exposer en quoi consistent mes idées. Attention, je tiens à préciser que cette partie sera particulièrement théorique et également technique, et je chercherai à l’illustrer par des exemples pour que les concepts soient saisis par la majorité des lecteurs. Je montrerai les résultats qui sont atteignables, mais également la puissance du système que je propose.
Enfin, je dédierai une dernière partie aux objections que j’ai trouvées, qu’on a pu me faire ou auxquelles j’aurais pu être confrontées dans les commentaires.


(NB : pour les malins qui aiment jouer avec le terme “hack” ; je l’utilise ici pour désigner tout type d’attaque)

En sécurité informatique, il y a une notion qui est assez importante : le coût d’un hack, et la valeur que le hack rapporterait à l’attaquant. Si le coût de ce hack est inférieur à la valeur rapportée, alors il est assez évident que ce hack serait rentable, et donc qu’il faudrait l'empêcher d’avoir lieu. En revanche, si le coût est supérieur à la valeur rapportée, alors il devient évident qu’un éventuel hacker n’aura pas grand intérêt à l’exploiter. Le hack devient donc ici peu intéressant et l'empêcher d’avoir lieu ne serait pas forcément pertinent.
C’est ainsi que les entreprises sécurisent leurs systèmes : s’ils ne leur semblent pas possible de bloquer complètement un hack, alors elles augmentent le coût de ce hack, afin de lui faire perdre son intérêt.
Quel rapport entre cette explication et Dofus ? Et bien c’est très simple. Imaginons que le coût du hack soit ici le coût d’abonnement et d’autres détails pour les personnages non-abonnés d’un compte Dofus et que la valeur gagnée par le hack soit l’argent récupéré suite à l’exploitation de ce bot, on peut voir que pour se débarrasser des bots, il suffit d’en bannir suffisamment pour que les bots perdent plus d’argent qu’ils n’en gagnent. Ceci amènera la vente d’Ogrines d’Ankama à être plus intéressante que celle de vente de Kamas des revendeurs, conduisant ainsi à une désertification de ces sites tiers.
Ainsi, pour se débarrasser des bots, il ne faut pas supprimer les bots, mais supprimer les bons, en quantité suffisante. Il faut également voir que si les sites de vente de Kamas ne sont plus compétitifs, alors les bots spam disparaîtront d’eux-même naturellement : il ne s’agit donc pas de cibles prioritaires (aussi chiantes soient-elles) mais de victimes de la suppression des autres types bots, par conséquent, je ne parlerai pas des bots spam par la suite. En fait, mes idées ne s’appliquent, je pense, qu’aux bots farm.
Pour résumer : couper l’approvisionnement principal en Kamas des sites tiers serait suffisant à faire tellement monter leurs prix que la vente d’Ogrines d’Ankama serait plus compétitive. Ainsi, ces sites tiers n’auront plus d’intérêt à utiliser de bots spam si leur offre est moins attrayante.

J’en viens donc maintenant aux idées que j’ai pu avoir. D’après des calculs relativement faussés avec des nombres un peu sortis de nulle part, j’avais calculé que pour que le concept précédent soit validé, il faudrait qu’il y ait un minimum de 16 bans de bots par minute. C’est juste impossible à effectuer, donc le système de ban en appelant un modérateur n’est de toute évidence pas envisageable. Les filtres et autres propositions des joueurs ne me semblent également pas envisageables car ils peuvent bloquer les joueurs dans leurs activités. Un passage sur le sujet unique m’a permis de voir cette idée que je commençais à former :

30. Il vaut mieux un programme automatique qui bannit accidentellement des joueurs si ça fait disparaître les bots.

Mauvaise idée, l'image d'Ankama pourrait être encore plus écornée qu'avec les bots. Les joueurs n'aiment pas les bots mais aiment encore moins les ban abusifs. Même s’ils ont la possibilité de se faire débannir par le support, cette procédure peut devenir extrêmement coûteuse en temps pour ce dernier, donc un délais risquerait d'être appliqué entre le moment où un joueur est kické accidentellement et le moment où il retrouve son accès (surtout si ça tombe en week-end), ce qui ne manquera pas d'attiser la colère des joueurs et pourrir encore plus l'image d'Ankama (tandis que les kamaseller n'auront qu'à trouver la parade aux mesures et continuer leurs activités tranquillement). Sans compter qu'il y a un fort risque que les "faux positifs" soient plus nombreux que les "vrais positifs". Quand on voit le nombre de personnes venues se plaindre du ban automatique de 2 heures sur le forum, on ne peut pas proposer cette idée.


Et je vois dire que je suis radicalement opposé à cet argument, et c’est ce que je vais expliquer par la suite.
L’idée que j’ai eue est relativement simple : nous, joueurs humains reconnaissons les bots directement. Un ordinateur ne peut bien évidemment pas. Mais il est capable d’apprendre.
Étudiant l’intelligence artificielle, j’ai décidé d’orienter mes idées dans cette direction et de trouver des solutions appropriées pour lesquelles les arguments donnés ci-dessus sont invalides.





Et oui. Je parlais d’intelligence artificielle tout à l’heure, cela implique une théorie solide dans un cas comme celui des bots. Par conséquent, cela implique le recours aux mathématiques. (Abawi, ça change des solutions anti-bots habituelles tout de suite.)

Le système que je propose se découpe en plusieurs étapes. Il s’agit d’un système d’apprentissage non supervisé (apprentissage où les catégories de joueurs (bot, team, mono-compte, joueur métier, éleveur, etc.) ne sont pas connues à l’avance), capable de découper les joueurs en différentes catégories (appelées classes) et, par conséquent, d’isoler les bots du reste des personnages. Ce système implique néanmoins une action humaine : dire quelle classe trouvée correspond à celle des bots, amenant ainsi à un apprentissage supervisé.
Je précise à l’avance que je prends des données qui m’arrangent pour les formules mais qu’il est tout à fait possible de les adapter à tout type de situation (notamment en ce qui concerne les ensembles).

1ère étape
La première étape sera la plus complexe de toutes. Il s’agit ici de représenter un groupe d’individus (des personnages pris au hasard dans la base de données) par des caractéristiques. Tout le pilier du système consiste à prendre les bons attributs. Ces attributs correspondent aux données collectées par le jeu sur un personnage et permettront de différencier les joueurs des bots. On peut imaginer des attributs comme ceux-ci :
  • % de X classe (cra, sacrieur…) avec lequel l’individu a joué les Y dernier combats
  • équipement
  • État des combats : 2^0 = fermé, 2^1 = spec coupé, 2^2 = ouvert au groupe (par exemple, 0b110 = spec coupé et ouvert au groupe).
  • ...

Il faut cependant que toutes les valeurs soient des valeurs numériques et non textuelles (voir étape 2).
Il est possible d’imaginer une multitude d’attributs, le plus difficile étant de trouver les bons attributs pour représenter un individu.
Il s’agit réellement de la seule étape pouvant être difficile mais je ne pense pas qu’elle soit aussi difficile que certains peuvent le penser (les pages perso et l’ancien historique des montres tués le prouvent).
Notons P le nombre d’attributs et N le nombre d’individus.

Voici un exemple assez basique :



Il faut bien évidemment prendre plus d’éléments tels que les stuffs, zones de combats, nombre de combats, vitesse moyenne des combats, etc.

2ème étape
On a maintenant notre ensemble de données. Plus cet ensemble sera grand, plus les résultats seront précis. Attention, j’ai parlé d’intelligence artificielle et cela implique que les données apprises par l’ordinateur sont vouées à évoluer en permanence : cette étape ne sert qu’à poser des bases au système qui sera voué à évoluer par la suite. Cependant, plus les bases seront complètes, plus le système sera rapide et précis rapidement.
On effectue une analyse en composantes principales (ACP). Une ACP a pour objectif de représenter les individus de façon à trouver les similitudes et différences. L’objectif ici est donc de localiser rapidement les bots.

Les données récupérées sont ensuite représentées dans un espace en P dimensions (oui, je sais, c’est difficile de visualiser en plus de 3 dimensions, alors en 100 dimensions, c’est pas vraiment possible). Mais c’est à ce moment-là que nous allons être contraints d’utiliser des mathématiques : en maths, 100, 1000 dimensions, c’est tout aussi simple que 2 dimensions.

La représentation graphique est quelque chose de vraiment simple en mathématiques et c’est ici que je vais commencer à perdre un certain nombre de lecteurs.



Pour faciliter la représentation graphique, l’ACP chercher à supprimer / fusionner les dimensions les moins importantes du problème afin de se retrouver avec un problème en 2 ou 3 dimensions. Dans notre cas, c’est quelque chose qu’il faut éviter ; la réduction du nombre d’attributs permet, certes, de retirer les attributs peu utiles, mais implique une perte de précision, et cela impliquerait d’augmenter le taux d’erreur à la détection de bots, ce qui n’est pas pensable.

3ème étape
Si on représente le problème précèdent en P- dimensions, on peut voir clairement certaines choses. Des nuages d’individus se forment. Afin de concevoir les différents nuages, on applique la formule de la distance euclidienne :



Ces nuages représentent les individus similaires. Il y aura donc un nuage pour les farmers Vortex, pour les farmers Xelorium, Frigost, etc. Mais surtout il y en aura un pour les bots. Et comble du bonheur, ce nuage sera très différent des autres nuages de joueurs pour une bonne et simple raison : ils ont un mode de jeu unique et très particulier ; aucun joueur humain ne peut avoir le même et, en plus, la distance euclidienne entre ces personnages sera proche de 0.

Par conséquent, on peut trouver très facilement cet ensemble représentant les bots du jeu. C’est à ce moment qu’il devra y avoir une intervention humaine ; bien que l’IA trouve le nuage, elle ne pourra pas deviner qu’il s’agit d’individus indésirables.

4ème étape
Une fois que chaque nuage aura été identifié, il faudra qu’une personne intervienne et annote les classes des personnages. Je reprends le premier set présenté avec des annotations.



(NB : il faut bien noter qu’il y aura un nombre extrêmement important de personnages, pas seulement 4, avec un représentant unique. Il faut bien voir des données avec des milliers de représentants pour chaque classe.)

À partir des données triées et d’un ensemble de classes suffisamment précis (tout dépend de l’étape 1 et du nombre d’individus choisis pour l’expérience), il est possible d’effectuer un apprentissage Bayésien naïf. Il s’agit d’une méthode d’apprentissage supervisée dont l’objectif est d’assigner une classe à un individu donné. Il faut cependant qu’il possède une base de connaissance. Cette base de connaissance est celle que je viens de définir. L’apprentissage Bayésien naïf émet pour hypothèse que tous les attributs sont indépendants entre eux (contrairement au non naïf). Au vu des différences que les personnages peuvent avoir entre eux, cela me semble être un choix judicieux, même s’il est possible que le non naïf apporte de meilleurs résultats.

La conception du classifier Bayésien se fait en une matrice d’attributs par classe. Chaque classe possède une probabilité de vraisemblance et un écart-type pour chaque attribut. Par exemple, un bot farm Astrub joue en moyenne avec 98% de cras, avec un écart type de 2.

5ème étape
Il faut effectuer la formule d’analyse d’appartenance à un groupe pour l’individu voulu. S’il appartient au groupe des bots, le personnage est banni. Si le programme pense qu’il s’agit d’un bot, mais n’en est pas certain (un joueur qui a un comportement de bot mais qui possède un certain nombre de différences telles que le temps de jeu), alors le personnage est remonté dans une liste de personnages “à risque”.





6ème étape
Il ne serait pas forcément très intelligent de recommencer le processus à chaque fois ; certes, le programme apprendrait de nouvelles valeurs, mais ce serait long, et surtout, avec moins de bots dans l’ensemble. Or, plus il y a de bots, plus il est simple de s’en débarrasser, par conséquent, je pense qu’il faut réutiliser les données classées précédentes à chaque fois mais les enrichir. À chaque création de personnage, il sera suivi pendant une période T. Le programme la classera tout au long de son évolution et, si au bout d’une période T, il aura été considéré comme un bot, il sera ban, sinon, il sera oublié par l’IA. Il faut noter que chaque personnage s’ajoutera ensuite aux données connues : cela permettra d’établir des tendances, mais également de continuer à localiser les bots s’ils changent certaines de leurs habitudes pour contourner le système. Un apprentissage de ce type permet à l’IA de rester à jour en fonction des nouveaux personnages créés. Une fois cette étape terminée, on retourne à l’étape 5. Il serait peut-être pertinent de recommencer à partir de l’étape 1 à chaque nouvelle mise à jour si elles impliquent des refontes, modifications des mécanismes du jeu ou autre, ou si les bots changent leurs habitudes de façon importante.

Si vous voulez un exemple complet d’apprentissage et de classification Bayésienne, je vous invite à cliquer sur ce lien :
Cliquez ici%C3%AFve_bay%C3%A9sienne#Entra.C3.AEnement

Attention : il faut bien noter que ce n’est pas un programme en jeu, mais bien extérieur au jeu : il pourrait s’agir en somme d’un modérateur global à tous les serveurs qui agit quand il veut ou quand il est sollicité. Si les joueurs tiennent tant que ça à la délation que ce que je peux voir sur le forum, on peut même songer à un bouton “demander une surveillance”, dans le cas où un personnage tente d’esquiver la surveillance.

Enfin, je vais maintenant répondre aux différentes objections que j’ai pu me faire ou que j’ai pu recevoir :

Peut-être qu’Ankama utilise déjà ce système :
C’est possible. Néanmoins, s’ils l’utilisaient, je pense que ça serait plus efficace et déployé à l’ensemble des serveurs depuis un moment pour une simple raison : ce système tire sa force de la quantité de données, alors se cantonner à un seul serveur me semblerait étrange.

Si ça a pas déjà été fait, c’est qu’Ankama a estimé que c’était non viable ou trop dur à mettre en place :
Seule l’étape 1 est délicate à mettre en place : je serais moi-même capable d’implémenter toutes les autres parties. L’étape 1 demande une minimum de recul et d’imagination : pourquoi pas ne pas demander au forum de créer lui-même les attributs ? Il y aurait sans doute des idées pertinentes. Par conséquent, non, je ne pense pas que ce soit dur à mettre en place. Quant à la viabilité, je ne vise que les bots farms, mais je pense que cette technique réussirait à tous les supprimer d’un coup, donc je ne pense pas qu’il y ait de problème de viabilité.

Les bots peuvent évoluer pour contourner le système (argument du refus) :
Je parle ici d’un système qui évolue. Cela signifie que si les bots évoluent, alors le système aussi et ne peinera pas le moins du monde à les détecter. Il prendra juste un peu plus de temps au début de l’évolution mais il rattrapera vite son retard.

Faux positifs et bans abusifs (argument du refus) :
Il faut bien voir qu’il y en a déjà sur le système actuel. Aujourd’hui, je parle d’une IA capable de réellement isoler les joueurs en classes et, franchement, la probabilité qu’un joueur joue avec le même % de chaque classe, dans les mêmes zones, avec les mêmes équipements, en utilisant les mêmes sorts, etc. qu’un bot sur une période T (disons 1 semaine ?) est tellement infime que ça me semble juste impossible, à moins de faire exprès pour se plaindre du système. Alors oui, on pourrait demander au support d’effectuer des déban dans ce genre de cas, mais honnêtement, je ne vois pas comment ça pourrait arriver. L’argument des personnes bannies du forum me semble plutôt déplacé ici : il est bien plus difficile de faire du traitement automatique du langage qu’une analyse pareille. Il est évident que dans le premier cas il y ait un nombre d’erreurs non négligeable.
C’est vrai que le système fonctionne sur une loi normale (du moins, dans le cas d'ensembles Gaussien) pour le calcul de l’appartenance, mais je ne pense pas que l’utilisation de probabilités puisse pénaliser les joueurs.

Ankama veut garder les bots car ils payent l’abonnement :
Si les joueurs achetaient en Ogrines ce qu’ils achètent sur les sites de Kamas, alors Ankama serait grand bénéficiaire à la disparition des bots, la théorie du complot sur ce point est totalement débile.

Pour terminer, je tiens à dire qu’il subsiste cependant un problème assez important :

Citation de Tot :

Un autre des points que vous soulevez concerne les bots. Je pense que certains ici ne sont pas très honnêtes dans leurs critiques. Les premiers à subir les bots, c'est nous, incompétents d'Ankama.

Oon passe notre temps à nous battre contre eux. On gagne pendant deux jours et puis, pour se venger, ils attaquent les serveurs. Ils trouvent une parade à ce que l'on met en place, on les contre, ils ré-attaquent les serveurs... On subit ces enflures depuis des années sans aucun moyen de les contrer... Les bots, c'est nous qui nous les tapons et franchement, on en bave.

Pourquoi je vous dis que certains ne sont pas très "honnêtes"? Pour la simple et bonne raison que les bots existent car il y a une demande. Inutile de vous expliquer que ce n'est pas moi qui claque 200-300 boules pour quelques milliers de kamas...

Les bots existent car BEAUCOUP de joueurs achètent des kamas sur les sites de ces intouchables Chinois. Plus vous leur donnez d'argent, plus ils créent de bots, plus ils en créent plus ça vous énerve... Et ça devient notre faute. "ANKAMA ne sait pas gérer les bots!". Personne ne sait. Ankama pas mieux qu'un autre.

Vous, par contre, vous savez que si vous leur donnez de l'argent, ils seront de plus en plus forts et vont nous faire de plus en plus chier. Certains sites, s'il vous plaît, on carrément 7-8 langues, avec des services en place de malades. Genre, (je ne vous apprends rien), "livré dans les 5 minutes", et tout ça dans votre langue maternelle...

Pourquoi je vous parle de ça? Pour la simple et bonne raison que j'aimerai savoir, de toutes les personnes qui se plaignent de l'arrivée de Kamas en jeu, combien ont déjà acheté des Kamas sur des sites de ce type? Ceux qui le font et se reconnaissent, à ceux là seulement, je dis que vous n'êtes pas les mieux placés pour commenter cette ajout de Kamas en jeu.


Voilà le gros problème du système de bots : je propose une solution permettant de s’en débarrasser en masse, cela impliquera la chute des services de vente de Kamas sur le long terme. Il y a fort à parier que ça ne leur plaise pas, et qu’ils décident d’attaquer les serveurs en échange.

En tout cas, si rien n’est fait contre les bots, je suis persuadé que c’est à cause de ce problème.

Kyosset
 
18 0
Réactions 45
Score : 780

Tu es sûr que faut le poster sur le forum ? L'envoyer en message privé au support n'aurait pas été une meilleure idée ? Car car ce n'est pas une fin mais un moyen que tu nous proposes (je sais pas si tu vois ce que je veux dire, j'ai surement pas employé les bons mots)

0 0
Score : 843

Bon, après avoir lu ce pavé, je dois avouer que je suis assez surpris par la "simplicité" d'un tel système.

Le raisonnement est très bon, rien à dire là dessus, mais je ne sais pas si mettre en place un tel dispositif ne serait pas (trop ?) difficile. Je ne parle pas de la programmation mais des critères à définir. Dans la majorité des cas le système semble pouvoir gérer de lui-même les évolutions des bots, mais il ne me semble pas impossible à plus ou moins long terme, que les bots évoluent d'une façon non prévue par les critères. Il faudrait donc prévoir ce type d'évolution et permettre facilement de faire évoluer "à la main" cette intelligence artificielle.

Autre détail qui me chiffonne, la consommation en ressources. Pour avoir passé plusieurs années à étudier l'informatique et notamment la programmation et l'algorithmique, je sais qu'un programme trop gourmand (même d'une simple instruction) peut-être un véritable gouffre niveau performances, et vu le nombre de boucles imbriquées ou récursives qu'un tel programme nécessiterait (surtout pour des tableaux, rien que de passer de 3 à 4 dimensions est en général un véritable massacre niveau performances) je m'inquiète de la faisabilité de la chose, non pas par sa difficulté de mise en place, mais par cet aspect consommation de ressources.

Mais dans un monde idéal où ces écueils ne seraient pas, je soutiens cette idée à fond.

Merci d'avoir pris le temps d'écrire ce pavé, car même si par malheur il n'aurait pas l'impact qu'il doit avoir, il n'en reste pas moins très intéressant.

0 0
Score : 19569

J'avais vu sur les recrutements de chez Ankama des offres en Data Analyst (je crois que c'était une offre de stage, pour "assister notre équipe"). Donc je suppose fortement qu'il existe déjà ce type d'analyse et de programme chez Ankama.

Par contre, là où je ne suis pas d'accord c'est sur le nombre de serveur : oui, il y aurait plus de données et le système serait plus "solide" s'il était mis sur tous les serveurs en même temps. MAIS, il y aurait plus de données, et il faut les traiter.

Traiter les données d'un serveur en temps réel, ça va. Traiter celles de 50 serveurs, c'est déjà plus compliqué.

En général (par exemple dans les banques ou les assurances, où ce type de programme est utilisé), les calculs sont faits la nuit sur les données récupérées dans la journée. Sauf que dans le cas de notre petit Dofus, les données ne peuvent jamais "s'arrêter" d'arriver. On ne peut juste pas fermer les serveurs entre 22h et 6h pour lancer le calcul et les bannissements happy

Après, tout comme toi, je pense que c'est LA solution contre les bots. Mais est-elle vraiment adaptée à une société comme Ankama pour un jeu comme Dofus. Ça je ne suis pas sûr.

0 0
Score : 756

t'as oublié de prévoir l'aspirine pour Rogers grand ponte de la lutte antibots

 
0 0
Score : 2171
Marchand-Nomade|2016-06-08 17:24:23
Tu es sûr que faut le poster sur le forum ? L'envoyer en message privé au support n'aurait pas été une meilleure idée ? Car car ce n'est pas une fin mais un moyen que tu nous proposes (je sais pas si tu vois ce que je veux dire, j'ai surement pas employé les bons mots)

Je pense qu'un débat sur le forum est plus interessant.

NeoCJO|2016-06-08 17:31:11
Bon, après avoir lu ce pavé, je dois avouer que je suis assez surpris par la "simplicité" d'un tel système.

Le raisonnement est très bon, rien à dire là dessus, mais je ne sais pas si mettre en place un tel dispositif ne serait pas (trop ?) difficile. Je ne parle pas de la programmation mais des critères à définir. Dans la majorité des cas le système semble pouvoir gérer de lui-même les évolutions des bots, mais il ne me semble pas impossible à plus ou moins long terme, que les bots évoluent d'une façon non prévue par les critères. Il faudrait donc prévoir ce type d'évolution et permettre facilement de faire évoluer "à la main" cette intelligence artificielle.

Autre détail qui me chiffonne, la consommation en ressources. Pour avoir passé plusieurs années à étudier l'informatique et notamment la programmation et l'algorithmique, je sais qu'un programme trop gourmand (même d'une simple instruction) peut-être un véritable gouffre niveau performances, et vu le nombre de boucles imbriquées ou récursives qu'un tel programme nécessiterait (surtout pour des tableaux, rien que de passer de 3 à 4 dimensions est en général un véritable massacre niveau performances) je m'inquiète de la faisabilité de la chose, non pas par sa difficulté de mise en place, mais par cet aspect consommation de ressources.

Mais dans un monde idéal où ces écueils ne seraient pas, je soutiens cette idée à fond.

Merci d'avoir pris le temps d'écrire ce pavé, car même si par malheur il n'aurait pas l'impact qu'il doit avoir, il n'en reste pas moins très intéressant.

Et bien, l'ACP, l'apprentissage et la classification sont des programmes bien distinct, donc chaque programme possède sa propre complexité. je pense que le programme ayant la plus grande complexité sera celui de l'ACP, mais comme il s'agit de la base de l'IA, ce n'est pas grave si ça demande un temps conséquent.
Niveau consommation mémoire là aussi, je doute que ça pose des problèmes : il faudrait utiliser les bonnes données aux bons moment sans faire de stockage inutile.

En cours, on utilisait un logiciel permettant de faire des ACP (SPAD il me semble) qui n'était pas du tout confronté à ces problèmes, même sur des ensembles conséquent de données.

Mais oui comme tu dis et comme je l'ai précisé, le plus difficile de cette technique serait de choisir les attributs pour désigner un individu

thebossmickey|2016-06-08 17:42:19
J'avais vu sur les recrutements de chez Ankama des offres en Data Analyst (je crois que c'était une offre de stage, pour "assister notre équipe"). Donc je suppose fortement qu'il existe déjà ce type d'analyse et de programme chez Ankama.

Par contre, là où je ne suis pas d'accord c'est sur le nombre de serveur : oui, il y aurait plus de données et le système serait plus "solide" s'il était mis sur tous les serveurs en même temps. MAIS, il y aurait plus de données, et il faut les traiter.

Traiter les données d'un serveur en temps réel, ça va. Traiter celles de 50 serveurs, c'est déjà plus compliqué.

En général (par exemple dans les banques ou les assurances, où ce type de programme est utilisé), les calculs sont faits la nuit sur les données récupérées dans la journée. Sauf que dans le cas de notre petit Dofus, les données ne peuvent jamais "s'arrêter" d'arriver. On ne peut juste pas fermer les serveurs entre 22h et 6h pour lancer le calcul et les bannissements happy

Après, tout comme toi, je pense que c'est LA solution contre les bots. Mais est-elle vraiment adaptée à une société comme Ankama pour un jeu comme Dofus. Ça je ne suis pas sûr.

Comme je le disais, c'est un programme externe (un peu comme un joueur si je parle d'un modérateur). Je ne prétend pas qu'il doive fonctionner en temps réel : il peut très bien mettre ses données à jour aux sauvegardes. Je ne vois pas pourquoi il faudrait bloquer les serveurs pour mettre les données à jour et bannir. Il faudrait que cette IA soit en mesure de fonctionner de la même façon qu'un modérateur.

En ce qui concerne le nombre de serveurs, je ne parle pas d'utiliser tous les serveurs, je pense qu'il y aurait bien trop de redondance et au bout d'un moment l'IA n'apprendrait plus grand chose, mais se limiter à un me semble peut être léger (peut être 5 serait pas mal, mais je ne sais pas trop, il faudrait voir à l'usage)
0 0
Score : 3353
Marchand-Nomade|2016-06-08 17:24:23
Tu es sûr que faut le poster sur le forum ? L'envoyer en message privé au support n'aurait pas été une meilleure idée ? Car car ce n'est pas une fin mais un moyen que tu nous proposes (je sais pas si tu vois ce que je veux dire, j'ai surement pas employé les bons mots)
J'ai lu que qq lignes car après j'ai craqué mais bravo pour cet effort
Mais comme le dit si bien Marchand-Nomade tu aurais mieux fait d'envoyer cela en privé à AG
0 0
Score : 1691

mouai je suis pas conquis par la première étape tous simplement parce qu'une fois les critère de la BDD découvert par les on peut très bien créer un programme dans le sens inverse qui :

- changerai les panoplies des bot tous les 10 connexions,
- recréerai une classe toute les 10+ connexions,
-changer de temps en temps les disposition avant du combat ...

et cela fausserais totalement ta BDD donc ton IA, beaucoup d'encre pour rien ....

0 0
Score : 699

Tu devrais faire un résumé clair de ce que tu proposes en début de topic, ça permettrait à plus de monde de comprendre ce que tu as écrit.

Pour ce qui est des attributs :
-Nombre de combats avec telle classe : Pas très pertinent parce que même si les crâs sont les plus optis, ça doit pas être bien compliqué de faire tourner le même programme avec des classes aléatoires.
-Kamas: Pas très pertinent non plus. Ce sont ces personnes qui fournissent les kamas, il leur suffit de mettre un nombre aléatoire de K sur tout leurs persos et c'est réglé.
-Etat des combats. Pas pertinent non plus, il suffit d'un programme bot qui laisse ouvert le combat et qui kick les personnes qui ne sont pas dans le groupe et qui rentre dans le combat.
-...
ça me semble réellement impossible parce que quel que soit l'attribut que tu prends, les bots auront un moyen pour changer leur façon de faire... Ton sujet m'a fait prendre conscience de pourquoi c'est si dur de se débarrasser des bots..

0 0
Score : 2171
petcha|2016-06-08 18:13:42
mouai je suis pas conquis par la première étape tous simplement parce qu'une fois les critère de la BDD découvert par les on peut très bien créer un programme dans le sens inverse qui :

- changerai les panoplies des bot tous les 10 connexions,
- recréerai une classe toute les 10+ connexions,
-changer de temps en temps les disposition avant du combat ...

et cela fausserais totalement ta BDD donc ton IA, beaucoup d'encre pour rien ....

Les nuages resteront facilement identifiable, donc rien ne serait faussé.

missPK|2016-06-08 18:18:03
Tu devrais faire un résumé clair de ce que tu proposes en début de topic, ça permettrait à plus de monde de comprendre ce que tu as écrit.

Pour ce qui est des attributs :
-Nombre de combats avec telle classe : Pas très pertinent parce que même si les crâs sont les plus optis, ça doit pas être bien compliqué de faire tourner le même programme avec des classes aléatoires.
-Kamas: Pas très pertinent non plus. Ce sont ces personnes qui fournissent les kamas, il leur suffit de mettre un nombre aléatoire de K sur tout leurs persos et c'est réglé.
-Etat des combats. Pas pertinent non plus, il suffit d'un programme bot qui laisse ouvert le combat et qui kick les personnes qui ne sont pas dans le groupe et qui rentre dans le combat.
-...
ça me semble réellement impossible parce que quel que soit l'attribut que tu prends, les bots auront un moyen pour changer leur façon de faire... Ton sujet m'a fait prendre conscience de pourquoi c'est si dur de se débarrasser des bots..

C'était des exemples que j'ai pris pour illustrer mes propos, je n'ai jamais dit que ces attributs étaient pertinents.
0 0
Score : 19569
glatulien|2016-06-08 17:55:09
thebossmickey|2016-06-08 17:42:19
J'avais vu sur les recrutements de chez Ankama des offres en Data Analyst (je crois que c'était une offre de stage, pour "assister notre équipe"). Donc je suppose fortement qu'il existe déjà ce type d'analyse et de programme chez Ankama.

Par contre, là où je ne suis pas d'accord c'est sur le nombre de serveur : oui, il y aurait plus de données et le système serait plus "solide" s'il était mis sur tous les serveurs en même temps. MAIS, il y aurait plus de données, et il faut les traiter.

Traiter les données d'un serveur en temps réel, ça va. Traiter celles de 50 serveurs, c'est déjà plus compliqué.

En général (par exemple dans les banques ou les assurances, où ce type de programme est utilisé), les calculs sont faits la nuit sur les données récupérées dans la journée. Sauf que dans le cas de notre petit Dofus, les données ne peuvent jamais "s'arrêter" d'arriver. On ne peut juste pas fermer les serveurs entre 22h et 6h pour lancer le calcul et les bannissements happy

Après, tout comme toi, je pense que c'est LA solution contre les bots. Mais est-elle vraiment adaptée à une société comme Ankama pour un jeu comme Dofus. Ça je ne suis pas sûr.
Comme je le disais, c'est un programme externe (un peu comme un joueur si je parle d'un modérateur). Je ne prétend pas qu'il doive fonctionner en temps réel : il peut très bien mettre ses données à jour aux sauvegardes. Je ne vois pas pourquoi il faudrait bloquer les serveurs pour mettre les données à jour et bannir. Il faudrait que cette IA soit en mesure de fonctionner de la même façon qu'un modérateur.
Oui certes il est externe au jeu, mais il a besoin des données du jeu. Et je ne pense pas que le nombre de combats faits avec le mode spectateur, ou bien encore les différentes classes présentes dans chaque combat soient sauvegardées pendant les sauvegardes. Donc soit le système est en accès direct sur les serveurs, et lit directement ces valeurs pour chaque personne, soit ces données sont ajoutées aux sauvegardes, ce qui va considérablement les allonger pour les joueurs (ce qui n'est pas non plus souhaitable).
0 0
Score : 2171
Oui certes il est externe au jeu, mais il a besoin des données du jeu. Et je ne pense pas que le nombre de combats faits avec le mode spectateur, ou bien encore les différentes classes présentes dans chaque combat soient sauvegardées pendant les sauvegardes. Donc soit le système est en accès direct sur les serveurs, et lit directement ces valeurs pour chaque personne, soit ces données sont ajoutées aux sauvegardes, ce qui va considérablement les allonger pour les joueurs (ce qui n'est pas non plus souhaitable). Ajouter une citation ici

Je pense à l'ancien classement des personnages sur lesquels on peut voir les monstres tués et en quelle quantité, je pense que c'est déjà des données conséquentes, et qui ne sont pas forcément mémorisés au moment des sauvegarde : on peut générer des fichiers de log etc. et surtout, comme je le disais, les exemples d'attributs que j'avance ne sont pas forcément pertinents, il ne s'agit que d'exemples.

Il y a énormément de façons de récupérer des données sans pour autant alourdir l'expérience de jeu
0 0
Score : 19569
glatulien|2016-06-08 18:31:03
Oui certes il est externe au jeu, mais il a besoin des données du jeu. Et je ne pense pas que le nombre de combats faits avec le mode spectateur, ou bien encore les différentes classes présentes dans chaque combat soient sauvegardées pendant les sauvegardes. Donc soit le système est en accès direct sur les serveurs, et lit directement ces valeurs pour chaque personne, soit ces données sont ajoutées aux sauvegardes, ce qui va considérablement les allonger pour les joueurs (ce qui n'est pas non plus souhaitable). Ajouter une citation ici
Je pense à l'ancien classement des personnages sur lesquels on peut voir les monstres tués et en quelle quantité, je pense que c'est déjà des données conséquentes, et qui ne sont pas forcément mémorisés au moment des sauvegarde : on peut générer des fichiers de log etc. et surtout, comme je le disais, les exemples d'attributs que j'avance ne sont pas forcément pertinents, il ne s'agit que d'exemples.

Il y a énormément de façons de récupérer des données sans pour autant alourdir l'expérience de jeu
Y'a pas 36 solutions pour traiter des données : soit tu les traites à la volée quand elles arrivent, soit tu les récupères à un moment où elles ne bougent plus trop (sauvegardes) et tu peux faire le traitement quand tu veux dessus après.

Edit : Oh je viens de relire en rentrant chez moi, et je remarque qu'il manque une étape de normalisation avant d'appliquer ta distance euclidienne (d'ailleurs pourquoi la distance euclidienne plutôt qu'une autre ?). En effet, si l'on reprend ton exemple, la distance entre un Crâ et un Iop, tous les autres paramètres étant égaux sera de 1. Par contre la distance entre un Crâ ayant 0 Kamas et un Crâ ayant 1 000 000 de Kamas (tous les autres paramètres étant égaux) sera de ... 1 000 000².

Donc sans normalisation préalable, certains paramètres, peut-être pas significatifs du tout, vont tout écraser !
0 0
Score : 310826

Je déteste les probabilités et les statistiques, mais ça semble être utile en fait wink

Franchement mis à part la charge de travail de l'étape 1, je suis pour, il n'y a jamais assez de mesure Anti-bots.

6 -1
Score : 2171
thebossmickey|2016-06-08 18:39:22
glatulien|2016-06-08 18:31:03
Oui certes il est externe au jeu, mais il a besoin des données du jeu. Et je ne pense pas que le nombre de combats faits avec le mode spectateur, ou bien encore les différentes classes présentes dans chaque combat soient sauvegardées pendant les sauvegardes. Donc soit le système est en accès direct sur les serveurs, et lit directement ces valeurs pour chaque personne, soit ces données sont ajoutées aux sauvegardes, ce qui va considérablement les allonger pour les joueurs (ce qui n'est pas non plus souhaitable). Ajouter une citation ici
Je pense à l'ancien classement des personnages sur lesquels on peut voir les monstres tués et en quelle quantité, je pense que c'est déjà des données conséquentes, et qui ne sont pas forcément mémorisés au moment des sauvegarde : on peut générer des fichiers de log etc. et surtout, comme je le disais, les exemples d'attributs que j'avance ne sont pas forcément pertinents, il ne s'agit que d'exemples.

Il y a énormément de façons de récupérer des données sans pour autant alourdir l'expérience de jeu
Y'a pas 36 solutions pour traiter des données : soit tu les traites à la volée quand elles arrivent, soit tu les récupères à un moment où elles ne bougent plus trop (sauvegardes) et tu peux faire le traitement quand tu veux dessus après.

Tu peux très bien les récupérer à des moments donnés alors qu'elles sont écrites en continu, et comme il s'agit d'un programme externe, il peut se réveiller quand il veut pour lancer son analyse.

Et comme je le disais, l'analyse n'a pas vocation a être faite en continu, mais de façon régulière, il faut juste que les données soient prêtes à être traitées, et je suis presque sûr que les données récupérées par Ankama à l'heure actuelle sont suffisante
0 0
Score : 918

L'idée est intéressante, mais créerait un nombre gargantuesque de faux positifs. Ton système sera de plus en plus précis oui, mais les bots aussi ce qui signifient que dans leur manière de jouer ils se rapprocheront de plus en plus au fil du temps à la manière de jouer d'un joueur un peu farmeur ou tout à fait normal. Et là imagine le massacre : Ce sera à ce moment là que des milliers de joueurs tout à fait légitimes se prendront leur ban pour rien, chose qui pour une entreprise comme Ankama n'est pas envisageable.

Quand je pense à "devenir plus précis" pour un bot je pense notamment à : Randomiser la vitesse des combats, les trajets de farm, le nombre de combats à faire par heure, le temps de connexion dans une journée, interagir avec les joueurs de manière aléatoire, randomiser le fait de fermer le mode spectateur ou non, faire des teams de classes variées etc.

Starlight

0 0
Score : 2171
Starlight68|2016-06-08 20:36:52
L'idée est intéressante, mais créerait un nombre gargantuesque de faux positifs. Ton système sera de plus en plus précis oui, mais les bots aussi ce qui signifient que dans leur manière de jouer ils se rapprocheront de plus en plus au fil du temps à la manière de jouer d'un joueur un peu farmeur ou tout à fait normal. Et là imagine le massacre : Ce sera à ce moment là que des milliers de joueurs tout à fait légitimes se prendront leur ban pour rien, chose qui pour une entreprise comme Ankama n'est pas envisageable.

Quand je pense à "devenir plus précis" pour un bot je pense notamment à : Randomiser la vitesse des combats, les trajets de farm, le nombre de combats à faire par heure, le temps de connexion dans une journée, interagir avec les joueurs de manière aléatoire, randomiser le fait de fermer le mode spectateur ou non, faire des teams de classes variées etc.

Starlight

Bah non justement, c'est le concept de le pas avoir de faux positifs en fait. Les bots évolueront oui, et le système aussi.

Tu parle du jour où les bots joueront de plus en plus comme des véritables joueurs ; je ne pense pas que ce jour arrivera pour une simple et bonne raison. Pour reprendre l'illustration de la sécurité que j'utilise, le coût du hack sera supérieur à ce que ça rapportera : développer une véritable IA pour les bots sera bien trop complexe et coûteux, du coup ils ne le feront pas.
Si le système voit que deux classes tendent vers la même chose, il s'en rendra compte et agira en conséquence.

Et au delà, juste modifier les actions n'aurait pas d'impact sur le système, il y a beaucoup trop de données à prendre en compte pour que les concepteurs songent à tout et font en sorte que leurs bots changent de classe (Au sens Bayésien du terme).
0 0
Score : 918
glatulien|2016-06-08 21:28:59
Starlight68|2016-06-08 20:36:52
L'idée est intéressante, mais créerait un nombre gargantuesque de faux positifs. Ton système sera de plus en plus précis oui, mais les bots aussi ce qui signifient que dans leur manière de jouer ils se rapprocheront de plus en plus au fil du temps à la manière de jouer d'un joueur un peu farmeur ou tout à fait normal. Et là imagine le massacre : Ce sera à ce moment là que des milliers de joueurs tout à fait légitimes se prendront leur ban pour rien, chose qui pour une entreprise comme Ankama n'est pas envisageable.

Quand je pense à "devenir plus précis" pour un bot je pense notamment à : Randomiser la vitesse des combats, les trajets de farm, le nombre de combats à faire par heure, le temps de connexion dans une journée, interagir avec les joueurs de manière aléatoire, randomiser le fait de fermer le mode spectateur ou non, faire des teams de classes variées etc.

Starlight

Bah non justement, c'est le concept de le pas avoir de faux positifs en fait. Les bots évolueront oui, et le système aussi.

Tu parle du jour où les bots joueront de plus en plus comme des véritables joueurs ; je ne pense pas que ce jour arrivera pour une simple et bonne raison. Pour reprendre l'illustration de la sécurité que j'utilise, le coût du hack sera supérieur à ce que ça rapportera : développer une véritable IA pour les bots sera bien trop complexe et coûteux, du coup ils ne le feront pas.
Si le système voit que deux classes tendent vers la même chose, il s'en rendra compte et agira en conséquence.

Et au delà, juste modifier les actions n'aurait pas d'impact sur le système, il y a beaucoup trop de données à prendre en compte pour que les concepteurs songent à tout et font en sorte que leurs bots changent de classe (Au sens Bayésien du terme).
Les prix augmenteront sur les sites de vente de kamas c'est sûr, mais pas tant que ça au final car ce que j'ai écrit plus haut n'est pas si difficile à mettre en place sur les bots.
0 0
Score : 2171

Non, c'est probablement très facile, mais c'est pas moins facile à mon système de repérer les évolutions comportementaux ; on parle d'apprentissage Bayésien, qui fonctionne très bien sur les ensembles Gaussien, utilisant la loi normale : il est très simple de continuer à trouver un bot à partir du moment où il ne change pas radicalement ses habitudes

0 0
Score : 19569

Je remets ma petite remarque, car comme je l'avais ajoutée en edit, elle semble être passée inaperçue.

Edit : Oh je viens de relire en rentrant chez moi, et je remarque qu'il manque une étape de normalisation avant d'appliquer ta distance euclidienne (d'ailleurs pourquoi la distance euclidienne plutôt qu'une autre ?). En effet, si l'on reprend ton exemple, la distance entre un Crâ et un Iop, tous les autres paramètres étant égaux sera de 1. Par contre la distance entre un Crâ ayant 0 Kamas et un Crâ ayant 1 000 000 de Kamas (tous les autres paramètres étant égaux) sera de ... 1 000 000².

Donc sans normalisation préalable, certains paramètres, peut-être pas significatifs du tout, vont tout écraser !

0 0
Réagir à ce sujet