Les problèmes que vous rencontrez avec le calcul du DPS à partir de cette formule sont dus au fait que ce que vous appelez BaseDamage
ne semble pas être le cas.
En supposant que tous les nombres sont positifs, cela BaseDamage / ( BaseDamage + Defense )
se résoudra toujours en un nombre à virgule flottante compris entre 1 et 0. Peu importe si vous en avez 10 BaseDamage
, 1 000 BaseDamage
ou 1 000 000 BaseDamage
, vous serez toujours dans cette plage. Où dans cette gamme dépend de la façon dont BaseDamage
l'arme se compare à celle Defense
de la cible. Cela signifie que ce qui affecte réellement l'ordre de grandeur des dégâts réels d'une attaque est principalement le SkillDmg
multiplicateur.
En regardant ces propriétés mathématiques, je n'appellerais pas vraiment cette propriété d'arme, BaseDamage
mais plutôt DefensePenetration
, car elle décrit la capacité de l'arme à surmonter la défense ennemie et à faire la plupart de ses dégâts. Cela pourrait en fait être un mécanisme intéressant à avoir (ou pas ... c'est quelque chose que vous devez tester), mais cela ne dit pas grand-chose sur le niveau de puissance d'une arme.
Alors, comment pouvons-nous résoudre ce problème?
Eh bien, il n'y a pas de bonne solution à ce problème. Mais un changement qui pourrait faire ce que vous voulez faire (une arme deux fois plus puissante = environ deux fois plus de dégâts) consiste à ajouter le BaseDamage
comme un autre facteur multiplicatif:
float realDamage = SkillDmg * BaseDamage * BaseDamage / (BaseDamage + Defense)
Si vous aimez le mécanisme de pénétration de la défense que vous avez découvert accidentellement, voici à quoi il ressemblerait avec Penetration
une statistique d'arme distincte:
float realDamage = SkillDmg * BaseDamage * Penetration / (Penetration + Defense)
La bonne chose à propos de cette formule est qu'elle évolue assez bien:
- Même lorsque la défense est pathétique par rapport à la valeur d'attaque, il n'y a jamais plus de dégâts que d'attaque. Cela vous donne une limite supérieure sur les dégâts qu'un personnage peut infliger, ce qui rend l'équilibre beaucoup plus facile.
- À l'autre extrême, quelle que soit la hauteur de la défense, elle ne peut jamais atténuer complètement les dégâts (sauf par des erreurs d'arrondi), il y a donc toujours place à amélioration pour le défenseur et il n'y a jamais d'attaque complètement inutile.
- Lorsque Defense et BaseDamage (et Penetration quand vous le souhaitez) sont à peu près les mêmes, il y a environ la moitié autant de realDamage que de BaseDamage. Cela est vrai quelle que soit la taille des valeurs. C'est également sur cela que vous pouvez baser votre estimation DPS. Supposez simplement que l'ennemi a autant de défense que l'arme a une attaque / pénétration, ce qui signifie que votre formule DPS devient
AttackFrequency * BaseDamage / 2
Edit: Voici quelques tableaux avec des exemples de valeurs:
Damage by Defense for single attack
Defense
| 0 | 35 | 50 | 100
---+-------+------+-------+-------
35 | 35 | 17.5 | 14.4 | 9.1
Attack 50 | 50 | 29.4 | 25.0 | 16.6
100 | 100 | 74.0 | 66.7 | 50.0
Dps assuming HitFrequency = 100 / Attack
Defense
| 0 | 35 | 50 | 100
---+-------+-------+------+-------
35 | 100 | 50.0 | 41.1 | 25.9
Attack 50 | 100 | 58.8 | 50.0 | 33.3
100 | 100 | 74.0 | 66.7 | 50.0
Comme vous pouvez le voir à partir de ces chiffres, les armes à haute vitesse et à faible dégâts sont toujours nominalement plus puissantes contre le même ennemi que les armes à grande vitesse et à faible dommage si elles ont le même DPS selon AttackFrequency * BaseDamage / 2
. Mais l'effet est plus visible sur les ennemis haute définition que sur les ennemis basse définition. Les deux sont également bons sur les ennemis à 0 déf. Cela signifie que les armes à attaque rapide sont moins mauvaises sur les ennemis à basse définition que sur les ennemis à haute définition.
Cela pourrait être contrebalancé par le fait que les armes à grande vitesse donnent au joueur plus de flexibilité en ce qui concerne la répartition des dégâts et lui permettent ainsi d'éviter de gaspiller du DPS sur les compétences excessives. Lorsque le joueur fait face à un très grand nombre d'ennemis très faibles qui meurent tous d'un coup, une arme à 5 attaques par seconde peut tuer 5 ennemis par seconde tandis qu'une arme à 1 attaques par seconde ne peut tuer qu'un ennemi par seconde. Un autre avantage possible apparaît lorsque vous ajoutez un caractère aléatoire aux attaques. En raison de la loi des grands nombres, de nombreuses attaques faibles produiront des dégâts plus fluides et plus fiables que quelques attaques fortes. Les joueurs bénéficient généralement de la fiabilité. Mais lorsque de telles considérations ne sont pas pertinentes en raison de la mécanique de votre jeu et / ou de la conception des rencontres, vous devrez rendre vos armes plus rapides un peu plus puissantes qu'elles ne devraient l'être pour compenser.
Une façon de donner un coup de fouet aux armes à grande vitesse pourrait être l'introduction d'effets qui se déclenchent avec x% de chances par coup et ne dépendent pas des dégâts. Celles-ci seraient beaucoup plus puissantes avec une arme à attaque rapide car elles se déclencheraient beaucoup plus fréquemment.
damage * damage / ( damage + defense)
), juste sans tenir compte des dégâts de compétence. La raison de la différence de DPS est que vous utilisez la même défense. La raison pour laquelle vous obtenez des résultats différents est qu'avec cette formule, les armes lentes mais fortes sont meilleures contre les ennemis à haute définition tandis que les armes rapides mais faibles sont meilleures contre les ennemis à basse définition (ce qui semble plausible). Vous avez supposé un ennemi de haute définition et équilibré les deux armes contre lui, ce qui signifie que vous avez maîtrisé le poignard. Le calcul DPS montre cette surpuissance.