レベルごとの難度設定
今まではレベル(面、ステージ、ラウンド)の概念が無いゲームを主に想定して述べたが、複数のレベルで構成され、それぞれのレベルの難度を設定したい場合、どのような難度設定が考えられるだろうか。
レベルの数が進むたびに少しずつ難しくならないとハリが無い。かといって単に線形に難しくなっていくとメリハリが無い。それなりの波がありながらも確実に難しくなっていくレベルをどうすれば作れるか。一例として、以下のグラフを使う方法を示す。
横軸は、0 から 1 の値をランダムに返す random
関数から得られる数値を表している。縦軸は難度で、0 が最も簡単、1 が最も難しい状態を示している。レベル開始前に random
関数から一つ値を取得し横軸の値とし、対応する難度をそのレベルの難度として採用する。
このグラフの難度は
pow(random(), 100 / ([現在のレベルの数] + 1))
という式で算出されている。レベルの数が少ないうちは難度の低い下方向に張り付き、レベル数が進むと上へ膨らむようになっている。そのため、先のレベルになるとより高い難度が設定されやすくなる、まれに random
の返値によっては、そのレベル数にしては非常に簡単だったり難しくなったりする。
また、この難度を複数のパラメタに対して適用することもできる。例えば、
- 敵の数
- 敵が弾を撃つ頻度
- 弾のスピード
などのいくつかのパラメタに対してそれぞれ random
を用いて上の式を当てはめた難度を設定する。そうすることで、あるレベルでは敵の数は非常に多いが弾はあまり撃たないとか、敵は一人しかいないが非常に速い弾を多数撃つとか、より複雑なバリエーションが得られる。
ゲーム後半のレベルになると、全てのパラメタが難度 1 に張り付きがちになるので、全般的に難しいレベルが連続するようになる。しかし難度自体は 1 が上限なので、単に線形に難度を上げていくよりは一定の制約を設けることができる。
この方法には、最終的には全てのパラメタが難度 1 に張り付いてしまい無限に難しくなるレベルは実現できない、その 1 に張り付いた状態の難度はどの程度が妥当なのかの調整が難しい、などの欠点もある。
他の方法を利用する場合でも、難度上昇が単調にならない工夫は重要である。プレイヤーに与える緊張感に緩急を与えることで、より展開が楽しめるゲームにできる。