● プロローグ
iBookの登場で喜んでいたら、間髪入れずにPowerMac G4が発表されてしまいました。予想よりすっと早い発表なので、嬉しい誤算といったところでしょうか。さっそくWorld PC Expo'99に足を運んで両機をじっくりと見てきました。
iBookは、マシンに触れるまで20分待ちの状態でした。蓋を開けたり閉じたり、ハンドルを出して片手で持ったり、AirePortを試すためにIEを起動したり、iBookと対峙する来場者の行動パタンがほぼ同じなのには笑ってしまいました(私もそのうちの一人)。予想通り、iBookは実に綺麗なマシンです。また、思ったよりブルーベリーが素敵だったのが収穫でした。PowerMac G4もカッコ良くなりましたね。大人になったという感じです。が、何と言っても今回の目玉はシネマディスプレー!!これは本当に素晴らしい。値段がもっと安くなれば「落ちる人」が続出するでしょう。「今は我慢だ、我慢!」と、自分に何度も言い聞かせて家路についた私です(笑)
●AppleScriptからのコマンド
マスコットをコントロールする件で、読者の方からAppleScript対応機能についてのご質問が来ました。ゲーム開発の話とは直接関係ないのですが、まず先んじてマスコットでのAppleScriptの活用について簡単に説明しておきます。
キューティマスコット++の「コマンド受信イベント」で「AppleScriptに反応する」をチェックすると、他のアプリからのAppleScriptメッセージをコマンドとして受信することが可能になります。(図1)AppleScriptの表記では「MascotCmd」の後にコマンドの内容を記述します。例えば「スクリプト編集プログラム」で以下のようなスクリプトを記述し実行したとすると、「iMacMascot」と名付けた起動マスコットに「I love you」というコマンドが送られます。Appleが提供している最新の「スクリプト編集プログラム」のScriptの記述は英語のみとなりましたので注意してください。(図2)これは音声認識で「I love you」を認識した時や、プログラムの「マスコット」の「コマンド送信」により送信された「I love you」を受信した時とまったく同じことになります。
------------------------------------------------------------------
tell application "iMacMascot"
MascotCmd "I love you"
end tell
------------------------------------------------------------------
この後「スクリプト編集プログラム」のファイルメニューから「別名で保存...」を選択し、このスクリプトを「アプリケーション」として保存することもできます。(図3)出来上がったアプリは、起動した瞬間に「I love You」というコマンドを「iMacMascot」に送ります。AppleScriptを熟知した方なら、コマンド送信時間をScriptにより制御し、複数のマスコットを同時に制御するような芸当も可能なはずです。プレゼンテーションやデモンストレーションの裏方としてマスコットを利用するのも面白いかもしれません。AppleScriptや「スクリプト編集プログラム」の詳しい内容については、Apple社が提供しているドキュメントや、関連書籍を参考にしてください。
●メインキャラクターを操作する
それではさっそくゲーム開発の話を再開したいと思います。今回は、ゲーム開発の雰囲気を出すために、マスコットをキャラクターと言い換えてお話します。ご了承ください。
まず最初に考えなければいけない点は、メインキャラクターをどうやって操作するかという事です。例えば、なつかしい「インベーダゲーム」は、砲台を左右に動かしミサイルを発射する単純なゲームでした。ユーザは左右に動くレバーと赤いボタンで砲台(メインキャラクター)を操作しました。ところが、最近のゲーム専用機のコントローラは、Aボタンを押しながらBボタンを長く押し、その間にCボタンを3回押すとか、、、おじさんには操作不可能な次元へと突入しております(笑)。今回は、メインキャラクターを1体だけ使う2次元アクションゲームですから、キャラクタの操作はキーボードやマウスでOKです。メインキャラクターの移動方向は上下左右とその間を入れた8方向とします。キャラクター用のセルとしては8方向にそれぞれ個別の絵柄を描くのがベストですが、方向性の無いキャラクターなら全部同じ絵柄でも構いません。(図4)
セルを描き終わったら、イベントウィンドウで各移動方向に対して適切なキーボードキーを割り付けます。(図5)上下左右の動きだけなら「特殊キー利用」で矢印キーを割り付けるのが良いかもしれません。しかし8方向だとちょっと悩んでしまいます。テンキーの「8」「9」「6」「3」「2」「1」「4」「7」を使うのがもっとも分かり易いのですが、PowerBookやiBookにはテンキーがありません。テンキーがない機種でテンキー操作を強要するのは酷というものです。だれも、このゲームで遊んでくれないでしょ。ならば、文字キーの「Y」「U」「J」「M」「N」「B」「G」「T」を使うという手段もありますが、操作が分かりづらくなるのが難点です。最近のPowerBook G3やiBookでは、テンキーを一般キーで代用する仕組みが提供されています。しかし機種的には少数派ですから、とりあえず今回はテンキーの無い機種を考慮し、移動操作を文字キーに割り付けることで妥協しましょう。
メインキャラクターの操作には、キーボードだけではなく「マウスムーブイベント」を利用することも可能です。(図6)マウスムーブイベントはマウスを指定方向に一定ピクセル動かすと発生します。指定方向はマウスムーブイベントのメニューから選び、ピクセル数は「動作確認」や「アプリ作成」ダイアログの「マウスムーブの感度」に入力しておきます。(図7)感度は3〜6ビクセルの小さな値にしておいてください。感度が大きすぎると、操作するためのマウスの動きが大きくなり、使用に耐えなくなります。キャラクター操作はキーボードだけでも可能ですが、マウス操作も加え、ユーザーの好みで選べるようにしておくのが親切です。後は、攻撃用(ミサイル発射?)などに使うマウスクリックイベント、ゲーム終了や再開を指示するための3〜4種類のキーボードイベントを用意すればOKでしょう。割り当てキーとしては「space」「return」「tab」「esc」キーなどを使うと分かり易いと思います。ただし、日本語入力モードのまま「超高速」以外の動作スピードでゲームを動かすと、「space」キーを押しても何も反応しないことがあります(仮名漢字変換が働いているため)。動作スピードは必ず「超高速」にしておいてください。作業がすべて終わったら、設定した操作でメインキャラクターが指示通りの方向へ動くかどうか確認してみましょう。同時にキャラクターの移動スピードも確認してみてください。
●自動スクロールを試す
前回では、背景上のキャラクター表示位置を決める方法や、背景内の「表示エリア」を設定する方法をお話しました。例えば640X480ピクセルの単色背景を作り、表示エリアを320X240ピクセルに設定して、その真ん中にキャラクターを置きます。(図8)この状態で動作確認し、キャラクターをキーボード操作で移動します。すると、一度表示エリアからはみ出したキャラクターは、操作を続行するとそのまま消えて行ってしまいます。これではゲームとして成立しません。キャラクターが表示エリアからはみ出しそうになったら背景をスクロールさせ、移動しているキャラクターをいつでも表示エリア内にとどめておく必要があります。任天堂のスーパーマリオブラザーズの背景横スクロールを思い出していただくと分かり易いかもしれません。キューティマスコット++には、これを実現するために「自動スクロール」という機能が用意されています。
メインキャラクターを選択し、情報ウィンドウの「移動関係」項目の「移動枠内で止まる」をチェックします。まずこの設定により、キャラクターは背景からはみ出すことを禁止されます。つまり、背景の右端まで来たら、いくら右側へ進む操作をしてもその位置から動かないということです。続いて「自動スクロール」をチェックしてください。(図9)その横のカラムには1回のスクロールで何ピクセル背景を動かすか(スクロールの幅)を入力します。この数値を大きくすると一度に切り替る範囲が広がりますが、キャラクターの移動距離とのバランスが悪いと画面がチラつくことがあります。スクロール幅には、キャラクターがワンステップで移動する距離と同じ値を入力されることをお勧めします。(図10)
ここまでの設定が終了したら、実際に自動スクロールがうまく機能するかどうか試してみましょう。背景が単色のままでは、本当にスクロールしているのかどうか判断できませんので、とりあえずゲームとは関係ない画像を背景として代用してみます。「表示エリア」は背景の1/4サイズとして、その中心に配置します。(図11)操作するキャラクターは表示エリアの真ん中に置き、相対的な位置を見るために、もうひとつの動かないキャラクターを近傍に置きます。この状態で動作確認を行い、キー操作でキャラクターが表示エリアの端に来た瞬間に、背景が自動スクロールすればOKです。(図12)スクロール幅やキャラクターの移動距離を色々と変更して、操作しやすい条件を見つけ出してください。
●ゲーム情報の表示
マスコット情報ウィンドウの「移動関係」の残りの項目についても解説しておきます。まずは「障害物は通過できない」オプションについてです。メインキャラクターと、先ほど位置関係を調べるために表示エリア内に置いたキャラクターの両方に対して「障害物は通過できない」をチェックしてください。すると、メインキャラクターが移動してこのキャラクターに衝突すると、行く手をふさがれてそれ以上進めなくなります。ちょうど「移動枠内で止まる」をチェックし、キャラクターが背景の四隅に衝突した時と同じ状況です。この設定は、ゲーム実行中にメインキャラクターに対する障害物を設置したい時に役立ちます。
次は「移動枠の拡張」です。これには左右と上下の幅をそれぞれピクセル単位で入力します。値はマイナスでも構いません。例えば「移動枠内で止まる」がチェックされており、それぞれに-20を入力したとします。すると、背景の左右上下20ドット手前でキャラクターの移動がストップすることになります。つまり、キャラクターの進入禁止エリアが背景の回りに一定幅だけ設定されたことになるのです。逆に20を入力すると、キャラクターは背景から20ドットまではみ出すことができます。よほど特殊なことをしないかぎり、普通は両カラムともゼロを入力しておけば良いでしょう。(図13)
さて、最後は「スクロール対象外」オプションです。このオプションをチェックされたキャラクターは、背景スクロールが起こっても、背景とともに移動しません。つまり、かならず表示エリア内の同じ場所(動かさなければ)に固定されます。ゲームでは、倒した敵キャラの数や得点やエネルギー残量(ライフポイント)などの各種情報を画面上に図柄(グラフのバー、赤丸、星印)で表示することがあります。そうした表示用に使うキャラクターは、かならずこのオプションをチェックしておきます。(図14)このオプションを利用する場合に注意することは、各キャラクタのレイアー(上下階層関係)を考慮に入れることです。キャラクターは、そのフォルダがリストの前にあるものほど上側に表示されることになります。ですから、情報表示専用キャラクターはフォルダリストの一番後ろに移動しておくべきです。
●自作数値フォントの利用
ゲーム中、情報を絵柄ではなく「数値」で表示したい場合があります。残り時間とかハイスコアーなどがそうですね。キューティマスコット++には、文字列や数値を表示する機能があることを以前に解説しました。(図15)表示させる文字列は表示エリア内固定ですので、背景がスクロールしても移動することはありません。表示用フォントには、Macintoshのシステムにインストールされているすべての書体を利用できます。文字のサイズ、スタイル、カラーも自由に選べます。ところが、こうした一般テキスト用フォントを使うと見栄えもカッコ悪くゲームの雰囲気に合いません。ゲームにマッチした素敵なフォントを探して利用しても良いのですが、大きな問題がひとつあります。つまり、ゲームを遊んでくれるユーザのMacintoshに、そのフォントがインストールされていないと文字表示ができないということです。
キューティマスコット++の起動アプリ内に使用フォントを内蔵してしまえば問題ないのですが、著作権の問題上実現は不可能です。そこで、マスコット++には、マスコットのセル画像をフォントに代用してしまう特殊な機能があります。この機能を利用すれば、ゲームにマッチした好みのフォントが作成できます。ただし、この機能で作成できるフォントは0から9までの数値のみです。アクションゲーム中にリアルタイムで表示される文字列はほとんど数値ですので(アドベンチャーゲームの会話内容などは別ですが)この機能をうまく使えば、自作ゲームにマッチした派手な数値フォントを用意できることになります。
まず、数値フォントの作り方を解説します。フォント用として使うマスコットフォルダを新規作成し、情報ウィンドウで「起動時に表示しない」をチェックしておきます。フォントは数字だけですので、10個のセル(0から9用)を作りグループ化します。フォントと認識させるためには、グループ先頭のセル名を「フォント」に数値を加えた名称に変更しておきます。例えば「フォント1」とか「フォント2」です(数値は半角)。セル名を区別すれば、ひとつのマスコットフォルダに複数の数値フォントを登録しておくことができます。後はペイントウィンドウでセルに0から9までのフォントを描きます。(図16)文字と文字の間のスペースも考慮して描いてください。また、まったく別のセル(フォルダも含む)に「フォント1」などの同じ名称が付いていると、そのフォントを探し出せなくなりますので(文字が表示されない)注意してください。
続いて、こうして作成したフォントを使って数値表示を実現します。プログラムの「全般」から「文字表示」を選び、指定した変数の中身を表示するようにセットします。(図17)この時の表示位置の座標値は「背景」ではなく「表示エリア」の左上が原点となりますので注意してください。また文字側の基点も文字列を矩形で囲った左上となります。座標値を入力したら、プログラムセルの一番右側にあるフォント選択アイコン(Aアイコン)をクリックし、フォント情報ダイアログをオープンします。(図18)まず「数値フォント用に作成したグループを利用」をチェックし、先ほど作成したフォントグループの名称と同じ番号を「フォント」に続くカラムに入力してください。これで動作確認を行い、文字列が自作数値フォントでちゃんと表示されれば大成功です。納得行くまでフォントの見栄えを調整しましょう。(図19)
●エピローグ
どうですか?いよいよゲーム開発をしているという雰囲気になってきましたね(笑)次回は「マスコットでゲームにチャレンジ!-その3」という題目で、ゲームのシナリオを完成させ、敵キャラクターを追加し、ダメージやポイントゲットについても考えてみたいと思います。今回お話できなかったエイリアスマスコットの活用方なども解説する予定です。お楽しみに!
copyright 2001 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp