ゲームに良くある確率系システムに関するお話

そろそろ記事の更新しようとした矢先に緊急メンテナンスがありました。
この手の記事を連続で書くのはどうなのでしょうね……とは思うものの折角の
話題ですので気にせず書いてしまいましょう。


100%落ち
とある場所にて見かけた画像を拝借……なんということでしょう。

怖っ!!

とオンラインゲームのスクリーンショットで感じたのはいつ以来でしょうか。
個人的には下手なホラー映画よりも恐ろしいこの現象……本来あり得ない光景という
意味で怖いのではなく、仕事としてゲームに携わる人間として当事者になりたくない
という意味合いで背筋を凍らせてくれるものでした。

この手の不具合はテスト環境では良くある現象……
というわけではありませんが、発生する可能性のある現象なのです。
ですが、これがライブ環境に出てきてしまうという状況は大変致命的なものですから
最初にこの現象を確認した運営側もかなり肝を冷やしたことと思われます。

さて、今回はこういった現象がなぜ起きるのかという解説を行ってみましょう。

【確率系システムの解説】

確率によって「成功」「失敗」の判定が行われ、
なおかつ成功確率が表示されるシステムは今ではごくありふれたシステムです。
特にアイテムの強化といったシステムによく使用されており、昨今では
強化成功確率が表示されないゲームの方が少なくなってきています。

この手のシステムは簡単に書くとこのような仕組で動いています。

[確率判定システム]

・特定範囲の乱数…確率による判定部位
・特定の計算式により算出される変数…乱数に対する目標値
・成功確率を表示するための部位


例えば確率計算式によって最終的な変数が8となったとき、
システムは成功確率を表記するUIに対して80%という成功確率を表示します。
その後、成功失敗を判定する際に乱数が1~10までの間の数値を生成し、
乱数が「9未満であれば成功」「9以上であれば失敗」と判定します。

実際はもっと大きく細かい値を使いますが、簡略化すると概ねこんな感じです。

表示される確率は実際に使用する計算式を用いて算出しますから
表記上の成功確率と実際の成功確率は等しくなるものです……基本的には。
そう、基本的に……つまり例外が発生する可能性が存在するのです。

【例外要素の一例】

多くのゲームには成功確率に影響を与えるアイテムが存在します。
そしてその多くは消費型のアイテムです。消費型のアイテムはアイテムを使用すると
先に消費が行われ、その後に効果が発生するように設定されています。

これは消費アイテムが消費されずに効果が発生する状況を防ぐ
ごく当たり前の動作です。しかしながら、確率系のシステムに於いては、
この正常な挙動が良くない影響を及ぼしてしまうのです。

確率系コンテンツにおける確率表示はそれを試行する前に
成功確率の表示を行います。ですが確率に干渉するアイテムが存在するゲーム
においては試行する前の段階では消費型のアイテムが消費されておらず、
そのままでは試行前の確率を表示することとなります。

これでは消費型のアイテムによる効果を含めた確率は表示できず、
実際の成功確率との差異が出てしまいます。このため、確率表示UIには
消費型アイテムが消費された前提での数値を表示します。

つまりは、シミュレート後の結果を表示しているわけです。
実際に判定を行う際にはこのシミュレート結果と同じ算出方法による試行が
行われますから、これ自体は特に問題があるものではありません。
……察しの良い方であればこの辺りでもうお気づきでしょう。

そう、これは実際に試行した際に何らかの不具合が起きた時に大変なことになるのです。

[困った問題]

1.試行前にシステムが消費型アイテムの効果を含んだ成功確率を表示する。
2.試行時にアイテムの消費を行う際に何らかの問題が発生し、正常な消費が行われない。
3.システムがアイテムの消費を確認出来ず、成功補正値を0と判定してしまう。
4.アイテムの効果が発生しないため、表記と実際の判定に差異が生じる。


こういった現象が発生した時、表記確率と実際の確率に差異が生じます。
アイテムの消費そのものに問題があった場合は効果そのものが発生しませんし、
システムがアイテムを認識しなければ補正は0として判定されます。

この手のシステムは実際にアイテムが消費されたかどうかを確認するプロセスが
存在する場合があり、消費が確認されなければ消費していないものと判定されます。
アイテム及びアイテムの効果に設定されている属性に誤りがある場合も
こういった不具合を発生させてしまいます。

消費型アイテムによって成功確率が干渉できるシステムの場合、
事前に表示される「成功確率」というものはシミュレート結果に過ぎないのです。
これは試行前の段階ではアイテムを消費していないので自然な処理です。

試行前の表示と実際の確率に違いが出る現象は不思議なものではないのです。

これはあくまでも一例に過ぎませんが、こういったアイテムが存在する
ゲームにおいては表示上の確率と実際の確率は必ずしも一致するものではありません。
リアルタイムで強化確率を参照する場合、事前の確率確認に支障が生じてしまい
それはそれで問題のあるものになってしまいます。
テストや検証には必須ではありますが。

※過去にこの手の問題を起こしたゲームはあったりします……

【不正による不具合かどうか】

特殊能力追加システムにおいて、一体何が原因でどのような挙動によって
あの不具合が発生したのかはSEGAさんのみが知る所ですが、この手の問題は
不正によるものという可能性はまずないものと思われます。

何故かと言うと、この手のシステムで意図的な不正を行うことが難しいからです。

1.機密保持の問題

不正を行っている場合、不正を行っている側の機密保持が極めて困難です。

ゲーム業界というものは人の出入りが激しい業界です。
会社を離れた人間がその機密を知っていた場合、暴露される可能性が生じてしまい
その際に発生する損失や危険性が極めて高いでしょう。

特殊能力追加といった多くのテストが行われる可能性が高いシステムでは
そういった不正を知らない立場の人間が知ってしまう可能性も十分にあり、
さらに言えば第三者に解析を受けた結果、露見するリスクもあります。

2.試行回数を重ねやすいシステム

特殊能力追加システムは仕組こそ複雑ですが、試行するだけであれば
簡単に行うことが出来ます。ガチャといった金銭が必要なコンテンツとは
比べ物にならない数の試行が行える上に、特殊能力一つ一つに
設定されている確率が高いことから検証が容易です。

実際、この不具合は1日も経たずに発覚しています。

3.不正を行うメリットがない

リスクが非常に大きい割にそれに見合うメリットがありません。
以前の記事にも書きましたが、企業はリスクと面倒を嫌うものですし
メリットらしいメリットも真っ当な手段を採ったほうが良いでしょう。

お金を回収したいのであればガチャで十分ですし、
特殊能力付与を厳しくしたいのであれば成功確率そのものを厳しくして
成功確率増加アイテムを作らなければ良いだけの話です。

※運営側はユーザー全体を分析した上で月単位・年単位で
 売上を予測しますし、ユーザー数に対して売上が上がりすぎた場合は
 その後の売上推移が不安定になるのでそれを避けようとするものです。

4.そもそも不正な仕組を作ることが困難

ユーザーに露見しない範囲でなおかつ十分な利益を上げることができ、
機密の保持が現実的で、安定した動作が保証された不正なシステム……
色々と矛盾した代物だと思います。

不正な仕組を入れるということは、例外的な動作を取り入れる
ことになりますから不正そのものが不具合を起こした場合、どんな
惨事が起きるか分かったものではありません。


これらの問題を全て解決できるのであれば、その発想と労力を
真っ当な方向に使ったほうが遥かに楽で効率的でしょう。

【まとめ】

付与率100%の特殊能力の付与に失敗する不具合は運営側にとっても
非常に恐ろしい問題です。そしてこの手の問題は、特定の形式のシステムであれば
十分起きる可能性が考えられるものです。

この問題により運営側が被るダメージは大きいものと思われます。
こういった仕組に疎い人たちは様々な妄想を膨らませるでしょうし、炎上大好きな方々に
文字通り飯の種を与える結果となります。多くのユーザーに少なくない疑念を生じさせ
流されやすい人は簡単に扇動されることでしょう。


こんな怖い不具合を未然に防げなかったのですから仕方のないことではありますが。


この問題の対応をする羽目になった方々には同情したくなる一方で
絶対に対応する側にはなりたくないとも思います……。

こういう事故が起きる可能性があるから、強化難易度の緩和や
補助アイテムの新規作成はやりたくないものです。更に言ってしまうと
成功率の可視化も正直嫌です。


最後に、特殊能力「錬成の導き」を使用した結果高額な特殊能力
追加に失敗してしまうなどなど、大きな損失が生じた方々には過不足無く
しっかりとした補償対応が行われることを祈るばかりです。

本日はこの辺りで、それでは御機嫌よう。

別窓 | 雑記 | コメント:3
∧top | under∨
| Mad Laboratory | 緊急メンテナンスとロールバックに関する小話>>

この記事のコメント

各OPの成功率とそれらを算出して出た変数を参照にして判定&表記する一体型のプログラムではなく、
成功率&算出と成功判定のプログラムは別々なんでしょうね、これ
だから表示では精錬の導きは認識されているけど、判定の方では精錬の導きの引数を組み込み忘れたため
表示は100%でも実際は100%に届いてておらず失敗するではないかと
2019-01-25 Fri 20:58 | URL | #- [内容変更]
特殊能力落ちたら嫌だとか、緊急メンテ面倒だなというのはわかる。でもこれは運営が悪いだの言ってるのはよくわからない。
事の重大さを強調するために口を悪くしたり罵倒したり。ユーザーはこんな物言いをしてよいのかと疑問に感じてばかり。
よくわかってない事象に対してどうして偉そうにできるのかがわからない。(わかるなら解決してるはず)わからない部分のことが怖くないのだろうか。
作業を進めている運営には一刻も早い事態の収束と休養をと思う。
2019-01-25 Fri 23:06 | URL | 8鯖 #- [内容変更]
地味に名前の表記が変わっていますが本人です。


>名無しさん

すみません、記事内での説明が分かりにくかったのかもしれません。
基本的にこの手のシステムは成功率の表示と実際の判定は別々に行われます。
これは成功率上昇型アイテムが存在する場合、表示時点ではアイテムの
消費が行われていないため、表示と判定で差異が発生するからです。

ただし、別々に行われても計算方法そのものは共通です。
大きな違いとしては、表示側はアイテムなどの効果の補正値を読み込んで
成功率をシミュレートし、判定側は実際に効果発生元のアイテムが存在するか、
それらは正常に使用されたかなどの確認やセキュリティが施されます。

表示自体はクライアント側で計算を行うものの、ゲームクライアント
改造対策のためにゲームクライアント側ではなくサーバー側で判定を行う
といった方法を採る場合もこういったセキュリティ面の対策です。

今回の場合はどうやら、「錬成の導き」の効果値の参照自体は
問題なく表示側に行われたものの、判定時に該当の特殊能力の属性に問題が
あるなどの理由で不正な動作を防止するためシステムにより「錬成の導き」の
効果が弾かれてしまったことが原因のようですね……。

この原因自体は予想の範囲内ですが、公式から詳細を見る限り
特殊能力追加システム自体が思っていた以上に複雑なシステムであり、
新しい特殊能力を追加するなどの手を加える毎に労力を要する
困った代物のように感じました。

※防止しなければいけない不正な動作が多すぎるのです。

>8鯖さん

運営側が不具合を見逃してしまった→運営側が悪いです。
見逃した不具合によってユーザーに被害や不安を与えた→運営側の責任です。
不具合によって運営側に不満の声が出る→仕方のないことです。
ユーザーが情報を誤った形で広める→拡散する前にしっかり内容を確認しましょう。
ユーザーが不具合を理由に運営側を罵倒する→罵倒して良い理由になりません。
悪意を以って発生した出来事を歪めて拡散する→法的にアウトです。
第三者が必要以上に不安を煽って炎上させる→頭おかしいです。


不具合によって何らかの問題および問題が発生した場合は
運営側が悪いのは間違いないものです。ただ、それを理由に相手を罵るなどの
行動に出て良いというものではありませんね……そして、その物事について
よく分かっていないのに大層なことを言い出すのも、最終的には自分自身に
ダメージとして返ってきますから宜しくありません。

こういった問題が起きた時、アレな人ほど異常性を表に出してくれるもの
ですから、その点については参考になる類の出来事とは思います。
(こんな問題はない方が良いものですが)
2019-01-27 Sun 01:36 | URL | フィーネ #jVHjcq8A [内容変更]
∧top | under∨

コメントの投稿


管理者だけに閲覧
 

| Mad Laboratory |