Formule universelle

Gopol
Mystique
Posts: 781
Joined: Wed 06 Jan 2016, 16:42
Realm: Agonedus

Formule universelle

Postby Gopol » Wed 08 Jun 2016, 16:18

Ceci est connu des habitués de la simulation mais comme le post original a été perdu, je le rapèle ici.

Les résultats des crafts dépendent généralement des caractéristiques des ingrédients utilisés. A cela s'ajoute l'effet de la "base" de la recette et un effet du à la "qualité" choisie lorsqu'il y a une qualité autre que normale ou régulière.

Le "mapping"

On exprime généralement les caracs utilisées pour un résultat particulier sous une forme semblable à cet exemple :
  • 25% Isolation + 50% Rigidité + 25% Imperméabilité
C'est ce qu'on appelle généralement le "mapping" du résultat.
La somme des pourcentages d'un mapping fait généralement 100 mais pas toujours. Le mapping n'est pas visible dans le jeu et n'est généralement pas communiqué officiellement par Vyrtis, on le trouve par analyse mathématique.

Variantes de formule

Il y a deux variantes importantes pour les formules :
  1. Les formules à moyenne > 0
  2. Les formules "max"
Dans le premier cas, "25% prestige" dans le mapping signifie que l'on prend 25% du prestige moyen des ingrédients utilisés ayant au moins 1 en prestige.
Dans le second cas, "25% prestige" dans le mapping signifie que l'on prend 25% du prestige de l'ingrédient ayant le plus fort prestige (parmis les ingrédients effectivement utilisés).

Notez que le nombre d'ingrédients pour une recette ayant la caractéristique k > 0 est souvent fixe mais pas toujours ( Il n'est par exemple pas fixe pour l'yggdracine parce que le type de matériau utilisé pour les différents supports n'est pas fixe non plus).


Formule universelle ::

  • X = Arrondi.Inférieur( Somme des caractéristiques multipliées par leur pourcentage dans le mapping) <--- où pour chaque caractéristique, on prend selon les cas la moyenne des ingrédients avec cette caractéristique > 0 ou le max
  • RN = Résultat en qualité normale = Arrondi.Half-even ( X + Base - X * Base / 100 )
  • Résultat en qualité "Q" supérieure à la normale = Arrondi.Half-even ( RN + ModRQ - RN * ModRQ / 100 )
  • Pour certaines recettes, diviser le résultat final par 10.


Note 1: Pour les qualités inférieures à la normale, c'est différent : on multiple RN par un ModRInfQ avec ModRinfQ fixe pour chaque qualité inférieure à la normale et compris entre 0 et 1.

Note 2 : ModRQ (Pour Modificateur Résultat de la Qualité) est unique pour chaque qualité et ne change pas de recette en recette.
  • ModR Complèxe = 2,4
  • ModR Précis = 2,25
  • ModR Supérieur = 4,8
  • ModR Remarquable = 1
  • ModR Exceptionnel = 4,5

Note 3 : Il y a donc bien potentiellement jusque 3 arrondis pour arriver au résultat final.

Le calcul de la difficulté d'un craft se fait de manière similaire sauf que le mapping est *presque* toujours le même (100% immuabilité ou 100% Inaltérabilité) et le calcul se fait toujours en mode max. Le modificateur de Difficulté en fonction de la qualité (ModFQ) pour une qualité supérieure à la normale est lui aussi fixe mais différent de ModRQ.

Problèmes d'arrondis dans le jeu

Arrondi half-even : Arrondi scientifique sauf que les nombre s'exprimant sous la forme N,5 avec N entier sont arrondi au nombre pair le plus proche.

Comme le jeu travaille en virgule flottante, chaque nombre a une certaine précision. Certains nombres sont encodables avec exactitude mais d'autres pas. Comme l'encodage repose sur un système binaire, il n'est pas évident pour un néophyte de savoir quels nombre sont encodables avec exactitude. Ainsi, par exemple, "0,1" n'est pas encodable avec exactitude mais "723,125" l'est.

Par ailleurs, l'erreur due à cette imprécision va, sous certaines conditions, se propager et grandir. Ainsi, par exemple, bien que 0,5 soit encodable exactement, il est probable que 0,1 + 0,1 + 0,1 + 0,1 + 0,1 ne donne pas exactement 0,5. Cele ne donnera cependant pas non plus exactement 5* la valeur précisement encodée à la place de 0,1. Les raisons de la chose sont subtiles et je n'entrerai pas ici dans plus de détails.

L'implication de tout ceci est que lorsque vous calculer à la main ou via un simulateur le résultat attendu pour un craft, vous n'obtiendrez pas toujours le même résultat que dans le jeu parce que lorsque vous arrondissez par exemple vers le bas 11 (arrondi bien évidement à 11) peut-être que ce 11 est encodé en 10,999999999 dans le jeu suite à une propagation de l'imprécision inhérente au cacul en virgule flotante et ce 10,999999 sera arrondi vers le bas à 10. Un problème similaire ce pose avec les arrondi half-even lorsque la valeur à arrondi est de la forme N,5 ou très très très près de cela (de l'ordre de 1*10^-8 près environ).

C'est à cause des ces imprécisions cumulées avec des arrondis que, par exemple, le marteau runique max (kryamane + rune mag 70) fait +59 en forge alors qu'il devrait faire +60 selon sa formule. Inversément, le fouet classique en nocturiel fait 1 de plus qu'il ne devrait.

Pour faire une simulation qui donnerait toujours exactement le même résultat que dans le jeu, il faudra utiliser une librairie mathématique ayant exactement les mêmes spécifications que celle utilisée par Vyrtis et suivre exactement les mêmes étapes intermédiaires. Ceci comprend de tout additionner dans un ordre précis (qui nous est inconnu) puisque en virgule flotante, l'addition n'est pas nécessairement parfaitement commutative.

Return to “Métiers”

Who is online

Users browsing this forum: No registered users and 2 guests