Recrit
【捨丸&KID】如何加入背景音樂以及效果音
本篇的內容為介紹:如何加入背景音樂以及效果音
建議請讀者自行尋找幾個免費的音樂檔,並且依照後面的範例script執行,自己體驗程式執行的效果才能更快速的學習。
* 建議的音效檔構成
基本上建議將音效檔和音效播放命令的組合如下列配合。
BGM bgm命令
Voice dwave命令(channel 0)(前提是要能找到聲優來配音)
效果音 dwave命令(channel 1~49)
將音效檔分成這三個種類來整理歸納的話,之後也能夠利用volume調整命令來分別調控相當的方便。
* 關於channel
所謂的channel是將複數的音效分別管理系統。常可以聽到5.1頻道、杜比環繞音響系統這類的名詞。這是利用五個channel分別播放不同的音效來營造出臨場感的系統。
dwave雖然有50個channel可以使用,但是也並非將50個喇叭接上後各自分配一個channel來播放。在一個喇叭上同時播放50個音效是可能的事情,但是所播放的聲音會在被混音之後播放。
* bgm系統的命令
能夠播放mp3、midi、wav三種格式的檔案。
注意bgm命令無法同時播放兩個以上音效檔。
下面一起介紹在句首有bgm的命令。
bgm播放命令
程式碼
bgm 檔案名稱
範例
bgm “mp3\BGM02.mp3”
bgm為命令本體。藉由輸入檔案名稱來指定要播放的檔案。這裡是假設在名為mp3的資料夾中有個BGM02.mp3檔案。
利用bgm命令指定的音效檔會不斷迴圈播放。
只播放一次
程式碼
bgmonce 檔案名稱
範例
bgmonce “mp3\BGM02.mp3”
bgmonce為命令本體。
被指定的mp3、midi、wav檔案只會播放一次。
指定檔案所在資料夾的方式和bgm相同。
停止播放
範例
bgmstop
停止目前用bgm命令所播放的音效。
「*define
clickstr"!?。」",2
game
*start
bgm "mp3\BGM02.mp3"
bg "BG\093.JPG",2
click
bgmstop
end
」
調整BGM的音量
程式碼
bgmvol 音量(0~100)
範例
bgmvol 50
調節利用bgm命令所播放音效音量大小的命令。
音量最小為0,最大為100。音量並不會被遊戲中的紀錄檔所紀錄。
BGM的fade in。bgmfadein
程式碼
bgmfadein ms秒數
範例
bgmfadein 120
利用bgm命令播放音效檔時,在開始的時候fade in(逐漸放大)的命令。
在指定的時間中逐漸將音量增加。曲子不會突然開始而是音量逐漸變大,聽起來會有較順暢的感覺。
但是如果使用在會不斷迴圈的環境音效時,音效的界線會很清楚的浮現是使用上困難的地方。
BGM的fade out。 bgmfadeout
程式碼
bgmfadeout ms秒數
範例
bgmfadeout 120
;mode800
利用bgm命令播放音效檔時,在結束的時候fade in(逐漸放大)的命令。
在指定的時間內逐漸將音量降低。在播放語音檔時將BGM的音量降低。 bgmdownmode
程式碼
bgmdownmode option(0為off,1為on)
範例
bgmdownmode 1
在播放語音檔(dwave channel 0號)時,暫時將BGM的音量降低的混音模式。
這是為了讓語音檔能夠更清楚的被聽到的命令。
* dwave系統命令
使用DirectSound播放wav檔案的命令。
由於和一部分的命令處理(在右鍵選單時播放聲音)共用播放channel,有可能會出現重複使用而擠掉的可能性。在這種狀況下必須要將所播放的channel錯開。這裡我們除了dwave命令外也一起介紹句首有加上dwave的各種命令。
播放聲音 dwave
程式碼
dwave channel號碼,檔案名稱
範例
dwave 0,”test.wav”
dwave為命令本體。
0為channel號碼。有0~49號總共50個channel可以播放wav檔案。
如果是在不同channel的話也能夠在同一時間播放。
dwave 0,”test01.wav”
dwave 0,”test02.wav”
如果像上面這樣將兩個dwave命令排列在一起的話,dwave 0 channel會讀取音效檔並且播放,而在它播放結束前,dwave 1 channel的音效檔便會開始播放。如果真要說這時的情況是如何的話,聲音是混在一起的。
因此如果想要做出「在兵器交擊的聲音後出現倒地的聲音」這樣,在某個聲音後才出現第二個聲音時,請輸入適當時間的wait命令。
在兩個音效檔播放的中間插入文字表示也是一種方法。因為會插入等待click點,在一邊閱讀文章的時候音效也會播放完畢。
迴圈播放 loopplay
程式碼
dwaveloop channel號碼(0~49),檔案名稱
範例
dwaveloop 0,”test.wav”
所指定的wav檔案會在指定的channel迴圈播放。
停止播放 dwavestop
程式碼
dwavestop channel號碼(0~49)
範例
dwavestop 0
停止所指定channel的播放。
將音效檔讀取的記憶體中
程式碼
dwaveload channel號碼(0~49),檔案名稱
範例
dwaveload 1,”test.wav”
由於dwave命令是利用streming播放的方式來處理,在命令出現的時間點開始讀取檔案。因此在這狀況下會產生些微的time lag。
因此如果先使用這個命令在記憶體上讀入播放檔案,之後輸入dwaveplay、dwaveplayloop的播放命令,便能有不產生time lag而播放檔案。
這能夠用在和汽車引擎聲重疊的槍聲、或是幾乎同時出現的兩發槍聲等場合。
播放已經讀入記憶體中的音效檔 dwaveplay
程式碼
dwaveplay channel號碼(0~49)
範例
dwaveplay 1
在指定的channel中只播放一次已經讀入記憶體的wav檔案。
迴圈播放已經讀入記憶體中的音效檔 dwaveplayloop
程式碼
dwaveplayloop channel號碼(0~49)
範例
dwaveplayloop 1
在指定的channel中將已讀入記憶體中的wav檔案迴圈播放。
為了防止想要迴圈播放的環境音效(如蟬鳴、流水聲等)突然中斷,先利用dwaveload命令讀入記憶體之中在利用dwaveplayloop來播放這樣的手法也是有的。
改變語音channel的音量 voicevol
程式碼
voicevol 數值(1~100)
範例
voicevol 70
調整dwave channel 0號(語音)之音量的命令。
利用0~100的數值來調整音量大小。
被變更的數值並不會被遊戲的存檔功能儲存,因此如果將變更命令和播放命令分開之後,也可能出現命令無效的狀況。
變更語音channel的預設音量 defvoicevol
程式碼
defvoice 數值(1~100)
範例
defvoicevol 30
調整dwave channel 0號(語音)之預設音量的命令。
利用0~100的數值來調整音量大小。
和voicevol命令不一樣,由於是調整預設音量所以變化的數值會被儲存在save data之中。
變更se channel的音量 sevol
程式碼
sevol 數值(1~100)
範例
sevol 50
調整dwave channel 1~49號(SE,效果音)之音量的命令。
利用0~100的數值來調整音量大小。
被變更的數值並不會被遊戲的存檔功能儲存,因此如果將變更命令和播放命令分開之後,也可能出現命令無效的狀況。
變更se channel的預設音量 defsevol
程式碼
defsevol 數值(1~100)
範例
defsevol 30
調整dwave channel 1~49號(效果音)之預設音量的命令。
利用0~100的數值來調整音量大小。
和sevol命令不一樣,由於是調整預設音量所以變化的數值會被儲存在save data之中。
* 音量調整命令
程式碼
menu_dwavvol
範例
menu_dwavvol
使調整音量的視窗出現。
BGM mp3系命令、bgm系命令
語音 dwave 0
效果音 dwave 1~49
能夠利用滑桿來分別調整所分配到的音效。
注意!Mp3格式檔案的版權問題
雖然mp3格式的檔案壓縮率較高且要準備encoder系統也較簡單,但是令人困擾的是在版權上有著許許多多的問題。而為了解決這問題使用ogg這個檔案格式的軟體公司也逐漸增加。ogg檔案格式有著和mp3匹敵的壓縮率且著作權上是免費的。
Nscripter只要使用dll檔案就能夠播放ogg格式的音效檔案。
* ogg格式檔案的播放
在和nscr.exe相同的資料夾中放入擴充功能檔案「nsogg.dll」就可以播放ogg檔案。bgm命令、dwave命令都可以播放。而streamin播放也沒有問題。
【捨丸&KID】如何變換背景及人物立圖
這篇要講如何變換背景及人物立圖。首先,在NS裡,如果完全不考慮變更背景時的效果,則換背景只是件非常容易的事情,範例如下
「
;mode800
*define
clickstr"!?。」",2
game
*start
bg "BG\093.JPG",1
click
bg "BG\094.JPG",1
click
end
」
這樣就可以換了,人物立圖也差不多,只要再打一次,並視情況加入cl等消除人物立圖的指令就可以了,因此本篇重點是在effect號碼,也就是最後的數字代表的意義(這裡的範例是1)。
* effect和畫像表示
到此之前,畫像在表現是的時候都是一瞬間就表示在螢幕上。但是如果改變表示方法的話,也能夠做出符合劇情的演出。
例如,如果角色在消失的時候是「慢慢地變成透明化消失」那麼就會有像是幽靈消失般的氣氛,「瞬間消失」的話則會有像是瞬間移動般的氣氛。
這個「慢慢地變成透明化消失」、「瞬間消失」等效果就被稱為effect。
* effect效果號碼和effect號碼
要指定effect必須先理解「effect效果號碼」、「effect號碼」這兩個參數。
「effect效果號碼」是表示Nscripter已準備好effect種類的號碼。總共有0~18號,各自有著不同的effect。
「effect號碼」則是為了叫出effect效果號碼和作用時間組合後的effect set所使用的號碼,這是由使用者自由設定的東西。能夠從2~99號自由設定。
effect效果號碼=effect的種類
effect號碼=effect效果號碼+作用時間組合產生者
先這樣記下來就可以了。
effect命令比較難以理解的原因便是因為相同的數字排列在一起容易搞混。
* effect使用的流程
effect再沒有設定「effect號碼」的時候,只能使用1號的瞬間表示,因此之前的effect號碼都只有1。設定必須在*define和game之間的定義區塊完成。以下先設定effect號碼2以及3最為例子。
「;mode800
*define
clickstr"!?。」",2
effect 2,5,600 ;600代表此效果時間為600毫秒也就是0.6秒
effect 3,11,1000
game
*start
bg "BG\093.JPG",2
click
bg "BG\094.JPG",3
click
end
」
在執行區塊時,當想要表示圖像的時候在表示命令的最後加上「effect號碼」來叫出圖像:
bg "BG\093.JPG",2
也就是預先設定好畫像出現的方法然後在要使用的時候使用號碼把它呼叫出來這樣的方式。
* effect的設定方法
那麼我們來實際定effect看看。
首先,在*define和game之間的定義區塊里設定effect號碼。
effect號碼的1號在預設中已經被決定為瞬間表示,因此請從2號開始設定(effct號碼能夠設定到99號)。
程式碼
effect 用來呼叫出的effect號碼,effect效果號碼,效果秒數(單位為ms)範例
effect 2,3,500
effect是命令本體。
2為用來呼叫出effect的號碼。(也就是在script中使用到的號碼)
3為用到effect的效果號碼。
500是效果時間(單位為ms,1s=1000ms)。
mask畫像中使用到的effect會在後面輸入被叫出的檔案名稱文字列。(後述)
* effect使用範例
於執行區塊中,使用畫像表示命令等命令時會使用到effect號碼。
範例
bg ,white,2
bg是叫出背景的命令,white則是以白色塗滿背影的意思。
2是effect號碼,會以在定義區塊中所設定的effect效果來更換畫面。
effect號碼和effect效果號碼都是相似的數字所以比較容易混亂,但是只要作過幾次畫面表示的命令後想來就會慢慢習慣。
* Effect效果的種類
Nscripter中共有18種effect效果。就算想設定effect但如果不明白各種effect效果的功用會相當地難以下手,因此先依照其號碼依序解說。
* 效果號碼一覽表
0 沒有表現效果。但是使用0號effect的圖像不會立刻顯現出來。
必須等到下一個指令表現圖像時才會一起顯現出來。
當想要讓人物站立圖像左右兩張圖時顯現時,或是想是讓背景跟人物圖像同時顯現時可以使用。
1 瞬間表現。沒有指定時間的參數。
圖像會在瞬間被表現出來。
由於default中就設定為顯示效果1號。沒有經過設定能夠使用的effect只有這個。
2 左快門(shutter)
3 右快門
4 上快門
5 下快門
2~5號是被稱為快門系列的效果。畫面會被複數個長方形的圖塊cut過去後顯示。左右上下為效
果朝著哪個方向前進來呈現畫面。
在表現人物立圖和背景畫面時常被使用。
6 左窗簾(curtain)
7 右窗簾
8 上窗簾
9 下窗簾
6~9號是被稱為窗簾系列的效果。畫面會被比快門較大一點的長方形圖塊cut過去後顯示。和快門系列相同,上下左右是指效果朝著哪個方向前進來呈現畫面。
10 以畫素為單位的cross fade。
從透明變為半透明,再由半透明轉為不透明的效果。
雖然是很不起眼的效果,但是由於有著柔和的效果常被用在人物立圖和SP上。
11 從左邊開始捲軸滾動(scroll)
12 從右邊開始捲軸滾動
13 從上面開始捲軸滾動s
14 從下面開始捲軸滾動
畫面整體進行scroll滾動的效果。讓某些東西由下方往上升,或是讓車子左轉等
* 加上特殊效果
Nscripter中有能夠對畫面全體加上effect的命令種類。
較常用到的有讓畫面全體搖晃和改變畫面全體色調的命令。
* quake(地震)
搖動畫面全體的命令。
如同字面的意義,當你想表現發生地震、撞到車子、被敵人毆打的瞬間時,可以使用這個命令來搖動全體畫面。
程式碼
quake 振幅數,效果時間
範例
quake 8,1000
quake是命令本體。
8為振幅數,最大會搖晃到所設定數字的三倍畫素。雖然要將振幅數設定為100、300都沒有關系,但是設定為10左右便會產生相當程度的搖晃,在實際運用上大約會使用1~15左右。
1000為效果時間(單位為ms)。會在效果時間中搖動畫面。
quake為上下左右隨機搖動。
如果疊合兩個不同振幅的quake也能夠做出類似真正地震的效果。
* 橫搖、縱搖
範例
quakex 5,1000
quakey 5,1000
quakex是橫搖,而quakey則是縱搖。
但是要注意5不是振幅而是搖晃的次數。1000為執行時間。
這個命令也能夠利用搖晃次數和時間的組合來達到各種效果。設定搖晃次數為2,執行時間為1500(1.5秒)左右的話,能夠做出像是主角在說Yes或No的效果。
各種使用方法
quakex 5,1000;被打巴掌時
quakey 5,1000;頭頂被直擊時
注意:quake命令,特別的使用法
quake命令可以讓畫面大幅度的搖晃在使用上常常會過頭,但是也有像是秘技的有趣使用方法。
在event圖中有時後會出現像是投擲長槍這樣有方向性的構圖。
在表現這樣的圖像時,如果大致配合其方向性使用quakex、quakey稍微動作,大概是振幅2、時間0.2秒左右,這麼一來圖像看起來會好像有動作。雖然這只是屬於錯覺這樣的東西,但是作為表現方法來說意外的有效果。
短暫而輕微的quake意外的能用在許多地方。
* 將畫面全體的顏色替換
monocro是改變畫面全體色調的命令。在回憶場景中常被使用。
monocro #EEEEEE ;黑白相片
monocro #FFBB66 ;汎黃色
monocro #33CCFF ;夜色
monocro #FF9900 ;黃昏
monocro off
monocro是命令本體。
在命令之後利用#RRGGBB的RGB code來設定基本的色調。
例如#EEEEEE會是灰色,就像是黑白相片那樣的色調。
只要改變基調的顏色就能夠變化成汎黃的感覺、夜色的感覺等各種感覺。請試著變換各種顏色來實驗看看。
只要輸入monocro off的命令後就能夠結束這個模式,回復原本的色調。
當在回憶場景中使用時,由於模式瞬間的切換會讓玩家感到有些唐突,在monocro命令的前後先利用表示單色的背景畫面,能夠讓感覺較流暢。