雀魂には牌操作は一切ナシ!!それを証明できるMD5ハッシュ検証システムの仕組みを解説します

雀魂のアプリレビューやTwitter上で「雀魂は課金者が有利なように牌操作されている」といったものをいまだに見かけます。

書いている人もどこまで本気なのかはわかりませんが、もしかするとそれを素直に信じて「じゃあプレイするのやめとこ」ってなってしまう人もいるかもしれません。

それはあまりにももったいないので、本記事では「雀魂に牌操作はないよ」ということを取り上げたいと思います。

 

 

  雀魂で「牌操作」がありえない理由

冒頭でも書きましたが、雀魂で牌操作が行われることはありえません

正確には、対局中に特定のプレイヤーの有利になるように牌山を途中で入れ替えたり操作することはできないということが証明されています。

なぜそんなことが言えるのか?

それは、雀魂は牌山のMD5ハッシュ検証システムを導入しており、すり替えなどの不正がないかを常時検証可能になっているためです。

MD5ハッシュ検証とは?

雀魂運営より、「完全ランダムでの対局の生成を保証」する旨の声明が出ております。

声明内容は下記画像の通りです。(長いので下で要約しますが興味のある方は全文読んでみてください)

要約すると

  • 牌山は配牌が配られる前にランダムに生成される
  • その牌山をマンズは1m~9m、ピンズは1p~9p、ソーズは1s~9s、字牌は1z~7zに置き換えて一列の英数字の羅列にする
  • その英数字の羅列をMD5ハッシュ値に変換(暗号化)する
  • こうしてMD5ハッシュ(牌山ごとに唯一無二のコード)が生成される
  • MD5ハッシュは対局中に牌山をクリックすることで確認できる
  • MD5ハッシュは牌譜画面の「山」からも確認できる
  • MD5ハッシュが対局中と牌譜画面で一致しているかどうかで、牌山が改ざんされていないかを検証できる
  • 雀魂ではMD5ハッシュが常に一致するため、牌操作(牌山の改ざん・イカサマ)がないことが証明できる

ということになります。

 

実際に検証してみた

本当に上記の通りになるかを検証してみました。

①対局時の牌山コード(MD5ハッシュ)を確認

今回はCPU戦で試してみます。段位戦や他のモードでも同様です。

牌山をクリックすると以下のコードが表示されました。配牌から和了(または流局)までの1局の間は変化しません。スクショを撮り損ねましたが配牌直後のコードももちろん一致しています。

牌山コードは「dd052df673985fd21ac33ebd4cab7fa4」でした。

②牌譜画面から牌山と牌山コード(変換前)を確認する

同じ対局の牌譜を開き「山」をクリックします。

下の方に行くと牌山コードとして、マンズは1m~9m、ピンズは1p~9p、ソーズは1s~9s、字牌は1z~7zに置き換えられた一列の英数字の羅列が表示されます。

変換前の牌山コードは「7p5p5m5z1s0m6m9p2p2s4z7m1z3m8m2s1z3p8p4s5z3m6z4p2p3s9m3p6m6s7s7s2s5s9p6z3z1m7z6p9p1s7m8s8s9s6z6p3z6m4z9s7z9m7z5m2p9s2m8m2p3s1s1p1s3z8m3s7s6p2z8p3s5p2m2s7m4p2m2z4s1p5m」でした。

③牌山コード(変換前)をMD5ハッシュ変換する

変換は有志のサイトで行えます。

上記の変換前コードをコピペして「MD5ハッシュ作成」をクリックすると…

「dd052df673985fd21ac33ebd4cab7fa4」が表示され、①の牌山コードと一致します。

ちなみに、先程の変換前のコードの冒頭の「7p5p」の部分を「5p7p」に入れ替えてみると、

全く違うMD5ハッシュ値となります。

したがって、対局中と牌譜で牌山コード(MD5ハッシュ)が完全一致していることがわかり、かつ対局中の牌山コードがその局中は不変であることから、牌山は少なくとも配牌時点で確定しており、対局中の牌操作はないということが証明できます。

 

  どうして「牌操作」されていると感じる?

にもかかわらず、「牌操作されている」という声は多く聞かれます。

なぜなのでしょう。

「勝ったら実力・負けたら運」の考え方

そういうことを言う人の根底にあるのはこの考え方なのだと思います。

勝てているときは何とも思わない(実力通り)けど、負けているときは自分のせいじゃない(運が悪い)という。

そして特にデジタルゲームの場合、運の悪さ=ランダム性の不備=牌操作、という風に思考が飛躍するのでしょう。

運要素のあるゲームについてはだいたいこういう批判がつきものです。

麻雀に限らずデジタルカードゲームなどでもそういう声はよく聞かれますよね。

例)「シャドバ ドロー操作」など

 

麻雀は偏りのある理不尽なゲームである

とはいえ、確かに全く有効牌が入らなかったり、追っかけリーチされて当たり牌を一発でつかんだり、私も「まじかよこのクソゲー!!」と叫びたくなることも正直あります。

大した実力もないくせにツイッターで地獄モードだ―!!とか言ったりもします。

けど、麻雀ってそういう理不尽なことが起こるゲームなんですよね。

雀魂に限らず、天鳳でもリアルの全自動卓でも少なからず牌の偏りはあります。

「牌操作があるから」ではなく「麻雀とはそもそもそういうもの」なんです。

※そのあたりは以下の外部ページがよくまとまっていると思いますので参考まで。

 ネット麻雀はイカサマなの? | 初心者のための麻雀用語解説

 開発者コラム 第2話 牌の偏り 前編~確率の偏りとは何か? | オンライン麻雀 Maru-Jan 公式サイト

 

配牌の操作がないことは証明できない

ちなみに、MD5ハッシュ検証では牌山の途中改ざんがないことは証明できますが、残念ながら牌山生成時に特定のプレイヤーに有利な配牌を与えていないかというところまでは検証することができません。

なので極論をいえば、毎局、重課金者に天和の配牌を配ることもできてしまいます。

けど、そんなゲームって楽しいですかね?

開発や運営もアホじゃないのであえて苦労してまでそんなプログラムを組むとはとても思えません。

それに配牌も常に公開されており、特定の人が有利になっているような状況があれば検証しようと思えばできますし(各プレイヤーの平均配牌向聴数も有志サイトから確認できます)、有効牌だけツモるような牌山を仕組まれていたとしてもひと鳴きでおじゃんです。

バレるリスクを負ってまで特定のプレイヤーを配牌で優遇するメリットが運営には全くありません。

なので、意図的な配牌不正というのも私はあり得ないと思っています。

 

牌山生成のアルゴリズム

ただ、牌山生成のアルゴリズムによっては、意図しない偏りが出たりするかもしれません。

運営は「完全ランダム」という言葉を使っていますが、完全な乱数で牌山を作ると毎回七種七牌みたいな配牌になるという話もあり、何らかの手は加えているものと思われます。

※Maru-Janという麻雀ゲームは全自動卓に近い牌山が生成されるプログラムを組んでいるらしいです。

 開発者コラム 第3話 牌の偏り 後編~初期プログラムの失敗 | オンライン麻雀 Maru-Jan 公式サイト

ただそれがうまく機能していないと予期しない偏りにつながる可能性もあり、そのあたりのアルゴリズムが(もしくはサイコロだけでも)多少なりとも検証可能になれば、より信頼性は増すのかなという気もします。

天鳳ではそのあたりが完全ではないものの検証できているようです。

天鳳牌山生成アルゴリズムの安全性についてのメモ – integral001

企業秘密な部分もあるでしょうし難しいとは思いますが、余計な批判を受けないためにも多少期待したい部分ではあります。

 

まとめ

今回は「雀魂には牌操作はない」というテーマでまとめました。

牌操作を心配している人がいたらMD5ハッシュ検証のことを教えて安心させてあげてくださいね。