游戏开发论坛

 找回密码
 ????
搜索
查看: 8717|回复: 2

[原创] 数值推导思路:如何计算一个攻防公式的战力值?

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-3-29 15:09:35 | 显示全部楼层 |阅读模式
330517.jpg

  GameRes游资网授权发布 文/道一大大

  常规攻防中判断单位A和单位B谁的能力强,就是比谁先杀死谁

  如果:A生存能力/B输出能力 > B生存能力/A输出能力

  可得:A生存能力*A输出能力 > B生存能力*B输出能力

  表示A比B强,所以战斗力 = 生存能力 * 输出能力

  思考:

  当基础伤害 = 攻击[攻击方]*攻击[攻击方]/(攻击[攻击方]+防御[防御方])时,如何计算各个基础属性的战力值?

  因为输出和生存能力需要同时考虑到双方的属性,所以单个的攻击力和防御力其实的价值是不稳定的。所以公式看起来无法成功代入。

  但是我们可以换个思路思考,我们可以给予此单位一个标准攻防,我们在这里叫做:标准攻,标准防。

  这个标准攻防则需要通过游戏的进程发生改变,且需要精细计算。

  根据以上的思路,

  那么:生存能力 = 生命值 / (标准攻/(标准攻+防御力)) /(1-闪避率)

  输出能力 = 攻击力 * 攻击力/(攻击力+标准防)*(1 + 暴击率*额外暴击伤害)

  那么就可以得出,最后的战斗力 = 生存能力 * 输出能力。

  这种攻防公式最大的优点:

  当双方的数值成等比例上涨,战斗的节奏不会发生变化。

  1>如果有两个人A,B。

  A击杀B的次数 AB= 生命值[B] / (攻击力[A]*攻击力[A]/(攻击力[A]+防御力[B]));

  B击杀A的次数 BA= 生命值[A] / (攻击力[B]*攻击力[B]/(攻击力[B]+防御力[A]));

  2>如果A和B的三围都增加K倍,则:


  A击杀B的次数 KAB= k*生命值[B] / (k*攻击力[A]*k*攻击力[A]/(k*攻击力[A]+k*防御力[B]));

  B击杀A的次数 KBA= k*生命值[A] / (k*攻击力[B]*k*攻击力[B]/(k*攻击力[B]+k*防御力[A]));

  我们发现:AB = KAB,BA = KBA。击打次数没有改变,所以节奏没有发生变化。

  这种攻防公式最大的缺点:

  攻击和防御的价值不对等,需要同时提升生命和防御才能等同于攻击的效果。

  1>攻击增长K倍,

  输出变成了 k*攻击力[A]*k*攻击力[A]/(k*攻击力[A]+防御力[B]),

  对比之前的 攻击力[A]*攻击力[A]/(攻击力[A]+防御力[B]),

  每增加K的攻击力输出的增长大于k。

  2>防御增加K倍,

  受击变成了 攻击力[A]*攻击力[A]/(攻击力[A]+k*防御力[B]),

  对比之前的 攻击力[A]*攻击力[A]/(攻击力[A]+防御力[B]),

  每增加K的防御里受击的增长小于k。

  相关阅读游戏数值策划属性篇(三):战斗公式的设计

0

主题

4

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2016-3-29 16:51:01 | 显示全部楼层
留个脚印 来看看

0

主题

21

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2016-3-29 21:16:57 | 显示全部楼层
。。。标题是用来赚眼球的嘛。。。你战力值算出来了吗。。。。
您需要登录后才可以回帖 登录 | ????

本版积分规则

????|????|????|????|?????? ( ?ICP?17032699?-3 )

GMT+8, 2025-5-25 14:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表