http://blog.sina.com.cn/s/blog_704133cb01018hud.html

为了从理论层面提高自己打《英雄联盟》的水平,再加上自己也有这方面的兴趣,所以我最近研究了一下英雄联盟中的一些数值计算公式,不算很系统,主要是自己的一些试验跟网上查的资料总结,仅仅面向菜鸟,大神勿喷。

首先介绍一下大家都很喜欢的一件装备:耀光。耀光的被动相当犀利,每次释放技能后下一次攻击基础攻击力提升100%,这里的计算是这样的,如果单位的基础攻击力是A,身上有一把长剑加B攻击力,那么下一击的单位打出的伤害是A*(1+100%)+B,也就是说B不计入提升内,当然这也不是敌人实际扣的血量,因为对方还有物理防御。

另外一个有趣的数值是躲闪几率,虽然现在已经被LOL设计者砍掉,主要是带躲闪的英雄过于变态吧(怀念一下我最爱的武器大师),但在很多游戏里都会有躲闪几率,躲闪几率的计算公式符合效果递减:如果单位本身躲闪几率是a,物品提供b,那么最终躲闪几率是a+b-a*b,其中a,b是小于等于1的正数。 

相信与吸血鬼对过线的玩家都非常讨厌他的吸血技能,那么吸血效果是如何计算的呢?吸血效果受物理跟魔法抗性的影响(看你的是物理吸血还是法术吸血了)。例如你打出了100点物理伤害,对方有10%物理减伤,那你造成的实际伤害是90点,如果你的物理吸血效果是10%,那么可以吸取9点血。吸血效果的好处是没有上限而且可以叠加,所以可以获得超过100%的吸血。

接下来是护甲与魔抗,网上很多都把护甲与魔抗转换成血量来估计收益,例如100点护甲相当于原有血量x2,200点护甲相当于x3,其实我觉得这样不够直观,因为你这样没法一次性算到一次打在你身上100点的物理伤害在你护甲100时你实际上扣了多少血。我研究了一下其实公式很简单,假设护甲为n点,物理免伤百分比x=1/(1+n/100),也就是说如果护甲为100点物理免伤为50%,护甲为300点物理免伤为25%(也就是说100点伤害最终只扣你血的25点)。魔抗的计算也是一样的。

既然有了护甲与魔抗,自然也少不了护甲穿透与法术穿透。以护甲穿透为例,如果你有15点护甲穿透,如果敌人护甲为n,就相当于对方的护甲减少了15点,也就是n-15;如果你有40%护甲穿透,就相当于对方护甲为n*(1-40%)。这也引发了一个有趣的问题,如果单位身上拿着一把残暴(+15点护甲穿透)和一张穿甲弓(+40%护甲穿透),那么对方的护甲值最终是(n-15)*40%还是n*40%-15呢?于是我做了一个实验,如下图,

LOL《英雄联盟》数值分析

其中蓝色巨像的护甲为20,如果公式2是正确的,20*40%-15<0,那么巨像的护甲应该为0而我此时造成的伤害应该是154,与我的攻击力一样才对。但得出的结果是149,所以我们先通过公式1求出护甲为n=(20-15)*40%得3,把n=3带入上面说的护甲免伤公式即造成的伤害:154*(1/(1+n/100))=149.514,符合我们的实验结果,所以公式1是正确的。游戏设计者这样设计也很合理,因为残暴是对护甲低的单位收益大,穿甲弓是针对护甲高的单位收益大,公式1的设计符合这个思想,而公式2的设计会让护甲降低一大截以后再扣护甲值,这样的话残暴这件前中期装备在后期也显得太变态了。

最后说说移动速度,假设单位原来的移动速度300,如果买了一双+70移动速度的鞋,那么速度自然是370。这没什么特别的,有意思的是移动速度有收益递减,在LOL里面当单位的移动速度超过475后,每点移动速度的收益将减少50%。所以如果单位的最终移动速度是700,那么它的实际移动速度将被减为475+(700-475)*0.5=587。当单位的移动速度值超过400后,每点移动速度的收益将减少20%。所以如果在所有因素的作用下,你最终的移动速度是430,那么实际移动速度将是400+30*0.8=424。

以上分析是根据我自己的实验分析以及查阅网上资料总结得出,通过这样的分析确实对LOL有了更深入的了解,也更了解设计者的意图。文章有点长,仅供参考以及自娱自乐。

英雄联盟中攻速计算为直接加成。

比如:幻影之舞装备介绍中为增加50%攻速,就是在原始攻速上直接增加0.5的攻击速度。

原始为0.65攻速,装备幻影之舞后就为0.65+0.5=1.15攻击速度。

英雄联盟中攻击速度是以秒为单位,攻击速度1代表每秒攻击1次。

英雄攻击速度上限值为2.5。

假设英雄初始攻速0.65,每级成长4%,出了攻速鞋25%,红叉50%,破败40%,等级18级,则其攻速为V=0.65×(1+0.25+0.5+0.4)+18×0.04=2.1175=2.12

LOL攻速问题讨论贴

https://tieba.baidu.com/p/3417419390

LOL数值分析的更多相关文章

  1. 数值分析之奇异值分解(SVD)篇

    在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1].                                       --Lloyd N. ...

  2. 数值分析1:三角函数的计算(C语言实现)

    之前学习C语言的时候,一直有个疑问,计算机从芯片设计的角度来看,只能计算常规的加减乘及移位之类的操作,那么对于像sin .cos这些三角函数,人脑尚无可以直接运算的法则,那么计算机是怎么实现的呢?最近 ...

  3. 开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解

    原文:[原创]开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一) ...

  4. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  5. 「学习记录」《数值分析》第二章计算实习题(Python语言)

    在假期利用Python完成了<数值分析>第二章的计算实习题,主要实现了牛顿插值法和三次样条插值,给出了自己的实现与调用Python包的实现--现在能搜到的基本上都是MATLAB版,或者是各 ...

  6. 数值分析-Legendre正交多项式 实现函数逼近

    数值分析-Legendre正交多项式 实现函数逼近 2016年12月18日 21:27:54 冰三点水 阅读数 4057   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请 ...

  7. 数值分析实验之曲线最小二乘拟合含有噪声扰动(python实现)

    一.实验目的 掌握最小二乘法拟合离散数据,多项式函数形式拟合曲线以及可以其他可以通过变量变换转化为多项式的拟合曲线目前待实现功能: 1. 最小二乘法的基本实现. 2. 用不同数据量,不同参数,不同的多 ...

  8. 数值分析案例:Newton插值预测2019城市(Asian)温度、Crout求解城市等温性的因素系数

    数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温性的因素系数 文章目录 数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温 ...

  9. 数值分析:幂迭代和PageRank算法

    1. 幂迭代算法(简称幂法) (1) 占优特征值和占优特征向量 已知方阵\(\bm{A} \in \R^{n \times n}\), \(\bm{A}\)的占优特征值是量级比\(\bm{A}\)所有 ...

随机推荐

  1. 一文读懂实用拜占庭容错(PBFT)算法

        在区块链中有一个著名的问题,就是拜占庭将军问题,对于拜占庭将军问题,网上的文章已经多得不要不要了,今天和大家分享的是其相关的实用拜占庭容错算法,一起来看看吧. 实用拜占庭容错算法(Practi ...

  2. Javascript代码收集

    1.模仿jquery each 原文地址 function each(obj, fn){ var i; if(Object.prototype.toString.call(obj) === '[obj ...

  3. Java基础教程:面向对象编程[3]

    Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...

  4. 使用expect实现shell自动交互

    expect 是一个自动交互功能的工具.expect 是开了一个子进程,通过 spawn 来执行 shell 脚本,监测到脚本的返回结果,通过 expect 判断要进行的交互输入内容. expect ...

  5. 1.1 BASIC PROGRAMMING MODEL(算法 Algorithms 第4版)

    1.1.1 private static void exercise111() { StdOut.println("1.1.1:"); StdOut.println((0+15)/ ...

  6. tensorflow学习官网地址

    摘自: http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/overview.html 内容很多,需要花时间看完

  7. Hadoop- MapReduce在实际应用中常见的调优

    1.Reduce Task Number 通常来说一个block就对应一个map任务进行处理,reduce任务如果人工不去设置干预的话就一个reduce.reduce任务的个数可以通过在程序中设置   ...

  8. 练习E-R图书管理数据库

  9. babel-runtime 和 babel-polyfill

    Babel 默认只转换新的 JavaScript 语法 https://excaliburhan.com/post/babel-preset-and-plugins.html babel-plugin ...

  10. 如何通过giihub下载软件

    因为不懂英文, 所以找到了网站也不知道要怎么下载? 需求: 假设要下载的的一个jar包,  mybatis-generator 1.  利用搜索引擎 2. 点进去, 看到那个release  (rel ...