【開山之文】關于phigros優良譜面的分析和總結

        2023-07-02 23:08:05       來源:嗶哩嗶哩

        玩過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個小時,真的很不容易(唯一一次求贊)

        關鍵詞:
        x 廣告
        x 廣告

        Copyright @  2015-2022 海外生活網版權所有  備案號: 滬ICP備2020036824號-21   聯系郵箱:562 66 29@qq.com