首页 市场 正文

【开山之文】关于phigros优良谱面的分析和总结

2023-07-02 22:58:18   来源:哔哩哔哩    

玩过phigros这款音游的玩家或多或少会对一些谱面印象深刻,觉得它们“手感好”或“顺手”,即所谓的“优良谱面”(简称良谱),本文将简单探究良谱的原理以及特征。

前置定义,公设

所谓谱面是什么?


(资料图片)

让我们先定义一些基本的东西。

在phigros中,可击打音符(键Key)是一些定长的线段(为了方便,姑且这么定义),达到一定的条件后转化为被判定的状态,有一些种类(包括蓝键Tap、黄键Drag、红键Flick、长条Hold)。

我们定义谱面(Spectrum)为该谱中所有键的集合,记为集合S。

判定线(Judgment Line)为一些直线,目的是让玩家更直观地看到判定区间(即实际击打时间与期望击打时间之差的分段容错范围)。一般的,判定线上会绑定一些键,这些键始终与判定线平行。

下落矢量(Motion Vector)是描述键在某一时刻运动的状态,包括位置、速度、下落方向。其起点为键的中点,方向始终与键垂直并朝向被绑定的判定线(解释:因为键是与判定线绑定的,所以非垂直的键运动来自判定线的运动,毕竟判定线可以隐藏)。

键的位置在实际演出中由许多变量决定,而在解析型总谱面(Analytical Total Spectrum)(即舍弃全部特效,将所有判定线键集合并成一个,形成标准的下落型谱面)中,谱面被置于一个直角坐标系的第一象限中,键的位置由横轴下落横坐标x和纵轴期望击打时间kt决定(键简化成一个点,用键A(x,kt)表示)。

谱面中可以分出许多子集,这些子集有一些具有相同的特点,我们把这些子集称为一类基本定式(均指蓝键或满足定式手法的长条)

双押(Double Key)描述了在直线kt=h(h为常数,后文懒得写了)上的两个键的集合,m个键称为m押,称为集合D。

交互(Sequential Keys)描述了一些Δkt相等的上升键序列(集合)(数量一般超过4),记为集合Se。特别的,如果这些键的x值都相等,就称为纵连(Longitudinal Sequential Keys)记为集合L。

叠键(Stacked Keys)描述了一些(一般是两个)间隔时间较短、x变化较小的键的集合,记为集合St。(其实2~4个都可以叫这名)

公设部分。我们假设所有研究的谱面都是“准确无误”的:

“准确”即谱面音押得很准,至少不会影响手感;

无误”即谱面中不存在错误之处,即一定有某种常规手法可以AP。

一些变换

首先需要找到一些官方的良谱来总结规律。

(这里点名批评官方,md谱子写个名会s啊!!!!已经找废了)

(找谱详见/video/BV1ZG4y1N7Sq/?spm_id_from=_right_bar_window_default_&vd_source=2195f014dbad1dc82771f38f613e907d)

找到以后,兴奋地打开:

所以需要先做一个提取键信息的程序。

代码如下:

不想看就不想看吧,写论文需要,严谨一点。

以Chronomia(天文钟)为例,提取如下:

不想看请省略(笑)

会发现每一行有五项,第一项是种类,第二项是kt,第三项是x,第四项是时间差,第五项是位移长度。

有人就问了:你怎么知道你提取的信息是对的?

为此我做了几个验证程序:

验证kt(时间):

参数是这么算出来的:

天文钟从开始到第一个音符约有,每拍秒数为60/227即约,铺面上写的第一个键时间为1408(不知道缩放了多少倍)。

列方程:1408/x*=

解得:x=约等于32

验证,非常吻合

验证x在代码中,结果显示中没有考虑到时间差的不同,因而结果的行顺序即键的先后逆序(为了还原出下落谱面所以是逆序)

因而对于一些时间差相同的键,其显示结果将高度还原谱面:

芜湖,提取出来了!

解析

接下来对交互、双押和叠键三个方面进行解析。

双押方面,将铺面分为f段,找到双押最多的时间段有x个以及算出每段时间双押平均数m,求得双押指数dk=(10*x+m)/(f*100)

交互方面,算得每个交互的最大单手位移、左右手平均位移以及左右手位移方差,通过乘法原理求得平均交互指数sk(太长了不写了)

叠键方面,求得叠键总时长l,求得叠键指数st=l/100

(均详见上文代码)

最后得出障碍指数b=sk+dk+st

(100-2*b)/100记为该谱面集合的狭义良谱率(双指)

如:天文钟为%

良怒为%

321AT为%(不考虑多押也是双指非常炸裂)

为什么叫狭义呢?因为并没有考虑黄键、特效、流速、多押、指法等难以解析的因素。

不过也可以大致分析出谱面的好坏。

这有什么好处吗?

也许,当你觉得写的谱子很烂(比如我)的时候,启动一下狭义解析程序,翻一翻文本,找一找问题,再测一次,也许就成良谱了(

无论如何,这只是解析谱面的开始,我将会继续努力,争取写出更准确科学的解析程序!

(也希望有更多的人参与进来,毕竟我还有Practicer)

总结

THANK YOU!有问题随时解答。

给个赞吧,肝了30个小时,真的很不容易(唯一一次求赞)

关键词:

为你推荐