Os problemas que você tem ao calcular o DPS a partir dessa fórmula são porque o que você chama BaseDamage
não parece ser esse.
Supondo que todos os números sejam positivos, BaseDamage / ( BaseDamage + Defense )
sempre será resolvido para um número de ponto flutuante entre 1 e 0. Não importa se você tem 10 BaseDamage
, 1.000 BaseDamage
ou 1.000.000 BaseDamage
, você sempre estará nesse intervalo. Onde nesse intervalo depende de como BaseDamage
a arma se compara à Defense
do alvo. Isso significa que o que realmente afeta a ordem de magnitude do dano real de um ataque é principalmente o SkillDmg
multiplicador.
Olhando para essas propriedades matemáticas, eu realmente não chamaria essa propriedade de arma, BaseDamage
mas sim DefensePenetration
, porque descreve a capacidade da arma de superar a defesa inimiga e ainda causar a maior parte de seu dano. Isso pode realmente ser uma mecânica interessante de se ter (ou não ... é algo que você precisa testar), mas não diz muito sobre o nível de poder de uma arma.
Então, como resolvemos esse problema?
Bem, não há solução certa para esse problema. Mas uma mudança que pode fazer o que você quer fazer (arma duas vezes mais poderosa = cerca de duas vezes mais dano) é adicionar o BaseDamage
outro fator multiplicativo:
float realDamage = SkillDmg * BaseDamage * BaseDamage / (BaseDamage + Defense)
Se você gosta da mecânica de penetração de defesa que descobriu acidentalmente, é assim que ficaria Penetration
como um status de arma separado:
float realDamage = SkillDmg * BaseDamage * Penetration / (Penetration + Defense)
O bom dessa fórmula é que ela se adapta muito bem:
- Mesmo quando a defesa é patética em comparação com o valor do ataque, nunca há mais danos que ataques. Isso lhe dá um limite máximo de quanto dano um personagem pode causar, o que facilita muito o balanceamento.
- Por outro lado, não importa quão alta seja a defesa, ela nunca pode mitigar completamente o dano (exceto por erros de arredondamento); portanto, sempre há espaço para melhorias para o defensor e nunca há um ataque completamente inútil.
- Quando Defesa e Dano Base (e Penetração quando você quiser) são aproximadamente os mesmos, há cerca de metade do dano real que Dano Base. Isso é verdade, independentemente do tamanho dos valores. É também nisso que você pode basear sua estimativa de DPS. Simplesmente assuma que o inimigo tem tanta defesa quanto a arma tem ataque / penetração, o que significa que sua fórmula DPS se torna
AttackFrequency * BaseDamage / 2
Editar: Aqui estão algumas tabelas com valores de exemplo:
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
Como você pode ver nesses números, as armas de alto dano e baixa velocidade ainda são nominalmente mais poderosas contra o mesmo inimigo do que as armas de baixo dano e alta velocidade, se tiverem o mesmo DPS de acordo com AttackFrequency * BaseDamage / 2
. Mas o efeito é mais visível nos inimigos de alta definição do que nos inimigos de baixa definição. Ambos são igualmente bons em inimigos com 0 def. Isso significa que armas de ataque rápido são menos ruins para inimigos de baixa definição do que para inimigos de alta definição.
Isso pode ser equilibrado pelo fato de que as armas de alta velocidade dão ao jogador mais flexibilidade em relação à distribuição de danos e, assim, permitem que eles evitem desperdiçar DPS em overkills. Quando o jogador enfrenta um número muito grande de inimigos muito fracos que morrem com um único golpe, uma arma de 5 ataques por segundo pode matar 5 inimigos por segundo enquanto uma arma de 1 ataque por segundo pode matar apenas 1 inimigo por segundo. Outra vantagem possível aparece quando você adiciona aleatoriedade aos ataques. Devido ao lei de grandes números, muitos ataques fracos causarão uma saída de dano mais suave e confiável do que alguns fortes. Os jogadores geralmente se beneficiam da confiabilidade. Mas quando essas considerações são irrelevantes devido à mecânica do jogo e / ou ao design dos encontros, você terá que tornar suas armas mais rápidas um pouco mais poderosas do que deveriam para compensar.
Uma maneira de aumentar as armas de alta velocidade pode ser a introdução de efeitos que são desencadeados com uma chance de x% por golpe e não dependem de dano. Estes seriam muito mais poderosos com uma arma de ataque rápido, porque seriam acionados com muito mais frequência.
damage * damage / ( damage + defense)
), apenas sem levar em consideração o dano de habilidade. O motivo da diferença no DPS é porque você está usando a mesma defesa. A razão pela qual você obtém resultados diferentes é porque, com essa fórmula, armas lentas mas fortes são melhores contra inimigos de alta definição, enquanto armas rápidas mas fracas são melhores contra inimigos de baixa definição (o que parece plausível). Você assumiu um inimigo de alta definição e equilibrou as duas armas contra ele, o que significa que você fez a adaga dominar. O cálculo do DPS mostra essa sobrecarga.