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

Forgemagie et Machine Learning ?

Par Issiraaa - ABONNÉ - 02 Juin 2020 - 22:29:04

Bonjour à tous !
Beaucoup de joueurs aiment cet aspect du jeu qu'est la forgemagie. Cet art subtil aux diverses techniques où beaucoup d'approches sont possibles pour appréhender un objet et son jet. Je ne vais pas m'étendre sur les techniques, car en cherchant on les trouve, mais sur un aspect que bon nombre de forgemages voudraient mieux connaître : le taux de passage des runes. Alors certains me diront qu'on les connaît, je leur dirais que non ! Nous ne connaissons que des approximations, et beaucoup de forgemages vous le diront : on apprend avec l'expérience et il faudra suivre certaines intuitions. De ce fait, il doit bien exister des formules complexes permettant au jeu d'attribuer un echec (crit ou neutre) ou un succès (crit ou neutre) lorsque l'on passe une rune. Pour que cette/ces formule(s) fonctionnent, elles doivent avoir des paramètres précis et prédéfinis.

Ceci étant dit, j'ai pu lors de ma scolarité expérimenter le Machine Learning, et je vois une utilité en ce sujet. En d'autres termes, j'aimerais affiner la connaissance collective en essayant de faire en sorte qu'un algorithme puisse déduire si une rune va passer ou non via certains paramètres, et ce de façon assez précise.

Évidemment, si le projet arrive à terme je partagerai tout le savoir collecté, les algorithmes et divers outils ayant servis à l'élaboration de ce projet.

Passons au coeur du sujet : ceux qui sont dans l'informatique savent que pour ce genre de projet, il faut un "dataset" (un jeu de données). C'est là que j'ai besoin d'aide !
En effet, pour que l'apprentissage se fasse correctement, ce dataset doit être énorme (~30'000 entrées serait un bon début). À quoi ressemble un dataset ? c'est un tableau excel ^.^' ni plus ni moins !
Les paramètres pouvant servir à déterminer le passage d'une rune seraient :
- Le nom de l'item;
- Son poids minimal (somme des poids des stats de l'objet en son jet naturel le plus bas);
- Son poids maximal (somme des poids des stats de l'objet en son jet naturel le plus haut);
- Son poids actuel (somme des poids des stats de l'objet courant avant le passage de la rune);
- Le poids de la rune voulant être passée;
- Est-ce un exo ?
- Est-ce un over ?
- Y a-t'il le puit suffisant ?
- La rune respecte-t-elle la condition icosagonale ? (n'est pas 19 fois inférieur à la stats courante)
- Le niveau de l'objet;
- Y a-t'il déjà un exo ?
- Y-a-t'il déjà un over ?
- Jet minimum de la stat courante (celle de la rune);
- Jet courant de la stat courante (celle de la rune);
- Jet maximum de la stat courante (celle de la rune);

Deux options peuvent apparaître : (1) Ankama peut nous fournir un dataset assez complet des fm d'une journée (je pense que ça suffirait), reste à savoir si c'est techniquement possible d'extraire ces données (une fonction dans leur code serait à développer) et si Ankama le voudrait (ce que je ne pense pas ^.^). (2) Les joueurs pourraient remplir un fichier excel via un template téléchargeable, le remplir en même temps que leurs fm (excessivement contraignant on va pas se le cacher) et l'upload sur un site dédié ou quelque chose comme ça.

Les deux options semblent très compliquées et peu réalisable, mais je tenais à partager cette idée de projet !
Si vous avez des suggestions, quelqu'elles soient, merci d'en faire part biggrin

Merci d'avoir lu !

3 -4
Réactions 20
Score : 5898

Le problème de faire ça avec de la forgemagie c'est qu'il y a de l'aléatoire, le résultat est imprévisible. Donc faire du machine learning là dessus...

D'ailleurs sans l'aléatoire il n'y aurait pas besoin de machine learning du tout pour prédire si une rune peut passer ou non. (et je pense que des outils qui permettent de calculer les chances de passer telle ou telle rune existent déjà).

1 -3
Score : 3126

Alors, y'a de l'aléatoire, oui et non en fait. D'un point de vue humain, oui c'est aléatoire, mais du point de vue d'une machine, ce n'est jamais totalement aléatoire, ça dépend forcément d'un facteur. Le jeu étant fait sur Java, et si ils n'ont pas fait un aléatoire maison, toute la RNG est finalement assez fixe, et anticipable si on sait comment elle fonctionne. Mais si jamais les gens arrivent à trouver comment le random fonctionne dans le jeu, ça va ptet permettre des abus absolument délirants. 
Mais pour parler du projet du machine learning sur la FM, j'avais eu une idée de faire un bot qui forgemage automatiquement, mais ça me paraissait très dur vu mon niveau informatique, et un projet de machine learning sur la forgemagie me parait au moins intéressant. Il faut juste se rendre compte que, clairement, si le truc marche, ce sera considéré comme de la triche, et c'est normal.

1 -4
Score : 20185

Alors en soit tu ne peux pas faire de la prédiction sur le passage des runes. Tu peux simplement essayer d'approximer les distributions de passage des runes. Mais tu n'auras jamais une prédiction de type "cette rune va passer à ce moment là". Au mieux tu auras "cette rune a tant de % de chance de passer à ce moment là".

Edit : devancé par mon VDD

0 -2
Score : 3126

Si justement, c'est possible de faire des prédictions, si on sait comment l'aléatoire du jeu fonctionne. cf ma réponse au dessus.

1 -4
Score : 190

Je suis d'accord avec vos points de vue, mais le machine learning ne permet pas de prédire, seulement déduire (je savais que ça porterait à confusion ,d'où le mot en gras dans mon texte explicatif). L'algorithme va apprendre, donc ne sera pas fiable à 100% Je ne vais pas m'étendre sur les technique d'apprentissage, mais le but est de prendre le dataset, de faire s'entrainer l'algo sur 80% du dataset puis de tester son apprentissage sur les 20% restant. De ça on en tire une matrice de confusion qui permet de savoir à quel pourcentage d'erreur l'algo est loin de ce que s'est réellement passé. Plus le taux d'erreur sera bas, plus l'algorithme sera en capacité de déduire si une rune passera selon ce qu'il aura appris.

1 -3
Score : 20185

Non mais merci, c'est mon métier il n'y a aucune confusion biggrin

Ce qu'on veut te dire c'est que tu essayes de prédire (ou déduire comme tu veux changer le mot ne changera pas le phénomène impliqué) un phénomène aléatoire. Tu peux donner toutes les infos du monde à ton modèle, tant que tu n'auras pas accès à l'état courant du générateur de nombre aléatoire sur le serveur Dofus tu ne pourras pas déduire quoi que ce soit sur le passage de la rune.

Prenons un cas simple : un gelano avec rien du tout dessus, tu veux passer une rune PM. C'est un cas super simple d'exo, la proba est connue, c'est 1%. Tu répètes ça 100 fois, tu obtiens 99 fois rien et 1 fois un gelano avec +1PM.

Si ton modèle prédit/déduit de son apprentissage si la rune va passer ou pas il doit déduire quoi ? Le meilleur truc pour lui c'est de prédire non systématiquement, comme ça il se trompe qu'une fois sur 100. 99% de bonne réponse c'est cool ! Sauf que ça sert à rien <_<

Un vrai modèle utile ça serait d'apprendre la distribution de probabilité justement. C'est à dire qu'au lieu de dire "oui cette rune va passer" ou "non cette rune va pas passer" il te dise "cette rune peut passer avec une proba de 1%". Dans ce cas tu modélises les distributions de probabilités qui sont codées côté serveur et auxquelles on n'a pas accès. Mais peu importe le nombre de données que tu as tu ne pourras JAMAIS dire si une rune passera ou pas sans avoir accès à l'état du générateur de nombre aléatoire du serveur.

5 -2
Score : 5655

Messageà mes VDD : Le machine learning permettrais non pas de savoir si ça va passer ou non, mais d'avoir des probabilités assez précises sur le passage des runes.

Le but c'est de faire connaître à la machine le maximum de situation, pour qu'elle puisse ensuite déduire ces probabilités.

Dans une moindre mesure c'est ce qu'il s'est passé avec les exo, un très grand nombre de situation ont été mises en commun et le chiffre déduit a été 1%.

Je suppose que l'auteur veut faire ça dans un contexte plus global, l'item a tant de poids max, tant de pois effectif, la rune pèsent tant, alors mes probabilité sont : xx% (Et ce résultat serait calculé sur la base de nombreuses situations proches)

Sinon pour te répondre l'auteur, n'espère pas d'ankama qu'ils te communiquent des chiffres, ils veulent garder une part de "mystère" à la forgemagie pour que ce ne soit pas un système résolu mathématiquement. Pour preuve, à l'heure actuelle ils n'ont toujours pas confirmé le poids des runes ni le taux de passages des exos, nous sommes incapable par exemple de dire si la valeur de 1% est correcte ou si elle est en réalité à 1.01% (Pour les runes on est sûr mais c'est différent ^^)

La seule manière de donner vie à ton projet serait une aide communautaire d'envergure. Bon courage dans ta démarche smile

3 -2
Score : 20185

C'est exactement ce que j'ai expliqué oui

1 -2
Score : -383

Effectivement cette idée de faire un machine learning pour déduire les probabilités d'une rune m'a souvent traversé l'esprit pour la forgemagie. Une telle info permettrait d'optimiser nos espérances mathématiques de gains, de savoir dans quel ordre mettre les runes pour optimiser nos chances en diminuant nos coûts.

Le plus difficile est de rassembler une quantité de données importante mais la réalisation de la chose ne serait pas triviale non plus. En effet le résultat est simplement "rune passée" ou "rune pas passée", à la rigueur avec le détail de SC, SN, Echec et EC alors que la donnée recherchée est un détail de %age de chances pour chacunes de ces 4 issues.

Si on veut aller plus loin, en cas de SN et de EC il faudrait déterminer les probas que chacune des autres stats tombent en fonction du poid de la rune passée, du poids de la stat baissée, du poids total de la ligne baissée, du max théorique de l'objet sur cette stat.

L'approche du deep learning pour permettre ça est une approche intéressante car même si c'est possible de faire de la simple rétro ingénierie ça demanderait beaucoup de travail.

0 -2
Score : 2437

Il est assez évident que ankama ne va pas s'amuser à fournir un tel jeu de données alors qu'ils pourraient tout simplement nous filer la formule utilisée pour calculer la probabilité de passage d'une rune (ce qu'ils n'ont jamais fait à ma connaissance).

Bon et sinon je rejoins mes VDD sur le fait qu'on peut au mieux espérer déterminer la probabilité de passage mais pas plus tant que l'on a pas accès à la graine du math.random(). Et d'ailleurs si des gens savaient déterminer à l'avance qu'une rune va passer ou non ils perdraient pas leur temps avec la forgemagie de dofus et iraient gagner des millions sur des casinos en ligne.

0 -2
Score : -130

Je pense que le plus simple serait un logiciel en arrière plan qui récupérerait  les infos rune tentée+jet de l'item en temps réel en séance fm, et tout serait centralisé dans un excel en attendant l'analyse des données

Sans même parler de machine learning, je pense qu'en quelques jours on aurait assez de données pour avoir une approche assez réaliste de la probabilité de passer telle ou telle rune.

Exemple : J'ai un masque koutoulou à un certain jet, j'aimerai passer une rune ra vi sur 287 vitalité, la base de données m'indique qu'au jet identique au mien, la rune ra vi est passé en crit à 32 cas sur 89. On pourrait aussi utiliser des jets semblables au mien pour avoir une idée de la probabilité au cas où il n'y a pas assez de données sur le jet exact de mon item.

1 0
Score : 2043

Le seul vrai intérêt du truc serait de faire un third party qui FM à ta place. En gros, feed un paquet de data à ton algo pour qu'il apprenne les règles de la FM et développe une stratégie basée sur ces données.

En soit afficher le % de chance on s'en fou, ça reste de l'aléatoire. 

1 0
Score : -383

 

En soit afficher le % de chance on s'en fou, ça reste de l'aléatoire. 

Pas du tout. Par exemple on sait quel est le % de chance de réussir un exo du coup les gens savent quel est le budget de l'opération et peuvent faire une espérance de gains.

Avoir un tel %age servirait :
- A savoir s'il y a un ordre optimal pour les runes de passer
- A faire des économies sur l'ordre des runes à passer (ex : si une rune coûte très cher, comment en utiliser le moins possible tout en ayant de bonnes proba d'arriver au jet voulut)
- A estimer le coût supplémentaire d'un meilleur jet

ça reste de l'aléatoire mais connaître précisément tes chances c'est très utile, c'est comme si tu disant que savoir le taux de drop d'une ressource ne sert à rien parce qu'au final c'est aléatoire. Ben non, les gens veulent savoir le taux de drop d'une ressource et y a pas besoin de vouloir faire un bot pour ça.

 
helltux|07/06/2020 - 22:04:45
La comparaison avec les entreprises est complètement faussée. Le FM étant une succession d'événement aléatoire indépendant, tu ne pourra déterminer le taux de passage d'une rune qu'au moment de la passer, c'est à dire, que tu ne pourra déterminer la potentielle rentabilité de ton investissement qu'après avoir cramé une bonne partie de l'investissement. 

Si ton but c'est de prendre un objet quelconque, d'y appliquer ton algorithme et d'obtenir une valeur statistique représentant tes chances de parvenir à un jet déterminé, alors je peux déjà te répondre : infinitésimale. L'arbre des possibles est tout simplement trop important, et après seulement quelques itérations, les chances pour qu'une série d'événements bien précise arrive chute drastiquement.

Si ton but c'est de déterminer les chances de succès du prochain passage de rune, quel intérêt ? Ça revient simplement à mettre une valeur concrète sur tout ce que les bons forgemages ont déjà : une compréhension instinctive du système, et n'a aucun intérêt financier puisque tu peux, au mieux, seulement déterminer les chances de passage de la rune en cours, c'est à dire que tu dois déjà être en possession d'un jet à exo/over pour déterminer si l'exo/over à le potentiel d'être rentable.

Il y a, à mon sens, tout simplement trop d'aléatoire à trop de différent niveau pour qu'une étude statistique soit intéressante. D'autant que tu est tout simplement limité par tes biais et ta logique humaine pour exploiter correctement l'ensemble des données accumulée.

Encore une fois, et toujours à mon sens, le seul vrai intérêt du machine learning c'est de developper une petite IA capable de FM d'elle même.

La différence ça serait qu'avec une bonne compréhension des probas, par exemple les proba de repassage d'un PA qui a sauté ou autre, tu peux optimiser bien mieux tes chances d'obtenir un jet souhaiter avec le minimum de runes. Effectivement les artisans font déjà ça, mais ils le font à l'instinct et c'est loin d'être fiable, y a plein de règles implicites que les gens se fixent en fonction de la situation et de l'item. Si t'as les probas exactes, t'as une bien meilleure compréhension du système et tu peux optimiser ton artisanat.

Encore une fois c'est là même chose que pour un exo, le fait de savoir que c'est 1% de chance permet d'évaluer correctement la valeur d'un item et les espérances de gains moyennes.
2 0
Score : 2043

En l'occurence, connaître le taux de passage d'une rune, à part t'en plaindre quand ça passe pas, je vois pas trop l'intérêt. Sauf pour tenter d'optimiser en essayant de gratter des % à droite à gauche, d'où le fait que j'ai parlé d'algo qui le fasse pour toi.

Ça reste de l'aléatoire, tu peux estimer le coût de production moyen d'un jet sur une grande quantité produite, mais au cas par cas, t'aura toujours des variations colossale. T'as des exos qui passeront du premier coup, d'autres qui passeront jamais. Le seul vrai intérêt, et là j'suis d'accord, c'est pour étudier la faisabilité d'un jet et l'investissement estimé que ça représente, mais d'un point de vue FM, bof. 

0 0
Réagir à ce sujet