窓の杜Logo
バックナンバー
・ 2004年7月 ・
最終回:ゲームで扱う数値のアレコレ(後編) (04/07/15)
第3回:ゲームで扱う数値のアレコレ(前編) (04/07/08)
第2回:ゲームの進行を管理するもの、フラグ (04/07/01)
・ 2004年6月 ・
第1回:条件分岐は、すべての動作の基本だ (04/06/24)

ツクールXPでおぼえるゲーム制作のイ・ロ・ハ
【第2回】

ゲームの進行を管理するもの、フラグ

フラグはゲームのマネージャー

(04/07/01)

ときどき見かける(?)フラグの話

A君  昨日、かわいい女のコがケータイ落とすところ見ちゃってさ~

B君  で、どうしたの?

A君  すぐに教えてあげたよ。そしたら、『ありがとう』って

B君  それだけ?

A君  それだけ

B君  あ~あ、どうしてそこで名前とか電話番号聞いて、“知り合いフラグ”を立てておかないんだ。もったいない!

 インターネットのチャットルームで、こんな調子の会話を見ることがある。B君は上記の会話で、『“知り合いフラグ”を立てる』を『知り合いになる』という意味で使っている。だが、唐突に“フラグ”と言われても、困ってしまう人の方が多いのではないだろうか?

 “フラグ”は英語の“flag”、つまり旗のことだ。しかし、これをさっきの会話にそのまま当てはめると『旗を立てる』となり、さっぱり意味が分からない。それもそのはず、この会話で使われているフラグとは、ゲームなどのプログラムで使う専門用語なのだ。

フラグとは、条件分岐のきっかけとなる“スイッチ”である

 フラグは、前回で説明した“条件分岐”に勝るとも劣らぬ、ゲームの重要要素だ。簡単に説明すると、フラグとは、条件を満たしたかを判定するON/OFFスイッチのようなもの。プログラムは、フラグがONなのかOFFなのかをチェックし、イベントを発生させるかどうかを決める。

 前回の条件分岐では、自分の選択が条件となり、その後の展開が分かれた。しかし今回学ぶ“フラグ”では、フラグのON/OFFが条件となり、ユーザーは選択しなくても展開が2とおりに分岐するわけだ。


フラグとは?

 先ほどのA君の体験を借りて、条件分岐とフラグの例を出してみよう。まずは前回 の条件分岐に当たる部分から説明する。

 女のコがお礼の挨拶をした場面で、女のコの連絡先を聞けば、女のコとメールアド レスを交換することができる。だが、何も尋ねなければ、女のコのメールアドレスは 手に入らない。

 キミの行動が条件となり、結果が2とおりに分岐した。これはまさしく、前回説明 した条件分岐に当たるよね? そしてこの先が、今回覚えてほしい、フラグによる条 件分岐の説明だ。

 数日後、ケータイを落とした女のコが、『合コンに呼べる男のコの知り合い、いな い?』と友人に尋ねられたとする。メールアドレスを交換していれば、キミのことを 思い出し、キミ宛てに合コンの誘いを送るかもしれない。しかし、キミとメールアド レスを交換していなければ、女のコは『呼べそうな知り合いはいないなぁ』と友人に 答え、それっきりだろう。

 つまり、女のコの身に“男性の知り合いが必要だ”というイベントが発生したとき に、“メールアドレスの交換”というフラグがONになっていれば、キミのもとに誘い のメールが届く。反対にフラグがOFFならば何も届かない。以上が、フラグを使った 条件分岐の例だ。

 ゲームでは多くの場合、何かのイベントに出くわしたり、何かのアイテムを手に入 れたりすることで、フラグがONになる。ちなみにプログラムの世界では、フラグが OFFからONになることを、本物の旗になぞらえて“フラグが立つ”と表現するぞ。

 フラグは1つだけでなく、複数使用するのが普通だ。1つ目のフラグが立ったらイベン トを起こし、そのイベントが終わったら2つ目のフラグを立てる、という具合にイベン トを順序よく並べていくことで、物語は進展していく。いわば、フラグこそがゲーム の進行を管理する“マネージャー”なのだ。

 さて、もう1度冒頭のA君・B君の会話を見直すと、B君は『女のコの連絡先を聞いて 知り合いになっておけば、何か新しい進展があったのかもしれないのに』とA君に忠 告していたことが分かる。つまり、日常の出来事をゲームの攻略風に話していたわけ だ。

フラグはこんな使い方をする

 ここで、前回「RPGツクールXP」で作ったイベントを思い出してほしい。“村人の 頼みを聞くとポーションがもらえる”というものだったが、テストプレイして気づい たことはないだろうか? そう、何回話しかけても、村人が同じことしか言わないの だ。つまり、頼みを聞く方の選択肢を選べば、何度でもポーションがもらえてしまう ことになる。これはおかしいよね?

 このような場合には、フラグを使えばいい。まず、ポーションをもらったときに、 “ポーションをもらった”というフラグを立てるようにする。そして、このフラグが 立っている場合は、会話の内容を別のものに変えるのだ。

ゲームの進行によって、会話の内容が変わるイベント

 それでは、村人との会話イベントを再び「RPGツクールXP」で作ってみよう。大まかな流れは、こうだ。

 草原に立っている村人に頼みごとをされ、『はい』と答えるとポーションがもらえる。ポーションをもらった後にもう一度村人へ話しかけると、今度は村人のセリフが『頼みを聞いていただき、ありがとうございました。』に変化する。

“ポーションをもらった”フラグがONかOFFか?
“ポーションをもらった”フラグがONかOFFか?
[ON]     [OFF]
『ありがとう』と言われてポーションがもらえる   『私の頼みを聞いていただけませんか?』
『頼みを聞いていただき、ありがとうございました。』   『私の頼みを聞いていただけませんか?』

 今回のイベントは、前回の改良だ。まずは、前回の手順を参照して、ポーションをもらうところまでイベントを作ってほしい。今回は、その続きからの手順を説明するぞ。ちなみに、「RPGツクールXP」ではフラグのことをそのまま“スイッチ”と呼ぶ。

制作の流れ

まず、メイン画面の[モード]メニューから[イベント]を選ぶ。次に、前回作成した“ポーションを渡す村人”のイベントをダブルクリックしよう
“実行内容”の[はい]の場合にイベントコマンドを追加するぞ。“アイテムの増減:[ポーション]+1”の下の行にカーソルをもっていき、ダブルクリックする
まず、メイン画面の[モード]メニューから[イベント]を選ぶ。次に、前回作成した“ポーションを渡す村人”のイベントをダブルクリックしよう “実行内容”の[はい]の場合にイベントコマンドを追加するぞ。“アイテムの増減:[ポーション]+1”の下の行にカーソルをもっていき、ダブルクリックする
“イベントコマンド”ウィンドウが開いたら、ウィンドウ右上の[スイッチの操作]コマンドを選択しよう
“スイッチの操作”ウィンドウが開いたら、“スイッチ”欄にある[単独]のラジオボタンを選択。続けて右側の[>]ボタンから“スイッチ”ウィンドウを開こう
“イベントコマンド”ウィンドウが開いたら、ウィンドウ右上の[スイッチの操作]コマンドを選択しよう “スイッチの操作”ウィンドウが開いたら、“スイッチ”欄にある[単独]のラジオボタンを選択。続けて右側の[>]ボタンから“スイッチ”ウィンドウを開こう
使用するスイッチを選択するぞ。右欄にある[0001]を選択し、下端の[名前]欄に“ポーションをもらった”と入力。名前を入力したら、[OK]ボタンを押す
すると、再び“スイッチの操作”ウィンドウに戻るので、[操作]ラジオボタンが“ON”側になっていることを確認して、[OK]ボタンを押そう
使用するスイッチを選択するぞ。右欄にある[0001]を選択し、下端の[名前]欄に“ポーションをもらった”と入力。名前を入力したら、[OK]ボタンを押す すると、再び“スイッチの操作”ウィンドウに戻るので、[操作]ラジオボタンが“ON”側になっていることを確認して、[OK]ボタンを押そう
イベントコマンドが追加されたら、続いてポーションをもらったときの処理を作っていくぞ
左上の[イベントページ作成]ボタンを押すと、ウィンドウにタブが追加され、新しいイベントを設定できる
イベントコマンドが追加されたら、続いてポーションをもらったときの処理を作っていくぞ 左上の[イベントページ作成]ボタンを押すと、ウィンドウにタブが追加され、新しいイベントを設定できる
まず、条件”欄左上の[スイッチ]チェックボックスにチェックを入れよう。すぐ右側のプルダウンメニューは、[0001:ポーションをもらった]のままでOK
次に、“グラフィック”欄で村人の姿を選び、“トリガー”欄のラジオボタンで[決定ボタン]を選択。あとは、ポーションをもらったときの会話を設定するだけ
まず、条件”欄左上の[スイッチ]チェックボックスにチェックを入れよう。すぐ右側のプルダウンメニューは、[0001:ポーションをもらった]のままでOK 次に、“グラフィック”欄で村人の姿を選び、“トリガー”欄のラジオボタンで[決定ボタン]を選択。あとは、ポーションをもらったときの会話を設定するだけ
“実行内容”欄をダブルクリック後、[文章の表示]コマンドから“頼みを聞いていただき、ありがとうございました。”と入力。以上で設定は終了だ
さっそくテストプレイで動作を確認。ポーションをもらうと村人のセリフが変化するはず。なお、テスト中に[F9]キーを押すと、スイッチの状態を確認できるぞ
“実行内容”欄をダブルクリック後、[文章の表示]コマンドから“頼みを聞いていただき、ありがとうございました。”と入力。以上で設定は終了だ さっそくテストプレイで動作を確認。ポーションをもらうと村人のセリフが変化するはず。なお、テスト中に[F9]キーを押すと、スイッチの状態を確認できるぞ

次回予告

 さてみんな、“フラグを理解した”というフラグは立ったかな? 条件分岐とフラグさえ分かれば、ゲーム制作の“イロハ”をマスターするまであと一息。次回は最終回。今回のフラグからさらに一歩進んだ“変数”について説明するぞ。お楽しみに!


□RPGツクールXP(製品の紹介ページ)
http://www.enterbrain.co.jp/digifami/products/rpgxp/
□デジタルファミ通ホームページ
http://www.enterbrain.co.jp/digifami/
□窓の杜 - 【NEWS】エンターブレイン、“RPGツクール”の最新作「RPGツクールXP」の体験版を公開
http://www.forest.impress.co.jp/article/2004/06/22/rpgxptrial.html

(文:矢野 厚  イラスト:AQUATIC Design)


トップページへ
ツクールXPでおぼえるゲーム制作のイ・ロ・ハINDEX へ
Copyright (c) 2004 Impress Corporation All rights reserved.
編集部への連絡は お問い合わせはこちらをクリック まで