Je dirais que cela dépend, au moins partiellement, du type d'expérience que vous souhaitez créer pour le joueur. Prenons deux exemples, le premier est un RPG au tour par tour classique, le second est un jeu de tir de type Gradius III , dans lequel vous souhaitez que le pouvoir du joueur évolue en fonction des progrès accomplis depuis sa mort, et non pas des bonus (pas dire que c'est un bon système, juste un exemple).
Dans le cas du RPG, votre système fonctionne probablement sur l'hypothèse qu'un joueur ne perd jamais d'expérience. De même, il voudra probablement agir en supposant qu'il est relativement facile d'acquérir un certain niveau de compétence dans quelque chose, mais difficile à maîtriser (comme la plupart des choses dans le monde réel). Dans ce cas, vous voudrez peut-être développer une formule (comme le suggère coderanger) qui est exponentielle à certains égards. Où la quantité d'expérience requise pour atteindre le niveau suivant est en quelque sorte exponentiellement basée sur votre niveau actuel. Il est important de prendre en compte, cependant, la vitesse à laquelle votre joueur recevra de l'expérience en jouant. Par exemple, un joueur qui tue un démon de feu de niveau 63 s'attendrait à recevoir plus d'expérience pour sa mise à mort que s'il avait tué une coccinelle de niveau 2. Ainsi, lors de la conception de votre formule, assurez-vous de prendre en compte votre système XP. D'autant plus que si vous ne le faites pas, alors tuer la coccinelle sera tout aussi rentable que de tuer des ennemis plus durs.
Exemple 1 (probablement pas un formulaire que vous utiliseriez): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Exemple 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Où XP_TO_LEVEL est l'XP nécessaire pour atteindre le niveau suivant. CURRENT_LEVEL est le niveau actuel du joueur. XP_BASE est un nombre arbitraire pour décider de la valeur de chaque niveau dans XP. SCALE est l'exposant déterminant la vitesse à laquelle le XP nécessaire pour évoluer. Si SCALE est égal à 1, chaque niveau prendra de l'expérience XP_BASE. Si SCALE est inférieur à 1, chaque niveau prendra moins d'expérience que le dernier niveau. Si SCALE est supérieur à 1, chaque niveau prendra plus d'expérience que le dernier niveau.
Le tableau suivant suppose une ÉCHELLE de 1,1 et une XP_BASE de 100 à l'aide de l'exemple 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Exemple 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
SCALE détermine toujours la vitesse de mise à l'échelle du XP_TO_LEVEL, mais il fonctionne un peu différemment.
Le tableau suivant suppose une ÉCHELLE de 22 et une XP_BASE de 10 à l'aide de l'exemple 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
Dans le cas du clone Gradius, vous pouvez adopter une stratégie différente. Vous voudrez peut-être que le joueur monte de niveau de manière cohérente, disons toutes les deux minutes environ. De plus, après qu'un jeu a perdu une vie et par conséquent perdu tous ses pouvoirs gagnés, vous pouvez l'aider en le nivelant plus rapidement jusqu'à ce qu'il atteigne un niveau approprié pour sa progression dans le jeu. Dans ce cas, votre formule sera probablement plus linéaire, d'autant plus que l'utilisateur ne voit pas combien d'expérience il obtient par kill. Quelque chose comme, il faut 50 XP pour atteindre un nouveau niveau et chaque ennemi vaut 1 XP. Cela fonctionne très bien à condition que vous lui fournissiez un flux d'ennemis relativement constant. Mais, quand le joueur meurt, il perd tout! Que fais-tu maintenant? Chaque ennemi devrait valoir plus de 1 XP pour atteindre votre objectif de le rattraper afin que le jeu soit à nouveau juste.
Exemple: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Où XP_FROM_EACH_ENEMY est la quantité d'XP qu'un ennemi attribuerait en étant tué. BASE_XP est la valeur d'XP par défaut d'un ennemi (peut varier selon le type d'ennemi). CURRENT_LEVEL est le niveau du joueur DESIRED_LEVEL est le niveau auquel vous pensez que le joueur devrait être.