La meilleure façon de parvenir à une conclusion à cet égard est - comme avec la plupart des choses dans le développement de jeux - de réfléchir d'abord à la façon dont vous voulez que le jeu joue , puis de faire les calculs qui permettront au jeu de jouer comme ça.
Combien de temps voulez-vous que le joueur joue à chaque niveau?
Dans un RPG solo axé sur l'histoire, vous voudrez probablement garder les niveaux comme un flux de récompense constant et faire monter le niveau du joueur toutes les quelques minutes pendant tout le jeu. Le taux de montée en niveau reste constant, donc votre fonction minutes par niveau est une constante ( time = c
).
Sur un jeu plus axé sur les réalisations, comme un MMORPG, vous voulez généralement que les niveaux soient fréquents pour les débutants mais deviennent de moins en moins fréquents à mesure que le joueur progresse. Dans ce cas, votre fonction minutes par niveau serait polynomiale ( time = Level ^ c
) ou même exponentielle ( time = c ^ Level
). Cependant, prendre le niveau-numéro tel quel dans une formule exponentielle est généralement beaucoup trop extrême. Il peut être judicieux de le diviser par une constante pour ralentir considérablement l'augmentation tout en la conservant exponentielle ( time = c1 ^ (1 + Level / c2)
).
Je vous recommanderais d'utiliser une feuille de calcul pour calculer les chiffres. Créez un tableau avec une colonne avec les nombres de 1 à votre niveau maximum attendu et une deuxième colonne avec la formule de niveau. Cela vous permet facilement d'expérimenter différentes formules pour trouver des nombres qui vous conviennent. Peut-être obtenez-vous de meilleurs résultats lorsque vous combinez un polynôme avec un composant exponentiel?
N'oubliez pas que vous voyez ici le temps de combat net . Le temps de jeu, le joueur accumule activement des points d'expérience. Cela ne compte pas le temps que le joueur passe à parler avec les PNJ, à comparer leur équipement et à effectuer d'autres tâches qui ne provoquent pas directement de progrès.
Dans mon jeu actuel (un MMORPG), j'ai trouvé la formule seconds(level) = 10 ^ (1 + Level / 20)
. Les premiers niveaux ne prennent que quelques secondes de combat réel (gratification très instantanée pendant la phase de tutoriel), les niveaux 20 à 40 prennent des minutes, dans les années 50, cela devient des heures par niveau et quand près du niveau maximum de 100 il faut des semaines entières pour voir le progrès.
Dans quelle mesure la récompense d'expérience par ennemi devrait-elle être différente?
Même lorsque vos ennemis n'ont pas de statistique de niveau explicite (ou significative), vous voudrez les concevoir comme un défi équilibré pour un certain niveau de personnage. Mais combien d'expérience supplémentaire un ennemi recommandé pour le niveau 40 devrait-il récompenser par rapport à celui recommandé pour le niveau 30?
La réponse à cette question est étroitement liée à la puissance du personnage par niveau et à la mesure dans laquelle vous voulez lui permettre d'être devant ou derrière les ennemis actuels avec leur niveau de personnage.
Certains systèmes de jeu, comme celui de World of Warcraft par exemple, rendent tout à fait inutile de poursuivre un combat avec un ennemi juste en dessous ou au-dessus du niveau du personnage du joueur. Tout ce qui se trouve juste à quelques niveaux au-dessus annihilera le joueur, tout ce qui se trouve à quelques niveaux au-dessous ne sera aucun défi (et aucune récompense) du tout.
Un contre-exemple serait la série Disgaea. Dans ce jeu, vous pouvez facilement vaincre les ennemis avec plusieurs fois le niveau de vos propres personnages lorsque vous jouez intelligemment.
Plus vous voulez être restrictif dans la tranche de niveau, ce qui est un combat équitable pour le joueur, plus vous devez vous assurer que le joueur ne prend pas de retard ou ne devance pas le niveau des ennemis qu'il combat actuellement. Lorsque le joueur tombe derrière les ennemis, le jeu deviendra frustrant et difficile sans grincement. Lorsque le joueur devance les monstres, le jeu devient trop facile et ennuyeux.
Un bon moyen de garder le joueur dans la tranche de niveau est d'augmenter la récompense exp par niveau. D'une part, cela permettra facilement au joueur de rattraper son retard lorsqu'il est légèrement en dessous du niveau recommandé. De l'autre, cela ne leur permettra pas de monter de niveau efficacement sur les ennemis faibles sans progresser vers une zone plus difficile.
Une courbe exp polynomiale ( exp = Level ^ c
) fonctionne généralement bien. Plus la valeur est élevée c
, plus vous forcez le joueur dans la tranche de niveau actuelle des monstres qu'il combat.
Gardez à l'esprit que les ennemis qui mettent plus de temps à vaincre devraient également donner proportionnellement plus d'expérience. Une bataille qui dure 20 secondes devrait donner deux fois plus d'expérience qu'une bataille qui ne prend que 10 secondes. Cela étend votre formule à exp = (Level ^ c) * minutes_per_combat
.
La formule exp-par-niveau finale
La formule finale peut maintenant être dérivée des deux. Le experience per level
est le time per level in minutes
multiplié par le experience gained per minute
. Il suffit donc de prendre les deux formules que vous avez trouvées dans les deux dernières sections et de les multiplier. La voici: votre formule d'expérience par niveau.
Avec une augmentation de temps polynomiale par niveau, la formule serait
exp(level) = (level ^ c1) * (level ^ c2)
où
c1
dépend de combien de temps vous voulez que chaque niveau prenne
c2
dépend de la distance à laquelle vous souhaitez maintenir le joueur au niveau des ennemis qu'il combat
Qu'est-ce qui pourrait mal se passer?
Même le meilleur concept réfléchi ne peut pas remplacer les tests de jeu appropriés. Si votre test de jeu s'avère que les joueurs moyens progressent beaucoup plus rapidement ou plus lentement que vous le souhaitez, c'est généralement un signe que vous avez surestimé ou sous-estimé les niveaux recommandés de vos ennemis et combien de temps il faut au joueur moyen pour les tuer. Essayez d'analyser avec vos testeurs quels ennemis sont difficiles à tuer à quel niveau de personnage et ajustez leur valeur exp ou leurs statistiques en conséquence.