モンハン用語/お守りテーブルバグ

Last-modified: 2023-12-05 (火) 20:04:39

MH3GとMHRiseにおける、お守りのテーブルに関する不具合。

目次

概要

MH3G

  • お守りは鑑定時に乱数を用いてランダムに各種値が設定され護石へと変化しているが、
    この乱数の周期性・規則性から、あらかじめ値が設定された護石の一覧表から抽選されているように見える。
    この一覧表のことをテーブルと呼ぶ。
    MHP3ではゲーム起動時にテーブルが変わるため、あるタイミングで入手可能な護石が変わる事が証明されていた。
    また、このテーブルを知っていれば、どのタイミングでどのお守りが手に入るか予測することが可能である。
  • MH3Gでも同様のシステムが使われているとみられているが、
    発売から2,3ヶ月ほどして、2chスレでの多数の利用者による検証により
    テーブルはキャラ生成時に固定され、変更は不可能」という仕様となっているらしいことが明らかになった。
    わかりやすく言えば、プログラム上存在しても、各セーブデータによって出るお守りと
    出ないお守りが存在する形になっているのである。
    言うまでもなくゲーム開始後にこのテーブルを変更することは出来ないため、
    キャラデータを作成した時点で、今後入手できるお守りの種類が事実上決定されることになる。
    • このため、MH3Gではセーブデータによって実現可能なスキル構成が異なる。
      とりわけ神おまが必要なスキル構成はテーブルに大きく左右されるため、
      スキルシミュレーターを利用する際は注意されたい。
  • これだけでも神おまにこだわる人には死活問題だが、仕様だと強弁できないレベルではない。
    しかし、本当の問題はここからだった
    その後のお守りスレへの報告とMHP3のテーブル仕様からの推測により、
    各お守りから出る護石のバリエーションが54or200種類しかない上に、
    「良おま」「神おま」と呼べる高性能お守りが一切出ないという
    恐怖のテーブル群(通称「希少テーブル」又は「はぐれテーブル」)が存在することが明らかになったのである
    なお悪いことに、この「はぐれテーブル」の中には
    • 太古の塊から「凄く風化した鎚」が出ない
    • 太古の塊から「凄く風化した片手剣」と「神ヶ島」が出ない
    といった武具作成に支障をきたすレベルの極悪テーブルが含まれており、
    プレイデータ作成時に上記のテーブルを引いたが最後、
    そのセーブデータで特定のアイテムを入手することは絶対に出来なくなる。
    • このはぐれテーブルを厄介足らしめているのは、
      正規の方法ではぐれテーブルを見分ける手段が存在しない上に、
      データ作成時に決定されるため、後々発覚したとしても取り返しがつかないという点である。
      テーブルの存在を知らない初心者やカジュアルプレイヤーは、
      自らのデータが恐ろしいはぐれテーブルに属している可能性など知る由もないため、
      出ないことが定められているお守りやアイテムを求めて延々とピッケルを振るい続けることになる可能性が高い。
    いくらなんでもこのような異常なテーブルが割り振られるのを仕様と捉えるのは無理があることから、
    MH3Gのテーブル変更不可はバグであるとの見方が確実視されるようになり、
    当初騒動となったお守りの名を取って「お守りテーブルバグ」と通称されるに至った。
  • 「希少テーブル」と称されるだけあり、上記のテーブルの出現率は非常に低い
    データ作成時に希少テーブルが割り当てられる確率は、大まかに言って1%以下である。
    確率的には殆どのデータは通常テーブルに属するため、プレイヤー諸氏は安心されたい
    (通常テーブルでもある程度は当たり外れがあるが)。
  • 同じ乱数を使っていながらP3で問題が起こらなかった理由としては、
    「起動するたびに乱数が初期化される(=テーブルが変わる)仕様であった」ことと、
    「初期値として参照する数値に、偶然にも希少テーブルに該当するものが含まれていなかった
    (=希少テーブルが選ばれない)ことの2点が挙げられる。
    このどちらか一方でも満たしていれば3Gでもさほど問題にならなかっただろうことを思えば、
    まさに悪魔のような偶然がもたらした不幸であったと言わざるをえない。
  • なお、次回以降の作品では、セーブデータのロード時やクエストからの帰還時に
    逐一テーブルが決定される仕様であることが判明しており、特に問題は発生していない。

カプコンの対応

  • カプコンはこれをバグとして認めていない
    そもそも原因が明らかで動かぬ証拠を出せるピアスバグと違い、
    このバグを証明すること自体が「たまたま出ない」のではなく「確実に出ない」ことを証明するという
    典型的な悪魔の証明であるため、カプコンに証拠を突きつけることが極めて困難だからである。
    当然ながら修正パッチなども配信されておらず、公式からの対応は実質的にないと言ってよい。
  • なお、本件は後に発売されたHDverでも修正されていない。
    3DS・WiiU間でデータ移行してもテーブルが変わったという報告は今のところない。
    カプコンがバグを認めていないのだからある意味当然ともいえるが、
    救済を求めているプレイヤーからすれば釈然としない事だろう。

対策

  • 結論から言うと、上で挙げた異常なテーブルを引き当てた場合最初からやり直す以外に解決法がない
    一応ながら、現在では有志によってテーブルを割り出すツールが作られており、
    またテーブル決定の法則性もある程度は解ってきているため、
    それらのテーブルを回避したり、目当てのテーブルを引いたりすることが可能となっている。
    まあ、既にやり込んでしまったデータがどうにもならないのは変わらないのだが……。

MHRise

  • 当初、深刻なバグとして「錬金して出てくるお守りが何個かのセットで完全にループする」という現象が報告されていた。
    全く同じお守りしか出なくなるのは明らかに偶然とは言えず、この点に関しては公式の見解待ちとなっていた。
    その後発売から2週間弱が経過した4/8、ついに公式からのアナウンスとして
    ループバグの存在が認められ、調査されることが決定した
    その後、4月28日に配信されたタイトルアップデートVer.2.0で修正されたことが表明されている
    • 修正後の仕様に関しては、護石を受け取った後にセーブしてリセットすると護石の内容が変わる
      というものになっていることが検証されている。
      護石の数は何でもよく、例えば幽玄で50個錬金して内容を確認した後に
      セーブしないでリセットし、今度は1個だけ錬金して受け取ってセーブ&リセットをすると、
      次回の2個目以降は全く別のものに変わっている。
      恐らく、この手順を踏むとSeed値が変更されるようになったのではないかと推測されている。
      • Seed値とは乱数を生成する際に「種」となる数値のことで、
        ここでは錬金に用いられる乱数の基となる数値といった意味合いである。
        乱数は一種の漸化式によって算出されており、ある値からその後導かれる値は一義的に決まってしまう。
        これがゲーム上どう影響するかと言うと、例えば錬金で最後に用いられた乱数が保存などされているとして、
        次回の錬金時にそれを基に乱数が生成されればリセットしてもその後排出される護石の内容は変わらないという
        正にアップデート前の状況が起こり得るということである。
        それでは困るので最後に用いられた乱数以外を参照するような処理が追加されたのではないか、
        というのが「Seed値が変更されるようになったのではないか」の意味するところである。
    • 仮に、もしこの手順以外でSeed値が変更されないのであれば、
      リセットしないで錬金し続けると疑似乱数の性質上長期的にはループが発生し得る。
      ただ、1つのループから抜け出せないということは無くなった。
    • Switchはハード仕様上スリープモードが非常に扱いやすいので、
      長期的にリセットしないままプレイし続けるということが現実的に起こりうる。
      たまには気分転換も兼ねてリセットを掛けると良いだろう。
Ver.2.0で修正済みの内容
  • 上記の「お守りが何個かのセットで完全にループする」というものに加え、
    数千個単位で取得お守りのグループが固定される、
    上記のMH3Gのものに近いタイプのものも存在するとみられている。
    当初「痛風テーブル*1」と「サスケテーブル*2」「壁面テーブル」をはじめとしていくつかのものが話題となったが、
    その時点では検証が十分ではなく、3Gのような「テーブル」と呼ぶのが厳密な意味で正しいのかも定かではなかった。
    2021/4/26現在では概ねどの初期値であっても上記の3つのテーブルのループのどれかに収束すると言われている。
    • なお壁面テーブルに関してはループ部分も含めて「壁面」と呼ばれるが、
      名前の由来となっている「壁面移動2弱点特効2スロット1」はループ前に存在しており
      初期値が違うと手に入らない可能性が高い。ややこしい。
      そのせいもあってか、ループ部分に特有な「弱点特効2スロット2」の護石が万恶之源*3と表記された
      海外産の詳細なフローチャートで出回ってからは「万悪テーブル(ループ)」と区別して呼ばれることも。
      「万悪之源」の字面的なインパクトの強さも多分に影響しているだろう。
      • 「万恶之源」とは、中国語で字面の通り「諸悪の根源」のこと。
        元々この護石の有無こそがバグの広まった切っ掛けであり、実に的確な表現である。
        国を跨いでもやっぱり弱点特効2スロット2は欲しかったらしい
    • 「錬金術・幽玄」でこれらのテーブルが確認されており、
      「錬金術・輪廻」ではそれとは異なるお守りが出現する模様。
    • 前述の公式からのアナウンスは「一定の順序で同じ護石が排出される事象」であり、
      こちらの「テーブル」のことも指している*4という解釈も可能ではあるのだが、
      当時は具体的な説明が為されておらず、対象に含まれているかは不明瞭であった。
      しかしその後追加のアナウンス*5が発され、マカ錬金に不具合があることが明言された。
      同時に「その不具合を除いてセーブデータによって特定の護石しか出現しなくなる仕様は存在しない」と発表。
      やや回りくどいが、要するに「特定の護石しか出現しなくなる不具合が存在する」という声明である。
      またVer.2.0で修正されることが明言された。
      • ややこしい言い回しが災いして「テーブルはデマだ」という宣言だと誤認する人もいるが、
        存在しないのは仕様であって不具合ではない。
        「特定の護石しか出現しないのは仕様ではない」と言い換えると理解しやすいだろう。
        数千単位の大きなループがテーブルになっているように見えているだけであり、
        本来想定していた動作では初めから3Gのようなテーブルは発生しなかったはずで、
        テーブルが存在していること自体が不具合であるという意味である。

余談

  • 上記のようなバグが話題になると度々
    「こんなバグを発生させる原因になるテーブル制はやめて、完全ランダムにすればいいのでは?」
    という意見が挙がるが、そもそもコンピュータプログラムで真の意味でのランダム性を再現する事はできない。
    これは現代のコンピュータの構造の限界*6であり、仮に世界最高峰のスーパーコンピュータを使っても
    計算式だけでは完全なランダムを作り出す事はできないのだ。*7
  • 詳細な説明は省かせて頂くが、ゲーム等では基本的に「疑似乱数」という仕組みを用いてランダム性を再現している。
    これにより一見するとランダムのように見える結果が発生するが、ある特定の計算式で求める以上
    一番最初に使用する数値(一般にSeed値と呼称される)が同じだと全く同一の結果が再現できてしまう。
    これを意図的に引き起こしたものが、いわゆる乱数調整である。
    • また、以上のように計算式を用いて疑似的にランダムを再現しているため、
      そもそもあらかじめ開発者が用意したテーブルというものは存在しないのであり、
      「テーブル制」という用語自体、実体の無いものを指しているという点に注意。
      Seed値から(この記事の例ではあまり質の良くない)計算式で導いており、
      さらにSeed値が完全に固定されているために作成される護石のパターンに限りがあり、
      何時どのような護石が作成されるかリスト化すれば簡単になぞれてしまうため、
      冒頭で述べたようにあたかもテーブルが存在しているように見える、というだけである。
    • 処理上は3GもRiseも護石の個別パターンがデータとして格納されているわけではなく、
      乱数から護石を自動的に計算し生成しているだけである。
      ただしそのコンピューター処理ではその乱数を有限にしか生成できないため、
      有限個数の乱数を全て消費してしまうと最終的に初期値に戻ってループしてしまう。
      その「有限個数」が少なかったり、初期Seed値によって完全に分割されてしまう場合に
      「テーブル」のような挙動を見せるようになる、ということになる。
  • とはいえ現代において標準的な乱数アルゴリズムであるメルセンヌ・ツイスタは
    「2の19937乗」という天文学的な周期を持つため、それを使えば現実的にループは発生しない筈である。
    そう考えるとシリーズを通して何度もループバグを発生させている状況は不可解ではある。

関連項目

システム/お守り
ゲーム用語/テーブル
ゲーム用語/バグ
シリーズ/モンスターハンター3G
シリーズ/モンスターハンター3G HD Ver.
シリーズ/モンスターハンターライズ


*1 「痛風」の由来は、「弱点特効2風圧耐性2スロット無し」という特有の護石。弱点特効の旧名「撃」と「圧耐性」で「痛風」である。誰が上手いこと言えと…。
*2 「壁面移動3体術3スロット3-1」という固有の護石が由来で、命名は人気アスレチック番組のSASUKEから。またスキル内容が忍者を彷彿とさせる事から、某忍者漫画のキャラクターにもなぞらえてこう呼ばれている。
*3 「恶」は「悪」の簡体字表記
*4 痛風テーブルとサスケテーブルにおいて、その存在する4桁単位の護石は順番も含めて完全にループしていると報告されている
*5 前述の初報と同ページに追記された
*6 スマホやパソコンは様々な機能を持っているように見えるが、内部のコンピュータが本当に行っているのは入力・演算・出力のみである。
*7 真のランダム性をコンピュータ上で使いたい場合、外部からの何らかの入力(例えば外気温の情報や機器の発するノイズ等)が必要となる