2011年08月21日

乱数のコントロール

乱数のコントロール

ゲームにおいて乱数というのは多くの場面で使われています。テトリスで次にどんな形状が出現するか、RPGで敵にエンカウントするかどうか、シューティングで敵がどの方向に弾を撃つか。そのような場面で乱数が使われます。

しかし、乱数というのは偏りがあります。長いスパンでみれば、出現する乱数の数値は均一になると思いますが、一時的には偏ることがあります。例えば、テトリスでいつまでたってもテトリス棒が落ちてこない。あるいは、四角ばっかり落ちてくる、そんな経験はないでしょうか。これは乱数の偏りによるものです。

(これはこれで「良し」としても構いません。それに対する攻略も生まれます。)

乱数のコントロールは重要ですが、軽視されがちです。普通のプレイヤーであれば、気づいていないことも多いと思います。(逆にゲームをやりこんでいる人にとっては、乱数のことをすごく研究している人もいると思います。「電源パターン」と呼ばれる攻略法も存在します。)

具体例

テトリスで次にどんな形状が登場するか

昔のテトリス(ゲームセンターに置いてあるセガのテトリス:恐竜とかサルがでてくるやつ,初代ゲームボーイのテトリス)では、乱数により7種類のブロックが落ちてきます。そのため乱数の偏りを受けて、同一ブロックが連続して出現したり、逆に期待するブロックがいつまでも落ちてこないことがあります。

テトリスの場合は、7種類のブロックが均一に出現するのが良いはずです。

近年のテトリス(アリカのTGMシリーズ,DSのテトリスなど)では、独自のアルゴリズムにより偏りを無くすようにしています。アリカのTGMシリーズでは、過去4個の出現したブロックを履歴として記憶しておき、連続するブロックは出現しにくいようになっています。DSのテトリスでは、ブロックの種類を乱数で決めるのではなく、7種のブロックの順番を乱数で決めることで、出現率を一定にしています。

RPGで敵にエンカウントするかどうか

一般的にエンカウント率を設定することで調整します。が、調整したいのは、ある街からある街までの間に何回エンカウントするか、ということを決めたいわけです。10歩あたり1回のエンカウント、と決めたとしても、乱数の偏りによっては1回もエンカウントしないこともありますし、一歩歩く毎にエンカウントすることもあります。

かといって、10歩でエンカウント、と決めてしまうと揺らぎがなくなり、ゲームとして面白くなくなります。

そこで、エンカウント率を低く設定しておき、一歩歩く毎にエンカウント率を上昇させる。最大で10歩歩いたら確実にエンカウントする。などのようにすることで、乱数によるばらつきがありつつも、エンカウント回数を制御することができます。

他には、街の近くではエンカウントしづらい、洞窟などのダンジョンの中ではエンカウントしやすい、扉を開けた直後や画面切り替えの直後にエンカウントしやすい、敵から逃亡した直後はエンカウントしやすい、などといった調整を行ったりします。

シューティングで敵がどの方向に弾を撃つか

シューティングの敵キャラは、時にランダムで弾をばらまきますが、方向を乱数によって決めます。これが偏りがあると、簡単に「安全地帯」が生まれたり、逆に「脱出不可能」になってしまいます。

これを防ぐために、ある程度の範囲を絞って乱数を使います。例えば弾幕系シューティングなどで360度に弾をばらまくとき、乱数で360度を範囲に決めてしまうと、ある角度に偏った弾幕や隙間が生まれることがあります。そこで、10度ずつ36回に分けて乱数を使うと、乱数によるばらつきはありつつも、均等に360度にばらまくことができます。

最後に

冒頭にも書きましたが、乱数のコントロールは軽視されがちですが、重要です。乱数によるばらつきが大きくなれば、ゲームの難易度にも影響が出てきます。

重要なのは、制作側が意図した範囲内に乱数の結果を収めることと、コントロールしすぎてプレイヤー側が冷めない程度にすること、だと思います。(その調整が難しいのですが…)

良かったらクリックしてください
にほんブログ村 IT技術ブログ プログラム・プログラマーへ  人気ブログランキングへ

タグ:ゲーム制作
posted by among at 15:41 | Comment(0) | TrackBack(0) | ゲーム制作
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/47469174

この記事へのトラックバック