游戏开发论坛

 找回密码
 立即注册
搜索
查看: 16380|回复: 17

[原创] 【数量与战力计算】多单位基础战斗模型

[复制链接]

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
发表于 2015-4-7 17:45:52 | 显示全部楼层 |阅读模式
本帖最后由 yy1991 于 2015-4-14 13:36 编辑

      --2015.4.14 感谢@crazyq指出本帖的不足,之前的版本在多对多模型时积分计算错误,因此结论会有误差,已修正

      0.前言

  在计算游戏中多人战斗模型的战斗力时,可能会陷入2个单位就是单个单位2倍战力的误区,然而由于战斗单位的削减导致的输出缩减,多人小队中的单位数量并不是线性加成战斗力的,这个即著名的兰彻斯特定律。

  这个模型借鉴了许多网上前辈的思路和方法,尽量清晰明了地将我的想法描述出来,希望能帮助到对这方面有疑惑的新人,也希望能抛砖引玉,让更多大神来一起交流数值方面的想法。

  1.战力计算

  战力计算的标准以双方战斗时的生存时间为准。

  当生存时间存在倍数关系时认为战斗力也存在相应倍数关系。

  由此得:

  战力=承受*输出=HP*DPS

  这里简单举个例子,一个20血2攻和一个10血4攻的士兵,因为其战斗的生存时间相等,他们战力相等;同时他们对10血2攻士兵时比其多生存了一倍的时间,所以他们的战力也是10血2攻士兵的两倍。

  2.参数和变量命名

  
单位数量1
  

单位数量2


N1


N2


承受1


承受2


H1


H2


输出1


输出2


D1


D2


单位战力1


单位战力2


F1


F2


  3.公式计算

  在具体计算公式之前,我们需要先制定好这些模型的前提。即规定之后的公式能产生的作用的场合:

  1.单位总是先攻击同一目标。

  2.不考虑AOE攻击。

  3.玩家攻击间隔趋近于0。

  3.1.一对多战斗模型

  不妨先假设N1=1,然后我们计算单位1的战力需变化几倍以对抗单位2 的数量变化。

  由于单位2的数量实际上影响到了这一方总的伤害输出,所以我们需要在其数量减少的时间点进行结算,再将所有时间点的结果汇总,可以得到:


      第一阶段2对1造成的伤害:   00.png
      第二阶段2对1造成的伤害:   01.png
      第三阶段2对1造成的伤害:   02.png
      ……
      第N2阶段2对1造成的伤害:   03.png
      由此得
       04.png


      根据上面的推导可以看到,在一对多战斗模型中,战斗单位数量变化N2倍时,战斗力变化 05.png 倍。

  3.2.多对多战斗模型

      在多对多模型中,我们需要将攻击力也去掉离散化带来的影响从而建立一个理想化的模型(关于离散化带来的影响可以自己去测算一下),这里N1,N2指当前的单位数量,初始值为N01及N02,
       06.png
      初始条件N1= N01,N2= N02

      将以上两式相乘得 07.png

      从0到t积分得

       08.png
      简单变形得

       09.png

      由此可以看到,在双方攻血不产生变化的战斗过程中,战斗单位的数量对战斗力产生的影响是不变的,也就是 10.png   。所以在多对多的理想化连续战斗模型中,战斗单位的数量变化时,战斗力将会变化与攻血相关的平方倍。

  4.结语

  我入行半年有余,资历尚浅,写的可能只是很表层很细节的东西,关于战斗建模与战斗数值这一块还有许多值得推敲的地方,模型也可以从各个方面再进行完善,碍于能力所限,我目前只能提供这样一种基础的建模思路。

多单位基础战斗模型.docx

22.6 KB, 下载次数: 1047

1

主题

4

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2015-4-9 14:29:25 | 显示全部楼层
很不错,值得借鉴

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2015-4-12 13:29:20 | 显示全部楼层
一句话总结:兰彻斯特平方律

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
 楼主| 发表于 2015-4-13 11:54:05 | 显示全部楼层
foxlusiqi 发表于 2015-4-12 13:29
一句话总结:兰彻斯特平方律

嗯可以这么说,但我觉得思考应该重过程而不是结论,像在一对多的情况下并不是完全的平方律,当我们有能力使其更精确的时候何不多试一试

4

主题

86

帖子

843

积分

高级会员

Rank: 4

积分
843
发表于 2015-4-13 14:59:16 | 显示全部楼层
在单位战斗力不一致的情况下,多对多的战斗公式不是平方差。

战斗初始和战斗结束唯一不变的是战斗力差值不变。

19

主题

721

帖子

746

积分

高级会员

Rank: 4

积分
746
发表于 2015-4-13 15:49:05 | 显示全部楼层
写的挺好,不过实际的战斗要比这个模型复杂的多

1

主题

85

帖子

558

积分

高级会员

Rank: 4

积分
558
发表于 2015-4-13 20:42:13 | 显示全部楼层
标红的那个公式是不是转化错了?

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
 楼主| 发表于 2015-4-14 11:50:57 | 显示全部楼层
crazyq 发表于 2015-4-13 14:59
在单位战斗力不一致的情况下,多对多的战斗公式不是平方差。

战斗初始和战斗结束唯一不变的是战斗力差值不 ...

这个模型的前提之一就是战斗过程战力保持不变,在理想的连续情况下,两种战力不同的战斗单位可以使用平方差就行了

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
 楼主| 发表于 2015-4-14 11:53:28 | 显示全部楼层
明夕何夕 发表于 2015-4-13 15:49
写的挺好,不过实际的战斗要比这个模型复杂的多

谢谢,在简单的模型基础上增加变量会使计算复杂度大很多,正在探索

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
 楼主| 发表于 2015-4-14 11:54:12 | 显示全部楼层
骗人布 发表于 2015-4-13 20:42
标红的那个公式是不是转化错了?

谢谢提醒~已改正
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-2 10:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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