2.0 Portions de code décompilé étranges

Inscrit
1 Mars 2020
Messages
18
Reactions
12
#1
Salut à tous!
J'étais entrain de regarder et d'essayer de comprendre le code pour le pathfinding du perso. En lisant le fichier /com/an...agames/jerakine/pathfinding/Pathfinding.as, j'ai remarqué que il y avait des bouts de code bizarre.

Par exemple, on a (lignes 195-198):
Code:
if(i == start.x || y == start.y)
{
   movementCost = movementCost - 3;
}
alors qu'on s'attendrait à quelque chose comme (x == start.x || y == start.y) dans la condition. i est un itérateur utilisé dans des boucles bien avant ce bout de code et n'a rien à voir avec des coordonnées.

Il y a aussi des conditions étranges du style (lignes 176-209) :
Code:
if(bAllowTroughEntity)
{
...

    distanceTmpToEnd = MapTools.getDistance(cellId,endCellId);
    if(distanceTmpToEnd < distanceToEnd)
    {
        endCellAuxId = cellId;
        distanceToEnd = distanceTmpToEnd;
    }
}
Ce qui n'a pas vraiment de sens : le client enregistre la cell la plus proche de la fin SI ET SEULEMENT SI on autorise le personnage à passer à travers les entitées? C'est bizarre.

Le reste de la fonction est bourré de code et de conditions qui semble très très arbitraires pour du pathfinding avec A* (enfin à mon avis. J'avais un peu travaillé sur du A* mais je n'avais jamais vu de conditions dans ce style.)

Je me demande donc si il peut y avoir des erreur lors de la décompilation avec JPEXS et si oui, comment pourrait-on faire pour avoir un code sans erreur. Je me demande aussi si il y a d'autres erreurs de décompilations que je n'aurais pas vu car elle ne me paraissaient pas anormales.
Vous en pensez quoi?

Merci d'avance.

PS : Je me trompe peut être. Il est fort possible que le code soit complètement correct et que je m'inquiète pour rien.
 
Inscrit
6 Juin 2020
Messages
27
Reactions
52
#2
Normalement sur FFDec tu peux voir quel ligne de bytecode est liée à ta ligne action script. Ça permettra de savoir si c'est bien la bonne variable ou pas. Mais bon, est-ce que ça vaut vraiment le coup de se faire chier avec ?
 
Inscrit
1 Mars 2020
Messages
18
Reactions
12
#3
Bah justement le bytecode correspond au code bizarre, donc a priori le code affiché par ffdec est correct.
Effectivement ça vaut peut etre pas le coup de se faire chier avec ça, d'autant plus que j'ai vu personne d'autre relever un problème dans le genre sur ce site, mais ça me perturbe :/
Enfin bon au final mon code de pathfinding semble bien imiter le comportement du client donc je vais pas chercher plus loin pour l'instant, mais ça m'interresserait tout de même de savoir si d'autres personnes ont remarqué des coquilles dans ce style avec d'autres portions de code.
 
Inscrit
6 Juin 2020
Messages
27
Reactions
52
#4
Personnellement, sur Dofus 1.29 par contre, j'ai abandonné l'idée de reprendre leurs algos. L'important c'est surtout que ça fonctionne et que le code soit propre et maintenable, ce qui n'est pas le cas du code décompiler du client ;)
 
Haut Bas