PixEye / juke-swgoh-bot

Juke's Swgoh Bot is a Discord bot for the mobile video game: Star Wars Galaxy of Heroes. It uses the Swgoh.gg API to retrieve players' data from game and follow their evolutions
Apache License 2.0
7 stars 5 forks source link

Évolution du calcul du % de progression d'un personnage. #19

Closed Hhaseo closed 9 months ago

Hhaseo commented 9 months ago

Actuellement le calcul est en fait en 3 cas distinct : 1) Si un personnage n'est pas 7 : Seul les étoiles sont prises en comptes 2) Perso est 7 mais pas G13 : on prend en compte Gear et l'objectif Reliques. 3) Perso est G13 : On prend en compte que les reliques.

1) Incohérence entre perso 6 et 7 : ça peut donner, pour les joueurs plus modestes n'ayant pas encore les pré-requis 7*, une mauvaise vision de là ou ils sont en réellement :

Exemple : Un perso 6 G1 est a 60% d'avancement. On le up 7 : il passe à 6%, le progrès global de la GL recule. Autre cas : Un perso 6 G1 et un perso 6 G11 sont au même niveau (ce qui n'est pas vrai) et cette distinction ne sera visible qu'une fois la 7* étoile atteinte pour les 2.

2) Les progressions (étoiles, gear & reliques) ont autant d'impacte quelque soit le niveau atteint.

Par exemple : passer de la 2e a la 3e étoile à autant de poids que de la 6e à la 7e. même principe pour les Gear et Reliques, mais on sait bien que plus on monte plus c'est long.

Propositions :

Ne faire qu'un seul calcul prenant en compte les 3 (étoiles - Gear - Reliques) en 1 coup. Je vais envoyer le code pour une PR mais voici le principe :

1) Au début du fichier Tools.js on ajoute 3 tableau de "Pondération" Pour les étoiles : Le nombre de Shard (cumulés) requis. Pour les Gear et Reliques : Une valeur arbitraire de difficulté, cumulé toujours. Plus le pas est important plus on considère qu'il est dur de passer de l'un à l'autre.

2) Plus bas dans le fichier, lors du calcul du progress : On commence par calculer la "part" de pourcentage alloué au étoiles, gear et relique en fonction des requis. Les étoiles sont fixes a 25%. Les reliques sont sur 20 % * niveau requis / 9 (ici on permet de distinguer entre un perso qui a besoin de R3 ou R5 ou R8) Le Gear prend ce qu'il reste pour arriver a 100%

3) On enchaîne par Le calcul en soit : (Nombre de fragments cumulées acquis pour l'étoile actuel / nombre de fragments cumulées pour le niveau 7) * pondération de la partie des étoiles.

Le reste du code ne change pas pour afficher les messages en fonction de la ou on en est (étoiles ou Gear ou Relique), mais le % d'avancement ne sera pas recalculé.

PS : Sur le discord je suis Hhaseo (j'avais évoqué ça y a quelque semaines). Actuellement il tourne sur mon serveur perso et est branché à un discord de test et un vieux discord de ma guilde (plus utilisé) pour avoir l'avis d'autre membre. Ils semblent assez content du changement pour ceux que ça concerne (les lvl comme moi avec un inventaire pas trop fourni de perso 7*) Si tu veux aller tester le comportement sans forcément devoir redéployer chez toi hésite pas à me contacter je t'inviterais sur mon serveur de test.

PS : Maintenant faut que je regarde comment faire une PR sur un dépôt publique qui est pas le miens, j'arrive^^)

PS Bis : Bien sur toutes les valeurs (pondération de la difficulté des étoiles / gear / reliques et répartition du % global entre étoiles, Gear et Reliques sont des valeurs arbitraire que j'ai mis qui m'inspirait, mais cela peut s'ajuster comme on veux :)

Hhaseo commented 9 months ago

PS : A oui pour faire tout ça il faut m'ajouter un collaborateur que je tire la branche dédiée à cette issue et que je fasse la PR .

Si tu préfère que j'envoie le fichier séparément (même sur discord si nécessaire) pour ne pas ouvrir plus le projet à des inconnus pas de soucis dit le moi ;)

PixEye commented 9 months ago

PS : A oui pour faire tout ça il faut m'ajouter un collaborateur que je tire la branche dédiée à cette issue et que je fasse la PR .

Si tu préfère que j'envoie le fichier séparément (même sur discord si nécessaire) pour ne pas ouvrir plus le projet à des inconnus pas de soucis dit le moi ;)

Salut. Une PR serait top. Pour la pondération des étoiles, le plus juste serait de prendre le nombre d'éclats nécessaires à chaque étoile. Pour les niveaux de G1 à G13, ça peut être le niveau au carré pour simplifier et idem pour les reliques de R0 à R9.

Pas besoin que je te donne des droits spéciaux normalement :

Hhaseo commented 9 months ago

Merci, je pensais pas devoir Fork les projets sur Github pour cela (ce sera ma 1er participation au dépôt d'une autre personne :) )

Pour les éclats c'était déjà le cas, j'ai suivi ta recommandation en utilisant le carré pour les Gear et Reliques. A voir si en pratique le G13 ne devrait pas être encore plus au dessus du G12 mais cela se gère facilement avec les constantes si un jour tu souhaite ajuster.

Je te laisse regarder la Pull Request et voir si ça t'intéresse ou non ;)

En tout cas merci pour ton travail, j'adore ton Bot ! :)

PixEye commented 9 months ago

Could you please confirm the percentage computation is better now? If so, I will close this issue.

Hhaseo commented 9 months ago

J'ai fait quelque tests ça semble pas mal. Le cas le plus flagrant c'est le passage d'un personnage 6 a 7 mais j'en ai pas sous la main. J'avais cependant fait le test avant avec un Reroll donc je me fait pas de doute la dessus ;)

Merci