Transparence technique

Comment Stuff Opti transforme tes contraintes en build vérifiable

Notre principe est simple : le moteur optimise les dégâts réels de la rotation déclarée, sous des contraintes de jeu explicites. Cette page décrit les données, le calcul, la recherche et les contrôles qui rendent le résultat auditable.

Contenu rédigé et vérifié par l’équipe Stuff Opti · Mis à jour le

Une séparation stricte entre données, règles et préférences

Les caractéristiques des objets et des sorts proviennent d’un snapshot de données. Elles ne sont pas recopiées dans le code du solveur. Cette séparation permet de mettre à jour le catalogue sans modifier la formule et évite qu’un ancien chiffre caché continue d’influencer les résultats après un changement du jeu.

Les règles de validité forment une deuxième couche : un objet par emplacement, deux anneaux distincts, unicité des Dofus et trophées, niveau d’objet compatible, gestion des armes à deux mains et activation des bonus de panoplie. Enfin, le profil du joueur apporte les préférences du calcul : rotation, cible, seuils de PA, PM, portée et vitalité, budget et forgemagie.

Le solveur ne doit jamais corriger silencieusement un profil impossible. Si aucune combinaison ne respecte les contraintes, la bonne réponse est d’expliquer l’incompatibilité ou de proposer un seuil à revoir, pas d’ignorer une règle pour afficher tout de même un build.

Des bonus de panoplie interprétés sans double comptage

Les sources de données peuvent fournir le bonus total atteint à chaque nombre de pièces. Dans cette convention cumulative, le palier trois pièces remplace le total du palier deux pièces ; il ne vient pas forcément s’y ajouter intégralement. L’import convertit donc les paliers cumulatifs en incréments avant la résolution.

Le modèle compte les pièces équipées et active chaque incrément lorsque son seuil est atteint. Cette étape est importante : une erreur de convention peut créer des PA, de la portée ou des dommages qui n’existent pas en jeu. La fiche finale réaffiche les bonus actifs afin que le total puisse être contrôlé sans connaître l’implémentation interne.

L’objectif : les dégâts de la rotation, pas une note de stats

Pour chaque ligne, le moteur applique la base du sort, la caractéristique élémentaire, la puissance et les dommages fixes. Les lignes sont additionnées puis la résistance de la cible est appliquée. Avec une rotation et une cible fixes dans le cas sans critique ni proc, cette fonction est affine : elle peut être représentée exactement dans le modèle de décision.

CP-SAT travaille avec des entiers. Le moteur multiplie donc l’expression par un facteur constant pour supprimer les divisions, sans changer l’ordre des candidats. Si B est la somme des bases etn le nombre de lignes, la partie optimisée dans un profil feu prend la forme suivante :

B × (intelligence + puissance) + 100 × n × dommages

Ce n’est pas un proxy arbitraire : c’est la formule de la rotation remise à l’échelle. La résistance fixe multiplie tous les candidats mono-élément par le même facteur et peut être réappliquée lors de la restitution pour afficher le total de combat.

Pourquoi utiliser un solveur de contraintes exact

Le nombre de combinaisons explose rapidement : chaque emplacement propose de nombreux objets, auxquels s’ajoutent les panoplies, les seuils et la forgemagie. Tester quelques équipements populaires ou construire le build de façon gloutonne ne prouve rien. Un objet légèrement moins fort seul peut débloquer un meilleur palier de panoplie ou satisfaire un PA à moindre coût.

Le modèle CP-SAT représente les choix d’objets par des variables et impose toutes les contraintes du profil. Il explore l’espace restant avec des bornes mathématiques et cherche le meilleur objectif. En mode minmax strict, l’exactitude passe avant la vitesse : le résultat principal doit être prouvé optimal pour le modèle et les données fournis.

« Optimal » a donc un sens précis. Cela ne signifie pas meilleur dans tous les combats possibles ; cela signifie qu’aucune autre combinaison valide du catalogue considéré ne produit un meilleur score pour la rotation, la cible et les contraintes déclarées.

Forgemagie : ajouter des options sans perdre la traçabilité

Chaque objet éligible peut recevoir des options de forge autorisées par le modèle. Comme la FM ajoute des possibilités, activer ces options ne peut pas dégrader le meilleur score mathématique ; le solveur reste libre de ne pas les utiliser. En revanche, un budget peut rendre certaines forges inaccessibles.

La restitution associe chaque modification à son objet et indique son coût. La provenance du prix est également importante : une donnée réelle importée n’a pas le même niveau de confiance qu’une estimation synthétique. Stuff Opti doit signaler ce cas pour que l’utilisateur puisse vérifier le marché avant achat.

Critiques, procs et autres dimensions non linéaires

Le taux de critique et les dégâts critiques dépendent tous deux du stuff. Leur combinaison est bilinéaire : l’intégrer naïvement dans un objectif linéaire peut choisir le mauvais candidat. Les procs et certaines conditions de sorts posent des problèmes similaires.

La méthode retenue consiste à discrétiser la dimension nécessaire, résoudre exactement les sous-problèmes, conserver plusieurs candidats, puis recalculer leur performance avec le moteur exact. Le vrai meilleur score est choisi lors de ce reranking. Tant qu’une mécanique n’est pas prise en charge de cette façon, elle doit rester désactivée ou clairement présentée comme une limite.

Pourquoi afficher plusieurs alternatives

Un optimum unique répond à la question mathématique, mais pas toujours à la décision d’achat. Stuff Opti cherche aussi des candidats proches, typiquement dans une petite enveloppe de perte, puis les étiquette selon une différence réelle : davantage de PM ou de portée, plus de survie, ou un coût inférieur.

Ces variantes ne sont pas choisies au hasard. Elles doivent respecter les mêmes contraintes dures que le meilleur build et annoncer leur écart de dégâts. Le joueur peut ainsi mesurer le prix exact d’un confort supplémentaire au lieu de comparer deux fiches sans contexte.

La checklist de vérification finale

  1. Chaque emplacement est rempli conformément aux règles, sans doublon interdit.
  2. Le niveau de chaque objet est inférieur ou égal au niveau du personnage.
  3. Les bonus de panoplie correspondent au nombre exact de pièces.
  4. Les bases du personnage, les stats d’objets et les forges rejoignent les totaux affichés.
  5. Les seuils de PA, PM, portée, vitalité et budget sont tous respectés.
  6. La rotation et la cible utilisées sont visibles.
  7. Le calcul des lignes reproduit le total annoncé.
  8. La provenance des prix et les limites du mode de calcul sont signalées.

Une sortie qui échoue à l’un de ces contrôles n’est pas une recommandation valide. Cette exigence de restitution est aussi importante que la performance du solveur : un optimum impossible à expliquer ne permet ni de détecter une donnée erronée ni de prendre une décision d’achat sereine.

Ce que Stuff Opti ne prétend pas décider à ta place

Le moteur ne connaît pas automatiquement ton placement, la composition de ton équipe, les habitudes de ton serveur ou la valeur personnelle que tu accordes à un PM. Il optimise ce que tu lui décris. Une mauvaise rotation ou un seuil irréaliste produit un problème bien résolu, mais mal posé.

Les prix sont des observations et peuvent évoluer. Les données du jeu peuvent contenir une erreur de mapping ou devenir obsolètes après une mise à jour. C’est pour cela que la fiche privilégie la transparence : elle donne les éléments nécessaires pour contester, corriger et relancer le calcul.

Voir la méthode appliquée à ton profil

Prépare une rotation et des seuils réalistes, puis contrôle le résultat avec la checklist ci-dessus.