TimpaniでRPGを作ろう!

―番外編 BGMの付け方―


トップページに戻る




ゲーム中で、戦闘BGMとマップBGMを2セット使う場合の、BGMの搭載の仕方です。ここでは、便宜上、室内と室外でBGMを切り替えることとし、また、その判定にはフラグ10番を使います。

ここでは、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が始まるマップのあるカードに行ってください。メニューバーの「オブジェクト」プルダウンメニューから、「カード情報...」を選んで下さい。

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

出てきた画面の内容を全て消去して、このファイルの内容全てをペーストしてください。最初のシーンが室内だったばあい、「send "Play" to window (line 1 of BGMDATA)」は「send "Play" to window (line 2 of BGMDATA)」となります。

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


3.7. マップのバックグラウンドスクリプトに手を加えます

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

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

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

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


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






4.カスタマイズします

4.1 タイトルカードスクリプトに手を加えます

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


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



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


4.2 キャストに手を加えます

曲を変えたい場面変換があるキャストを、HyperCard上で開き、Mapzoomなどのマップ移動ハンドラに、それが屋内に入る場合には「,inside」、外に出る場合には「,outside」を付け加えます。


MapZoom open,"テストマップ3",7,8,inside



4.3 バックグラウンドフィールド7番に手を加えます

「リンク」のところで場面変換を指定している場合、そのカードを開き、バックグラウンドフィールド7番を開き、上と同じように手を加えます。

バッグラウンドフィールド7番を開くには、HyperCard LiteでRPGを開き、BGMを切り替える直前のカード(外への出口がある等のカード)へ行ってから、りんご+Mを押します。



プルダウンメニュー「ツール」から、右上の表マークを選択してから、
この四角をクリックし、輪郭を広げます。



TImpaniRPGで、通常台詞を表示する欄が開きますので、「show bg fld 7」と入力して、Enterキーを押します。すると、右の枠付近に、小さな四角が出てきます。これが、バックグラウンドフィールド7番です。

HyperCardの「ツール」メニューから、右上の表マーク(「目」に似ています)を選択してから、この四角をクリックすると、輪郭が破線になるので、その輪郭をドラッグして、四角を大きくします。



赤で囲ったところが、付け加えた部分です。



バックグラウンドフィールドが十分大きくなったところで、「ツール」メニューから今度は「手」マークを選択し、バックグラウンドフィールドに入力します。

下に行く時の移動データ=1行目
左に行く時の移動データ=2行目
右に行く時の移動データ=3行目
上に行く時の移動データ=4行目
ですので、それぞれ適宜に「,inside」「,outside」を付け加えます。半角スペースは入れないでください。

なお、このバックグラウンドフィールドを消す時の命令文は、「hide bg fld 7」です。


これで、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日