Results 1 to 10 of 212

Dev. Posts

Hybrid View

  1. #1
    Player
    Ltz's Avatar
    Join Date
    Aug 2013
    Location
    ウルダハ
    Posts
    363
    Character
    Ltz Zwei
    World
    Alexander
    Main Class
    Scholar Lv 72
     いやあの、なんか誤解されてるくさいですが、別に確率と結果が一致しないとかそういうアレではなく、
    ボタン連打などでアクションを最短で実行した場合、乱数の戻り値が同じになる(orなりやすい)
    ようなコーディングになってませんかね?という話でして。

     以下、あくまでも一例でそんな実装誰もしねーよというツッコミはなしの方向で。
     たとえば1~5の数値を引っ張ってきてそれが偶数である可能性は40%ですが、これのテーブルが
    2451324513……と24513を延々と繰り返すものであり、かつ現在時刻の秒針の下1桁番目の数字を引っ張ってくる
    ようなものであれば、ある程度は偶数を狙って出すことは可能じゃないですか(偶数が出た時間を秒単位でメモして
    あとは目押し等)
     で、この例でいえば、n回目のアクション実行&判定→GCD的な時間が6秒→n+1回目のアクション実行とすると、
    ボタン連打(GDC的な時間以外に時間経過しないという仮定)してると偶数の後にまた偶数を引く率が50%になる
    (24513の繰り返しなので、2を引いた6秒後は必ず4。4の次だと必ず5)じゃないですか。

     ……というような何かしらがあったりしませんかね?という話だったのですが。
     そういうのはなくて単純に運の問題だという話なら、あっそうですかゴメンナサイということで。
    (1)
    PS4/PC 両環境でプレイ中。主にPS4。ゲームはゲーム機で派なのです。

  2. #2
    Player
    Melted's Avatar
    Join Date
    Aug 2013
    Posts
    59
    Character
    Meltina Roses
    World
    Mandragora
    Main Class
    Archer Lv 50
    Quote Originally Posted by Ltz View Post
     いやあの、なんか誤解されてるくさいですが、別に確率と結果が一致しないとかそういうアレではなく、
    ボタン連打などでアクションを最短で実行した場合、乱数の戻り値が同じになる(orなりやすい)
    ようなコーディングになってませんかね?という話でして。
    専門的な話になるのですが、一般的な話として開発言語にはランダム生成関数というものがあり、これにシードという変数を指定することで擬似乱数が生成されるようになっています。
    シードが同じ値であれば、同じ擬似乱数が生成されてしまうのですが、通常作法として現在の時間(ミリ秒単位)を指定するのが一般的です。
    乱数生成を自分で書くことは、意図的に乱数の出力数値を偏らせたい場合などを除きありません。(普通そんな面倒なことをする理由が無い)
    というか開発者は何も考えずに現在時間で乱数生成するのがほとんど(関数の使用例がそういう風に書かれている)なので、おっしゃるような問題が起こることは皆無に近いです。
    もしあなたのおっしゃったようなことが発生しているのであれば、それは開発言語(もしくはそれに伴う関数ライブラリ)のバグであり、開発者側が対応できるものでは無いと思います。
    もっとも、ランダム数値がPS2だけ必ず桁ごとに奇数偶数交互に並んだ数値になるという、どういう実装をしたのか想像もつかないようなバグを出した経歴があるので言い切ることは出来ないのですが・・・
    (13)

  3. #3
    Player
    Ltz's Avatar
    Join Date
    Aug 2013
    Location
    ウルダハ
    Posts
    363
    Character
    Ltz Zwei
    World
    Alexander
    Main Class
    Scholar Lv 72
    Quote Originally Posted by Melted View Post
    専門的な話になるのですが(略)
     あ、はい。そこら辺はだいたい承知してる上での話です……。
    (1)
    PS4/PC 両環境でプレイ中。主にPS4。ゲームはゲーム機で派なのです。

  4. #4
    Dev Team Hiroshi_Minagawa's Avatar
    Join Date
    Mar 2011
    Posts
    136
    こんばんは。
    何故かUIにポストされているので、担当外ですが 雑談として コメントします。

    メインプログラマのK氏に確認した所、
    XIVでは、有名な乱数アルゴリズムから3種を、用途によって使い分けているそうです。
    当然、全てサーバ側で処理をしていますし、シード(乱数の種)は起動ごとに異なります。

    なので、Ltzさんの疑問についてですが「そういう問題が起こる実装ではありませんよ」
    というお答えになります。

    たしかに、昔のゲームでは特定操作でパターン化できる実装や、
    それを逆用した攻略が可能なタイトルはありましたが、
    昨今のゲームではそういう実装方法は殆ど無いと思います。たぶん。

    それでも、XIVに限らずゲーム中の確率(乱数)処理は、
    昔から今に至るまで、プレイヤーに「疑惑の目」を向けられ続けています。

    私の考えは 「いやー、殆どの場合は 単なる偶然 ですよ」 なのですが、
    それだけでは納得行かないと思うので、ちょっと語ってみようと思います。

     + + +

    これは、XIVに特定した話ではなく、プログラムの乱数が疑われやすいのは
    どうしてなんだろう?というお話です。
    ※もちろん、本当にバグだったケースも少なくありませんが…

    まずは、要点だけざっくりと。

     a) XIVや昨今のゲームが使っている標準的な乱数プログラムは、実用上「正しい乱数列」を生成する。
     b) 人が把握出来る範囲の回数では、「正しい乱数列」だからこそ偏りが生じる。
     c) 私達の脳は、「偏り」を異常・特異点として検出する能力に長けているため「正しい乱数」を異常に感じる。

    a~cを個別に補足説明します。

    まずは a) の「乱数列」を出力するプログラムについて。

    XIVに限らず 昨今のゲームで使われる乱数アルゴリズム(正しくは擬似乱数)は、
    数学者やコンピュータサイエンスの凄い人が考案し、
    様々な分野で検証され、実用されている鉄板のアルゴリズムを使っています。

    一例として、メルセンヌ・ツイスタという乱数アルゴリズムの周期性の説明を抜粋します。
    「周期が2^19937-1で、623次元超立方体の中に 均等に分布することが証明されています」

    はい。全くわかりませんが、大丈夫です。
    乱数アルゴリズムというのは、こういった純粋数学の成果によって成り立っている分野です。
    少なくとも私達利用者は、生成される乱数列は正しく十分実用的だ、という事を前提にできれば十分です。

     ★乱数アルゴリズムと、ゲーム実装で生じた過去の問題事例を知る人は、
      上記で触れていない事が気になると思います。一応、末尾に蛇足の説明を加えています。


    次にb)の「正しい乱数列」について、です。

    乱数には、一様乱数や正規乱数といった分布パターンの異なる種類がありますが、
    試行回数が増えるほど、理想の状態に収束していきます。

    逆に、試行回数(サンプリングの数)が少なければ、乱数列には偏りが生じます。

    そして、私達人間が把握できる程度の、ゲーム中の試行回数程度では、
    乱数には偏りが生じるのが「正常」なのです。

    つまり「乱数に偏りがあるのは、おかしい」という前提が間違っているのです。

    勿論、数百万回とか、数億回の試行の果てには、均一に無作為な分布に収束し、
    偏りはなくなります。
    これを、人間が「実際の出来事を観測」して体感するのは、ちょっと無理があります。

    そのため、限られた試行回数で発生した偏りを目にするたびに、
    「やっぱ、偏ってるって! 絶対に!」と声をあげてしまうわけですが、
    「そうだね、偏ってるね。」としか言いようがありません。


    最後に c)の、私達の「認識」の誤謬について。

    私達人間は、様々なことを瞬間的に判断したり、直感したりできます。
    脳みそが得意で、コンピュータが苦手といわれる分野ですね。
    一方で、その能力には不得手な部分もあり、そこを突くと手品や詐欺に嵌めることができます。

    この、脳が周囲の出来事を認識して判断する穴を突き、誤った判断や誤解をおこしやすい
    パターンを「認知バイアス」と呼びます。

    確率に生じる代表的な認知バイアスが、Gambler's fallacy (ギャンブラーの誤り)
    と呼ばれるものです。

    これは、
    相互に関わりあうことのない出来事を、人が時間軸に沿って複数観察した場合に、
    過去の出来事が 未来の出来事の結果に影響をおよぼす事を期待したり、
    生じた結果に対して因果関係を理由に納得、または違和感を感じる錯覚です。

    コインを投げて5回連続で表が出ようとも、6回めに表/裏のでる確率は
    それぞれ変わらす50%です。
    しかし、直感は「こんどこそ」と感情的な期待値の補正をかけてしまい、
    結果が表なら「ありえない」と感じ、裏が出たら「やはりな!」と感じやすいものです。
    これが認知バイアスです。

    b)で述べた、おかしくない事なのにオカシイと直感してしまうのは、
    確率が、脳が直感的に期待する因果関係とは、ぜーんぜん関係ない振る舞いするからです。

    ※と、断言形式で書いてますけど、所詮本の受け売りなのでご注意ください。

    認知バイアスは、まるで人間の認識能力のバグみたいですが、
    人が生き残る上で獲得した、緊急時に効率よく判断する仕組みなんだそうです。

    この認知バイアスというのは厄介ですが非常に面白いので、
    ご興味のある方にはこういった包括的な書籍もあるのでオススメします。
     
     + + +

    以上、
    私達がゲームで出会う確率が、なんかオカシイぞ!と思いがちなのはどーしてなのか考えてみた、でした。 

    おわり。
     
     
    蛇足:乱数アルゴリズムの所で触れなかった事

     乱数アルゴリズムの中でもコスト対効果が高く採用例の多い方法に、
     線形合同法がありますが、このアルゴリズムは範囲の取り方で
     結果に大きな偏りが生じるのは、実装者には良く知られた問題です。

     事実、この関数の用い方をミスって、サンプル数が増えるほど
     偏りが増していくゲームがありました。
     なので「よく知られた一般的な手法だから!」いう事が、
     正しさの証明になるわけではありません。

     また、乱数列が正しく生成されても、アプリケーション実装が
     その値をどのように用いるか次第で、最終的な結果に妙なパターンが生じる事も当然あります。
     ですから、長々と述べた話は「XIVの各種確率計算の結果の正しさの証明」ではありません。

     それはわかっています。ですから冒頭に述べた通りこのポストの後半は完全に雑談で、
     「XIV中の確率は間違いないのか?」という問いに対する答えでは無い事をご了承ください。
    (546)

  5. #5
    Player
    Fior's Avatar
    Join Date
    Jul 2014
    Posts
    12
    Character
    Fiordia Ordelle
    World
    Ridill
    Main Class
    Bard Lv 60
    そのため、限られた試行回数で発生した偏りを目にするたびに、
    「やっぱ、偏ってるって! 絶対に!」と声をあげてしまうわけですが、
    「そうだね、偏ってるね。」としか言いようがありません。
    3行で!と言われるまえに3行でまとめるあたりさすがw
    わかりやすい解説ありがとうございます
    (19)

  6. #6
    Player
    Anemone-aura's Avatar
    Join Date
    Mar 2011
    Location
    新生りむさろみんさー
    Posts
    1,775
    Character
    Anemone Aura
    World
    Gungnir
    Main Class
    Alchemist Lv 100
    確率の話は難しいですけど面白いですね!

    Quote Originally Posted by Hiroshi_Minagawa View Post
     事実、この関数の用い方をミスって、サンプル数が増えるほど
     偏りが増していくゲームがありました。
     なので「よく知られた一般的な手法だから!」いう事が、
     正しさの証明になるわけではありません。
    それってもしかしてカル…あ… (・×・)
    (3)

  7. #7
    Player
    Himelyn's Avatar
    Join Date
    Apr 2012
    Posts
    1,254
    Character
    Forever Nineteen
    World
    Gungnir
    Main Class
    Bard Lv 100
    Quote Originally Posted by Hiroshi_Minagawa View Post
    いつもポストされる皆川さんの書き込みが大好きです。
    ド素人の私にも理解できるようにと、丁寧な説明いつもありがたく思っております。
    (理解できたかどうかは別としても、大変好感が持てています)

    お忙しい中、いろいろと大変でしょうが、今後の皆川解説を楽しみにしております。
    (22)
    Last edited by Himelyn; 07-26-2014 at 07:12 AM. Reason: 私からMIPを500贈呈致します。
    サブですよ!っと

  8. #8
    Player
    Lem_FF14's Avatar
    Join Date
    Jul 2014
    Posts
    26
    Character
    Lem Elcid
    World
    Durandal
    Main Class
    Blacksmith Lv 60
    Quote Originally Posted by Hiroshi_Minagawa View Post
    XIVでは、有名な乱数アルゴリズムから3種を、用途によって使い分けているそうです。
    当然、全てサーバ側で処理をしていますし、シード(乱数の種)は起動ごとに異なります。
    主にZWクエストですが、最近あまりにも乱数関係で不信感を抱くことが続いたので、既にこういう話題があるのではないかと調べて辿り付きました。
    一応僕も同業者です。(プログラム専門ではないですが)

    この業界、既存の乱数アルゴリズムを「そのままゲームに実装している」ことは稀なケースだと認識しています。
    以前うちでもソフト担当がそのまま利用した結果、問題が発覚して仕組みから調整が入ったこともあります。
    ※ガチャではないですが間接的にリアルマネーが絡む要素だったので集計データから発覚したものです。

    FF14の乱数を見ているとその事件を思い出して懐かしい気分になります。
    それも内外から散々疑われていたので。


    他のゲームも同じかのように説明されてますが、乱数自体にここまで不信感を抱いたゲームは片手で数えるほどしかありません。
    そしてその開発者に聞くと大体「既存アルゴリズム使ってるから間違いないはず」という回答がくるところまで同じです。

    つい最近も4200回(130万円)ガチャ回しても某キャラが出ないということで話題になったゲームがありましたが、風潮なのかなと。

    去年のCEDECでこんな話がありました。
    http://www.4gamer.net/games/042/G004287/20140905040/
    理論上の確率が正しいことと、ゲームの面白さを保つための確率は違います。

    ゲームを楽しむユーザーにとっては乱数の仕組みが正しいかどうかは問題ではないです。
    たった1年でこれだけ多くの人から不信感を抱かれている確率を是とするのか?ということを再度問いたいです。
    ゲームの乱数・確率はプログラマではなくプランナーの領分だと思っています。
    (40)

  9. #9
    Player
    shille's Avatar
    Join Date
    Apr 2014
    Posts
    2,892
    Character
    Shille Charme
    World
    Masamune
    Main Class
    Culinarian Lv 100
    Quote Originally Posted by Lem_FF14 View Post
    主にZWクエストですが、最近あまりにも乱数関係で不信感を抱くことが続いたので、既にこういう話題があるのではないかと調べて辿り付きました。
    一応僕も同業者です。(プログラム専門ではないですが)



    他のゲームも同じかのように説明されてますが、乱数自体にここまで不信感を抱いたゲームは片手で数えるほどしかありません。
    そしてその開発者に聞くと大体「既存アルゴリズム使ってるから間違いないはず」という回答がくるところまで同じです。

    つい最近も4200回(130万円)ガチャ回しても某キャラが出ないということで話題になったゲームがありましたが、風潮なのかなと。

    去年のCEDECでこんな話がありました。
    http://www.4gamer.net/games/042/G004287/20140905040/
    理論上の確率が正しいことと、ゲームの面白さを保つための確率は違います。

    ゲームを楽しむユーザーにとっては乱数の仕組みが正しいかどうかは問題ではないです。
    たった1年でこれだけ多くの人から不信感を抱かれている確率を是とするのか?ということを再度問いたいです。
    ゲームの乱数・確率はプログラマではなくプランナーの領分だと思っています。
    自分もこの記事を読んだことありまして。
    もちろん、ある程度の偏りをなくすような工夫を今もしてるんでしょうが
    とあるアイテム(別に馬みたいなレアものではない)が
    全然でなくて、過去諦めたり周回繰り返したりしてたので
    こう言う事を扱ってるスレはないかなーと探してました。

    何回連続でどうこうできたら、次はこうなればいいです、
    なんて具体的な返事ができるはずもありません。

    これは個人的な話ですが、DPSの周回は苦痛なので
    マッチングを解消するか、その辺りの確率を見直すか、
    報酬個別にしてもらうか(不足ロールで周るため)、をしてもらいたいと思いました。

    ギャザクラはそこまで深く取組んでないので
    ここで特にコメントする事はないです。
    周りを見てると思うところはありますが。
    (1)
    Last edited by shille; 02-03-2015 at 12:49 AM.