PTT推薦

[閒聊] 嘗試用Minecraft還原osu譜面

看板C_Chat標題[閒聊] 嘗試用Minecraft還原osu譜面作者
HScarlet
(HScarlet)
時間推噓 4 推:4 噓:0 →:4

大家好,由於朋友最近常常傳給我他玩麥塊的截圖
讓我也跟著打開了幾個月沒碰的麥塊,趁這次機會再試一次用麥塊還原osu的譜面XD

大致的原理(詳細的放在下方):
分析osu譜面的各項資訊,然後在麥塊中用計分板控制時間將粒子呈現出來
PS. 因為大量的粒子造成的遊戲卡頓,有些畫面無法完全與曲譜對齊

影片連結:
https://www.youtube.com/watch?v=opGX9EbRk18

遊戲版本:Minecraft 1.12.2
模組:Replay Mod (錄影)、 Color Block (修改粒子參數)
光影:BSL_v7.1



下面說明一下製作的過程:

1. 模組、光影的部分:
Replay Mod:
可以將遊戲內的畫面進行回放,調整各種視角、路徑,再將畫面輸出成影片。錄製Replay的時候也不需要開啟光影及材質包,輸出影片之前再裝上即可,這樣可以大幅減少直接用軟體錄製造成的卡頓,也可以錄製第三人稱的視角。有不少麥塊的縮時攝影都是透過類似的模組來錄製的。

Color Block:
這個模組可以修改粒子的顏色(RGBA)、亮度、壽命(存在時間)、速度等等,製作起來會比原版麥塊內的particle指令有更大的操作空間。

BSL_v7.1:
大部分光影預設光的顏色會稍微偏黃,BSL可以在遊戲內直接調整光線的RGB數值,調整為白光後才不會影響Color Block呈現的粒子顏色。

2.
麥塊外的準備(需要程式來分析、計算相關數據):
分析osu遊戲內的三個檔案,.osu .osb .rep,並將相對應的時間與物件對上,後續會需要用這些數據來把粒子窮舉到麥塊內。

osu檔案:
記錄著譜面的基本資訊,例如:譜面物件的座標、時間點、種類等。
由於譜面內定義一條直線、曲線只會用到2個~數個點來記錄。
因此必須先計算出這些所組成的直線、曲線,再向外計算出輪廓。
最後把計算出的座標轉換成粒子指令後寫入mcfunction檔案內備用。
下面舉了幾個例子(有些是以前做的):
https://i.imgur.com/BujlqiO.png

圖https://i.imgur.com/BujlqiO.png?e=1666649190&s=Yeo68wy9qfJjY7yPrpMGiA, 嘗試用Minecraft還原osu譜面
https://i.imgur.com/XPpT45P.png
圖https://i.imgur.com/XPpT45P.png?e=1666660573&s=WGGV6iXkeLvVzZPdG0UcDw, 嘗試用Minecraft還原osu譜面
https://i.imgur.com/TSrPkM4.png
圖https://i.imgur.com/TSrPkM4.png?e=1666699493&s=5MV2EQ-9nYimm0Dtld9V0Q, 嘗試用Minecraft還原osu譜面
https://i.imgur.com/2V0fWxr.png
圖https://i.imgur.com/2V0fWxr.png?e=1666697633&s=fzEpTpCW5bLcGE1pigZfFA, 嘗試用Minecraft還原osu譜面

osb檔案:
用於osu遊戲內的storyboard,也就是上面影片中跑來跑去的歌詞。
osb檔案內會定義每一張歌詞圖片的移動、透明度、縮放大小、旋轉角度隨時間的變化。https://i.imgur.com/YVlcPLc.png
圖https://i.imgur.com/YVlcPLc.png?e=1666703855&s=zZ3egZEVBCRCF1PI1W2HBQ, 嘗試用Minecraft還原osu譜面

利用歌詞的圖片配合osb提供的參數就能計算出個時間點的粒子位置。
只要時間差夠小,回放起來就好像會動一樣了。
由於每一次更新字幕位置都要在麥塊內召喚上千至上萬個粒子,再加上更新時間短。
這也是造成卡頓的主要元兇XD
https://i.imgur.com/Giic4pD.gif
圖https://i.imgur.com/Giic4pD.gif?e=1666698615&s=IOH1MxQ9ztSIht0v0FLynw, 嘗試用Minecraft還原osu譜面

rep檔案:
紀錄玩家遊玩該譜面在各時間點的游標位置、鍵盤的操作以及是否長按等。
影片中的黃色游標軌跡、右方按鍵顯示的資訊就是從這裡得到。

其他:
遊戲內的combo、分數計算,公式在官方wiki有提到,我是用excel算出各時間點的分數。麥塊內只要在對應時間召喚出對應的數字就好。
https://i.imgur.com/fgaGBQJ.png

圖https://i.imgur.com/fgaGBQJ.png?e=1666682300&s=ZhNusGArUABxLhkpRyG_3g, 嘗試用Minecraft還原osu譜面

3.麥塊內的製作:
麥塊內的時間單位最小為一個遊戲刻(0.05秒),這樣的時間精度不足以還原音遊的譜面。所以製作的時候先放慢了5倍,成品錄製完成後才加速回來。
上方影片的前18秒就是實際在麥塊內運行的速度。

這裡需要做的就是將上一步準備好的數據轉換成粒子指令存到mcfunction內,再利用計分板來控制這些function執行的時間。

預覽檢查的時候如果發現錯誤,就回到數據分析那一步檢查是不是有參數搞錯了,有時因為一個座標打錯找一小時是很容易的orz,確認無誤後就可以編輯replay輸出成品了。

4.後製:
直接丟到剪輯軟體加速500% (X)
因為大量粒子造成的遊戲卡頓,有些片段的1個遊戲刻會卡到超過真實的0.05秒。
所以這些地方需要在後製的時候手動調整加速的倍率來對應到真實的時間軸。
這也是為什麼影片中有些地方看起來對的不是很準的原因。
之後可能要靠減少粒子或者再進一步放慢製作倍率來減少卡頓(好啦 下次一定QQ)

心得:
這是我第三次嘗試在麥塊內還原osu的譜面,前兩次製作的時候也遇到了不少困難。

第一次製作的時候,光理解如何分析譜面、計算數據就占去了大半的時間。
那時候游標跟物件是一起出現的,被觀眾說是製作譜面的游標QQ,後來的製作有修正。

第二次製作的時候,新增了背景的歌詞字幕,然後把部分的數據計算給程式化了。
當時的難點在於如何減少大量粒子造成的卡頓,前後大概花了一個多月。

這次製作就順利多了,大概花一星期完工o(^▽^)o
之後有空的話也有想研究如何還原maimai,不過音樂好像會吃版權砲
不過要做也要等畢業後看有沒有空了(X)

PS. 感謝大家耐心看到這裡, 第一次在西洽發文, 小發一下
今天23:00以前 推或箭頭的 稅前30p抽20個


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.218.32.14 (臺灣)
PTT 網址
EdgeFlame: 推

04/30 17:03

@ 以上紅底標記1位,每人10P(稅前)發送完成! by AutoGiveP 2.12

你太快了==

NPttnoob: 推

04/30 17:03

et310: 跟我玩的麥塊還有osu怎麼不太一樣...

04/30 17:04

s12108478: 推

04/30 17:07

doramon888: 推倒!

04/30 17:07

webberfun: 靠 好猛 我的麥塊只有豆腐屋

04/30 17:08 我蓋房子也只會豆腐屋QQ

bg2305z: !?????

04/30 17:15

chinnez: 完全看不出麥塊的樣子了 ,弄成這樣有意義嗎

04/30 17:18

sdtgfsrt: 推

04/30 17:19

jelly22: 推 麥塊是自由的 意義是自己決定的

04/30 17:20

inte629l: 推 也太猛XD

04/30 17:35

Taichun318: 推

04/30 17:38

Davinais: 推,原來是用粒子效果來重現 replay,不過比較想看到之

04/30 17:45

Davinais04/30 17:45前麥塊版 deemo 一樣是可以玩的

可以玩的那個看過,我功力不足,不會做XD

ericayou: ...收起tnt大砲

04/30 17:46

stradic15728: 推

04/30 17:48

jeremy7986: 麥塊!?!?

04/30 17:51

twttntrg: 推 好強

04/30 17:56

greattower: 愛噁,太鬼了吧

04/30 17:56

zxcasd848: 東方!嗚 不過有點太閃了眼睛有點累

04/30 18:39

d92100: 太強了吧

04/30 18:42

zxcasd84804/30 18:43翻了一下頻道還有紅石音樂 太讚了吧

被你發現了XD 私心推紅魔鄉全曲跟偶像に世界を委ねて

sake790620: 你是鬼吧

04/30 18:46

joe61008: 好猛

04/30 18:50

GaoLinHua: 麥塊?

04/30 19:05

ruperthuang: 66666666

04/30 22:01

Flamebank: 我到底看了什麼

04/30 22:58

@ 以上紅底標記25位,每人30P(稅前)發送完成! by AutoGiveP 2.12

HScarlet04/30 23:01拉線------------------------------------------------

piex04/30 23:03太嗆

piex04/30 23:03強*

HScarlet04/30 23:06人數沒差幾個,就不抽了,23:00前的都發@@

※ 編輯: HScarlet (124.218.32.14 臺灣), 04/30/2022 23:07:21

Hsu102504/30 23:24厲害 真是有愛

hsinpu105/01 12:56

jasmine3471:轉錄至看板 Minecraft

05/25 13:41

※ 編輯: HScarlet (124.218.32.14 臺灣), 06/21/2022 01:13:50