欢迎光临散文网 会员登陆 & 注册

重生马老弟(2)关键

2023-08-07 15:40 作者:鷋䳨  | 我要投稿

很快的,我来到了

script-key-4K.mui

的编写。“4.0真的是一个奇怪的版本。”我如是道。因为文件名其中4K的K必须大写,否则会造成皮肤无法正常使用的问题。“开源啊开源,你真的是让人又爱又恨。”我无奈地叹了口气,继续进入编写状态。

script-key-4K.mui

UTF-8*

1║

#

Original Author:

2║

#

Ported by iTristan/Mr-Mania

3║

@version

4.0.0 4║

@include

skin.ini.mui

没啥好说,跳

5║_mania-stage-left

6║ anchor=8

7║ szie=0,480

8║ pos=

Nᴾᶜᵉ₁

,0

9║ zindex=1

10║ tex=mania-stage-left.png

11║_mania-stage-right

12║ anchor=6

13║ size=0,480

14║ pos=

Nᴾᶜᵉ₁

+{4xColumnWidth}+{3xColumnSpacing}

15║_mania-stage-bottom

16║ anchor=6

17║ size={4xCloumnWidth}+{3xColumnWidth},0

18║ pos=

Nᴾᶜᵉ₁

,0

19║ zindex=0

20║ tex=mania-stage-bottom.png

21║_mania-stage-hint

22║ anchor=3

23║ size={4xColumnWidth}+{3xColumnSpacing},0

24║ pos=

Nᴾᶜᵉ₁

,{HitPosition}

25║ zindex=8

26║ tex=mania-stage-hint.png

这一部分是皮肤修饰元件,跟着下面两个也是,但下面需要小小讲解一下

上一章要求计算的百分比数字就是这个Nᴾᶜᵉ₁,后面所有出现的地方我都会标红111

27║_mania-stage-play_bg-[1-4]

28║ anchor=6

29║ size={ColumnWidth},480

30║ pos=

Nᴾᶜᵉ₁

${ColumnWidth}+{ColumnSpacing},0

31║ zindex=0

32║ tex=texture₁.png

33║# fix=1

34║_mania-stage-background

35║ anchor=6

36║ size={4xColumnWidth}+{3xColumnSpacing},480

37║ pos=

Nᴾᶜᵉ₁

,0

38║ zindex=0

39║ tex=texture₁.png

这里是轨道背景,两个元件其实是二选一的情况:当ColumnSpacing=0时,play_bg-[1-4]不选;当ColumnSpacing>0时,background不选。两个元件的核心是texture₁.png。首先这张png图的像素为1x1;回到OSU侧skin.ini文件并找到Colour#:[R,G,B(,a)],通过简单的染色,我们便可以将这4个值用一张png图片表示出来(不知道a是什么的笨蛋,a是透明度,取值也是0-255),在mui里将图片进行拉伸,就能还原OSU侧的效果。

大部分OM皮都不会改这个东西,而是默认全黑,如果你在skin.ini里找不到Colour#属性,用black.png就行了

噢噢对了,OSU皮肤如果素材缺少会使用默认皮肤的素材,使用模板时如果发现这种情况去原皮里面找

fix这种UIS手册没有的东西好像不太稳定,所以需要background元件

接下来是功能性元件

40║note-[1-4]

41║ anchor=4

42║ size={ColumnWidth},

Nₑ

43║ pos=

Nᴾᶜᵉ₁

+{Half_ColumnWidth}${ColumnWidth}+{ColumnSpacing},480+{Half_ColumnWidth}

44║ pos2=

Nᴾᶜᵉ₁

+{Half_ColumnWidth}${ColumnWidth}+{ColumnSpacing},{HitPosition}+{Half_ColumnWidth}

45║ tex=

46║ tex2=

47║ tex3=

48║ tex5=

49║ type=2

50║ type2=0

51║ toggle=1

52-66║

#留空,若有需要则分别填入note2-4 tex1-5对应图片

为什么toggle=1呢?因为要还原OM长条摁下时吸附到判定点的特效。这里我还是喜欢MaV里可选的编辑,开源这里你做得好啊

size中的Nₑ不能为0,因为需要保证tex3(即面尾)的正常显示

tex3与tex的长宽比必须一致,否则会导致显示问题。一般来讲note的宽高比都是1:1,这个时候Nₑ处直接填写{ColumnWidth}即可

若note图片长宽比不是1:1或WidthForNoteHeightScale与Columnwidth不一样,则需要对面尾进行修改。前者具体修改方法为新建图片,使图片长宽比与note图片相同,然后修改OM侧的面尾图(上下翻转),将面尾图下切线与新建图片的中线对齐,并将面尾图上调一个像素的距离(若直接对齐中线会导致面身与面尾有1像素的重叠,当然如果面尾是长方形的就没关系了),具体见下图1

小tip:如果你想面短一点,图2是一种效果一般但是比较简单的做法。

(两图绿色部分表示透明)

67║key-[1-4]

68║ anchor=3

69║ size={ColumnWidth},0

70║ pos=

Nᴾᶜᵉ₁

${ColumnWidth}+{ColumnSpacing},{HitPosition}+{Half_ColumnWidth}

71║ zindex=

#7 or 11 //取决于skin.ini里KeysUnderNote取值

72║ tex=

73-78║

#留空,同note元件

79║press-[1-4]

80║ anchor=3

81║ size={ColumnWidth},0

82║ pos=

Nᴾᶜᵉ₁

${ColumnWidth}+{ColumnSpacing},{HitPosition}+{Half_ColumnWidth}

83║ zindex=

#8 or 13 //同key元件

84║ frame=

85║ frame2=

86║ interval=128

87-96║

#留空 //同上

这里我将OM的key拆成了两个元件来写。众所周知,OM在你按下按键后,无论你按下的时长,key总是会持续一段时间的按下显示。这种情况下连续键入不受影响,但视觉效果就是key似乎没有抬起过一样。我觉得很有特色,而且通过press元件的frame2(松手动效)刚好可以还原,于是就做了。

仅限于OM皮有press或key其中一个的情况,如果两个都有,那还是牺牲还原度key写key,press写press(可以看我往期作品)

这方面还是MaV做得好,献上爱心❤

注意,OM侧key的拉伸十分诡异,规律似乎仍没有完全摸清,基本上都是改一点进游戏看一下,移植的时候建议先看看OM侧的key在游戏里大概长什么样子,再直接编辑图片拉伸成对应的形状,最后Ma的等比例缩放会解决剩下的东西

97║bar

98║ anchor=6

99║ size={4xColumnWidth}+{3xColumnSpacing},N₆

100║ pos=

Nᴾᶜᵉ₁

,{HitPosition}

101║ pos2=

Nᴾᶜᵉ₁

,{HitPosition}

102║ zindex=

#9 or 14 //唉好傻逼噢这个keysundernote

103║ tex=bar.png

bar.png的绘制跟前面texture₁.png的绘制大差不差,OM侧对应的属性是ColourBarline: [R,G,B(,a)]

104║judge-1

105║ anchor=4

106║ size=

107║ pos=

Nᴾᶜᵉ₁

+{2xColumnWidth}+{1.5xColumnSapcing},{ScorePosition}

108║ zindex=15

109║ frame=mania-hit/0-3

110║ interval=24

111║ type=1

judge元件

讲个冷知识,主播曾经试图手搓序列帧还原OM侧的判定跳动效果,当时的笔记如下:一至三级判定:第一帧:原图;第二帧:原图大小x0.95;第三帧:原图大小x0.9;第四帧:原图大小x0.85;第五帧至第七帧:原图大小x0.8;;四级判定(miss):第一帧:原图旋转-5°;第二帧:原图不旋转,大小x0.9;第三帧:原图旋转5°,大小x0.7;第四到第五帧:原图大小x0.7

有大佬有OSU判定序列帧的工程(小hundred),我最后还是找了他帮忙(人很好说话很善良)

唉我那时好蠢

112║score-combo

113║ anchor=4

114║ fsize=

115║ pos=

Nᴾᶜᵉ₁

+{2xColumnWidth}+{1.5xColumnSpacing},{ComboPosition}

116║ pos2=N₇px,0

117║ zindex=16

#是的判定和combo的覆盖关系就是combo在上,这个我也研究过

118║ frame=combo/0-9

119║hit-[1-4]

120║ anchor=4

121║ size={ColumnWidth},0

122║ pos=

Nᴾᶜᵉ₁

+{Half_ColumnWidth}${ColumnWidth}+{ColumnSpacing},{HitPosition}+{Half_ColumnWidth}

123║ zindex=12

124║ frame=0/0-0

125║ frame2=h1/0-0

126║ frame3=h1/0-0

127║ interval=64

128-139║

#留空,同

这里是模板的一个重点:通过hit元件来还原OM侧长条吸附效果。这种方法并不是我原创,而是我通过学习一位前辈的作品复现出来的(忘了在哪)

在hitposition比较高的皮肤里不太好用,例如我的bojii转皮(新一点的那个)

如果OM皮有hit那就要做出取舍,保留效果还是hit二选一

我曾经用过hit来还原press,但效果不太一样,见仁见智吧。你如果想也可以试着做一下

!!!h1-0.png绘制要点!!!

若KeysUnderNote取值为0,则

新建空白图片。检查note图片与key图片宽多少像素,选择较大的那一个数值作为图片的宽,高留出足够的空间

将note图片居中放置在原来的图片中,保持note的宽高比不变

新建图层,使新图层在原图层下面

在新图层中绘制一个矩形,颜色与轨道背景相同(轨道不能透明,如果透明效果会很影响观感),宽度与图片相同,高度为图片一半

将矩形上切线与图片中线对齐

保存图片

若KeysUnderNote取值为1,则需新建图层,使新图层位于矩形图层与note图层之间,再在新图层里放置按下后key的图片

140║_scorebar-bg

141║ anchor=0

142║ size=

143║ pos=

Nᴾᶜᵉ₁

+{4xColumnWidth}+{3xColumnSpacing},0

144║ zindex=11

145║ tex=scorebar-bg.png

146║ rotate=-90

147║score-hp

148║ anchor=0

149║ size=

150║ pos=

Nᴾᶜᵉ₁

+{4xColumnWidth}+{3xColumnSpacing}+

Y

,

X

151║ zindex=12

152║ tex=scorebar-colour.png

153║ type=0

154║ rotate=-90

这个

XY

看下面注释

首先hp与hp背景的大小为它们的像素乘以三分之一,得到的数值为元件size属性数值

然后打开图片编辑器,选中hp背景

插入hp图片,手动对齐hp与hp背景

查看hp图片左上角坐标,分别记录XY的值

将两个值分别乘以三分之一,得到

XY

得到的这两个就是模板hp元件里pos属性的

XY

155║score-score

156║ anchor=2

157║ fsize=26

158║ pos=100%-5,100%

159║

# pos2一般来讲这一行不用写

160║ zindex=12

161║ frame=score/0-9

162║ interval=256

163║score-acc

164║ anchor=5

165║ fsize=14

166║ pos=100%-5,100%-35.75

167║

#Pos2同

168║ xindex=12

169║ frame=score/0-11

170║ interval=150

171║@define 1 N₇

172║_progress1

173║ anchor=4

174║ tex=hitcircle.png

175║ size=2.66,2.66

176║ pos=100%-{1},100%-35.75

177║progress

178║ anchor=4

179║ type=0

180║ opacity=30

181║ tex=s0-0.png

182║ size=22.66,22.66

183║ pos=100%-{1},100%-35.75

184║ zindex=12

185║_progress

186║ anchor=4

187║ tex=approachcircle.png

188║ size=20,20

189║ pos=100%-{1},100%-35.75

190║ zindex=12

这里N₇是圆饼进度条中心离屏幕最右侧的距离,打开游戏一边看一边改数值吧,这样反而比计算来的快。

“终于完成了!”我这样喊道。“虽然还没有优化到极致,但对于这个时代来说已经是非常超前的作品了。倘若我将模板公布出去,必定会迎来整个skin圈子的动荡。”

接下来我进行了一些操作:先是绘制出我原本作为经典的头像,其次输入了记忆中的各个皮肤交流群群号,有的已经发出了申请,有的却还没建群。不由得让我感慨那时UIS的冷清。打包好模板,我不禁心想:pc皮在我模板制作好后就已经被我预定下了半壁江山,那么下一个目标就是连隐世后的幻灭都露面赞叹的自4k用改皮了。

我向未来张开双臂,感受属于我独有的机缘,不禁笑容绽放。

重生马老弟(2)关键的评论 (共 条)

分享到微博请遵守国家法律