GameDesign 板


LINE

如標題 先上作品,其實就是仿製的唯舞獨尊 https://www.youtube.com/watch?v=nHJy2J6qlOg
沒有使用Unity之類的主流遊戲引擎,在畫面特效上花了不少心思 也因為完全不會PS,所有的圖片素材都是用PowerPoint畫的 因為工作的關係已經很久沒更新了,最近心血來潮想把這個小作品做到一個自己滿意的段落 程式碼雖然有上傳Gitlab,但那時候的coding style實在亂七八糟,遲遲沒有機會好好 整理,一些比較很久沒動的function甚至還有我自己現在看到會吐血的命名風格... 總之,當時留下的其中一個TODO,就是我這次想問的變速譜面問題 ============================= 先說明一下,打擊點(下稱Note)的資料結構大概是這樣: 每個小節之間用Linked list串起來,小節裡面再用一個Linked list將Note串起來 | 小節 | -> | 小節 | -> | 小節 | | O -> O -> O | | O -> O -> O | | O -> O -> O | 上面每個O代表一個Note,用 -> 來代表資料之間用Linked list串聯 每個Note都是一個Struct,主要內容是該Note應該出現的時間(下面用NT代稱), 以及該Note現在在螢幕上的位置(NPOS) Note在螢幕的位置則是用音樂播放時間(下面用CT代稱)來計算 然後因為設計上會有Note流速的變化,因此還有一個速度參數(SPEED) 所以Note位置的計算公式會是NPOS = (NT-CT) * X * SPEED 其中X為一個常數,用來控制Note的基礎流速(或稱為1倍速) ======================== 以上的方法很好處理,而且可以在一些趣味性質的譜面設計一些超高速的Note來搞初見殺 但是如果要做到整個譜面瞬間停止的效果我就沒想法了 所謂的瞬間停止可以參考:https://youtu.be/nNDqedR2qq4?t=73
有思考過把整條譜面當作一個傳送帶,經過特殊檢查點時改變傳送帶的移動方向或流速 但當時實作的時候遇到改變流速/方向之後位置跑掉的問題,後來就沒有繼續研究下去了 所以想來這邊問看看有沒有寫過節奏遊戲的前輩,可以在這部分提供一些經驗嗎? 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.248.95 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1627324601.A.BE7.html
1F:→ dklassic: 簡單想想到的是讓被標示成瞬間靜止的 note 只會在整數 07/27 04:09
2F:→ dklassic: 拍點更新位置,應該可以了? 07/27 04:09
感謝回覆,但我發現我一開始的敘述會讓焦點集中在譜面瞬間停止這件事 的確,如果只是要做到瞬間停止的話,可以用你的方法達成 但是要讓整體流速改變就會遇到問題了 https://www.youtube.com/watch?v=98Xljq8MxyU
比如上面這個譜面就做到了: 1. 不同流速的Note同時流動 -> 在我目前的架構上已經驗證過可行,Note的內容有標記該Note的流速 2. 單一Note逆流 -> 理論上我目前的架構應該做得到,但印象中直接把Note直接標記成負流速會有問題, 程式碼要改一下才能實現,不過這個問題不大 3. 改變整體流速、瞬間停止 -> 其實讓整體流速=0就是瞬間停止了,所以這兩個應該可以算同一件事? 主要的問題在改變整體流速,以我觀察到的主流節奏遊戲,大多是這樣做的: | A小節 | -> | B小節 | -> ... | O -> O -> O | | O -> O -> O | | 1 倍速 | | 2 倍速 | 假設上圖這些Note的時間間隔一致 但是因為兩個小節設定的流速不同,所以在畫面上的間距不同 也因此當歌曲進入B小節的時候,整條譜面要用2倍流速移動 才能讓Note在正確的時間移動到在判定線上 問題就在於整體流速改變後,要如何確保Note出現在判定線的時間不會跑掉 ※ 編輯: joe820730 (60.248.108.208 臺灣), 07/27/2021 12:10:23
3F:推 meowyih: 我的想法是,你一開始設計的data structure本來就不是給 07/27 16:56
4F:→ meowyih: 那些use case使用的,硬要修改,不如打掉重來。所謂打掉 07/27 16:57
5F:→ meowyih: 重來的意思是讓每個node都獨立有自己的進場時間,到擊打 07/27 16:57
6F:→ meowyih: 點的時間,還有移動路徑 (向是套個sin就變忽快忽慢),現 07/27 16:58
其實現在的架構已經是改過的了,比較早期的版本確實是你說的各自獨立 雖然一樣是用linked list串起來, 但每個Note的位置是個別計算的,彼此之間完全沒有關聯 不過你這個說法倒是突破我一直以來的盲點了 其實在舊的架構下,既然已經是各自獨立計算路徑 那就不需要使用統一的公式來計算移動路徑 如果每個Note有各自獨立的移動路徑公式,確實就可以做到各種花式譜面
7F:→ meowyih: 在的硬體你每個frame掃個幾百一千個node不會有任何效能問 07/27 16:58
8F:→ meowyih: 題,就算真的擔心,loading 時自己 sort 一下 node 的進 07/27 16:59
效能部分我倒是不太擔心,我有限制掃瞄範圍 我的做法是從最後一個離開判定區的Note開始,只掃描大約5秒範圍內的Note 這樣不會影響畫面,也可以減少不必要的計算(已經離開判定區就不用再掃描了)
9F:→ meowyih: 場時間也沒甚麼關係,這樣你每個 node 跟其他的 node 就 07/27 16:59
10F:→ meowyih: 完全無關了,可以任意的客製化 07/27 17:00
11F:→ meowyih: 當然這樣獨立會讓曲目設計變困難,所以就會開發另一個工 07/27 17:01
12F:→ meowyih: 具軟體幫忙編曲目,設定node數值,輸出成json之類的... 07/27 17:02
這就是我當初沒有做得太複雜的原因,也是我在這個遊戲的另一個未完成的TODO... 當時沒有能力去做一個編輯器來讓譜面設計視覺化 折衷的辦法就是用普通的文字編輯器去設計譜面 但這樣理所當然地限制了可以設計的難度,也限制了譜面變化的彈性 最後也很感謝兩位的建議 目前已經有新的想法可以去實作 ※ 編輯: joe820730 (125.227.248.95 臺灣), 07/27/2021 23:05:58







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP