lovelive研究部吧 关注:4,795贴子:36,247

【研究】Lovelive判定技能的分析及关于谱面的覆盖分布

只看楼主收藏回复

Lovelive判定技能的分析及关于谱面的覆盖分布
Lovelive研究部 首发 2016.6.4
作者信息:

摘要
Abstract
1)两张判卡的触发是相互独立的;
2)N判(以及C判)在自身覆盖区间内并不停止对note的计数。若在自身的覆盖区间内达到判定触发的条件,则触发累积到本次覆盖结束后进行连续覆盖;
3)特定的判定判定区间,对单个note可能存在“半覆盖”,定义判定对单note的GOOD区间覆盖率;
4)Offset并不改变谱面和技能的时间,而是把note的判定区间在时间轴上移动;
5)每次“有效击打”会使得正在计时的技能实际时间减少大约16ms,而谱面时间不变;
6)使用蒙特卡洛方法对判定技能进行了模拟,计算了N判、T判、C判在特定的歌曲中的覆盖率随时间/图标的分布,以及叠加覆盖率;
7)由于模拟的方法有计算误差,对误差进行了分析。后续希望获得一种精确计算的方法,降低程序的复杂程度,提高实用性。


IP属地:广东1楼2016-06-04 23:02回复
    1.2 N判技能覆盖的自重合
      N判卡片的触发条件,每隔一定的图标数则有概率触发,看似简单,但是当谱面密度很大,或者判定条件图标数很小的时候,N判卡会出现在自身的覆盖区间内再次达到触发条件的情况。那么此时技能是否会在覆盖区间内二次触发?对于这个问题,笔者通过录像分析进行验证。
      实验采用的判卡为条件图标很小的雪山妮(Lv1 17n4s),以及谱面密度很大的sg EX。对录像中的判定起点、覆盖区间进行统计,并对时间节点对应的note数进行记录,结果如下表所示:
    表1.1 雪山妮对SG的部分覆盖统计

      观察上述表格发现,中间有连续几次触发的时间节点,均不能与条件图标的整数倍对应上。也就是说,在谱面密度与条件图标的比值很大的时候,N判的触发条件受到自身的影响。首先,可以看到在这些与整数倍对应不上的位置,该判定是以基本均匀的时间间隔连续触发的,由此可以判断,在自身覆盖区间内并不停止对note的计数,否则判定不会连续触发;其次,这里的3.7或者3.566秒,实际上就是这张判卡的覆盖时间(具体原因在第二章进行说明),也就是说,N判“不存在覆盖区间自重合”。
      在上述表格中,连续触发的项目后,有一个单独覆盖的起点对应的note数是135或者136(双押),其中136是17的倍数,因此之前的连续触发造成的对note数的错位,并没有影响到这次覆盖的计数,以及上述连续覆盖的触发位置往往不在整note数的位置,综合得出推论:N判若在自身的覆盖区间内达到判定触发的条件,则触发累积到本次覆盖结束后进行连续覆盖。


    IP属地:广东4楼2016-06-04 23:08
    收起回复
        接下来我们在时间轴上分析在一个覆盖区间内达到了再次判定触发条件的整体覆盖概率分布情况。如下图所示,横轴为时间,纵轴为时间点对应的判定覆盖概率。
      1)在某个时间点A,该N判达到了覆盖触发的note条件,那么她将以p的概率覆盖A到C这一段时间,这一段覆盖没有受到其他情况的影响,我们姑且称之为一类覆盖;
      2)在A和C之间的某个时间点B,该N判又一次达到了判定触发的note条件,由前面的实验我们知道,如果在A点没有触发判定的时候,那么在此前提下,该判卡将以p的概率覆盖B到D这一段时间,称之为二类覆盖;
      3)如果在A点触发了判定,那么在此前提下,B点触发的第二次判定区间将被移动到C点后面,也就是以p的概率覆盖C到E这段时间,称之为三类覆盖。
        那么我们来综合考虑这两次覆盖技能触发所形成的覆盖率分布。
      1)A到B这段时间,只有一类覆盖,因此这段时间的覆盖率恒为p;
      2)B到C这段时间,存在一类覆盖和二类覆盖,在A点和B点这两个时间点触发的判定都能覆盖B到C这段时间,那么这段时间不被覆盖的概率是(1-p)^2,被覆盖的概率是1-(1-p)^2;
      3)C到D这段时间,存在二类覆盖和三类覆盖,这两类覆盖为在B点触发的这次判定覆盖的两种情况,也就是在B点触发技能的话,这段时间就会被覆盖,而与第一次触发无关,因此被覆盖概率是p;
      4)D到E这段时间,只有三类覆盖,即在A点和B点都触发技能时,覆盖区间才被推移,从而覆盖到这段时间,因此被覆盖率是p^2。

      图1.2 N判覆盖概率自重合现象
      在示意图中,出现了覆盖率比p大的一个峰,也就是说,虽然N判的判定区间不存在自重合,但是其“覆盖的概率分布存在自重合现象”。我们再来计算一下A到E这段时间的平均覆盖率(中间比p高出来的部分刚好等于p-p^2,也就是等于右边的缺口)发现平均覆盖率就是p,从另一方面考虑,正是因为有判定区间移动的这个机制,即使技能重叠触发,也能使得每一次触发都能被全部使用(在谱面密度不是很高,歌曲没有结束的时候),即N判的覆盖在一定条件下不会被自己浪费。


      IP属地:广东5楼2016-06-04 23:11
      回复
          我们回到上面的模型,我们把这种两次判定覆盖相互影响的情形称为一阶自重合。假设在第二次判定触发之后,又达到了一次判定触发的note条件,那么会出现怎样的情况呢?
        1)如果第三次触发的位置在E点之后,那么这次触发不会受到前面的判定区间的影响,从而形成一次一类覆盖;
        2)如果第三次触发的位置在D点到E点之间,那么这次触发会受到第二次触发的三类覆盖的影响,第三次触发则会出现两种覆盖情况,或者说第三次触发和第二次触发又发生了一阶自重合;
        3)如果第三次触发的位置在B点到C点之间,那么这次触发有可能在原地覆盖,也有可能移动到C、D或者E点的后面,形成4种情况,或者说这三次判定触发发生了三阶自重合。
          我们发现,如果谱面的密度很高,或者判定技能的触发条件比较低、覆盖时间比较长,那么几次连续发生的判定覆盖,它们的区间就会被排到比较久的一段时间之后,或者说判定的某一次触发的覆盖分布,会受到前面很多次判定触发的影响。
          由于我们要做的是关于所有N判的一般性分析,所以做出的算法应该满足SIF中所有可能出现的情况,如果会出现数不清的自重合次数,那么分析法就难以实现。因此笔者找出了一个非常极端的例子:Lv8魔术姬(15n9.5s)在SG EX下会出现什么情况。作为一个关于数量级的感性分析,我们将条件简化,将SG的谱面均匀分布,则平均每秒会有6.19note,每2.42秒,魔术姬的技能就有可能触发,那么在每一次的覆盖区间内,将有可能再次触发3.9次。在图中画出排列的覆盖区间,下发是触发时间点。仅看第九次触发,单纯全部排开就能出现7种情况,更不用说前面8个区间在不同触发点的各种排列了。

        图1.3 一种比较极端的情形
          因此后续的计算,仍然拟定使用模拟的方法进行。


        IP属地:广东6楼2016-06-04 23:13
        收起回复
          1.3 判定区间对单个note的覆盖
            虽然之前的分析一直针对判定的覆盖率对时间的分布进行,由于N判的触发条件是note,N判必须结合谱面(将时间和note构成一组变换)才能进行分析,而判定的作用实际是对note生效的,没有note的时候的判定是无意义的。因此我们必须将判定覆盖率对时间的分布,转换成判定覆盖率对图标的分布。
            本节将以单个note为主体,分析判定对图标的各种覆盖情况,从而定义判定技能对单个note的覆盖率。
            在谱面文件中,每一个note对应时间轴上的一个点,如果将这个点在覆盖区间内定义为该note被覆盖,是否有问题呢?我们来看下图中的例子,以图中人鱼姬旁边的这个note为研究对象,发现当它移动到A位置时,存在判定强化状态,移动到B位置时,判定覆盖已经消失,说明这个note在时间轴上对应的点是在覆盖区间之外的。当这个note移动到C位置上击打下去时,被判定为GOOD从而断连;但是图中右下角的D情况则表明,在这个note移动到A同样的位置时被击打,会因为判定强化状态的存在而改判为PERFECT。也就是说在这种边际状态下,这个note存在被“半覆盖”的情形。Chemical Fertilizers

          图1.4 判定区间对单note的“半覆盖”现象
            虽然note对于机器来说是一个点,但是实际玩家在live过程中很难击打到这个点,而是击打这个点的前面或者后面的某一个位置,也就是说note对于玩家而言是一组区间,即PERFECT区间+GREAT区间+GOOD区间+BAD区间。

          图1.5 单note的区间化
            上图在时间轴上展示了一个在覆盖区间边缘的note被覆盖的情形:如果玩家击打的时间点在note point的前面的GOOD区间和GREAT区间,则判定对这个note的覆盖是有效的;如果玩家击打点在后面的GOOD区间和GREAT区间,那么判定无效;如果玩家的击打点在PERFECT区间,那么无论判定是否覆盖,结果都为PERFECT,判定也属于无效。


          IP属地:广东8楼2016-06-04 23:17
          回复
              因此我们可以用某些区间的平均覆盖率来定义单note的覆盖率。但是,判定对GREAT的覆盖和对GOOD的覆盖效果是不同的,Glaceon31在《combo、gr对得分的影响和判定技能的等效属性分析[1]》中的研究结果表明,判定对改GOOD的作用效果,远大于改GREAT的效果,另一方面,很多玩家也会采用“判定组”来进行一些较难的Live从而获得较高的combo评价,在活动中获得更多的奖励。因此判定技能的重点是改GOOD。但是实际上改GREAT会对整体的得分有少量的提升,因此分析中也不应忽视这方面的效果;另外,如果我们要给GREAT区间和GOOD区间一个权重来综合考虑,这个权值又会因玩家的熟练程度、操作环境等不同而有所变化,因此也不能一概而论。
              综上我们对判定技能对于单个note的覆盖率应该定义两种覆盖率:
            1)判定对单note的GOOD区间覆盖率:该判定技能在一个note的GOOD区间内的平均覆盖率;
            2)判定对单note的有效覆盖率:该判定技能在一个note的GOOD区间和GREAT区间内的平均覆盖率;
            3)对长条而言,由于长条有两个判定点,因此需要将开头和结尾的区间一起算进去。
              由于判定技能的改GOOD是我们使用的重点,因此本文后续的分析中若不作说明,判定对单note的覆盖率均指代“判定对单note的GOOD区间覆盖率”,简称覆盖率。


            IP属地:广东9楼2016-06-04 23:18
            收起回复
              1.4 Offset对判定覆盖区间的影响
                另一个对判定有很大影响的是击打节奏,对其影响机理,笔者做了一组对比实验来进行研究。我们以《夏、終わらないで。》的easy难度为例,分别将设备的击打节奏调整至-50和+50,然后进行录像分析。将录像中note的时间点与谱面文件相对比,结果如下表所示,由于录像的帧率是30fps,所以可能存在一定的测量误差,表中的第三列表示了录像中的note与谱面文件的差值。发现在测量误差范围内,录像文件中两个击打节奏的note均与谱面文件相同。
              表1.2 击打节奏的测试

                也就是说,调整击打节奏并没有改变谱面,而是移动了判定区间。由于谱面没有改变,而T判和N判(这里唯一的C判要另外讨论)都是以谱面为基准进行触发的,因此判定覆盖区间在时间轴上不会因击打节奏的改变而变化。而是将图标的判定区间(P区间、G区间等等)在时间轴上平移。击打节奏+,则判定区间提前,即往时间轴的负方向移动;反之往正方向移动。
                由于SIF系统中,判定是以长度(距离)为基准进行的,其他研究者在对程序的代码进行解读时发现,对于EX(default速)移动1格为2ms,其它难度的情形下,判定距离是一致的,由于图标的移动速度不同,则引起了时间轴上的区间大小和位置差异。


              IP属地:广东10楼2016-06-04 23:19
              回复
                第二章 技能的时间参数在实际Live中的减少现象
                2.1 问题的发现
                  2015年12月,有研究者在实测电玩果的判定覆盖时间时,发现实测的覆盖时间比技能中描述的时间少,将图标时间的测量值与谱面文件对比,发现图标的时间却没有变化,也就是出现了“技能时间缩水”现象。进一步的测量发现,“缩水率”在90%附近,然而不是一个固定值,而是有一定范围的波动。
                  笔者听到这个消息,也进行了研究,然而当时为了节省研究成本,使用easy难度,并且带了很多的时间系奶卡,对录像进行了测量,发现覆盖时间与技能描述时间相等,并没有出现“技能时间缩水”的现象。因此当时作出了“与设备有关”的结论。
                  今年4月,在同一个设备中偶然对EX的难度进行了测量,却明显的观测到了“技能时间缩水”的现象,而且不仅判定,时奶卡片也存在这个问题。因此当时的结论是明显不正确的,而另有原因,后进行了一系列的实验,发现,随着歌曲难度的提高,“缩水”现象就越明显,而在easy难度中则比较难以发现。在不同的EX难度中,比如《告白日和、です!》和《友情ノーチェンジ》,前者的时间减少量也明显大于后者。因此可以感觉到,这个现象是与歌曲的note密度有关的,但另一方面,由于测量的结果有明显的波动,具体的原因还需进一步确认。
                2.2 实验研究
                2.2.1 问题原因的方向确定
                  开始在ieb的启发下,对击打物量进行研究。选择了一首谱面密度梯度比较大的歌曲《Snow halation》,在一部分note比较稀疏的位置进行miss,其它位置进行击打,统计时奶的CD在不同位置的减少量,进行比较。
                  在数据中可以明显的看到,在前20s的一直miss的时候,时奶的CD没有任何减少,而在击打开始的一段时间,时奶的技能触发间隔则明显的减少了。此时就明确了产生技能时间参数减少的现象的原因是击打物量,即按键的次数。另外也说明了笔者在之前的测试中没有观察到该现象的原因:笔者当时是用全miss的录像来测量的。


                IP属地:广东11楼2016-06-04 23:20
                回复
                  2.2.2 影响因素的具体规律
                    为了进一步的了解击打物量是如何影响时间的,笔者当时将每一个技能触发间隔内的击打物量(按键次数)进行了统计,然后将实测的技能触发时间间隔与卡片描述的时间的差值,除以这个击打物量,得到的结果笔者当时也是大吃一惊:所有的计算结果都接近一个固定值。
                  表2.1 问题的形成原因发现

                    上表对当时的实验数据进行了整理,倒数第二列的计算结果均各自接近,而且,从第一组、第二组、倒数第二组的数据中可以看出,若将miss计入则得不到这个结果,因此数据反映了技能时间减少现象的具体形成原因,即每次击打(PERFECT~BAD计入,MISS不计入)都会使得技能的实际时间(冷却时间、判定覆盖时间)减少大约16ms。
                    为了确定其它因素的影响,笔者一共记录了18组不同参数的录像数据,另外还针对更多的因素做了测试。具体测试数据很多,因此不在本文中一一摘录,测试数据发布在LoveLiveWiki群中(194840360)。
                  1)不同的歌曲:测试了多首歌曲,获得了比较接近的结果;
                  2)不同的难度:对easy,Hard,EX难度进行了测试,获得了比较接近的结果;
                  3)不同的速度:对8速easy进行测量,发现存在同样的现象;
                  4)不同的技能:对时奶、时判、N判进行了测试,获得了比较接近的结果;
                  5)不同的服务器:对国服、国服9游端和日服进行了测试,获得了比较接近的结果;
                  6)不同的录像方式:采用内录录制谱面、外置设备录像录制手元,进行分析获得了比较接近的结果;
                  7)不同的图标:将长条与单note对击打物量的影响分开假设考虑时,测量结果方差明显增大,表面长条与单note的影响是一致的;
                  8)多余的击打操作:经测试做明显多于谱面note数的击打时,时间减少量仍然是每note 16ms左右;
                  9*)不同的版本:对iOS和安卓进行了测试,获得的结果大部分接近,安卓端出现少量异常;


                  IP属地:广东15楼2016-06-04 23:33
                  收起回复
                    第三章 判定技能的覆盖概率分布的计算
                    3.1 判定技能的覆盖概率分布的表达方式
                      现有的判定技能分析中,只能给出一个整体的覆盖率,我们无法具体的知道,一张判定卡在歌曲的什么位置效果好,什么位置效果不好。为了获得这个信息,我们需要将具体的判定技能在具体的Live进程中,详细的表达出来才有更好的应用价值。
                      一种表达方式是在时间轴上展示,即判定技能的覆盖概率随时间分布,通过计算可以得出具体的判定技能在每一个时间点上的覆盖率。笔者在之前对时判的研究中《Lovelive时间判定技能的分析及数值模拟[2]》作出过这样的图表,但是由于当时没有发现“技能时间缩水”现象,得出的结果只能作为“时判覆盖的静态分布”,对于密集的谱面没有实用价值。
                      所以本文将时判的分析,加入上述现象的考虑,重新设计算法。另外N判和C判,也可以根据具体的歌曲信息计算出其在时间轴上的分布。
                      另一种表达方式是在图标上展示,即判定技能的覆盖概率随图标分布,根据第一章判定技能对单个note的覆盖率的定义,计算出具体的判定技能对具体的Live中每一个图标的覆盖率,然后列出图表来表示出结果,此时读者可以直观的看到哪些序号的图标被覆盖的可能性更大。
                      综合表达,可以作出一个时间轴上的覆盖分布,然后将图标也加入到时间轴的对应位置上,在图标旁边标出单note覆盖率,这样则更清晰和全面的表达。

                    图3.1 (图片由ieb提供[3])


                    IP属地:广东17楼2016-06-04 23:38
                    回复
                      3.2 判定技能的覆盖概率随时间分布的计算
                      3.2.1 N判
                        关于N判,这里仍采用蒙特卡洛的方法,由于N判的特性,触发的起点均为图标出现的瞬间,因此对于特定的谱面,所有可能的触发点的位置是确定的,不确定的是在某点是触发还是不触发。因此我们采用技能的概率p作为判定,对一次Live的技能触发点做抽样,得到一组覆盖起点。

                      图3.2 N判覆盖计算流程
                        然后计算覆盖区间的长度,将这些覆盖起点和区间长度在时间轴上组合,就得到了一次Live的判定覆盖图。对Live进行多次抽样,然后将这些计算出的判定覆盖图进行叠加,就可以得到这些抽样的覆盖频率随时间的分布图,以大量实验的频率值作为覆盖概率的计算值。Chemical Fertilizers
                        对于覆盖区间长度的计算,关注重点在于每次“有效击打”会使得正在计时的技能实际时间减少大约16ms。判定覆盖在时间轴上是固定的(前提没有特殊情况),但是玩家的击打点是不确定的,因此在程序中对具体note的模拟击打点的定义是需要考虑的。

                      图3.3 计算过程中的边界问题
                      考虑图中所示的情形,A为图中的note被击打前的覆盖区间,按照之前的研究结果,如果这个note被击打,那么覆盖区间会-16变成B区间,考虑因果关系,note被击打,才会有时间的减少(但是上一章提到的距离区间端点小于16ms的位置会发生什么我们不得而知)。那么在A区间上的击打点,覆盖效果都是true,如果把程序模拟的击打点放在A区间,则程序的计算结果会将其减少16,变成B区间,导致对该note的计算覆盖率小于实际情况。因此模拟击打点应该放在GOOD区间的末尾。
                        根据上面的分析,笔者使用Matlab编写了程序进行验证,以真夏妮为例,选用Live为《告白日和、です!》的EX难度,Offset=0,speed=default。

                      图3.4 真夏妮Lv1对告白日和EX的时间轴覆盖


                      IP属地:广东18楼2016-06-04 23:42
                      回复
                        3.2.3 C判

                        图3.6
                          针对C判进行了特性的研究,首先,触发的当前combo不受判定覆盖;其次,C判存在于N判类似的区间推移现象。C判的计算可以参考N判,但是有多处不同的地方需要注意。
                          C判的覆盖区间计算是以FC为前提的,若不能FC,则C判的覆盖情况无法计算;覆盖区间起点,由于C系技能是在玩家击打图标获得的combo作为触发条件的,因此C判的覆盖区间起点不是一个确定的值,这个值与玩家的操作有关;从时间轴上看,C判区间的前端一定会覆盖在达到条件的那个note的一半上,但是由于是这个note判定之后才确定是否能够触发技能的,因此C判对该note的覆盖率是0,而在C判的连续覆盖区间,这个note位于最开始的那个区间上。


                        IP属地:广东20楼2016-06-04 23:45
                        回复
                          3.3 判定技能的覆盖概率随图标分布的计算
                            上述覆盖率随时间的分布,计算结果是以1ms为分辨率,储存在数组中,那么对每个图标的覆盖计算,就比较简单。
                            首先,根据谱面文件、Offset、Live速度,计算出每一个note在时间轴上的GOOD区间,然后在上面的数组中找到这些区间对应的覆盖率值,求平均数即可。下表以3.2.1的例子,列出了真夏妮对日和EX各个note的覆盖率(节选)。
                          表3.1 真夏妮Lv1对告白日和EX各个note的覆盖率(节选)


                          IP属地:广东22楼2016-06-04 23:47
                          回复
                            参考文献
                            1.Glaceon31. combo、gr对得分的影响和判定技能的等效属性分析[EB/OL]. http://tieba.baidu.com/p/4108634228.
                            2.化学肥料. Lovelive时间判定技能的分析及数值模拟[EB/OL]. http://tieba.baidu.com/p/4452671801.
                            附录
                            1.输入歌曲信息

                            2.N判的计算




                            IP属地:广东24楼2016-06-05 00:00
                            回复
                              3.T判的计算





                              IP属地:广东25楼2016-06-05 00:01
                              回复