StepMania皮膚教程(適用于Etterna)
StepMania的皮膚系統(tǒng)可以修改的地方很多,但大部分設(shè)置都被藏在了各種lua文件中,因此修改與制作StepMania皮膚很容易嚇退對lua一竅不通的新人。然而,其實StepMania已經(jīng)存在現(xiàn)成的通用皮膚模板,經(jīng)過簡單的代碼修改與圖片替換,任何人都可以做到制作StepMania皮膚。
本文基于Etterna相關(guān)皮膚系統(tǒng)撰寫,對應(yīng)于StepMania5.0.12的皮膚系統(tǒng)。

一、皮膚系統(tǒng)介紹
Etterna的不同模式采用不同的皮膚路徑,統(tǒng)一位于Etterna/NoteSkins中,各模式與路徑對應(yīng)關(guān)系如下:
beat——BMS(5/7/10/14 +盤)
common——勿動,下文會提到
dance——DDR(4/6/8)
pump——PIU(5/10)
kb7——O2Jam(7)
有些皮膚包內(nèi)含多個皮膚文件夾(一般為不同配色的版本),請分別解壓至對應(yīng)文件夾內(nèi),否則無法讀取。(即皮膚路徑應(yīng)為:NoteSkins/模式/皮膚文件夾)
下文僅針對dance模式進行介紹。
二、Unlimited Stepman Work
2013年,jousway發(fā)布了USW Noteskin.lua?Version 3 -All In One Support Edition-(https://pastebin.com/AA1U5MUM),此后,該模板作為StepMania所有皮膚的通用模板流傳至今,Etterna也不例外。
你可以在 https://jousway.co.uk/# 下載到所有基于USW框架的StepMania皮膚,或者從EtternaOnline上下載任意皮膚,一般都是基于此框架(但可能使用的是較舊的版本)。
打開一個USW皮膚,其內(nèi)部一般包含多個圖片文件與多個執(zhí)行文件,數(shù)量多寡與皮膚復(fù)雜度相關(guān)。

注意到圖片文件均遵循“方向+文件名”的命名格式。
首先讓我們打開NoteSkin.lua文件

這部分定義了各列使用的皮膚樣式與旋轉(zhuǎn)角度,如果想要在不同列使用不同的按鍵樣式需修改這部分代碼;如果不需要按鍵旋轉(zhuǎn)可將Rotate全部改成0。

這部分定義了需要重定向、隨按鍵旋轉(zhuǎn)、隱藏的部件名稱,所有可用部件與名稱見下:
Receptor:判定區(qū)
Tap Note:按鍵皮膚
Tap Fake:假鍵皮膚
Tap Mine:炸彈皮膚
Tap addition:未知,盡量不要動
Hold Head:長鍵頭,包括激活與未激活兩種
Hold Topcap:同長鍵頭,一般不用
Roll Head:連打頭,包括激活與未激活兩種
Roll Topcap:同連打頭,一般不用
Hold Body:長鍵條,包括激活與未激活兩種
Roll Body:連打條,包括激活與未激活兩種
Hold Bottomcap:長鍵尾,包括激活與未激活兩種
Roll Bottomcap:連打尾,包括激活與未激活兩種
Hold Tail:同長鍵尾,一般不用
Roll Tail:同連打尾,一般不用
Tap Explosion:按鍵光效,根據(jù)連擊數(shù)分為兩種
Hold Explosion:長鍵光效
Roll Explosion:連打光效
此時,文件夾中的各種圖片素材命名規(guī)則就十分明了了。注意到部分文件結(jié)尾有一個“nxn”的標(biāo)記,這是為了顯示動態(tài)皮膚使用的循環(huán)圖片素材。每行圖片代表循環(huán)中的所有使用圖片;按鍵皮膚的縱向分量代表了不同時值使用的圖片,一般常用的縱向長度為1(無顏色)、8(64分與192分使用相同圖片)、9(全顏色)。
有些皮膚的圖片結(jié)尾還會寫有“(doubleres)”,這表示這些皮膚是雙倍分辨率的(默認(rèn)按鍵大小為64x64,雙倍分辨率為128x128)。
此外,一般包含有“nxn”標(biāo)記的部件還會有一個配套的lua文件用于定義循環(huán)的順序與時長。

其中Frame表示當(dāng)前使用素材,Delay表示延遲,單位見下文。注意文件名需與圖片文件名嚴(yán)格匹配,方向標(biāo)識與部件名稱分隔開。
Down Recptor.lua在定義了循環(huán)動畫的基礎(chǔ)上還定義了不同輸入的交互函數(shù)。注意:如果你的Down Recptor.lua文件在InitCommand處使用了cmd()指令,則該皮膚僅能用于Etterna0.73版本之前(即小白點問題),用EO官網(wǎng)任意皮膚或Etterna自帶皮膚對應(yīng)文件替換掉即可。
三、metrics.ini
該文件定義了一些具體的函數(shù)細節(jié),部分皮膚該文件打開基本就是空的,進一步增加了修改皮膚的難度。

這里就是說,所有在本文件夾內(nèi)沒有定義的皮膚圖片與函數(shù),全部在這個默認(rèn)皮膚中找。部分Etterna皮膚在這里直接鏈接到了Etterna的默認(rèn)皮膚上。因此如果想要修改下文對應(yīng)的內(nèi)容,就需要手動從對應(yīng)皮膚的metrics.ini中復(fù)制過來再做修改。




同時,這里還定義了不同光效的動畫樣式,但由于缺乏說明文檔,本人也不清楚具體都有哪些。