◆ C研でのテーマ : パペットガーディアンとかマジカロスとか ◆
◆ 丁度良いので目押しネタ ◆
 昨夜は、30分ほどしかインできませんでした。とりあえず竜の国へ行き、少しでもかけら採集。そのついでに、久々にトッコータイのお散歩。
 そうそう、召喚の仕様が変更されたのって去年の今日だったんですね。この仕様変更により、トッコータイの出番がなくなってしまいました。まあ、今の仕様にもメリットが多いので、どちらも甲乙つけがたいですけどね。

 さて、今日の開発ブログは質問コーナー。その中に、興味深いQ&Aが載ってました。



Q.サイコロの目押しってできるんですか?

A.できません。
ちょっと難しい話になりますが、サイコロを止めて何の目が出るかは、メルセンヌ・ツイスタ系の乱数発生技術を使っています。これは乱数に偏りが無いことが実証されています。
また、乱数の種はサーバ起動時に一度与えているのみなので、目押しができるということはないです。
 メルセンヌ・ツイスタ……。なるほど、だからmt_randなのか。て、actionscriptではなくPHPの関数のことですけど。確かactionscriptの場合は、ライブラリで提供されていたような。

 まあ、それはさておき、目押しについてはパペガを始めたばかりの頃に検証したことがありました。一部、仮定が実証できなかったので記事には至りませんでしたが、結論はアーティさんが仰るとおり「できない」でした。

 サイを振ると、必ず2が上の状態で回り出します。もしも目押しが可能であれば、2か5しか出ないことになります。はい、もうこの時点で目押しは不可能とわかります(笑)

 では、どのように出目が決まるのか? 内部的には、1〜6(あるいは0〜5?)の乱数で決まります。決まった時点で、サイのアニメーションが出目用のアニメーションに入れ替わります。
 右の例では、2と5の回転から1と6の回転に入れ替わってます。つまり出目は1か6。目押しどころではないですね。


 ここからは推測ですが、要は7通りのアニメーション(ムービークリップ)が用意されているんだと思います。1つは2と5の回転用ループアニメーション。あとの6つは、出目用のアニメーション。
 目押しを成功させるには規則性が大前提で、且つ惰性を逆算する必要がありますよね。パペガのサイは、止めてから2回転ほど惰性が生じます。とは言え惰性部分(出目用のアニメーション)がランダムに選出されるわけだから、乱数技術の質以前に目押しなんてできるはずがないのです。
 ちなみに混雑時は、サイの回転が目に見えて遅くなることがあります。が、乱数が介入する以上、スロットのような「回転速度と目押しの関係性」は成立しません。つまりパペガにおいて、サイの回転は演出にすぎないのです。

 ただ、これでは夢がない。何か法則があるに違いない! 当時の僕は、ある仮定を立てました。
 例えば、止めた時点で上面が2であれば出目は2か5。

 止めた時点で、上面が1と3であれば出目は1か3。

 本当のところ、判定が上面なのか前面なのか、はたまた底面なのか背面なのかはわかりませんが、これなら50%の確率で目押しが可能。10回中5回も出目を当てられたら、そりゃあ誰でも「僕は私は目押しができる!」と思い込むことでしょう(笑)
 まあ結局、冒頭にも書いたように仮定を実証することはできなかったんですけどね。なぜなら1と3、4と6はそれぞれ1/4の確率なのに対して、2と5だけ1/2の確率になってしまうから。つまり僕の仮定が正しいとすれば、出目に偏りが生ずることになります。さすがにこれはあり得ません。
 そもそも僕が制作者なら、みすみす目押しの可能性を50%も与えたりしません。スクリプトを肥大させてまで出目に法則性を持たせるメリットも見つからないですし。そんなわけで、「目押しは不可能」という結論に至りました。

 それよりも不思議なのは、2周連続で同じ出目が続くことが多々あること。例えば1周目のスタートマスで6が出たら、2周目のスタートマスでも6が出たり。これは偶然でしょうか?
 そして、同じマスにいる人と同じ出目が出やすい気がするのも気のせいでしょうか? 特に、同じタイミング(間隔)で止めると同じ出目になりやすい気がします。
 Q&Aを読んでみて、これらの現象がシード(種)に関係しているように思えました。シードの設定が「サーバー起動時のみ」と言うのが、ちょっと意外だったんですよ。
 乱数を得る場合、メジャーどころでは直前に日時をシードに代入したりしますよね。その場合、同時にサイを振って同時に止めると同じ出目が出てしまいそうですが、多かれ少なかれボタン操作には誤差が生ずるものです。だからミリ秒もシードに含めてやれば、出目の重複を避けられるのでは? なんて、素人のいい加減な発想ですけど(笑)

8/15/2012 19:32 パペガ メモ

comments & TB (2)

  • ループ用アニメはなくても
    2と5のアニメをループ再生すれば出来ます。
    その場合125346の順にフレームを作るようになります
    まあこれはWOLFRPGエディターの仕様ですけど

    2週連続で同じ目がでる、同じマスの人と同じ目がでる
    というのは、
    違う目が出たときの記憶は残らず、
    同じ目が出たときは記憶に残りやすいので
    同じ目がでやすいと錯覚するんだと思います
    殺虫剤A 8/15/2012 22:15
  • >殺虫剤Aさん
    すみません、何度も読み返したのですが理解できませんでした。
    1番目のGIFアニメが、ループ用アニメーションの1ループ分です。
    Flashで言うところのムービークリップというやつです。
    これを、ボタンを押すまでループ再生します。
    出目用の6パターンは、それぞれイーズアウトしているので「単純なフレームアクションでは再現が難しく、別々のムービークリップである」と判断しました。
    それ故ムービークリップの数は全部で7個になりますが、考えてみると素材は3個分ですみますね。
    例えば1と6の回転は、出目が違うだけでアニメーションパターンは同じですから。
    2と5、3と4も同様。
    と、的外れでしたらすみません。

    >2週連続で同じ目がでる、同じマスの人と同じ目がでる
    仰るとおりだと思います。
    家具クエの「マーフィーの法則」も同様、真実はアーティさんのみぞ知る。
    結局、僕らは「気のせい」と納得するしかないんですよ(笑)
    チェロ 8/15/2012 23:08

trackback URL