主題

【遊戲製作】用C++寫音樂遊戲練習 進度1

SamChu | 2021-03-01 08:07:03 | 巴幣 122 | 人氣 237

這學期學校要我們每個人挑一款遊戲,並且在一個學期內完成,限制只能使用自己的引擎,也就是d3d11的C++引擎

因為我很懶的想新遊戲,通常都是找現有的小遊戲來移植,上一次是做Helltaker,這次想做點不一樣的東西,所以打算移植邦邦的手遊(Bang Dream)

會選邦邦是因為網路上已經有很多人寫移植版的邦邦了,而且資料庫跟素材也很齊全
不管是官方的歌還是自製譜面都有現成的API可以用,我就不用另外寫一個編輯譜面的編輯器

雖然標題是寫進度1,但是我已經寫大概三個星期了,算是已經做到一個段落了,所以發個文記錄一下
目前的進度大概是長這樣
可以讀取Local的API檔案來產生不同種類音符
依據按的時間點顯示Perfect, Great, Good, Bad, Miss
顯示Combo數跟分數計算
可以切換Auto Play或是自己玩,因為有七條軌道,用ASDFJKL:按鍵來消除音符,F跟J按鍵都是消除中間那道

圖片素材是直接從原本遊戲拆包然後直接拿來用
API是從banground上攔截他的API檔案,然後複製一份到我專案底下來讀取
這是其中一首歌的譜的截圖,音符總共有3種樣式,Single(一般的)、Slide(長壓的跨道音符)以及Long(長壓的不跨道音符)
時間點是音符到判定線時,歌曲的時間,單位是秒
所以只要知道音符到判定線的時間點以及軌道長度跟音符速度,便可以回推在軌道起始點的時間點

在音符本身我用3D的Camera來Render,音符本身還是沿著負Y軸移動,我只移動跟旋轉Camera本身
音符由於一首歌可能會有許多圖需要Render,如果每一幀的每一個音符圖都重新呼叫Draw function的話會降低效能
比較好的方法是先存好每個音符的vertex的位置以及UV,在每一幀的最後直接call一次Draw function
缺點是音符的Texture必須要在一張圖裡面

可以在DEMO影片看到在跨道的Slide音符目前還沒有弄好,綠色的框框不會在判定線被切割
這是之後要調整的地方,以及Long音符在長按的時候,綠色的框框下緣應該要剛好在判定線上
目前這個Milestone寫了一個簡單的UI System,這樣比較好控制畫圖的位置,按軌道的特效是用以前寫的Particle System
下一個Milestone應該會開始寫成績顯示的畫面

創作回應

平安糕
ok
2021-03-01 08:53:10
SamChu
ko
2021-03-01 09:22:08
=✪ω✪)σ(ӦωӦ=
以後工作用自己引擎的機會不多
2021-05-03 10:46:01
SamChu
當然的,主要是了解引擎底層的架構跟實現方式
2021-05-03 10:54:47
武內桑
想問一下這是大幾的課程
2021-05-04 11:34:55
SamChu
我在美國的研究所的課程唷
2021-05-04 11:56:45

相關創作

更多創作