查看“判定覆盖率和判卡培养”的源代码
←
判定覆盖率和判卡培养
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
该页面已被保护以防止编辑和其他操作。 您需要至少
自动确认用户
以上的权限才可编辑此页面。
您可以查看和复制此页面的源代码。
<b>——Lovelive 判定覆盖率分布及高级判卡培养</b> <b>前言</b> 笔者在入坑SIF以来,断断续续对SIF的判卡做了系列研究,先后发表有《Lovelive 时间判定技能的分析及数值模拟》、《Lovelive 判定技能的分析及关于谱面的覆盖分布》、《Lovelive SIF判定覆盖率分布自重合研究及高级判卡培养》三篇关于判定技能的分析文章。在完成第三篇分析后,整个SIF判定技能的系统已经基本清晰,并且在前期的文章中有一些过时、错误之处,因此笔者对这些研究重新进行集总与编辑,对当前4.1版本以后的SIF的判定技能、判定覆盖率计算、判卡培养做一个系统的介绍。 在这些研究中有几个重要结论:(1)两张判卡的触发与覆盖是相互独立的;(2)N判(以及C判)在自身覆盖区间内并不停止对note的计数,N判在自身的覆盖区间内达到一次或者多次note计数条件,则在本次覆盖结尾进行一次技能触发的判断;(3)条件note相对较大、技能概率高、覆盖时间相对较短的判卡更适合培养。 基于对判定技能的研究,分析了判定覆盖率分布的计算方法,并以此制作了判定覆盖率分布的计算工具,可以计算整个队伍的判定覆盖率对时间的分布,以及计算每一个note的覆盖率,以及每一张判卡在整个队伍中的边际覆盖率分布,以及队伍对于歌曲的总覆盖率。如有计算需要请见[http://llhelper.duapp.com/llcoverage LLhelper判定覆盖率分布计算器]。 {| class="wikitable" border="1" |- ! <b>名词索引</b> ! |- | <b>自重合</b>: | N判在一个判定覆盖区间内再次达到note计数条件,使得某一时间段判卡的覆盖率大于技能概率的现象; |- | <b>高阶自重合</b>: | N判在一个判定覆盖区间内多次达到触发条件; |- | <b>状态</b>: | 一个覆盖状态等于(覆盖起点,存在概率,覆盖终点); |- | <b>零阶状态</b>: | 达到计数条件所直接触发的状态; |- | <b>一阶状态</b>: | 在某个覆盖区间结束以后接着的状态,即发生了一阶自重合的状态; |- | <b>继承</b>: | 一阶状态可以看做是对前面某一个覆盖状态(参考状态)的“继承”; |- | <b>继承率</b>: | 继承状态存在的概率与参考状态存在的概率的比值; |- | <b>边界继承</b>: | 继承状态和零阶状态起点相等的情形,即前区间某个状态的结尾刚好达到了判定的计数条件; |- | <b>自重合损失率</b>: | 某一判卡在某一谱面下的“总覆盖率”与“高阶自重合存在假设下的总覆盖率(即无损覆盖率)”之差的绝对值; |- | <b>GOOD区间覆盖率</b>: | 该判定技能在一个note的GOOD区间内的平均覆盖率; |- | <b>总note覆盖率</b>: | 该判定技能在歌曲所有note的GOOD、GREAT、PERFECT区间内的平均覆盖率; |- | <b>Trick覆盖率</b>: | FC前提当前覆盖状态下判定宝石的加成效果相对于100%覆盖下加成效果的比例; |} ==第一章 判定技能属性分析== ===1.1 判定技能发动的条件=== 图标判定(N判)与其他图标系技能一样,在图标出现的瞬间即对该图标进行计数,当累积计数达到技能设定中的条件值时,则技能有概率触发。计数每达到一次条件值时,无论技能是否触发,下一个图标重新开始计数。 对于combo判定(C判),与N判类似,是对combo进行计数,而combo的形成是以单note的PERFECT或者GREAT判定,以及长条结尾的PERFECT或者GREAT判定进行计数。 对于时间判定(T判),时判技能计时起点为成员出现的瞬间;对于时判技能连续发动的计时节点,是以上一次技能覆盖结束作为起点的。 ===1.2 判定技能的独立性分析=== <b>1.2.1 判定技能发动的独立性分析</b> 关于两张判定卡片是否会相互影响其触发条件,笔者通过两个简单的实验得到了结论,关于N判,笔者使用人鱼姬(Lv1)和真夏妮(Lv1)在《UNBALANCED LOVE》中进行测试,分别记录两张判定卡片在技能触发是的note数。其中,人鱼姬的触发note数为20、40、160、180、240、280、320、340、360、380、400、420;真夏妮的触发note数为50、100、125、175、200、275、325、400、425。可见,其触发note数均为自身条件的整数倍,因此并没有因为另外一张卡片正在覆盖而出现停止计数这类的问题。因此两张N判卡的触发是相互独立的。当然,她们的覆盖区间肯定是有重合的可能。 关于T判,笔者使用福神凛(Lv1 16+4),婚纱绘(Lv1 11+5)进行测试,分别统计两张时判卡的触发时间节点,将下列时间节点按照之前推导的触发条件进行拆分,可以完整拆分。说明两张时判卡片的技能发动并没有相互影响,是相互独立的。 [[File:图1-1.jpg|400px]] 图1.1 实验过程 22e 11+11 38e 11+11+5+11 54e 11+11+5+11+5+11 70e 11+11+5+11+5+11+5+11 32r 16+16 52r 16+16+4+16 72r 16+16+4+16+4+16 <b>1.2.2 判定技能覆盖时间的独立性分析</b> 与之前相似,使用天女绘(Lv1 5s)和扑街果(Lv2 6.5s)在《trouble buster》中进行测试,在天女绘覆盖过程中,若扑街果触发,记录覆盖结尾的时间;在扑街果覆盖过程中,若天女绘触发,记录覆盖结尾的时间。如下图所示,上述情形下的覆盖时间,即表格每一段末尾的时间值,均为卡片的技能时间(其中存在技能时间缩水的问题,详情参考本篇最后一章)。 [[File:测试2.png|400px]] 图1.2 实验过程及记录 通过上述实验,我们可以知道,两张判卡的覆盖时间也没有受到相互的影响,是独立的。 ===1.3 N判技能覆盖的自重合=== N判卡片的触发条件,每隔一定的图标数则有概率触发,看似简单,但是当谱面密度很大,或者判定条件图标数很小的时候,N判卡会出现在自身的覆盖区间内再次达到触发条件的情况。那么此时技能是否会在覆盖区间内二次触发?对于这个问题,笔者通过录像分析进行验证。 实验采用的判卡为条件图标很小的雪山妮(Lv1 17n4s),以及谱面密度很大的sg EX。对录像中的判定起点、覆盖区间进行统计,并对时间节点对应的note数进行记录,结果如下表所示: 表1-1 雪山妮对SG的部分覆盖统计 [[File:表1-1.png|400px]] 观察上述表格发现,中间有连续几次触发的时间节点,均不能与条件图标的整数倍对应上。也就是说,在谱面密度与条件图标的比值很大的时候,N判的触发条件受到自身的影响。首先,可以看到在这些与整数倍对应不上的位置,该判定是以基本均匀的时间间隔连续触发的,由此可以判断,在自身覆盖区间内并不停止对note的计数,否则判定不会连续触发;其次,这里的3.7或者3.566秒,实际上就是这张判卡的覆盖时间(具体原因在第六章进行说明),也就是说,N判“不存在覆盖区间自重合”。 在上述表格中,连续触发的项目后,有一个单独覆盖的起点对应的note数是135或者136(双押),其中136是17的倍数,因此之前的连续触发造成的对note数的错位,并没有影响到这次覆盖的计数,以及上述连续覆盖的触发位置往往不在整note数的位置,综合得出推论: N判在自身覆盖区间内并不停止对note的计数,N判若在自身的覆盖区间内达到判定触发的条件,则本次覆盖结束后有可能连续触发。 接下来我们在时间轴上分析在一个覆盖区间内达到了再次判定触发条件的整体覆盖概率分布情况。如下图所示,横轴为时间,纵轴为时间点对应的判定覆盖概率。 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。 [[File:图1-2.PNG|300px]] 图1.3 N判覆盖概率自重合现象 在示意图中,出现了覆盖率比p大的一个峰,也就是说,虽然N判的判定区间不存在自重合,但是其“覆盖的概率分布存在自重合现象”。我们再来计算一下A到E这段时间的平均覆盖率(中间比p高出来的部分刚好等于p-p^2,也就是等于右边的缺口)发现平均覆盖率就是p,从另一方面考虑,正是因为有判定区间移动的这个机制,即使技能重叠触发,也能使得每一次触发都能被全部使用(在谱面密度不是很高,歌曲没有结束的时候),即N判的覆盖在一定条件下不会被自己浪费。 我们回到上面的模型,我们把这种两次判定覆盖相互影响的情形称为一阶自重合。假设在第二次判定触发之后,又达到了一次判定触发的note条件,如果第三次触发的位置在B点到C点之间,那么这次触发有可能发生了高阶自重合,关于是否会发生高阶自重合,我们在后续研究中进行验证。 ===1.4 判定区间对单个note的覆盖=== 虽然之前的分析一直针对判定的覆盖率对时间的分布进行,由于N判的触发条件是note,N判必须结合谱面(将时间和note构成一组变换)才能进行分析,而判定的作用实际是对note生效的,没有note的时候的判定是无意义的。因此我们必须将判定覆盖率对时间的分布,转换成判定覆盖率对图标的分布。 本节将以单个note为主体,分析判定对图标的各种覆盖情况,从而定义判定技能对单个note的覆盖率。 在谱面文件中,每一个note对应时间轴上的一个点,如果将这个点在覆盖区间内定义为该note被覆盖,是否有问题呢?我们来看下图中的例子,以图中人鱼姬旁边的这个note为研究对象,发现当它移动到A位置时,存在判定强化状态,移动到B位置时,判定覆盖已经消失,说明这个note在时间轴上对应的点是在覆盖区间之外的。当这个note移动到C位置上击打下去时,被判定为GOOD从而断连;但是图中右下角的D情况则表明,在这个note移动到A同样的位置时被击打,会因为判定强化状态的存在而改判为PERFECT。也就是说在这种边际状态下,这个note存在被“半覆盖”的情形。 [[File:图1-4.jpg|600px]] 图1.4 判定区间对单note的“半覆盖”现象 虽然note对于机器来说是一个点,但是实际玩家在live过程中很难击打到这个点,而是击打这个点的前面或者后面的某一个位置,也就是说note对于玩家而言是一组区间,即PERFECT区间+GREAT区间+GOOD区间+BAD区间。 [[File:图1-5.PNG|400px]] 图1.5 单note的区间化 上图在时间轴上展示了一个在覆盖区间边缘的note被覆盖的情形:如果玩家击打的时间点在note point的前面的GOOD区间和GREAT区间,则判定对这个note的覆盖是有效的;如果玩家击打点在后面的GOOD区间和GREAT区间,那么判定无效;如果玩家的击打点在PERFECT区间,那么无论判定是否覆盖,结果都为PERFECT,判定也属于无效。 因此我们可以用某些区间的平均覆盖率来定义单note的覆盖率。但是,判定对GREAT的覆盖和对GOOD的覆盖效果是不同的,Glaceon31在《combo、gr对得分的影响和判定技能的等效属性分析[1]》中的研究结果表明,判定对改GOOD的作用效果,远大于改GREAT的效果,另一方面,很多玩家也会采用“判定组”来进行一些较难的Live从而获得较高的combo评价,在活动中获得更多的奖励。因此判定技能的重点是改GOOD。但是实际上改GREAT会对整体的得分有少量的提升,因此分析中也不应忽视这方面的效果;另外,如果我们要给GREAT区间和GOOD区间一个权重来综合考虑,这个权值又会因玩家的熟练程度、操作环境等不同而有所变化,因此也不能一概而论。 在SIF的4.0版本下,由于判定宝石(Trick)在一定程度上有用,而在P区间对于判定宝石而言也是有效的。补充关于判定宝石的实验可以发现,单独覆盖长条结尾,判定宝石加成有效,且为正常计算结果;单独覆盖长条开头,判定宝石加成无效。 综上我们对判定技能对于单个note的覆盖率可以定义多种覆盖率: 1)判定对单note的GOOD区间覆盖率:该判定技能在一个note的GOOD区间内的平均覆盖率; 2)判定对单note的有效覆盖率:该判定技能在一个note的GOOD区间和GREAT区间内的平均覆盖率; 上述对长条而言,由于长条有两个判定点,因此需要将开头和结尾的区间一起算进去。 3)判定对单note的Trick覆盖率:该判定技能在一个note的GOOD区间和GREAT区间和PERFECT区间内的平均覆盖率,对于长条而言,只算结尾区间; 由于判定技能的改GOOD是我们使用的重点,因此本文后续的分析中若不作说明,判定对单note的覆盖率均指代“判定对单note的GOOD区间覆盖率”,简称覆盖率。 ===1.5 Offset对判定覆盖区间的影响=== 另一个对判定有很大影响的是击打节奏,对其影响机理,笔者做了一组对比实验来进行研究。我们以《夏、終わらないで。》的easy难度为例,分别将设备的击打节奏调整至-50和+50,然后进行录像分析。将录像中note的时间点与谱面文件相对比,结果如下表所示,由于录像的帧率是30fps,所以可能存在一定的测量误差,表中的第三列表示了录像中的note与谱面文件的差值。发现在测量误差范围内,录像文件中两个击打节奏的note均与谱面文件相同。 表1-2 击打节奏的测试 [[File:表1-2.png|150px]] 也就是说,调整击打节奏并没有改变谱面,而是移动了判定区间。由于谱面没有改变,而T判和N判(这里唯一的C判要另外讨论)都是以谱面为基准进行触发的,因此判定覆盖区间在时间轴上不会因击打节奏的改变而变化。而是将图标的判定区间(P区间、G区间等等)在时间轴上平移。击打节奏+,则判定区间提前,即往时间轴的负方向移动;反之往正方向移动。 由于SIF系统中,判定是以长度(距离)为基准进行的,其他研究者在对程序的代码进行解读时发现,对于EX(default速)移动1格为2ms,其它难度的情形下,判定距离是一致的,由于图标的移动速度不同,则引起了时间轴上的区间大小和位置差异。 ==第二章 覆盖率分布自重合研究== ===2.1 自重合现象实验验证=== <b>2.1.1 实验目的及原理设计</b> 由于我们的目的为,验证高阶自重合是否存在,因此需要根据假设设计一个高阶自重合可能存在的场合,然后实际运行SIF程序,以此观测高阶自重合是否存在。 由于一阶自重合是在之前的实验中确实观测到的,因此我们需要观测二阶自重合的存在与否,若二阶自重合存在,则有可能更高阶的自重合存在,需进一步的验证。高阶自重合是在二阶自重合的基础上连续触发判定才会存在的,因此若二阶自重合不存在,则高阶自重合没有存在的条件。 <b>2.1.2 实验平台</b> 【本小节为ieb提供的黑科技】 <b>2.1.3 实验过程</b> 我们将实验卡组设置为9个Lv8旗手妮(31note 79% 6s),自制谱放出32个note使得旗手妮达到第一次触发的条件;在第一个覆盖周期内自制谱放出64个note,这样就形成两次触发条件,后面放空观察,并且在50s的位置放置一个空note,消除可能的歌曲结束影响。 在之前的研究中我们知道,这9张卡片的覆盖是相互独立的。因此一次测试过程就相当于9次伯努利试验;如果存在二阶自重合,就能观测到3次等间隔的判定连续覆盖。(一个旗手妮连续触发3次的概率是51%,9次伯努利试验,观测到的概率大约99.7%),如果观测不到3次连续覆盖,说明存在二阶自重合的假设检验在某个置信水平下不成立。 [[File:图2.1.jpg|400px]] 图2.1 实验过程 <b>2.1.4 实验结果分析</b> 作者在这个设计的场合下进行了数次测试,均未观测到三次等间隔的判定连续覆盖,而只能观测到两次等间隔的判定连续覆盖(其中会出现不等间隔的触发立绘,这是因为有的卡片在第一次条件点没有触发)。 根据假设,这个过程中应该有很大概率观测到三次等间隔的判定连续覆盖,而实际没有观测到。说明在SIF程序中“高阶自重合”不存在。在设计的过程中,本应覆盖3次的卡片结果只覆盖了两次,说明高阶自重合的状态会被吞掉。 <b>2.1.5 结论</b> 若在自身的覆盖区间内多次达到判定触发的条件,本次覆盖结束后连续覆盖只有一次。即N判卡覆盖率分布存在一阶自重合,不存在高阶自重合。 推测SIF程序中只储存了判定状态是否存在,没有储存判定存在的时候判定触发了多少次。 ===2.2 一阶自重合继承率及边界状态实验分析=== <b>2.2.1 判定覆盖状态的继承及边界继承</b> 我们先把判卡在一首歌中所有的状态(状态起点)在时间轴上列出来,如下图所示,带有颜色标记的为判卡在打到计数note的时候就触发的状态,没有受到前面区间的影响,在本文中也将其称为“零阶状态”,而没有颜色标记的状态,都是在某个覆盖区间结束以后接着的状态,即发生了一阶自重合的状态,简称“一阶状态”,一阶状态可以看做是对前面某一个覆盖状态(参考状态)的“继承”,也可称之为“继承状态”,被继承的状态有可能是零阶状态,也有可能是一阶状态。定义“继承率”:继承状态存在的概率与参考状态存在的概率的比值。 [[File:图3.1.png|200px]] 图2.2 状态的继承 在歌曲BPM为某些特点数值时,有时候会出现继承状态和零阶状态起点相等的情形,即前区间某个状态的结尾刚好达到了判定的计数条件(如图中的36860本身是零阶状态,又恰好有可能继承31360)。那么此时这个区间结尾对于这个计数条件是无影响还是算作一阶自重合,则需要进行实验分析。 <b>2.2.2 实验原理设计</b> 由于对SIF程序的反编译代码的解读较为困难,因此猜测判定状态的继承,在SIF程序中有几种可能的情形,以吃瓜希(Lv8 74%)为例,如果在一次覆盖区间内,有3个达到计数条件的点,那么SIF程序对这些点会作出可能的几种操作:或操作,即这三个计数点,只要某一个达到触发条件,前状态就会被继承;重复置F,即达到了一次触发条件,再达到一次触发条件时会把继承状态置否;第三种,二次达到触发置否后,三次达到触发又置是;第四种,不管有几次,只做一次判断。 下表列出了,三个计数点和对应的程序操作的真值表,并计算出了这些情形对应的继承率。 除此之外,还要考虑到参考状态为标准一阶状态,参考状态为推移一阶状态是否有差别。 表2-1 三次触发点分析 [[File:表3-1.jpg|300px]] 对于边界状态,设计一个情景,使得某一个零阶状态和某一个继承状态起点相等(这时该点会有零阶状态和继承状态并存)。并在继承状态和零阶状态中间插入一个零阶状态(否则无法在概率上进行辨别)。若某一个触发点与参考状态的结尾刚好相等时,会受到参考状态的影响,计算零阶率时将参考状态计入得到一个实测率的估计值;若不受影响,则计算零阶率时不将参考状态计入得到另一个实测率的估计值。然后观察实测率与哪个值相接近,得到结论。 <b>2.2.3 实验平台</b> 本次实验在两个平台分别进行,其一在【ieb提供的黑科技】测试了Lv8的吃瓜希,其二在日服对Lv8小判(小判与大判使用同一套触发function,只是改判function中有GOOD的区别),在宝物MASTER中进行测试。 <b>2.2.4 实验过程</b> (1)根据实验原理设计谱面,在设计的谱面下,用9个Lv8吃瓜希测试录像,记录了315组数据,记录每一个点技能发动的次数。 (2)用Lv8小判打宝物MASTER并录像,分析录像获得667组数据,记录一段时间内每一个观测点技能发动的次数。 (3)汇总分析。 [[File:图3.2.jpg|400px]] 图2.3 实验过程 <b>2.2.5 实验结果分析</b> 对吃瓜希的测试结果如下表所示,两个观测继承率分别为184/246=0.748,113/162=0.698,两个观测点可以看作246次和162次的伯努利试验,分别计算观测到184次和113次的二项分布概率的累积值,在0.982,0.15,0.555的假设下累积值都在趋近于0的概率范围内,而在0.74的假设下,累积值为0.636和0.127在无法拒绝0.74的假设的范围内。因此拒绝前三个假设,认为继承率等于技能概率。 表2-2 吃瓜希测试分析 [[File:表3-2.png|400px]] 对小判的测试结果如下表所示,36860的零阶状态若受到31360的影响,则当前数据下测试结果应该在184.5附近,若不受到影响,则测试结果应该在261附近(首先我们把36860状态分成两个部分,一个是继承状态部分,一个是零阶状态部分。无论是否受到31360的影响,由于36860和31360之间存在一个零阶状态,所以继承状态部分的期望都是31360的状态数量乘以继承率;另一部分零阶状态部分是根据前面状态是否覆盖到36860来计算的,如果前面的状态不存在,则36860的零阶状态以技能概率为概率存在,如果前面影响到36860的状态存在,则36860的零阶状态不存在。那么是否会受到31360的影响就会有两种情形)。实测结果为191。另外,数据中间隔两个触发点的继承率也可以看到,总计为186/354=0.525,在0.001的置信水平下也能拒绝0.75假设而不能拒绝0.5(Lv8小判技能概率为0.5)假设。 表2-3 小判测试分析 [[File:表3-3.png|550px]] 表2-4 置信水平 [[File:表3-4.png|800px]] <b>2.2.6 结论</b> 数据表明在判定区间内触发一次或者多次,并不是“将连续覆盖状态置true”,而是“在覆盖结尾形成一次技能触发的判断条件”,即在SIF程序中,N判在自身的覆盖区间内达到一次或者多次note计数条件,则在本次覆盖结尾进行一次技能触发的判断。因此继承率等于技能概率。 若某一个零阶状态起点与某个参考状态的结尾刚好相等时,该零阶状态会受到参考状态的影响,形成原地的(实际会偏慢1帧,后续覆盖率的分布计算时忽略这个影响)一阶自重合。 ==第三章 判定技能的覆盖概率分布的数值模拟== ===3.1 蒙特卡洛法覆盖率分布模拟=== 对于判卡每一次达成条件,技能的发动与否并不是固定的,而是一个随机变量。正因为如此,判定技能在每一次Live中的表现也是随机的。因此我们需要一个“覆盖率分布”来对具体的判定技能的性能进行评估。 由于我们的研究对象“一个判定技能在一次Live的进程中的具体行为”是一个随机变量,因此我们需要通过概率对它进行描述。蒙特卡洛方法作为处理这类问题的统计模拟方法,为本章所应用。 首先,在Matlab中构建描述一张判卡在一次Live中的技能发动行为过程;然后,从技能发动概率分布中抽样,应用于一次具体的Live模拟实验中。由计算机模拟得出这一次Live中,该判卡技能发动的情况;重复多次实验,并统计其结果,得到技能发动频率对时间的分布的实验值;将该实验值作为对“判定技能的覆盖概率对于时间的分布”的估计值。 ===3.2 N判模拟方案=== 由于每次N判的触发与否是随机的。通过计算机模拟Live过程,得到Live过程的N判覆盖分布的随机过程的一次抽样;重复多次抽样并统计,得到技能覆盖频率分布的实验值;将该实验值作为“覆盖概率分布”的估计值。 我们根据N判的特性抽样出一次Live中的“起点”,即N判技能在哪些位置上触发了。然后计算出本次抽样的判定覆盖分布。 本方案以最直观的程序过程来描述之前研究中所观测到的N判特性,逐毫秒分析,先将覆盖终点置0,累积可能的继承置0,当前时间点若大于覆盖终点,则没有覆盖状态,此时若没有继承状态,遇到计数条件点时,进行抽样,如果得到的结果为技能发动,则更新覆盖终点。若没有覆盖状态而有继承状态,则进行抽样,如果得到的结果为技能发动,则更新覆盖终点,并累积可能的继承置0。 当前时间点若小于覆盖终点,则有覆盖状态,当遇到计数条件点时将累积可能的继承置1。 [[File:图4.1.png|500px]] 图3.1 方案流程 笔者使用Matlab编写程序进行了模拟,下图为Lv8魔术姬在《告白日和》EX谱面下的覆盖分布模拟结果。 [[File:图4.2.png|600px]] 图3.2 模拟结果 ===3.3 T判模拟方案=== 对于T判,虽然T判的每一个触发起点是不确定的,但也可以设计类似的算法,先绕开触发起点,因为T判每次达到条件时间,在时间轴上是有先后顺序的,我们可以先抽样出一组数据表示,在第一次达到条件时间是否触发、第二次达到条件时间是否触发、第三次达到条件时间是否触发…… 抽样后,根据T判的特性,将每次触发后的冷却区间插入抽样数组,得到一组判定覆盖区间和技能冷却区间的排列。例如: 抽样结果 0 1 1 0 1 0 根据T判的特性,首先从歌曲开头,是一段冷却时间 0 第一次达到触发条件时没有触发,因此接着一段冷却时间 0 第二次达到触发条件时触发,因此接着一段覆盖时间 1 覆盖结束后必然有一段冷却时间 0 第三次达到触发条件时触发,因此接着一段覆盖时间 1 以此类推,得到一个排列: 0 0 1 0 1 0 0 1 0 0 我们可以看到,这个操作就是在抽样结果的开头插入一个0,然后在每一个1后面插入一个0。 这样我们得到了一组判定覆盖区间和技能冷却区间的排列,进一步分析,由于这些区间在时间轴上是首尾相连的,因此从第一个区间开始,逐一计算区间长度,计算方法和N判相同。这样就得出了一次Live的覆盖分布图的抽样。同样的,对多次抽样进行统计,即可得出T判随时间的覆盖率分布。 根据上面的分析,笔者使用Matlab编写了程序进行验证,以情人姬为例,选用Live为《告白日和、です!》的EX难度,Offset=0,speed=default。 [[File:图3-5.png|600px]] 图3.3 情人姬Lv1对告白日和EX的时间轴覆盖 ==第四章 判定技能的覆盖概率分布的计算== 关于蒙特卡洛法计算量太大,而且计算精度与计算量相关,对于专门处理各种矩阵的程序MATLAB虽然计算负担不大,但是当笔者尝试将蒙特卡洛法计算判定覆盖率的程序翻译成JavaScript希望移植到浏览器中,发现浏览器并不能承担这样的负荷,并且JavaScript对于矩阵的处理以及各类数学函数的应用也不如MATLAB方便。 因此为了将覆盖率分布计算器实用化,必须找到一个直接分析的方法,一方面减轻设备的运算量,另一方面,计算精度也将比蒙特卡洛法高出很多。 ===4.1 判定技能的覆盖概率随时间分布的计算=== <b>4.1.1 T判覆盖率分布dp</b> T判的计算比较简单,这里采用Ceva酱的算法,即设p为技能发动概率,c为技能积累时间,l为技能持续时间。设f(x)为第x时刻技能发动的概率,g(x)为第x时刻技能不发动的概率,则满足如下表达式[2]: <math>g(0)=1</math> <math>f(x)=pg(x-c)</math> <math>g(x)=f(x-l)+(1-p)g(x-c)</math> 经过上述计算,可以得到一系列触发点和触发概率,计算出覆盖终点即可在时间轴上得到覆盖分布。 <b>4.1.2 N判覆盖率分布dp</b> 前面分析过,由于N判的覆盖率自重合现象,当谱面密度很高技能覆盖时间很长时,技能状态的可能性非常多。因此需要系统分析每一个状态,找到一个递归式从而可以用程序计算出这些状态。 这里介绍本人在判定覆盖分布计算器中使用的分析方法。这里将“一个覆盖状态”作为分析单元,对于N判状态的表达,则可以用一个三维向量来表示(覆盖起点,存在概率,覆盖终点),将所有的状态计算出来,在时间轴上相加即可得到覆盖分布。由于N判的触发条件是固定的,因此可以将状态们细分到每一个触发点上。 [[File:N判dp.png|300px]] 图4.1 N判状态分析 设第i个触发点的第n个状态存在的概率为<math>p_{in}</math>,首先考虑覆盖起点,即第i个触发点的第n个状态存在的位置:(1)条件起点;(2)第1个~第i-1个触发状态的终点。 接下来计算概率,考虑<math>p_{i1}</math>,即此时这个触发点没有被移动到前区间的终点,满足这种情况的条件:第i次触发且第1次到第i-1次触发没有覆盖到第i次的条件起点。由于每算完一个状态都会把覆盖率写入时间轴,因此可以直接从时间轴读取当前分析点的前状态覆盖率<math>p_t</math>, 此时: <math>p_{i1} = p * (1 - p_t)</math> 考虑<math>p_{in}</math>:第i次触发的起点被移动到<math>p_{(i-k)n}</math>的终点,即继承状态,此时要排除掉高阶自重合的情形,我们先来看一下发生了高阶自重合而被吞掉的状态有什么特点。如下图所示,每一次触发,有可能在条件起点覆盖,也有可能被移动到前区间的终点,但是图中如果3次都触发,第二次触发被移动到第一次触发的终点,本来应该被移动到第二个状态的后面的最右边的三次触发的一个状态,由于高阶自重合的不存在而无效。仔细观察我们可以看到,这个被吞掉的状态的“参考状态”的起点在第三个条件起点的后面。 [[File:图4.3.png|450px]] 图4.2 失效状态分析 对其他的多种状态进行分析发现,当分析某个触发点的某个状态时,以该触发点的前触发点作为参考,如果“参考状态”的终点在当前分析的条件起点后面,那么起点有可能被移动;如果“参考状态”的起点在当前分析的条件起点后面,那么当前分析状态会失效。 排除掉了失效的状态后,剩下的状态就在前状态存在的概率下,乘以继承率p即技能概率就得到了。 此时: <math>p_{in} = p * p_{(i-k)n}</math> 在计算了<math>p_{in}</math>的继承后,后续计算要做计数,以免重复计算继承率。 而对于覆盖终点,则可以由起点,技能的覆盖时间,综合谱面所影响的16ms因素计算得出。由于计算某一项的起点需要前面状态的终点参数,因此必须从第一个状态开始,逐一计算出这个状态的三个参数(在4.1版本以后,只需要将覆盖起点加上技能持续时间就能得到覆盖终点)。 <b>4.1.3 覆盖率分布算法的验证</b> 对于同一个判卡在同一个谱面中,将上述概率计算算法的计算结果,与蒙特卡洛模拟法的结果进行比较。如图所示,为Lv8捉奸鸟在sgEX谱面的覆盖分布的验证。 <img src='https://wiki-ll.loveliv.es/images/b/be/%E5%9B%BE4.4_%281%29.gif' width='600px'> 图4.3 计算结果与模拟结果相比较 对多种判定技能和多种谱面进行计算与模拟,分别比较验证覆盖率分布算法,计算结果均能与模拟结果相等。 对Lv8小判在宝物MASTER的667组数据实测状态数与模拟状态数相比较,所有观测点均未观测到数据异常(未落在二项分布的99%区间外)。 表4-1 实测分布与模拟分布比较 [[File:表4-1.png|700px]] <b>4.1.4 C判</b> 针对C判进行了特性的研究,首先,触发的当前combo不受判定覆盖;其次,C判存在于N判类似的区间推移现象。C判的计算可以参考N判,但是有多处不同的地方需要注意。 由于C判的特殊性,首先只有在FC的前提下才能讨论理论覆盖率的分布;然后,C判不会覆盖到连续区间的第一个combo(因果关系);其次,C判的覆盖是以combo为起点的,即玩家的击打点,玩家的击打点并不等于谱面中所描述的点,一般说来是以判定点为中心呈高斯分布的。 对于分布参数,笔者考虑了一种估计方式,即根据玩家的P率,以及卡组的计算覆盖率,逆推出玩家的“真实P率”,根据真实P率和P判定区间长度,解出分布参数,从而可以得到关于判定点的时间偏差分布。 由于起点存在一个分布状况,则终点也对应一个分布状况,如果对于单独的覆盖区间(没有受到其他区间的影响),则覆盖分布可以由N判的方式计算,然后在时间轴上与高斯函数进行卷积,得到一个区间的C判覆盖分布。但是当两个区间相互靠近的时候,由于起点和终点的偏移,两个区间会相互影响,下图对比了对两个紧挨的区间直接卷积和模拟计算的差异,直接计算卷积则两个区间中间的覆盖率是没有变化的,而实际上,后区间的前端受到前区间的分散的影响,部分可能性被往后推移,因此两个区间中间A位置的概率是有所下降,而被往后推移使得B位置的概率有所增加。 [[File:C判测试.png|500px]] 图4.4 C判测试 因此C判的计算在N判方法的基础上,需要计算一个状态计算一次卷积,然后再计算后一个状态与前面状态的重叠程度,再做进一步分析。最终的操作会很复杂。因此LLhelper判定覆盖分布计算器对于C判只给出“FC前提下的覆盖分布数学期望”。 ===4.2 判定技能的覆盖概率随图标分布的计算=== <b>4.2.1 N判和T判</b> 上述覆盖率随时间的分布,计算结果是以1ms为分辨率,储存在数组中,那么对每个图标的覆盖计算,就比较简单。 首先,根据谱面文件、Offset、Live速度,计算出每一个note在时间轴上的GOOD区间,然后在上面的数组中找到这些区间对应的覆盖率值,求平均数即可。下表以3.2.1的例子,列出了真夏妮对日和EX各个note的覆盖率(节选)。 表4-2 真夏妮Lv1对告白日和EX各个note的覆盖率(节选) [[File:表3-1-2.png|500px]] <b>4.2.2 C判</b> 如果队伍中存在C判,那么情况会复杂很多。对于存在C判的单note覆盖率计算,不同的note有不同的计算规则: 1、单点和长条终点可作为触发点, (1)触发点,触发点不会受到自身引起的触发状态所覆盖,因此触发点的覆盖率只与该点所引起的状态以外的覆盖状态有关,因此前区间覆盖率常规计算,后区间覆盖率按照1-(1-p_时间轴)/(1-p_触发率)计算,再综合起来; (2)离触发前很近的判定点,首先需要设定该点不会到触发点后面,否则它就成为触发条件,覆盖期望的计算前提就会改变,因此该点不会受到触发点的影响,只计算触发点前该点good区间覆盖率; (3)离触发前同时的判定点,即双押或者长条终点与单点同时,由于该点没有达到触发条件,而是与之同时的另一点达到触发条件,因此不受触发点的影响,而这种状态可以与触发点进行替换,因此该点的覆盖率与触发点应该是一致的覆盖率(1); (4)离触发后很近的判定点,与第二点设定类似,此时该点必受到触发点的影响,因此计算触发点后该点good区间覆盖率; (5)离触发后同时的判定点,此时两个点会有一个成为触发点,而另一个必定在触发点的后面从而被覆盖,因此这两点有均等的机会被覆盖,应计算该点后区间覆盖率,与触发点的覆盖率(1)求均值,作为该点和触发点的覆盖率; (6)其它点,按照常规计算完整good区间覆盖率。 2、长条起点不会影响触发状态,因此长条起点无论与触发点有何距离关系,均计算完整good区间覆盖率。 3、当C判的种类不止一种时会有更多情况(庆幸的是目前SIF只有一种C判): (1)判定点离N个触发点都很近; (2)N个触发点之间距离很近。 ===4.3 多张判定技能卡片覆盖的叠加=== 在第一章的分析我们提到,卡组中每一张判卡都是相互独立的,也就是一张判卡的技能发动与否,不会影响到另一张判卡技能的发动。因此每一张判卡都有一个独立的覆盖率分布。那么,多张判定卡对Live的覆盖就是这些概率的覆盖叠加。 在时间轴上分析,某一个时间点被覆盖,其对立事件为:卡组中每一张判卡对这个时间点都没有覆盖。那么可以简单的求出卡组对这个点的覆盖率,即p=1-Π(1-p_i)。或者程序中对覆盖结果进行储存时,也可以储存“非覆盖率”,而后直接相乘。 ===4.4 Trick覆盖率(判定宝石)=== 若在新版本中使用判定宝石,需要计算其强度加成量,Trick覆盖率也可以作为参考,在LLhelper判定覆盖分布计算器中,采用判定对所有单note的Trick平均覆盖率作为Total Note Coverage。 而在后面的括号中为加上了combo和长条权重的覆盖率,其意义为“FC前提当前覆盖状态下判定宝石的加成效果相对于100%覆盖下加成效果的比例”,这里将这个覆盖率简称为“Trick覆盖率”,在FC算分的使用情况下请参考这个覆盖率。 ==第五章 高级判卡培养== ===5.1 判定覆盖率的自重合损失=== 在之前的“高阶自重合”存在假设中,判定覆盖率在Live过程中不会被浪费,而只在歌曲结束的时候有一定的损失。根据现在的研究结果,如果在一次覆盖区间内,判定触发了两次以上,由于高阶自重合不存在,使得部分状态失效,从而造成覆盖率的损失;另一方面,在一阶自重合时,如果区间内有多个触发点,这些触发只有可能继承一次,使得部分触发点失效,也造成了覆盖率的损失。 定义,覆盖率自重合损失率(自重合损失率):某一判卡在某一谱面下的“总覆盖率”与“高阶自重合存在假设下的总覆盖率(即无损覆盖率)”之差的绝对值。 根据总覆盖率的类型(GOOD区间覆盖率、总note覆盖率、Trick覆盖率等)还可以分别定义多种自重合损失率,这些值都比较接近,本章就以总note覆盖率作为讨论。 ===5.2 高级判卡的覆盖率及自重合损失率分析=== 我们培养判卡的主要目的有两个,减少断连和增加得分(主要指Trick宝石),从实用效果来看,都希望能有高覆盖率的判卡(组),但是当卡组中某一张判卡的覆盖率很高的时候,其他判卡的边际覆盖率就会接近0,所以培养会趋向于少量高等级培养。 另一方面,随着判卡的等级提高以及谱面的密度提高,判定覆盖率都会提高,但是自重合损失率也会提高。因此我们尝试分析一下什么情况下覆盖率高的同时,自重合损失率并不太高。 自重合损失,发生的条件是一次覆盖区间内,有两个以上可能的零阶点,因此容易发生这种情况的卡片,其条件note比较小,覆盖时间比较长,在谱面密度较高的时候容易发生。下面取了几个典型的情况对此进行分析。 表5-1 自重合损失率分析(1) {| class="wikitable" style="text-align: center" |- | 人鱼1 || MASTER || note密度 || 6.54 || || |- | 卡片 || 条件note || 概率 || 覆盖时间 || 覆盖率 || 自重合损失率 |- | 天女绘Lv8 || 17 || 44 || 9 || 76.0% || 16.9% |- | 天女绘Lv7 || 17 || 41 || 8 || 70.0% || 19.8% |- | 天女绘Lv6 || 17 || 38 || 8 || 67.1% || 20.3% |- | 天女绘Lv5 || 17 || 35 || 7 || 62.3% || 17.2% |- | 天女绘Lv4 || 17 || 32 || 7 || 58.8% || 16.0% |- | 魔术姬Lv8 || 15 || 42 || 9.5 || 76.7% || 17.8% |- | 魔术姬Lv7 || 15 || 38 || 9 || 72.0% || 20.6% |- | 魔术姬Lv6 || 15 || 34 || 9 || 68.2% || 21.9% |- | 魔术姬Lv5 || 15 || 30 || 8 || 62.2% || 20.8% |- | 魔术姬Lv4 || 15 || 26 || 8 || 57.0% || 19.2% |- | 魔术姬Lv3 || 15 || 22 || 7 || 47.3% || 14.0% |- | 吃瓜希Lv8 || 32 || 81 || 8 || 87.9% || 5.6% |- | 吃瓜希Lv7 || 32 || 77 || 7 || 84.2% || 5.7% |- | 吃瓜希Lv6 || 32 || 73 || 7 || 81.5% || 6.0% |- | 吃瓜希Lv5 || 32 || 69 || 6 || 75.2% || 2.0% |- | 捉奸鸟Lv8 || 23 || 78 || 7 || 88.7% || 7.2% |- | 捉奸鸟Lv7 || 23 || 74 || 6 || 86.4% || 7.7% |- | 捉奸鸟Lv6 || 23 || 70 || 6 || 84.0% || 8.7% |- | 捉奸鸟Lv5 || 23 || 66 || 5 || 77.8% || 6.6% |- | 捉奸鸟Lv4 || 23 || 62 || 5 || 74.4% || 6.2% |- | 旗袍妮Lv8 || 32 || 76 || 9 || 86.8% || 6.3% |- | 旗袍妮Lv7 || 32 || 71 || 8 || 82.0% || 7.9% |- | 旗袍妮Lv6 || 32 || 66 || 8 || 78.6% || 8.4% |- | 旗袍妮Lv5 || 32 || 61 || 7 || 72.1% || 5.4% |- | 花语花Lv8 || 17 || 64 || 6.5 || 84.3% || 11.7% |- | 花语花Lv7 || 17 || 60 || 6 || 80.8% || 13.9% |- | 花语花Lv6 || 17 || 56 || 6 || 77.9% || 15.4% |- | 花语花Lv5 || 17 || 52 || 5 || 71.8% || 14.3% |- | 花语花Lv4 || 17 || 48 || 5 || 68.2% || 13.7% |- | 花语花Lv3 || 17 || 44 || 4 || 58.8% || 5.6% |- | 红叶妮Lv8 || 16 || 38 || 7 || 66.5% || 19.6% |- | 红叶妮Lv7 || 16 || 36 || 6.5 || 63.4% || 17.6% |- | 红叶妮Lv6 || 16 || 34 || 6 || 58.5% || 15.8% |- | 红叶妮Lv5 || 16 || 32 || 5.5 || 53.6% || 12.9% |- | 红叶妮Lv4 || 16 || 30 || 5 || 48.9% || 9.1% |- | 旗手妮Lv8 || 31 || 79 || 6.5 || 85.3% || 4.8% |- | 旗手妮Lv7 || 31 || 74 || 6 || 80.2% || 3.4% |- | 旗手妮Lv6 || 31 || 70 || 5.5 || 74.2% || 1.1% |} 表5-2 自重合损失率分析(2) {| class="wikitable" style="text-align: center" |- | 人鱼2 || EXPERT || note密度 || 5.33 || || |- | 卡片 || 条件note || 概率 || 覆盖时间 || 覆盖率 || 自重合损失率 |- | 天女绘Lv8 || 17 || 44 || 9 || 71.5% || 18.3% |- | 天女绘Lv7 || 17 || 41 || 8 || 66.8% || 17.1% |- | 天女绘Lv6 || 17 || 38 || 8 || 63.7% || 16.5% |- | 天女绘Lv5 || 17 || 35 || 7 || 56.7% || 12.6% |- | 天女绘Lv4 || 17 || 32 || 7 || 53.1% || 11.1% |- | 魔术姬Lv8 || 15 || 42 || 9.5 || 73.8% || 18.5% |- | 魔术姬Lv7 || 15 || 38 || 9 || 68.6% || 20.2% |- | 魔术姬Lv6 || 15 || 34 || 9 || 64.4% || 20.3% |- | 魔术姬Lv5 || 15 || 30 || 8 || 56.7% || 17.2% |- | 魔术姬Lv4 || 15 || 26 || 8 || 51.4% || 14.6% |- | 魔术姬Lv3 || 15 || 22 || 7 || 42.9% || 8.2% |- | 吃瓜希Lv8 || 32 || 81 || 8 || 85.0% || 5.3% |- | 吃瓜希Lv7 || 32 || 77 || 7 || 80.3% || 1.8% |- | 吃瓜希Lv6 || 32 || 73 || 7 || 76.9% || 1.5% |- | 吃瓜希Lv5 || 32 || 69 || 6 || 65.3% || 0.0% |- | 捉奸鸟Lv8 || 23 || 78 || 7 || 87.1% || 6.9% |- | 捉奸鸟Lv7 || 23 || 74 || 6 || 82.7% || 6.4% |- | 捉奸鸟Lv6 || 23 || 70 || 6 || 79.7% || 6.4% |- | 捉奸鸟Lv5 || 23 || 66 || 5 || 71.0% || 1.1% |- | 捉奸鸟Lv4 || 23 || 62 || 5 || 67.2% || 0.9% |- | 旗袍妮Lv8 || 32 || 76 || 9 || 84.0% || 6.3% |- | 旗袍妮Lv7 || 32 || 71 || 8 || 78.0% || 5.2% |- | 旗袍妮Lv6 || 32 || 66 || 8 || 74.1% || 4.5% |- | 旗袍妮Lv5 || 32 || 61 || 7 || 65.8% || 0.7% |- | 花语花Lv8 || 17 || 64 || 6.5 || 81.8% || 12.7% |- | 花语花Lv7 || 17 || 60 || 6 || 78.3% || 13.1% |- | 花语花Lv6 || 17 || 56 || 6 || 75.1% || 13.5% |- | 花语花Lv5 || 17 || 52 || 5 || 68.0% || 7.7% |- | 花语花Lv4 || 17 || 48 || 5 || 64.0% || 6.5% |- | 花语花Lv3 || 17 || 44 || 4 || 52.7% || 1.1% |- | 红叶妮Lv8 || 16 || 38 || 7 || 62.3% || 15.3% |- | 红叶妮Lv7 || 16 || 36 || 6.5 || 58.1% || 12.7% |- | 红叶妮Lv6 || 16 || 34 || 6 || 53.6% || 9.7% |- | 红叶妮Lv5 || 16 || 32 || 5.5 || 49.7% || 5.9% |- | 红叶妮Lv4 || 16 || 30 || 5 || 44.7% || 3.2% |- | 旗手妮Lv8 || 31 || 79 || 6.5 || 79.8% || 1.5% |- | 旗手妮Lv7 || 31 || 74 || 6 || 72.1% || 0.0% |- | 旗手妮Lv6 || 31 || 70 || 5.5 || 63.6% || 0.0% |} 表5-3 自重合损失率分析(3) {| class="wikitable" style="text-align: center" |- | 爱太阳 || EXPERT || note密度 || 4.48 || || |- | 卡片 || 条件note || 概率 || 覆盖时间 || 覆盖率 || 自重合损失率 |- | 天女绘Lv8 || 17 || 44 || 9 || 67.0% || 13.5% |- | 天女绘Lv7 || 17 || 41 || 8 || 62.0% || 11.2% |- | 天女绘Lv6 || 17 || 38 || 8 || 58.7% || 10.6% |- | 天女绘Lv5 || 17 || 35 || 7 || 51.9% || 7.1% |- | 天女绘Lv4 || 17 || 32 || 7 || 48.3% || 6.2% |- | 魔术姬Lv8 || 15 || 42 || 9.5 || 69.1% || 15.4% |- | 魔术姬Lv7 || 15 || 38 || 9 || 63.9% || 15.3% |- | 魔术姬Lv6 || 15 || 34 || 9 || 59.6% || 14.6% |- | 魔术姬Lv5 || 15 || 30 || 8 || 52.5% || 10.8% |- | 魔术姬Lv4 || 15 || 26 || 8 || 47.1% || 9.0% |- | 魔术姬Lv3 || 15 || 22 || 7 || 38.0% || 5.1% |- | 吃瓜希Lv8 || 32 || 81 || 8 || 78.5% || 0.9% |- | 吃瓜希Lv7 || 32 || 77 || 7 || 70.2% || 0.0% |- | 吃瓜希Lv6 || 32 || 73 || 7 || 66.8% || 0.0% |- | 吃瓜希Lv5 || 32 || 69 || 6 || 54.1% || 0.0% |- | 捉奸鸟Lv8 || 23 || 78 || 7 || 83.0% || 4.1% |- | 捉奸鸟Lv7 || 23 || 74 || 6 || 76.4% || 1.9% |- | 捉奸鸟Lv6 || 23 || 70 || 6 || 73.0% || 1.7% |- | 捉奸鸟Lv5 || 23 || 66 || 5 || 61.6% || 0.0% |- | 捉奸鸟Lv4 || 23 || 62 || 5 || 57.9% || 0.0% |- | 旗袍妮Lv8 || 32 || 76 || 9 || 77.5% || 2.7% |- | 旗袍妮Lv7 || 32 || 71 || 8 || 70.4% || 0.7% |- | 旗袍妮Lv6 || 32 || 66 || 8 || 66.0% || 0.6% |- | 旗袍妮Lv5 || 32 || 61 || 7 || 56.1% || 0.0% |- | 花语花Lv8 || 17 || 64 || 6.5 || 78.5% || 8.6% |- | 花语花Lv7 || 17 || 60 || 6 || 74.3% || 7.3% |- | 花语花Lv6 || 17 || 56 || 6 || 70.9% || 7.0% |- | 花语花Lv5 || 17 || 52 || 5 || 61.8% || 3.3% |- | 花语花Lv4 || 17 || 48 || 5 || 57.7% || 2.8% |- | 花语花Lv3 || 17 || 44 || 4 || 45.2% || 0.1% |- | 红叶妮Lv8 || 16 || 38 || 7 || 57.2% || 9.3% |- | 红叶妮Lv7 || 16 || 36 || 6.5 || 53.5% || 6.7% |- | 红叶妮Lv6 || 16 || 34 || 6 || 49.7% || 3.8% |- | 红叶妮Lv5 || 16 || 32 || 5.5 || 44.3% || 2.4% |- | 红叶妮Lv4 || 16 || 30 || 5 || 38.9% || 1.2% |- | 旗手妮Lv8 || 31 || 79 || 6.5 || 69.6% || 0.0% |- | 旗手妮Lv7 || 31 || 74 || 6 || 59.8% || 0.0% |- | 旗手妮Lv6 || 31 || 70 || 5.5 || 52.1% || 0.0% |} 我们发现,在高密度谱面下,自重合损失率最大的并不一定是Lv8,由于此时基础覆盖率和一阶自重合的比重已经很高,高阶自重合边际量较小,损失的情形相对较小,另外结尾损失占比会较高。取某一判卡各个等级在不同密度下的谱面自重合损失率相比较,如下图所示。 [[File:图5.1.png|800px]] 图5.1 自重合损失率随谱面密度的变化 我们发现,随着谱面密度的降低,自重合损失率的峰值向高等级方向移动;而判卡的条件note越大(如旗袍妮),或者相对覆盖时间越短(如花语花),或者基础覆盖率越低(如红叶妮),自重合损失率的峰值越容易偏向高等级;在高密度谱面下,UR判的自重合损失率峰值往往出现在Lv6附近。 [[File:图5.2.png|400px]] 图5.2 不同判定技能的自重合损失率 上图在同一谱面下,对几种判卡的自重合损失率进行比较,其中,天女绘和花语花的条件note为17,吃瓜希和旗袍妮的条件note为32,在相同的条件note比较中,花语花和吃瓜希的覆盖时间较短。我们可以看到,在条件note相对较大,覆盖时间相对较小的时候,自重合损失率相对较低。 我们回到表格中继续分析,由于我们所使用的是判卡的覆盖率,而非自重合损失率,因此损失率只作为参考,表格中所列出的几种判卡,可以看到,吃瓜希和旗袍妮的覆盖率相对较高,但是,捉奸鸟和花语花的覆盖率也较高(但她们的自重合损失率并没有更低),一方面,略低的条件note往往可以获取较多的一阶自重合;不是太低的相对条件note有较小的一阶自重合损失;另一方面可以覆盖更多的开头;再者,她们的技能概率相对较高(花语花比同样的17note的天女绘高了20%……)。 综合上述分析,判卡具有优势的条件为:条件note相对较大、技能概率高、覆盖时间相对较短。在单判卡培养计划下,如果主打高密度的谱面,培养目标应该在Lv8;多判卡(双判)培养计划下,则培养到Lv4~Lv5就已经具有足够的综合覆盖率、低的边际覆盖率损失、低的自重合损失。 对于相对长覆盖时间的判卡,相对条件note较小的判卡,若主打高密度谱面,则培养价值不高。另外判卡培养主要是指UR判,因为培养SR判不如培养分卡,如果单纯需要覆盖率的话不如上九判。 ==第六章 技能的时间参数减少现象(4.1版本之前的bug)== ===6.1 问题的发现=== 2015年12月,有研究者在实测电玩果的判定覆盖时间时,发现实测的覆盖时间比技能中描述的时间少,将图标时间的测量值与谱面文件对比,发现图标的时间却没有变化,也就是出现了“技能时间缩水”现象。进一步的测量发现,“缩水率”在90%附近,然而不是一个固定值,而是有一定范围的波动。 笔者听到这个消息,也进行了研究,然而当时为了节省研究成本,使用easy难度,并且带了很多的时间系奶卡,对录像进行了测量,发现覆盖时间与技能描述时间相等,并没有出现“技能时间缩水”的现象。因此当时作出了“与设备有关”的结论。 今年4月,在同一个设备中偶然对EX的难度进行了测量,却明显的观测到了“技能时间缩水”的现象,而且不仅判定,时奶卡片也存在这个问题。因此当时的结论是明显不正确的,而另有原因,后进行了一系列的实验,发现,随着歌曲难度的提高,“缩水”现象就越明显,而在easy难度中则比较难以发现。在不同的EX难度中,比如《告白日和、です!》和《友情ノーチェンジ》,前者的时间减少量也明显大于后者。因此可以感觉到,这个现象是与歌曲的note密度有关的,但另一方面,由于测量的结果有明显的波动,具体的原因还需进一步确认。 ===6.2 实验研究=== <b>6.2.1 问题原因的方向确定</b> 开始在ieb的启发下,对击打物量进行研究。选择了一首谱面密度梯度比较大的歌曲《Snow halation》,在一部分note比较稀疏的位置进行miss,其它位置进行击打,统计时奶的CD在不同位置的减少量,进行比较。 在数据中可以明显的看到,在前20s的一直miss的时候,时奶的CD没有任何减少,而在击打开始的一段时间,时奶的技能触发间隔则明显的减少了。此时就明确了产生技能时间参数减少的现象的原因是击打物量,即按键的次数。另外也说明了笔者在之前的测试中没有观察到该现象的原因:笔者当时是用全miss的录像来测量的。 <b>6.2.2 影响因素的具体规律</b> 为了进一步的了解击打物量是如何影响时间的,笔者当时将每一个技能触发间隔内的击打物量(按键次数)进行了统计,然后将实测的技能触发时间间隔与卡片描述的时间的差值,除以这个击打物量,得到的结果笔者当时也是大吃一惊:所有的计算结果都接近一个固定值。 表6-1 问题的形成原因发现 [[File:表2-1-2.png|500px]] 上表对当时的实验数据进行了整理,倒数第二列的计算结果均各自接近,而且,从第一组、第二组、倒数第二组的数据中可以看出,若将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和安卓进行了测试,获得的结果大部分接近,安卓端出现少量异常; 10*)不同的设备:笔者采用自己的设备,以及在B站收集了符合测试条件的录像,另外有虫虫dalaΟ提供的录像,一共分析了7种设备:iPad mini2、SAMSUNG S6、SAMSUNG NOTE3、iTouch(版本未知)、华为mate2(估计)、vivo xplay 3s(估计)、以及PC模拟器,获得的结果大部分接近,安卓设备出现少量异常。 <b>6.2.3 推论</b> 1)每次“有效击打”会使得正在计时的技能实际时间减少大约16ms; 2)技能的时间参数在实际Live中的减少现象,几乎不受其它因素影响,只受到“有效击打物量”一个主要因素的影响。是一个普遍存在的现象; 3)技能的时间受到影响,而谱面时间没有变化,也就是卡片技能的计时时钟和系统时钟不同步,可能是游戏程序本身所引起的问题。 ===6.3 未知=== 1)安卓端(包括模拟器)出现开头一小段时间的测量结果与测量均值有明显差异; 表6-2 少量数据异常 [[File:表2-2.png|500px]] 2)N!O~T·E&3在国服9游端分屏内录的数据,其均值为11ms,比16ms小了很多,而清掉了后台再进行同样的测量多次,得到的数据又和其他组的数据都比较接近了。我们目前无法得知这个问题出现的原因,还受到了设备状态的影响? 3)如果击打点到计时结束的时间不足16ms,会发生什么,判定结果受影响?直接结束计时?时间不减少?。比如判定覆盖到-104ms。按照前面的实验数据,每次击打会少16ms。如果我击打点在-127ms不会影响判定结果,但是如果我的击打点在-110ms,会发生什么事情呢。 [[File:图2-1.png|300px]] 图6.1 边界问题 对于这个问题的研究,录像的分辨率要达到16ms要超过60帧,而且要看清16ms以内发生的事情,16ms的分辨率是远远不够的。125fps的帧率也只能测量8ms,况且要在这么短的时间内制造出上述条件非常困难,而且目前笔者也没有此种高帧率的显示器以及录像设备。 ===6.4 SIF4.1版本技能时间BUG修复=== 经检验日服最新4.1版本技能时间BUG已修复。 ==结语== 作者:[[用户:各种化肥|各种化肥]]([[用户讨论:各种化肥|讨论]]) 感谢 ieb,潜水员,Glaceon31,stat,虫虫12345 在研究过程中提供过帮助 参考文献 1.Glaceon31. combo、gr对得分的影响和判定技能的等效属性分析[EB/OL]. 2.Ceva. 时判卡发动概率[EB/OL]. 讨论帖地址:https://tieba.baidu.com/p/5037389039 [[分类:游戏研究]]
返回
判定覆盖率和判卡培养
。
导航菜单
个人工具
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
SIF2 实用工具
卡片数据和能力排行
自动组队和效率曲计算器
歌曲数据和谱面可视化(尚未开工)
游戏机制和数据
游戏机制
历次活动信息和分数线
剧情列表和内容(尚未开工)
聊天列表和内容(尚未开工)
常用数据和表格
工具
链入页面
相关更改
特殊页面
页面信息