JeuWeb - Crée ton jeu par navigateur
Comment calculer l'XP et les changements de 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 : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Comment calculer l'XP et les changements de niveau ? (/showthread.php?tid=7690)



Comment calculer l'XP et les changements de niveau ? - constance67 - 26-08-2016

Bonjour à tous !

Je cherche désespérément une explication pour une petite application sur laquelle je travaille actuellement.
J'espère vous pourrez m'aider !

Voilà mon problème :
Je cherche une formule permettant de passer d'un niveau à un autre en accumulant les points d'XP.
Pour info, les points d'XP s'obtiennent via 5 items.
Par exemple :
Item 1 : 3 pts
Item 2 : 5 pts
Item 3 : 10 pts
Item 4 : 1 pt
Item 5 : 1 pt

Merci mille fois d'avance !


RE: Comment calculer l'XP et les changements de niveau ? - Xenos - 26-08-2016

Salut,

la présentation, cela aiderait (car cela prouver que tu veux t'intégrer dans la communauté; bien que l'idée d'un "stack overflow, servez-vous" pour les jeux web serait intéressante).

Sinon, la question est vague et le problème est donc mal définit:
- Tu cherches à calculer les points d'XP du joueur à partir de ces items? Auquel cas, il s'agit d'un simple SUM(item.count * item.points) (oui, je cause SQL quand il s'agit de manipuler les donneés, car c'est hallucinant de performances O.o)

- Tu cherches à déterminer le niveau du joueur en fonction de ses points d'XP? C'est du game design (tu trouveras sûrement des pistes sur mon blog prise-de-notes), et il n'y a donc pas de réponse universelle. Il te faut seulement fixer une fonction mathématique f sous la forme Niveau = f(XP). Ca peut être simplement linéaire Niveau = XP/100, polynomial Niveau = sqrt(XP) ou exponentiel/logarithmique Niveau = log10(XP). Les deux dernières menant à une explosion exponentielle (cf le blog, je n'ai pas l'adresse exacte de l'article ici) qui risque de lasser les joueurs une fois au niveau 8...

- Tu cherches à déterminer le nombre de points pour passer au niveau suppérieur? Alors, c'est le même principe que précédemment, en inversant la fonction f(XP), pour avoir XP = f-1(Niveau), et faire f-1(NiveauActuel + 1) - f-1(Niveau). Ou cela peut se voir en te répondant "ben, c'est toi qui choisit combien de points il faut pour passer du niveau 1 au niveau 2" (en le stockant soit sous forme de fonction, soit dans un tableau de valeurs type "niveau_actuel, xp_pour_niveau_suivant").


RE: Comment calculer l'XP et les changements de niveau ? - Ter Rowan - 26-08-2016

bonjour j'ai du mal à comprendre la question :

tu cherches à comprendre un système existant (mais lequel) ou à créer un système ?
est un sujet de design (quelle valeur mettre ?) ou un sujet de programmation (quel algorithme utiliser ?)
je pense dans tous les cas que le mieux est une recherche google, quitte après si tu as des doutes sur ton choix, à venir en discuter ici, pour valider tes hypothèses mais là c'est beaucoup trop vaste


RE: Comment calculer l'XP et les changements de niveau ? - constance67 - 26-08-2016

Bonjour à tous,

je suis désolée car ce n'est pas trop mon domaine de prédilection Sad

En gros nous cherchons à créer un petit jeu en interne (dans ma boite) et pour cela nous aurons chacun un avatar qui pourra gagner des points d'expérience. J'ai listé 5 manières (items) différentes pour obtenir ces points. Toutefois, n'étant pas calée en mathématiques, je cherche à gérer la notion de passage de niveaux. En gros, moi constance 67 je sais que pour passer du niveau 1 au niveau 2 je dois collecter, par exemple), 100 points, puis du niveau 2 au niveau 120 points, etc..
J'ai vu des choses avec des lois polynomiales mais les exponentielles font que au bout d'un moment on évolue presque plus. Nous cherchons a faire une progression intermédiaire entre linéaire et exponentielle sachant qu'il n'y a pas de dernier niveau (c'est infini).. j'espère que j'utilise les bons mots.

Merci Xenos en tout cas


RE: Comment calculer l'XP et les changements de niveau ? - Xenos - 26-08-2016

L'intermédiaire entre linéaire et exponentielle, c'est le polynôme.

Donc, typiquement, XP = K*Niveau² par exemple.

Si les maths te gênent (je trouve toujours ce concept aberrant de vouloir faire de l'informatique sans faire de maths mais bon), il te suffira de stocker la liste des niveaux quelque part avec le nombre de points requis pour l'atteindre. De cette façon, tu pourras changer ces valeurs sans devoir utiliser une vraie fonction analytique. Okay, cela créera un "plafond" (si ta liste va du niveau 0 au niveau 100, alors impossible de dépasser le 100e niveau), mais ce n'est pas un problème de repousser ce plafond: quand un joueur sera niveau 90, tu insèrera 100 nouvelles valeurs de niveau, et boum, terminé.

Ici, pour
Niveau XP
1 0
2 100
3 220 (100+120)

Alors XP = 10*Niveau² + 70*Niveau - 80


a + b + c = 0
a*4 + b*2 + c = 100
a*9 + b*3 + c = 220