[程式] 用XNA寫音樂遊戲遇到的一些問題

看板GameDesign (遊戲設計)作者 (睡不醒)時間15年前 (2010/02/08 01:17), 編輯推噓5(5018)
留言23則, 7人參與, 最新討論串1/1
我是XNA的初學者 因為畢業專題要想用XNA寫出一款音樂遊戲 但遇到一些問題查不太到資料可以解決... XNA在國外的論壇比較活躍,華語區討論的人似乎不多? 偏偏我又英文苦手... 這款音樂遊戲架構和太鼓達人、BeatMania類似 就是音符落到指定地點時需按下相對應的按鈕以消除音符並發出音效 我的問題是 1.要怎麼把音符的顯示和音樂節拍綁在一起呢? 我的寫法很陽春,是在選完歌進入打譜介面時產生一個變數 此變數計算進入打譜介面後的遊戲時間 然後在到達指定時間時,產生一個圖案 並告訴該圖案往指定方向移動。 可是這做法讓「圖案無法在音樂的節拍上」,十次測試十次都會有不一樣的誤差... 目前看來是因為程式進入打譜介面後需要一點時間讀取音樂檔 或是開啟mediaplayer的時間(我是呼叫mp來播放) 而每次讀取音樂檔、開啟mp需要時間不同所致 我曾經嘗試把變數改成去抓音樂的播放時間 但XNA跟我說這個播放時間不能拿來當變數使用... 雖然有抓到一個類似吉他英雄程式的範例檔 但程式碼太複雜,註解又都是英文...實在難以理解 有沒有人知道該用什麼方法、邏輯來寫會比較好? 2.程式在讀取音樂、影片檔的時候總需要一些讀取時間 這導致遊戲執行起來有很不順暢的感覺 該如何知道程式正在讀取檔案,並做出一個讀取畫面呢? 3.選單切換的動態效果,我曾直接指定一堆圖片 不斷重新繪製他們的位置、透明度等...來試著達到動態選擇、切換效果 圖片少的時候看來沒問題,但圖片一多起來會delay... 像這種選單選擇與選擇後切換介面的動態效果有沒有什麼比較好的寫法? 這是目前遇到的幾個比較大的問題 如果有解釋不清的地方請直接提出我會再補述 如果有失禮的地方請見諒 Orz 先謝謝各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.245.117

02/08 16:33, , 1F
你要不要先測試cpu不同loading下 音樂會不會播放速率不同?
02/08 16:33, 1F

02/08 19:46, , 2F
根本作法 把英文練好 參考成功遊戲的教學
02/08 19:46, 2F

02/08 20:30, , 3F
把英文練好比較實在 +1
02/08 20:30, 3F

02/08 20:52, , 4F
音符的出現時間要跟frame對 而不是時間差
02/08 20:52, 4F

02/08 21:54, , 5F
我比較好奇你那段圖片移動的update怎麼寫的... 應該是有
02/08 21:54, 5F

02/08 21:55, , 6F
考慮到frame的部分吧... 要不然這樣你跑N次N次都不一樣
02/08 21:55, 6F

02/09 05:59, , 7F
畢專的時間不夠把英文練好 囧 基礎的說明是都看得懂
02/09 05:59, 7F

02/09 06:00, , 8F
但複雜的程式碼加上看得似懂非懂的註解對我這程式新手
02/09 06:00, 8F

02/09 06:00, , 9F
而言太難理解了...
02/09 06:00, 9F

02/09 06:01, , 10F
計算遊戲時間的變數是自進入打譜介面開始每秒更新30次
02/09 06:01, 10F

02/09 06:03, , 11F
以每秒30格來計算frame,音符出現是跟著這frame計數器
02/09 06:03, 11F

02/09 06:03, , 12F
請問這樣算是有對在frame上嗎?還是我根本就搞錯方向?
02/09 06:03, 12F

02/09 06:03, , 13F
音符的移動是用遊戲每update"n"次就移動一次指定距離
02/09 06:03, 13F

02/09 06:04, , 14F
我想說這樣可以透過改變n來調整音符的移動速度
02/09 06:04, 14F

02/09 06:04, , 15F
移動速度是固定的,應該不是音符移動造成的誤差?
02/09 06:04, 15F

02/09 06:05, , 16F
突然想到如果是呼叫mediaplayer出來播的話...
02/09 06:05, 16F

02/09 06:06, , 17F
即便程式掉格、delay,音樂似乎能不受影響正常播放?
02/09 06:06, 17F

02/09 06:06, , 18F
這樣一來不管怎樣寫好像都會有誤差...Orz
02/09 06:06, 18F

02/09 06:07, , 19F
謝謝各位的指導,我繼續研究看看 >"<
02/09 06:07, 19F

02/09 09:24, , 20F
update 有傳時間參數給你~要用阿!
02/09 09:24, 20F

02/09 09:26, , 21F
不能用呼叫update次數來做,每台電腦快慢不同
02/09 09:26, 21F

02/09 09:39, , 22F
有關fps的重要性麻煩回去翻一下拙作...
02/09 09:39, 22F

02/10 00:09, , 23F
謝謝,我大概有點概念了
02/10 00:09, 23F
文章代碼(AID): #1BRlMOOt (GameDesign)
文章代碼(AID): #1BRlMOOt (GameDesign)