2021年3月21日 星期日

adaptive music & game audio 筆記 7 - Unity 與 Fmod 的練習檔案之載入

1. 開啟 Unity 的新專案,指定好資料夾,並由 Asset Store 尋找 3D Game Kit下載後,選擇所有元件,並載入之。載入元件需要較長的時間,故完成後必須先行存檔,否則有可能遺失資料。

2. 至 Asset / 3D GameKits / Scenes / Start,點選 Start 開始執行遊戲場景。 

3. 至 Edit / Project Setting / Quality ,並將 Fantastic 選項改成 Performance,以確保執行順暢,此選項會暫停使用部分 lighting 與圖像的 fidelity。



4. 測試該遊戲的遊戲音效後,可以至 Edit/ Project Setting / Quality,選擇 Disable Unity Audio,以便將 Audio 的工作轉由 Fmod 執行。


5. 至 Fmod 官網下載 Fmod Studio 與 Unity Integration Package,兩者版本必須一致。安裝完 Fmod Studio 之後,並由 Unity 導入 Asset 的方式載入 Unity Integration Package。

6. 在 Fmod Studio 中,開啟 3D Game Kit 的 Fmod 教材檔案(副檔名為 fspro),並檢查 asset 中的聲音元件(cotnrol + 3 )。完成檢視後,可以另存新檔作為練習之用。

7.  將 Unity 中的 Fmod setting 的 inspector 面板設定好 Fmod Studio 檔案的路徑,並且確認 Fmod Studio 已經建立 Bank (快捷鍵 F7),完成 Fmod Studio 的存檔。執行完 Fmod Studio 的建檔之後,則 Unity 中的 Fmod setting 底下的找不到檔案的錯誤將會被消除。 

2021年3月14日 星期日

adaptive music & game audio 筆記 6 - Fmod 與 Unity 的串接

為了使用 Fmod 作為 Middleware 來為 Unity 執行較為複雜的聲音播放,故需使用以下步驟:

1. 安裝 Unity,取得授權,開一新檔案,並在 asset store 搜尋 Fmod,下載之後,導入 Unity 中。此時 Unity 的下方 console 就會出現錯誤訊息,因為找不到 Fmod 的專案路徑。

2. 開啟 Fmod 並指定一個檔案夾進行存檔,再到 Unity 中的 Fmod 選單,選取 Edit Settings,則會在 Unity 的 Inspector 中出現 Fmod 的相關設定選項,在此選項中將「Studio Project Path」指向 Fmod 存檔的路徑,找到副檔名為 fspro 的檔案。

4. 承上,此時雖完成 Fmod 與 Unity 的初步連結,但卻會顯示找不到 Fmod 的 Bank,因此需再到 Fmod 中的 File 選單下,選擇 Build (或使用快捷鍵 F7),來建立 Bank 檔案。Bank 是用來存放 Fmod 的聲音等相關元件,建立成 Unity 可以讀取的形式,以供 Unity 直接進行使用。

5. 完成 Fmod 與 Unity 的串接之後,可以進行簡單的測試,步驟如下:

(1) 在 unity 中建立一個 game object,並且在 add component 中加入 Fmod 的元件,選擇 Fmod Studio Event Emitter。

(2) 至 Fmod 中,按右鍵 new event 及 new 2D timeline,修改 Event 的名稱,並將外部的聲音檔案拉到軌道中。並在左方介面中,按滑鼠右鍵選擇 assign to bank (選 master),按 F7 建立 bank,並進行存檔。 

(3) 在 Fmod 的事件中,按滑鼠右鍵,選擇 copy path,再將這個路徑貼到 Unity 的 inspector 的 Studio Event Emitter 的 Event 的路徑設定中。此時,Initial Parameter Value 底下的 add values 選單也會出現原本在 Fmod 文件中自己增加的參數。

(4) 至 Unity 中,將 (1) 所建立的 game object 之Inspector 中的 Play Event 選成 Object Start,表示該 game object 開始存在時,FMOD 的音樂就要開始播放。此外,並需將 event 選項設定為在 Fmod 中所命名的那個事件。 

6. 按 Unity 的 play 鍵進行測試。 



使用 Unity 2019 需注意的事項:
  • Fmod studio 的版本必須要跟 Fmod for Unity 的版本一致,目前雖然已經可以由 Unity 的 Asset Store 直接導入 Fmod 的 Assets,但是相容性可能會發生問題。最保險的方式是直接至 Fmod 官網安裝 Unity 認證完成(Unity Verified)的 Fmod Studio 應用軟體、以及要被載入 Unity 的Unitypackage。本文撰寫時,測試成功的版本為 Fmod Studio 2.0010 與fmodstudio20010.unitypackage,兩者版本需一致。現有直接從 Unity 的 Asset Store 導入 Fmod 的方式之版本,似乎仍有版本不相容的問題。 
  • 正常的情況下,Fmod 的檔案資料夾中的 Build 目錄中會有 bank 檔案,同一份檔案還會被複製到 Unity 檔案資料夾的 Assets / StreamingAssets 資料夾下。然而,使用 Unity Asset Store 載入的 Fmod,目前仍會有找不到 Fmod 的 Bank 的問題。
  • 此外,在 Unity 執行遊戲時,若出現訊息顯示 sample rate 必須為 44100Hz 的錯誤訊息,則可以直接在 Unity / FMOD / Edit Setting 的 inspector 下拉選單中的 Play in Edit Setting 修改取樣頻率為 44100Hz 即可。
  • 若在 Unity 中有找不到 FMOD 的 Event 的錯誤訊息,則需要刪除 Unity 專案資料夾底下的 Assets /StreamingAssets 整的檔案夾,並刪除 FMOD 專案資料夾底下的 Build 資料夾,此錯誤訊息是因為軟體版本有更新所造成。
  • 若使用 [FMODUnity.EventRef] 的用法來簡化 Event Path,也可能造成相同問題,此時則必須手動至掛載該程式碼的物件之 inspector 中, 點選放大鏡 icon 去從下拉式選單來選擇想要播放的聲音檔案。
  • 執行 3D 聲音時,main camera 必須掛上 FMOD listener 元件。
  • Unity 2019 或 2020 在 import package 的選項中,沒有 standards assets,而必須自己至 asset store 下載安裝與載入,載入完成後會出現在 project window 的 assets 目錄下,然而同時也會出現錯誤訊息,需要在錯誤訊息 "GUIText is obsolete" 點兩下,進入 visual studio 進行下列些改:GuiText 改成 Text,並多加上一行指令,如下圖所示:

至 asset store 下載 standard assets:

從 console 的錯誤訊息 "GUIText is obsolete" 點兩下修改程式碼:

完成修改後就可以使用 standard assets。

2021年3月7日 星期日

adaptive music & game audio 筆記 5 - 「水平重排序」技巧簡介

Horizontal Resequencing (水平重排序)是一種互動音樂的技巧,音樂依照遊戲玩家的行動,以動態的方式串接在一起,當音樂在遊戲進行中播放時,可能到一個需要下決定的點,依照玩家的行動,而音樂則可能進入新的段落或繼續重複原本的段落。Horizontal Resequencing 技巧則是用來處理這種分支點的技巧。

完整的音樂會有開頭、中間、結尾,需要時間來完成。Horizontal Resequencing 常用於前一段音樂結束、後一段音樂開始的地方,因此為了呈現音樂的完整性,因此 Horizontal Resequencing 比較適合超切換點之間超過 20 秒以上,亦即玩家不需在不同的遊戲狀態下快速切換時,因為若是快速切換遊戲狀態與音樂,則音樂的核心主題或樂思將無法清楚被呈現。此種切換音樂的方式可分為三類:

(1) Crossfading (淡入淡出):

     1. 同步的淡入淡出(synchronized crossfading):

前後兩段音樂於重疊之處採用相同的速度、節奏,甚至採用相同的和聲進行,以減少切換音樂上的突兀。此種作法的缺點在無法改變成體的速度。

     2. 非同步的淡入淡出(non-synchronized corssfading):兩段音樂重疊之處進行淡入淡出,但兩段音樂節奏不同、和聲也可能相互衝突。此種作法使音樂切換較難以順暢。

(2) Transition (過渡段): 使用過渡段進行兩段音樂之間的銜接。過渡段可以任何長度,但以不要超過 10 秒為佳。可用一段音效作為作為過渡段(例如:Final Fantasy XIII 使用音效片段作為過渡。)好的過渡段可以連接兩段使用不同和聲架構、速度的音樂。差異較大的兩段音樂之過渡段其長度不能太短,30 秒以上的過度段效果最佳。

(3) Branching (分支): 前段音樂的樂句結束後,才接到下一段的音樂,為最具音樂性的作法,因為此種作法不會將旋律或和聲截斷。此種作法比較適合樂句長度較短的音樂,以不超過 10 秒為佳,古典風格的音樂通常句子長於 10 秒,搖滾或科技 (Techno) 旋律則通常較短,因此比較適合作為此種技巧所使用的音樂風格。Branching 技巧也適合於當作曲者需要一段乾淨的過渡段來執行互動音樂,或希望使用和聲與速度來改變情緒時。此外,使用隨機播放清單(random playlists)使作曲家可以在有限的樂句中增加變化性。Branching 的技巧有助於克服音樂重複的問題,故常用於休閒及手持遊戲,因為此類遊戲平台可用於存放音樂的記憶體通常較小。

關於 Horizontal Resequencing 的例子說明如下: