【最終回】
ゲームで扱う数値のアレコレ(後編)
乱数でゲームをエキサイティングに!
(04/07/15)
ランダム要素がゲームを盛り上げる
振るといつも同じ目が出るサイコロがあるとしよう。このサイコロで双六を遊んだら、いつも決まったマスにしか止まれず、誰が遊んでも同じ結果にしかならない。サイコロの目がランダムに出るからこそ、双六は手軽に楽しめるゲームとして成立しているわけだ。
双六ほどではなくても、ランダムな要素はゲームに変化を与え、エキサイティングな展開をもたらす。これは、コンピュータゲームでもそう。たとえば、RPGでマップを歩いているときに急にモンスターと出くわすイベントが発生すると、テンションがぐっと高まるよね? これもランダムな要素をうまく使い、ゲームが単調になることを防いでいるひとつの例と言える。
今回は、こうしたランダムな展開を実現するための要素、“乱数”について説明しよう。言葉の響きは、前回説明した“変数”にちょっと似ているが、内容はまったく違うぞ。
乱数は、カンタンに言えば“でたらめな数”のこと。乱数を使うと、範囲を指定した数のなかからランダムに1つの数を選び出すことができるのだ。
たとえばサイコロの場合、6つの面にそれぞれ1~6の目が刻まれており、転がすといずれかの目が出る。つまりサイコロは、1~6の範囲で乱数を発生させられる道具、と言えるだろう。
乱数を使うと何ができる?
それでは、乱数の使い方を、突然モンスターと出くわすイベントを例に考えてみよう。
プレイヤーがマップ上を一定距離歩くたびに、サイコロを振って乱数を発生させる。出た目をチェックして、2~6の場合は何も起きないが、1の場合はモンスターが出現して戦闘となる。
上の例では、“発生した乱数が2以上かどうか”が分岐の条件となり、マップ上でモンスターと出会うか出会わないか、展開が2通りに変化している。つまり乱数を使えば、プレイヤーが同一の行動をしても、結果がランダムに変化するイベントを作り出すことができるのだ。プレイヤーは、移動するたびにモンスターが出たり出なかったりするので、高い緊張感を味わうことができるだろう。
さらに乱数を使い、上記の戦闘イベントにもっとランダムな変化を加えてみよう。
サイコロの目で1が出てモンスターが出現したら、もう1回サイコロを振る。出た目が奇数なら“コボルド”が登場し、偶数なら“ゴブリン”が登場する。
このように条件分岐させれば、戦闘画面が表示されるまでどのモンスターと出くわしたのか分からず、戦闘イベントがよりドキドキ感の高いものになるだろう。
乱数でモンスターが変わるイベント
それでは、いつものように「RPGツクールXP」の体験版で、乱数を使ったイベントを作ってみよう。
□RPGツクールXP(体験版のダウンロードページ)
http://www.enterbrain.co.jp/digifami/products/rpgxp/download.html
今回作るのは、出現するモンスターがランダムに変化するイベントだ。前回制作したイベントでは、マップ画面上のモンスターに接触すると、必ず“コボルド”が2匹登場した。今回は、モンスターに触れた時点で1~2の乱数を発生させ、1の場合は“コボルド”2匹、2の場合は“コボルド”と“ゴブリン”がそれぞれ1匹ずつ敵として現れるものを作ってみよう。
|
 |
マップ画面でモンスターと接触 |
乱数が1の場合  |
|
乱数が2の場合 |
 |
|
 |
“コボルド”が2匹出現 |
|
“コボルド”と“ゴブリン”が出現 |
|
今回のイベントは、前回作成したイベントの改良版だ。まず、前回の作成手順にならって、イベントを最後まで作成しておこう。
□前回のイベントの作成手順
http://www.forest.impress.co.jp/article/2004/07/08/gameiroha03.html#process
制作の流れ
|
|
 |
|
最初に変更するのはモンスターのイベントだ。マップに配置したモンスターのイベントのどれか1つをダブルクリックし、“イベントの編集”ウィンドウを呼び出す |
1~2の乱数を発生させる処理を追加するぞ。“実行内容”欄の一番上の行“バトルの処理:コボルド*2”をダブルクリックして、イベントコマンドウィンドウを開く |
 |
|
 |
|
そして[1]タブにある[変数の操作]コマンドをクリックし、“変数の操作”ウィンドウを呼び出そう |
“変数の操作”ウィンドウが開いたら、“変数”欄にあるラジオボタンで[単独]を選び、右側にある[>]をクリック |
 |
|
 |
|
すると“変数”ウィンドウが開くので、使用する変数を選択。[0001]はすでに使用しているので[0002]を選び、[名前]欄に“モンスターの種類”と入力 |
[OK]ボタンを押して“変数の操作”ウィンドウに戻ったら、変数“0002:モンスターの種類”に対する“操作”の種類を選ぼう。今回は[代入]のままでOK |
 |
|
 |
|
次は“オペランド”欄。今回は1~2の乱数を発生させるので、ラジオボタンで[乱数]を指定し、左欄に“1”、右欄に“2”と入力しよう |
乱数が1の場合と2の場合で、現れるモンスターが変わる処理を記入するぞ。まず“実行内容”欄2行目をダブルクリックして、イベントコマンドウィンドウを開こう |
 |
|
 |
|
[条件分岐]コマンドをクリック後、ラジオボタンで[変数]を指定。続いて[>]を押して変数ダイアログを開き、“0002: モンスターの種類”を選ぶ |
次に、“乱数で1が出たかどうか”を分岐の条件に設定するぞ。まず、ラジオボタンで[定数]が選択されていることを確認して、右隣の数値欄に“1”を入力 |
 |
|
 |
|
数値欄の下にあるプルダウンメニューは、デフォルトのまま[と同値]でOK。そして“条件に当てはまらない場合の処理を設定”チェックボックスをONにしよう |
以上で、“イベントの編集ウィンドウ”の“実行内容”欄に、“条件分岐”“それ以外の場合”“分岐終了”の3つが追加されるはずだ |
 |
|
 |
|
乱数で1が出たときの処理を記述するぞ。“条件分岐”のすぐ下の行をダブルクリックしてイベントコマンドウィンドウを開き、[3]タブを選ぼう |
左上にある[バトルの処理]コマンドをクリックし、出現するモンスターを[001:コボルド*2]と指定しよう |
 |
|
 |
|
次に、乱数で2が出たときの処理を記述しよう。“それ以外の場合”のすぐ下の行をダブルクリックし、先ほどと同様に[バトルの処理]コマンドをクリック |
今度は“バトルの処理”ウィンドウで、[003:ゴブリン,コボルド]を指定。以上で、乱数に関する設定は完了だ |
 |
|
 |
|
最後に、今回のイベントに無関係な処理を削除するぞ。“分岐終了”の下にある“バトルの処理:コボルド*2”の行を選び、[Del]キーなどで削除可能だ |
マップ画面に戻り、今編集したイベント以外のモンスターのイベントを全削除しよう。そして今回編集したイベントをあらためてコピーすれば完成だ |
 |
|
 |
|
前回と同じく、マップ上にいるモンスターに触れると戦闘が発生する。このときに遭遇するモンスターが、乱数によって変化していることが分かるかな? |
戦闘が終わった後に[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)
「RPGツクールXP」製品版プレゼント
当選者発表
(04/07/22)
「RPGツクールXP」製品版プレゼントの当選者は、厳正なる抽選の結果、下記のとおりに決定いたしました。当連載について様々なご感想をお寄せいただき、誠にありがとうございました。
愛知県 小川 拡 様 |
秋田県 猪股由子 様 |
東京都 山崎貴彦 様 |
奈良県 釘嶋欽太 様 |
東京都 理透太郎 様 |
ご当選、おめでとうございます。
オリジナルRPGを簡単に作成できる「RPGツクールXP」製品版プレゼント
ご応募受け付けは締め切りました
(04/07/20)
(株)エンターブレイン様のご提供により、7月22日に発売される「RPGツクールXP」の製品版を5名様にプレゼントいたします。
 |
「RPGツクールXP」 |
【応募方法】
電子メールでご応募ください。
件名を「RPGツクールXP」プレゼント希望、本文には、送付先の郵便番号と住所(勤務先でもけっこうです。宅配便の受け取れる場所を指定願います)、名前、電話番号をご記入のうえ、「ツクールXPでおぼえるゲーム制作のイ・ロ・ハ」についてのご意見・ご感想をお書き添えください。
ご応募受け付けは締め切りました
【メール宛先】forest-present@impress.co.jp
【応募締切】2004年7月20日(火)正午到着分まで
【当選発表】2004年7月22日(木)窓の杜、当ページ上にて
■おひとり様1通のご応募でお願いいたします。複数の応募を確認した場合、当該メールは無効といたします。
■発表の際は、「東京都 窓野 杜太郎さま」というような形で、お名前を掲載いたします。なお、ご応募いただいた方の個人情報は発送のためだけに使用し、当選者決定のあとにデータは削除します。
|