【サイトについて】
* RPGツクールMVを使った、ゲームを一層楽しくするためのアイディアや、豆知識、プラグインなどを紹介していきます。あくまで個人の考えに基づく記事ですので、参考程度にお読みいただければ幸いです。
<< MV1.0.1→1.1.0 Javascript変更部分 | main | こんなに面白いダメージ計算式の世界 >>
スポンサーサイト
0

    一定期間更新がないため広告を表示しています

    | - | |- |
    ストレスフリーなランダムエンカウントを目指す
    0
      ランダムエンカウントについて語ります。
      今回は完全に個人的な考えです。

      ランダムエンカウント」とは、モンスターの姿が見えずランダムなタイミングで出現するエンカウントシステムの事です。洞窟内をテクテクと探検していて唐突にドシャーン!という音と共に戦闘画面に切り替わるアレです。

      逆に敵の姿が見えていて、敵から当たりに来たり、こちらから敵に触れて戦闘画面に切り替わるシステムは「シンボルエンカウント」。どちらのエンカウント方式がプレイヤーに好まれているのか先日Twtiter上で集計を取ってみました所、この様な結果となりました。ジャン。



      圧倒的シンボルエンカウント人気・・!!

      「自分の好きなタイミングで戦闘が出来る」
      「見た目で敵の強さを判断出来るため、危険な場合は戦闘を避けられる」
      といった理由に加えて、
      「ランダムエンカウントが苦手」
      という理由も含まれている気がします。

      私自身も結構ランダムエンカウントが苦手でして、理不尽なエンカウント率にストレスが溜まる事があります。
      「は〜、いまの敵強かった〜。これでやっと先に進めるよ・・」
      と思った瞬間、1〜2歩進むとまた同じ敵と遭遇する、という事もあるあるです。
      もう勘弁してくれーーー!ってなりますよね。
      好きな市販ゲームをプレイしているのならまだしも、
      フリーゲームでは辟易して途中で投げ出される危険性だってあります。

      出ない時は全然出ないのに、出る時は本当によく出る。乱数というのは偏って当然のものなので、いかに敵出現歩数を5歩に設定しようが50歩に設定しようが100歩に設定しようが、2歩目3歩目で連続で出現する事はよくある事なのです。

      ただ、シンボルが見えている敵に当たって全滅した時は「くそ〜、今の奴に当たらなければ良かったなぁ」って考えるものですが、ランダムで全滅した場合だと完全に「運が悪かった」で済ませるしかなく、それが何となくやきもきするんですよね。「あの時自分がこうしていれば・・」という形での対策の立て様が無いぶん、ランダムエンカウントはかなりプレイヤーにとって理不尽なエンカウント方式と言えます。

      ■RPGツクールMVにおけるエンカウント率の調整方法

      各マップの編集画面を開くと、「敵出現歩数」という項目があります。



      この敵出現歩数を、例えば「10」に設定したとします。
      それは
      「大体10歩進むごとに敵が出ますよー」って、

      意味ではありません

      厳密には違います。
      ツクールMVの敵出現歩数の計算式はこんな形になっています。

      js/rpg_object.js  7535〜7538行目
      Game_Player.prototype.makeEncounterCount = function() {
          var n = $gameMap.encounterStep();
          this._encounterCount = Math.randomInt(n) + Math.randomInt(n) + 1;
      };

      青い行の中にある「Math.randomInt(n)」のnにあたる数値、
      それこそがマップの編集画面で設定した「敵出現歩数」なのです。

      Math.randomIntは(n)の乱数を算出する、という意味なので実際には
      (0〜n歩までの乱数)+(0〜n歩までの乱数)+1;
      マップ編集画面で敵出現歩数を10歩にした場合は
      (0〜10歩までの乱数)+(0〜10歩までの乱数)+1;
      となります。

      試しに私自身で0〜10までの乱数を10回ほどやってみました。
      乱数生成サイトで試せます。

      4, 1, 3, 1, 0, 2, 6, 3, 0, 4

      なんと、7以上が全然出ない!
      よりによって3以内の数値が5連続しているではないですか。
      (これが言いたいがために調整したわけじゃありませんよ!)
      この数値をツクールの計算式にあてはめると、

      (1) 洞窟に入って(4+1)+1 = 6歩目で出現
      (2) 1の敵を倒した後(3+1)+1 = 5歩目で出現
      (3) 2の敵を倒した後(0+2)+1 = 3歩目で出現
      (4) 3の敵を倒した後(6+3)+1 = 10歩目で出現
      (5) 4の敵を倒した後(0+4)+1 = 5歩目で出現

      という様に、(4)を除いてはかなり短い間隔で出現する事になりますよね。
      敵出現歩数は「大体10歩で敵が出現する」事を設定する項目ではなく、
      あくまで「乱数を振るための最大設定数値」でしか無いわけです。

      ランダムエンカウント方式において最もストレスがたまるのは、
      「今戦闘を終えたばかりなのに1歩動くだけで次の敵が出たよ」
      という状況が、連続する事では無いでしょうか?


      この状況を出来るだけ修正したいと思います。

      this._encounterCount = Math.randomInt(n) + Math.randomInt(n) + 1;

      この計算式の最後の「1」に着目してください。
      これは乱数の外側にある数値なので、この数値を10に変更する事で「乱数+乱数+10」となり、最低10歩は敵が出ないという状況を作ることが出来ます。実際私の作品「ナイトオブシンデレラ」ではこの数値に5(バージョン1.3.1以前は10)を入れ、最低5歩は敵が出ない様にしています。

      が、しかし、です。
      これはあくまで「1歩動くだけで敵が出たよ」という状況を避けただけに過ぎず、敵の出現歩数にパラつきがある事は変わっていません。敵出現歩数を「20」に設定している場所でも、(0〜20)+(0〜20)+5で、最短で5歩、最長で45歩ノーエンカウントで進めるという状況です。
      つまり物凄く乱数運が悪い人は「5歩進むごとに敵が連続で出る」というストレスの溜まる状況は変わっておらず、逆に沢山戦闘をしてレベルを上げたい人にとっては「30歩歩いても40歩歩いても次の敵が全然出ない」ので、これも逆にストレスが溜まる結果になります。最低歩数を増やした所で、バランスの悪さは変わらないわけです。

      これの解決策として、
      私は逆に「乱数の偏りを消すこと」で、ランダムエンカウントをストレスの無い方式にしてみたいと思います。はっきり言ってこれにより「いつ敵が出てくるのか」という緊迫感や面白味は減るかも知れませんが、そういった緊迫感に重きを置く作品では無いので、次回作でやってみます。
      もちろんあくまでこの考えは主観なので、乱数は偏るものだと割り切って連続する戦闘を楽しめる人には非常に余計な計らいですが、個人的にはこれがベストなエンカウントバランスだと思っているので、あくまで参考程度に見て頂ければと思います。

      計算式は次の様に変えます。

      this._encounterCount = Math.randomInt(5) + n;

      0〜5歩の乱数にnを足します。
      敵出現歩数を「10」にセットしたフロアでは、10〜15歩。
      敵出現歩数が「20」にセットしたフロアでは、20〜25歩。
      つまり、本体のマップ編集画面側で設定する数値の方を最低ノーエンカウント保証歩数とし、ダンジョンごと・フロアごとに出現歩数は積極的に変えていきます。これで前のエンカウントから次のエンカウントまでの間隔はほぼ均等になるので、「うわぁ・・敵出すぎ」と感じることは少なくなりますし、「ここ敵全然出ないよ」と感じることも少なくなると思います。

      こんな計算式だけを見ていてもピンと来ないと思いますので、
      ブラウザでエンカウントチェック出来る簡単なゲームを用意してみました。
      是非一度お試しいただければと思います。

      ブラウザでプレイする
      (Google Chrome / Safari推奨)

      「最適な出現歩数」のフロアが、この最後の計算式を入れたもので、本体側では敵出現歩数「15」を入れています。

      好みや乱数の出方によっては一番上の「出現歩数10歩」でもバランスが良いと感じるかも知れませんね。ランダムにせよシンボルにせよ、戦闘頻度のバランスの好みは個人差があるので、その調整は永遠の課題です。
      | 戦闘 | 11:53 |- |
      スポンサーサイト
      0
        | - | 11:53 |- |
        PR