2011年8月7日星期日

KAG教學---終於有聲音了,播放背景音樂(1)

(k ゚∀゚)<在一般AVG遊戲中,怎能沒有音效和背景音樂,今次我們會介紹如何這無聲的遊戲加上一些背景音樂。

(k ゚∀゚)<在不附加任何插件的情況下,吉里吉里所支援音樂格式有3種,包括有無壓縮的RIFF-WAVE格式(wav檔案)、MIDI(midi檔案)和CD-DA。

CD-DA? 這是什麼東西?>( ゚ω゚ s)

(k ゚∀゚)<CD-DA (Compact Disc-Digital Audio)是音樂光碟,專門用於播放音樂,現在一般都不會有遊戲使用CD-DA來播放音樂,不知道為何吉里吉里會支援CD-DA......

(k ゚∀゚)<若果真的要使用CD-DA的話,請設定Config.tjs中的type為"CDDA",並且設定doubleBuffered為false。

......據我所知,wav 檔案由於完全無壓縮,檔案容量是很大,而midi檔案由於只是記錄一些類似樂譜般的數據,所以在不同的電腦可能會有不同的聲音。>( ゚ω゚ s)

(k ゚∀゚)<是的,所以如非必要,建議不要使用wav 檔案來做背景音樂,而midi檔案可能會因不同的電腦有不同的聲音,可能出現並非本來預期的聲音。

(k ゚∀゚)<吉里吉里內置了一個播放Ogg Vorbis格式的插件,ogg 檔案的好處是檔案容量比較小,使用時需要載入wuvorbis.dll這插件。

(k ゚∀゚)<吉里吉里還內置了其他的播放插件,包括TCWF和Microsoft ADPCM格式,不過我從來沒有聽過TCWF這格式,也找不到有關的資料,所以不介紹它了,而Microsoft ADPCM格式則是經過壓縮的wav 檔案,由於副檔案一樣,若果發生無法播放wav 檔案的情況可能就是這個原因,使用時需要載入wumsadp.dll這插件。

咦? 沒有播放mp3格式的插件嗎?mp3可是最常見的格式啊! >( ゚ω゚ s)

(k ゚∀゚)<吉里吉里沒有內置任何播放mp3格式的插件,原本初期的吉里吉里的確附有wump3.dll這個播放mp3格式的插件,不過貌似是因為mp3的專利權問題而不提供,不過網絡上還能找到這插件,有興趣可以嘗試尋找一下。

(k ゚∀゚)<當決定好音樂格式,需要在Config.tjs 修改type 這變數,使用midi檔案的話就設定為"MIDI",wav檔案、ogg檔案或mp3檔案等就設定為"Wave",CD-DA的話就設定為"CDDA"。

(k ゚∀゚)<載入插件的方法可參考KAG教學---載入插件,loadplugin 這教學。

(k ゚∀゚)<好了,可以開始介紹播放背景音樂了,最簡單的方法是使用[playbgm],以下是範例。

[playbgm storage="bgm1"]
播放BGM1

(k ゚∀゚)<[playbgm]的storage屬性指定檔案名稱,若果無法播放的話,可嘗試加上副檔名,留意每次只能播放一首背景音樂,當播放另一首的時候,上一首背景音樂就會停止播放。

(k ゚∀゚)<若果你只想播放背景音樂一次,而非重複播放,可以用loop屬性來設定是否重複播放,當其數值為false,背景音樂就只會播放一次,以下是範例。

[playbgm storage="bgm1" loop=false]
播放BGM1

有什麼時候會用到loop這屬性?>( ゚ω゚ s)

(k ゚∀゚)<其中一個例子是ED曲的時候,一般只播放一次,這時loop這屬性就能發揮作用。

(k ゚∀゚)<至於[playbgm]的start屬性,由於要用到吉里吉里的附屬工具,所以留待以後再介紹。

(k ゚∀゚)<有開始播放的話,當然也有停止播放,我們可用[stopbgm]來停止播放,以下是範例。

[playbgm storage="bgm1"]
播放BGM1[p][cm]
[stopbgm]
停止播放BGM1

總覺得開始和停止得太突然,有沒有其他開始和停止播放方法?>( ゚ω゚ s)

(k ゚∀゚)<有的,吉里吉里有提供背景音樂的淡入(fade-in)和淡出(fade-out)功能,分別是[fadeinbgm]和[fadeoutbgm],用法和擁有的屬性大致上跟[playbgm]和[stopbgm]一樣,只是增加了一個time屬性,設定淡入或淡出所需的時間,以微秒(ms)為單位,以下是範例。

[fadeinbgm storage="bgm1" time=3000]
播放BGM1[p][cm]
[fadeoutbgm time=3000]
停止播放BGM1

(k ゚∀゚)<上述的範例花了3秒淡入,與其3秒淡出,聽起來會比較自然,不過有太突然的感覺。

(k ゚∀゚)<也差不多了,其他的就留待下一次再介紹。

10 則留言:

  1. 大大~我是吉里吉里的新手~我的背景音樂不管怎麼修改就是無法播放
    修改type為"WAVE"後..竟然又出現了錯誤的訊息
    雖然照著您的方式還是依然無法播放wav的背景音樂ˊˋ(泣~)
    同樣的音樂用在音效的語法中卻可以播放...
    困擾了很久~希望大大幫忙解答~

    回覆刪除
  2. 真是不好意思,我的教學好像寫錯了一點,
    請嘗試修改type為"Wave"(只有第一個字是大寫),
    相信只要修改好type就可以播放wav。

    回覆刪除
  3. 求救,我下載了wump3.dll,然後放進plugin文件夾,把一首bgm1的mp3放進bgm的文件夾,config裏修改成Wave,然後就輸入
    [playbgm storage="bgm1"]
    播放BGM1
    可卻沒有歌聲出來

    回覆刪除
  4. 如果想播放mp3等額外的格式,必須先載入插件,
    只要寫上[loadplugin module="wump3.dll"]
    就可以載入插件,
    不過由於是額外的格式,如果省略了副檔名的話,
    吉里吉里無法正常地播放(因為預設是播放wav檔案),
    所以必須加上副檔名,
    即是要寫上[playbgm storage="bgm1.mp3"]
    這樣的話應該就能順利播放mp3檔。

    回覆刪除
  5. 啊啊,原來如此,非常感謝 ^o^
    希望大大的教程能夠快一點~

    回覆刪除
  6. [loadplugin module="wump3.dll"]
    [playbgm storage="bgm1.mp3"]

    大大我有個問題,爲啥放入以上那段句子后,打開krkr時要經過幾秒才播放呢

    回覆刪除
  7. 我也是第一次聽見這種情況,
    有可能是mp3檔本身的問題,
    或者是您的系統問題,
    不過真正的原因我也不清楚。

    回覆刪除
  8. 話説,有沒有句子是能夠限制音樂播3秒鐘類似的?
    例:bgm1有4分鐘,不過只播開始后的三秒鐘就停止(不是用點擊后的stopbgm)

    回覆刪除
    回覆
    1. 不太了解限制音樂播3秒鐘是什麼意思,
      這是指bgm1播放三秒後停止,然後才執行下一行,
      還是說bgm1播放三秒後停止,中途繼續執行剩下的東西,
      而且既然bgm1只播放三秒,為何不將bgm1的頭三秒部分獨立出來,
      儲存成另一個音樂檔來使用呢?

      刪除
    2. bgm1播放三秒後停止,然后就没了。
      嘛……总觉得如果这样做会省些位子>_>
      如果没有这种句子的话那没关系了,只好硬着去分开>_<

      刪除