TimpaniでRPGを作ろう!

―番外編 BGMの付け方―


トップページに戻る




ゲーム中で、戦闘BGMとマップBGMがひとつずつしかない場合の、BGMの搭載の仕方です。

ここでは、BGMファイルがゲーム本体と同じフォルダ内にある状態で動く方法を説明します。


1. まず、準備

まず、UDIさんのホームページhttp://homepage.mac.com/udi/から、「UxMovie」というソフトをダウンロード、解凍してください。

開くと、なにやら難しいことが書いてありますが、「インストール」ボタンを押して、RPGに、UxMovieをインストールしてください。また、Quicktime Movie形式のMIDIファイルを、RPGと同じフォルダ内に入れてください。

UxMovieで音楽を鳴らすための命令文のうち、RPGで使うであろうものは以下の通りです。

  1. UxMovie [MIDIファイルの名前],,,false,,,,
    MIDIファイルを読み込みます。(実際には、このMIDIファイル専用の目に見えないウィンドウを開いています)
  2. set the loop of window "[MIDIファイルの名前]" to true
    MIDIファイルが、常に繰り返して演奏されるようにします。
  3. send "Play" to window "[MIDIファイルの名前]"
    MIDIファイルを演奏し始めます。
  4. send GoTop to window "[MIDIファイルの名前]"
    MIDIファイルの演奏を中断したのち、MIDIファイルを頭出しします。
  5. Set the audioLevel of Window "[MIDIファイルの名前]" to [ボリュームの数字、または数字を格納した文字列]
    ボリュームを設定します。UxMovieは、MIDIファイルを読み込んだときには、音量は常にデフォルトになるようになっています。
上の命令文は、挿入曲・エンディング曲などの時にお使いください。


2. 環境設定カードとボリュームボタンを作ります

RPGを、HyperCard Liteで開いてください。HyperCard Playerでは、この作業は出来ません。


新規カードを作り、適当な名前をつけます。そのカード上に、ボリュームボタンを作ります。「ポップアップ」形式のボタンを作り、内容に、設定したいボリュームの数字(250まで)を入力します。私は、降順に入力しました。

250
200
150
100
50
0



このボタンのスクリプトは、以下の通りです。


on mouseUp
global BGMDATA
get the selectedtext of me
put it into line 3 of BGMDATA
repeat with i=1 to 2
set the audioLevel of window (line i of BGMDATA) to (line 3 of BGMDATA)
end repeat
end mouseUp



また、タイトルカードと行き来できるように、ボタンを整備します。タイトルカードの「環境設定」ボタンを「使えるように」し、そこに、

on mouseUp
go cd "[環境設定カードの名前]"
end mouseUp

というスクリプトを入れます。環境設定カードにも、同様の(on mouseUp / go cd "Title" / end mouseUp)スクリプトを入れます。






3. スクリプトに手を加えます

いよいよ、RPGのエンジン部分に手を加えます。


3.1. スタックスクリプトに手を加えます

メニューバーの「オブジェクト」プルダウンメニューから、「スタック情報...」を選んで下さい。

「スタック情報」というダイアログボックスが出ますので、左下の「スクリプト」というボタンを押してください。

出てきた画面「(テストスタックの在りかのパス):テストのスクリプト」の内容を全て消去して、このファイルの内容全てをペーストしてください。なお、手を加えたのはFightToハンドラ、新規挿入はCloseStackハンドラですので、そこのみ変えても構いません。

「保存」してから、このウィンドウを閉じてください。


3.2. "Title"カードスクリプトに手を加えます

メニューバーの「オブジェクト」プルダウンメニューから、「カード情報...」を選んで下さい。

「カード情報」というダイアログボックスが出ます。カード名が「Title」であることを確認してから、左下の「スクリプト」というボタンを押してください。

出てきた画面「(カードID)="Title"のスクリプト」に、このファイルの内容全てをペーストしてください。

「保存」してから、このウィンドウを閉じてください。

このスクリプトは、もちろん、Now Loading画面のon OpenStackハンドラに入れるのがセオリーかと思いますが、ここにしてみたのは、ユーザーの方が、ここで画面が切り替わったのに反応して一息つくのではないかと思ったからです。その隙にBGMのロードを済ませてしまおうという了見です。


3.3. "saveCARD"カードスクリプトに手を加えます

キーボードの「→」ボタンを一回押して、次のカードに行ってください。 メニューバーの「オブジェクト」プルダウンメニューから、「カード情報...」を選んで下さい。

「カード情報」というダイアログボックスが出ます。カード名が「saveCARD」であることを確認してから、左下の「スクリプト」というボタンを押してください。

出てきた画面「(カードID)="saveCARD"のスクリプト」の内容を全て消去して、このファイルの内容全てをペーストしてください。なお、手を加えたのはWriteDATAハンドラですので、そこのみ変えても構いません。

「保存」してから、このウィンドウを閉じてください。


3.4. "BattleBG"バックグラウンドスクリプトに手を加えます

キーボードの「→」ボタンを何度か押して、戦闘画面カードに行ってください。戦闘画面カードが複数ある場合、どれでも構いません。

メニューバーの「オブジェクト」プルダウンメニューから、「バックグラウンド情報...」を選んで下さい。

「バックグラウンド情報」というダイアログボックスが出ます。バックグラウンド名が「BattleBG」であることを確認してから、左下の「スクリプト」というボタンを押してください。

出てきた画面「(バックグラウンドID)="BattleBG"のスクリプト」の内容を全て消去して、このファイルの内容全てをペーストしてください。なお、手を加えたのはcheckST、endFightハンドラですので、そこのみ変えても構いません。

「保存」してから、このウィンドウを閉じてください。


3.5. 戦闘カードのボタンスクリプトに手を加えます

キーボードのりんごマークと「M」を同時に押してください。通常はせりふが表示される欄が現れるので、そこに、

edit script of cd btn 8

と打ち込んで、リターンキーを押します。

出てきた画面「カードボタンID8="FirstPop"のスクリプト」の内容を全て消去して、このファイルの内容全てをペーストしてください。なお、手を加えたのはTurningハンドラですので、そこのみ変えても構いません。<

「保存」してから、このウィンドウを閉じてください。

戦闘背景が複数ある場合、全てのカードで、この処置を行ってください。


3.6. ゲームが始まるカードのカードスクリプトに手を加えます

キーボードの「→」ボタンを何度か押して、RPGが始まるマップのあるカードに行ってください。メニューバーの「オブジェクト」プルダウンメニューから、「カード情報...」を選んで下さい。

「カード情報」というダイアログボックスが出ます。左下の「スクリプト」というボタンを押してください。

出てきた画面の内容を全て消去して、このファイルの内容全てをペーストしてください。

「保存」してから、このウィンドウを閉じてください。


これで、エンジン部分の改造は完了です。






4.カスタマイズします

もう一度、タイトルカードのカードスクリプトを開いてください。


put "[マップ用]"&return&"[戦闘用]" into BGMDATA



のそれぞれのかっこ内に、該当するファイル名を入れてください。

これで、BGMの搭載は完了です。


その他、Timpani上でかまいませんので、イベントの所々に、
UxMovie "MovieIdle"
というコマンドを入れてください。このコマンドがあると、Quicktimeは、BGMをちゃんと演奏しようとがんばってくれます。

戦闘画面で、BGMが切れないようにするために、『Saint Nicholas Society』では、戦闘カードのボタン番号4・5・6、つまり敵を表示しているボタンに、「UxMovie "MovieIdle"」を入れてみました。これらのボタンのスクリプトの全文は、以下の通りです。


on mousedown
DirectSelect short id of me
UxMovie "MovieIdle"
end mousedown



こうすると、戦闘中のBGMの音切れは、格段に少なくなりました。ただ、Classic環境でのプレイの場合、特に「二連斬」などの効果音が続く箇所で、音が途切れることがあります。







この項作成にあたっては、Timpaniのスクリプトを公開する許可を名取零氏に、UxMovieについて書く許可をUDI氏にいただきました。本当にありがとうございました。



トップページに戻る










最終更新:2006年4月1日