作者:y1600108
关于目前wows的炮击散布,已知的一共有以下几个参数:
- 1.最大散布(记为max):表征散布圈的大小,是射击距离的一次函数,有许多种公式
- − 目前常见的各种散布公式 ...
- R代表射击距离,单位km,最大散布的单位为m
- 日战散布:7.2R 84(wiki上7.3有误)
- 美战散布:10R 60(包括一般美战英战、喀琅施塔得)
- 欧战散布:9.8R 66(包括一般德战法战、罗马)
- 毛战散布:11.9R 33(不包括光荣与十月革命)
- 光荣散布:5R 105
- 斯佩散布:8.4R 48(包括斯大林、阿拉斯加、斯佩伯爵、佐治亚)
- 巡洋散布:6.9R 33
- 驱逐散布:7.5R 15(也包括203银币日巡)
- 2.sigma(记为s):表征炮弹的集中程度,s值越大炮弹越密集,一般认为与正态分布的σ有关(但不是一个东西,σ值越小才代表越密集,接下来会有对此的假设)
- 3.纵向散布参量:“r on zero” , “r on delim” , “r on max” , “delim”
- 知道这四个的人可能就比较少了,它们的来源也是拆包,只拆出了这四个代号和对应的值,并没有解释
- 目前的船一共有4种模式
- 日战 :0.2 0.6 0.8 0.5
- 毛战 :0.25 0.4 0.75 0.6
- 光荣 :0.1 0.25 0.4 0.3
- 其他所有船 :0.2 0.5 0.6 0.5
- 相信大家对于这四种分类肯定有所感受,毛战暂且不提,日战的纵向散布向来为人所诟病,而看过光荣超测直播的人也会对那个平直弹道下的一字斩印象深刻,再结合这些数据,就给人一种“这四个数越小纵向就越好”的感觉。这也是接下来的一个重点假设之处——这四个参数到底控制什么
- 4.落弹角:这是影响水平落弹结果的,这方面大家的体感共识是“落弹角越大,投影系数越小,纵向散布就越好”
以上是对已有参数的总结,接下来提出我的猜想:
一发炮弹轨迹的生成,从开始到结束的过程如下:
- 1.确定瞄准点:未锁定时在山上或海面上,锁定时在锁定船的某个判定点处(此时应该可以高于或低于海面,参考锁定斜向敌人或锁一打一时有时会出现的奇怪跨射轨迹)
- 2.确定炮口位置,计算射击距离,从而得到最大散布max值
- 3.确立一个垂直于海面的竖直面,这个面同时垂直于炮口朝向的水平分量(这里的描述只是保证其垂直于海面)
- 4.在这个面上,以瞄准点为原点,max为半径[0]作一个圆,在圆内按正态概率分布随机取一个点(可以理解为按正态分布在全平面取点,如果在圆外就舍去重来,当然其实有更好的做法[1]),这个正态分布的σ值与这门炮的sigma值的关系为
- σ=max/sigma[2]
- 5.保持这个点的横向坐标x不变,对纵向坐标y乘以一个系数ratio得到y'=y*ratio,这个系数与该点和原点的距离r(r^2=x^2 y^2)有关,也与纵向4参数有关[3],如图
- 以0.2 0.5 0.6 0.5为例,纵向系数大小如图,横坐标即为r/max
- 6.以炮口位置为起点,过新获得的散布点(x,y')计算一条弹道,一直延伸至落水且水中弹引信时间结束[4]
- 7.炮弹沿弹道飞行,一路上判断是否撞山,是否命中,直至打水后消失
一些说明:
- [0].为什么max是半径:实际上游戏内各种长度与时间单位都是放缩过的,如果以显示的距离为标准单位,那么船的大小应是现实的两倍(200m的船游戏内大概是400m长),这一点cqc的时候会体会的很深(明明距离2km为什么这个船看起来那么大),相比之下,以max作为半径时,进行散布计算就不需要额外的放大系数了,从编程的角度而言可以减少一些过程,事实上,之后猜想的的以矢径r为目标的随机生成方式,以及由r来计算纵向系数,“感觉这么做程序更好写”是一个重要的原因
- [1].关于限制在一个半径为max的圆内、标准差为σ的二维正态分布,可以直接用如下的随机方法:
- 在 [exp(-0.5*max^2/σ^2),1] 这个区间均匀取随机数a (注意到max/σ=sigma值,这里的下限可以直接由sigma值计算,为exp(-0.5*sigma^2))
- 然后就可以得到该点的矢径 r=σ*sqrt(-2*ln a)
- 再在[0°,360°)范围内取极角θ,就可以获得极坐标下的随机点(r,θ),其对应的xy坐标为(r*cosθ,r*sinθ)
- [2].为什么sigma与σ的关系是这样,只能说这也是一个合理猜想,毕竟WG已经承认了这是一个正态分布,而正态分布的关键参数与游戏提供的参数正好有个相反的变化趋势
- [3].关于纵向四参数代号的含义,我的猜想是:r->ratio比率,delim->delimitation分界,zero和max就不用说了。那么这时就会有一种自然的想法,这四个参数确定了一个分段函数,由已知的某个随散布点从0到最大值的变化来控制纵向散布的压缩系数(0到最大,又感觉是对矢径r为中心的体系的暗示)
- 再考虑到游戏内体感,一般而言一次齐射中集中的几发总是特别集中,而散的一两发总是很偏(sigma大,散布圈也大的炮会更明显),有一种“偏差小的补正大,偏差大的补正小”的感觉,且按着z观察时炮弹竖直界面上的散布圈一直像个扁椭圆,结合上述参数的值,故建立了上文中的猜想
- [4].可能的一种减少计算量建立弹道的方式:根据瞄准点处的落弹角数据把竖直面散布点投影到与炮口等高的水平面上(反正散布圈内落弹角变化不会很大),然后再由这个投影点与炮口的距离就可以直接调出弹道。这种方法的缺点是最终的弹道可能不会正好过竖直面生成的散布点(毕竟不是直线),但是一般而言不会差太多,而且只需要二维计算,十分节省计算资源(当然,瞄准高山或近的时候这一条可能会失效,说到底这也只是个猜想而已)
- [另1].为什么不是由炮口角度来产生随机:其实这或许可行,但是在我看来难以直接建立每个距离之下散布圈与炮口角度随机范围的关系,而且一个散布内炮口角度一般变化不大,作为随机变量总是在小数点后操作,看起来很不爽(
- [另2]上述讨论中的纵向散布存在着两种理解,一种是指竖直面上的散布分布,一种是指最终落到水面时的水平面上散布分布,前者完全不受落弹角影响(也就是说,按照我的猜想,同一种纵向散布参数下,只要sigma和最大散布相同,其竖直面上的散布就是完全相同的),后者才受到落弹角的影响;与此相关的还有一个“对大侧面目标的命中效率”,如果竖直面散布相似,那么对于一个竖直的靶子而言,平直弹道和高抛弹道的命中效率是相同的,然而游戏中我们还是觉得高抛弹道似乎更容易命中大侧面,当然,实际上这并不矛盾,因为船是有一定宽度的,并不是一个平面靶,对于这样一个立体目标,高抛弹道还是存在投影优势的
精美 图例
由于测量落点太过麻烦(录屏后找出每次落点水花的圆心,没有太多技术含量但是机械重复次数太多),感觉我个人没法抽时间完成大量的实验工作,故上述理论还只是停留在猜想的阶段,只能由上述理论来画一些图例,看起来跟我个人体感还挺符合的(
以下的散布展示中,每一圈代表10%的概率,大概能表现不同sigma和纵向系数影响下的散步集中程度
- 四种不同的纵向散布
- sigma1.7与2.0的区别
- 大拿与大和的竖直界面与水平截面散布(落弹角数据采用泥潭Tirpitz_1939的窝窝屎本地船只数据查询器中数据)
- 绕不过的斯大林2.65与巡洋散布2.05对比
关于我这个理论的验证方法,其实很简单,就是记录落点,与以上的图例进行比对,但是一般而言一组落点样本至少要有五百个吧,所以也很难得弄就是了(这也是你游散布一直没人研究的最大原因:规模足够的实验太难做了)
,