JeuWeb - Crée ton jeu par navigateur
Algorithme calcule exp requis par niveau - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Algorithme calcule exp requis par niveau (/showthread.php?tid=6962)



Algorithme calcule exp requis par niveau - nestoyeur - 23-05-2014

Bonjour à tous,

Je cherche un algorithme qui me permettrais, en fonction du niveau actuel du joueur de calculer l'expérience maximum requis pour atteindre le niveau suivant. Sachant qu'il n'y a pas de limitation au nombres de niveaux ce calcule est délicat pour moi.

Comme dans tout jeu il faudrait que la progression sois rapide au début et que l'expérience requis dans les premier niveau s'incrémente doucement puis à mesure que le joueur gagne des niveau la courbe s'accentue. Quelque chose qui ressemblerais à ça:

[Image: parangon1000.jpg]
NB: Cette courbe correspond à l'expérience requis par niveau dans le jeu diablo 3

Avez vous une idée d'algorithme qui donnerais ce genre de résultat ?

[EDIT] Je crois qu'il est important de préciser que le gain d'expérience durant le jeu restera le même peut importe l'avancé du joueur et que je ne suis pas sure que l'on puisse utiliser un seul algorithme pour ce que je demande. Peut-être qu'il faudrait un premier de type linéaire jusqu'à un certain palier à partir du quel il faudrait passer sur un type logarithmique ?


RE: Algorithme calcule exp requis par niveau - @lucard - 23-05-2014

la fonction ²
fonction exponentielle.

il te faut
1 xp pour level1
4xp pour level 2
36xp pour level 6
400xp pour level 20
et caetera. non ?


RE: Algorithme calcule exp requis par niveau - Xenos - 23-05-2014

Ouep, comme @lucard:

Niveau = pow(XP, n) (fonction puissance, ou "carrée") avec n < 1, et son inverse XP = pow(Niveau, 1/n).
Niveau = pow(k, XP) (fonction exponentielle en base k) avec k > 1 et son inverse XP = log(Niveau, k) (log en base k)

Pour avoir un niveau entier, on peut prendre la truncature ( Niveau_Entier = floor(Niveau) ).
Pour ne pas avoir des valeurs de n ou de k microscopiques (type n=0.99999 ou n=1.00001), on pourra diviser XP par un coefficient (et donc, au lieu de l'XP réelle, utilisée l'XP "en millions", comme sur le diagramme).

La courbe du diagramme n'est ni une puissance, ni une exponentielle. Ces deux courbes présentent un gros problème: passe du niveau 100 au niveau 101 requière énormément d'XP, et les joueurs finissent par tous se "tasser" vers les mêmes niveaux (en fait, les joueurs se tassent entre les niveau 100 et 105 par exemple, mais le niveau 105 est 10x plus fort que le niveau 100).

La courbe du diagramme ressemble plutôt à une composée:

xp = k* ( ln(cosh( (n-a)/b)) - ln(cosh( -a/b )) + n/c )

Où n est le niveau et xp l'expérience associée.
a: la valeur au niveau de laquelle on bascule de "débutant" à "vétéran"
b: la platitude de la courbe, plus b est grand, moins on a de différence entre les débutants et les vétérans pour gagner un niveau
c: la pente générale, doit être inférieur à b
Si c est supérieur à b, les débutants auront besoin d'un nombre négatif d'xp pour gagner un niveau XD

Après, il suffit de mettre l'xp dans la bonne unité (exemple: sur le diagramme, l'xp était en million): le coefficient de proportionnalité k est là pour cela.
Dans le cas de l'exemple du diagramme, les valeurs a=500, b=43, c=40 et k=2000 (eheh) donnent ce résultat.

[Image: xp-niveau-500-43-40.jpg]


RE: Algorithme calcule exp requis par niveau - nestoyeur - 24-05-2014

T'es un fuking génie Xenos !!! Ahah c'est ce que j'appellerais une "formule magique" <3 !!! Merci mile fois je pouvais pas espérer mieux :o J'avais prévu 1 à 2 jours pour trouver l'algorithme, tu m'a fais gagné tout ce temps *.*


RE: Algorithme calcule exp requis par niveau - Xenos - 24-05-2014

Echange de bons procédés: je fournis les maths, et quand mes jeux seront finis, vous (au sens large de tout JW) fournirez les joueurs? Smile


RE: Algorithme calcule exp requis par niveau - nestoyeur - 24-05-2014

héhé why not, mon jeu sera disponible via le t'chat de mon stream et je ne suis pas contre y mettre un lien en remerciement quand j'aurais fini de tout codé je vais refaire la page de présentation twitch alors je t'oublierais pas Wink