Calcul des points d'expérience gagnés après une bataille

9

Je développe un jeu de bataille de texte simple et j'ai des problèmes pour calculer combien d'XP devraient être gagnés après une bataille, il y a quelques facteurs que je veux considérer:

1) Les joueurs devraient bien sûr gagner de bons XP s'ils battent quelqu'un du même niveau

2) Les joueurs devraient gagner de grands XP s'ils battent quelqu'un d'un niveau supérieur

3) Les joueurs devraient gagner de faibles XP s'ils battent quelqu'un d'un niveau inférieur

4) Ce qui précède devrait bien évoluer, c'est-à-dire que si le joueur A est de niveau 10 et combat le joueur B de niveau 9 ou 11, la différence ne devrait pas être énorme (ils gagneraient bien sûr plus d'XP pour vaincre le personnage de niveau 11 mais nous ne le ferions pas attendez-vous à ce que ce soit énorme), mais s'il devait combattre un niveau 5 ou 15, cette différence devrait être énorme.

Ayant du mal à calculer quelque chose qui fonctionne bien dans tous les scénarios, actuellement mon tableau XP ressemble à ce qui suit:

Current Level   XP Needed   Increase from Last Level
1   30  0
2   65  35
3   106 41
4   154 48
5   210 56
...
10  672 123

En PHP, mon code ressemble à celui ci-dessous pour calculer l'XP nécessaire:

$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;

$xp = $base + $offset;

J'ai essayé quelques choses différentes mais je n'ai été impressionné par aucune d'entre elles, j'aimerais travailler avec le calcul de la différence dans XP et ensuite utiliser une sorte de multiplicateur mais je n'ai pas été impressionné par les résultats.

Toute aide / contribution serait appréciée.


la source
2
Je ne lis même pas, allez-y -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.
la première pensée est que vous devriez vous trouver une copie d'un guide des maîtres de donjon D&D de la deuxième ou de la troisième édition. De bonnes ressources pour les systèmes de récompense XP déjà testés / équilibrés.
Richard Fabian

Réponses:

13

Deux suggestions:

Exposants! Calculez une "récompense xp de base" pour chaque niveau. La formule d'un kill est alors base_xp_reward * pow (1.1, target_level - player_level). Vous voudrez peut-être limiter le gain à un maximum, pour annuler quelque peu les exploits, et vous voudrez peut-être donner zéro XP en dessous d'une certaine différence, pour empêcher l'élevage de lowbies.

(La récompense d'EXP de base peut également être une simple progression exponentielle, si vous le souhaitez - constant_factor * pow (1.25, niveau), peut-être. Ensuite, vous pouvez définir l '"exp to level" en termes d'un multiple de la récompense d'EXP de base. Peut-être plus facile à équilibrer de cette façon.)

Alternativement, rendons cela très simple. Faites la même chose que la récompense de base XP. Ensuite, déterminez un tableau à la main pour les bonus que vous souhaitez parmi les différents niveaux de niveaux. Faites-en un ratio, de sorte que tuer quelqu'un d'un niveau au-dessus de vous donne toujours, disons, 10% d'XP bonus par rapport à la récompense de base. Et maintenant, vous n'avez plus à vous soucier d'une formule - vous pouvez simplement faire en sorte que les chiffres fassent ce que vous voulez.

Les formules sont surévaluées, il suffit parfois de brouiller certains numéros et de les jouer à l'oreille.

ZorbaTHut
la source
1
+1 pourFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX
2

Je dirais quelque chose comme "gagner xp par les dégâts delt / reçus". Donc, si un niveau 10 avec 100 ch combat un niveau 15 avec 200 ch. Cela semble injuste, mais si le niveau 10 pouvait tuer le niveau 15, il obtiendrait le double de l'XP de ce qu'il obtiendrait s'il combattait un niveau 10 avec seulement 100cv.

De cette façon, vous n'avez pas à vous soucier de choses comme si deux personnes combattaient le même ennemi avec un équipement différent. Par exemple, si un niveau 8 et un niveau 10 combattent un niveau 13. Si le niveau 8 a un meilleur équipement / armure, alors il obtiendrait plus d'XP que le niveau 10 simplement parce qu'il détruit plus de dégâts au niveau 13.

Mais la chose la plus importante: définir des règles, playtest, définir des règles, playtest, définir des règles, plasytest, etc.

Même les meilleurs MMO des meilleurs développeurs ajustent leur système de distribution xp aussi longtemps que le jeu dure.

Espen
la source
0

Juste à mon humble avis, la chose la plus importante pour bien faire les choses est la quantité d'échelle de XP requise pour monter de niveau. Un de mes amis a utilisé une variante de fibonacci pour son navigateur Rogue-like, par exemple 100XP, 100XP, 200XP, 300XP, 500XP, 800XP etc. etc.

J'ai également entendu parler d'un mécanicien dans certains jeux où le niveau est soustrait de l'XP gagné par chaque bataille. Par exemple, si une bataille particulière gagne 50XP et qu'elle est au niveau 20, alors elle ne reçoit que 30XP. S'ils étaient au niveau 50 ou supérieur, ils ne gagneraient rien.

earok
la source