ブログ内検索

2020年7月10日金曜日

FREE別配当分布表示(2)

凡例などをつけて、ついにFREE個数別に色付けされた度数分布のグラフが完成した。
分割幅は左から払い戻し率0~50%未満、50~100%未満、…と続き2950~3000%未満、そして最も右の列は3000%以上をまとめている。その理由は、もはや30倍超えといえばほぼほぼ7個ラインのオッズアップ1個がほとんどであり、それ以外の配当は起こりにくいからである。実際、オッズアップ2個で75倍などはまずないし、50倍と4個ライン1個などもこれまた起こりづらい。
悲しいことにグラフがぎざぎざしすぎているが、これもやはり最大値にあわせたグラフにしようか悩んでいる。ただ、実際のアニマロッタでここまで払い戻し率がぶれることはほぼないので無視するか…。現在の設定ではFREE配置可能個数を1~4個が等確率で出現するようにしているため、グラフがかなり大きく揺れ動いている。実際はFREE1個が大半で、ときどきFREE2個、まれにFREE3個、ごくまれにFREE4個なので、特に問題ないはず。
右上を見ると、各FREE個数別の配当分布が分かる。(ほかのグラフで見づらいが)
面白い点は、FREE4個配置でも配当が0~100%というのが存在している点である。
これは、7個ラインの倍率とそのオッズアップ確率がFREEの個数が多いがゆえに高いため、7個ラインの確率がそこまで高くなくても期待値的にそれを狙いにいく、ということが関係している。最適解が7個ラインを成立させにいくため、それが失敗すればもはや払い戻しは皆無に等しい。ただ、もともとのFREEの多さから、まぐれで4個ラインあたりが当選することがあり、それが100%階級あたりの赤色になっている、ということである。

また7個ライン成立確率は、それが成立したときFREE4個である可能性が圧倒的に高い。
ただこれはFREE1~4個を等確率で出しているからその傾向が言えるのであって、これが等確率でないとこの考察は使えないことに注意。例えばFREE3個が10000回で、FREE4個が1回だと、7個ラインの成立確率はFREE3個が圧倒的多数を占めるだろう。だからといってグラフの度数分布から4個での7個ライン成立が少ない、というのは間違いであることが分かるだろう。

では、実際のアニマロッタらしく、FREE1個が80%、FREE2個が15%、FREE3個が4%、FREE4個が1%であったと仮定する。もちろん実際にこの確率ではないが、そうすれば中央のグラフが落ち着いたり実践データに近くなるので。
なんかうまい具合にPO率がちょうど100%くらいになった。
右上のグラフは、黄色と赤の発生確率が足して5%なのでほとんど表示されていない…がこれは仕様なのでしようがない(寒)
念のためにわかりやすい最上段右列の期待値を一応計算してみる。
この配置では、24番と23番に入って配当が3→6倍となる確率が(2/19)*(1/18)=1/171である。よって170/171の確率で300%、1/171の確率で600%より、その期待値は(51000+600)/171=51600/171=301.7…となり、切り捨てなので301%となり確かに期待値の計算は正しく行われている。なお、3,6倍以外の配当は取りえない。

さて次は何をするか…。
面をクリックしてその詳細情報を下のほうに示そうかと考えている。
具体的な案としては、面をクリックするとその面の拡大図が表示されて、番号(マス)にカーソルを合わせると配当分布が表示されたり、7個ラインの成立の確率やその他のラインの成立確率などを表示するシステムである。
後は残り1~3球の抽選で最大、最小のWINを与える組などの表示など。
ただまだどうするかは決定していない。

FREE別配当分布表示(1)

今度は面別の払い戻し率がどうなのかを、なんとなく右上に作成することにする。
これはFREE別に色分けしようと考えている。FREE1個を青、FREE2個を緑にしてそれらを足し合わせた度数分布的なものを作りたい。
形としては、正規分布になることはないが、まあそれになんとなく近そうな形になっていくことを期待している。

これはFREEの個数別の期待度を図る目的で作る。昨日作ったグラフは、各期待値にFREEの個数がラベル付けされていないので、FREE個数別でどれくらいの配当があるかを判断できないという難点がある。そこで色分けしたFREE個数別の度数分布を作ろう、というわけである。これにより、FREE2個がこの期待値付近でこういう具合に分散している、などを視覚的に把握することができる。

さて、それを実装するにはどうすればよいかだが、まず度数分布を示す棒は、とりあえずウディタの線を引くことのできる<LINE>コマンドをやはり使用する。刻み幅はいうまでもなく0.5倍(50%)ごとである。0.5*n(nは0以上)の配当意外になることは決してないからである。逆に0.5nとなるnが存在しないことはもちろんある。例えばn=3など。

とりあえず、度数分布の横軸として0~50%未満、50~100%未満、という具合にしようと思っている。ただこれだとこの最初の2つの階級がずいぶん突出するという問題を排除できないような気がする…。
そういうわけで、縦軸を可変にする必要が出てくる。
もし0~50%未満が100回起これば、その100回分の棒が画面から出ないようにしたい。
そうするとその他の棒も伸び縮みすることになる。

それらを形にしたものが以下。
確かに各階級で最も大きな棒がある一定の位置まで伸びるようにして、それ以外の棒の伸び具合が変わる。何気にこの機能の実装は初めてである。
青はFREE1個の期待値で、緑はFREE2個の期待値を表す。
分かりやすいように凡例と注意事項を右の空きスペースに記述する。


2020年7月9日木曜日

予測・実測PO率グラフ表示

ゲーム数を重ねていき、そのゲームごとの払い戻し率をグラフにする。
具体的には、5,6,7球終了後の期待される払い戻し率と、実際の8球終了後の払い戻し率の推移を見ていこうと、いうわけである。グラフの描画方法などは以前と同じなので特筆すべき点は特にない。
上のグラフから見て取れることは、やはりゲーム終了後の払い戻し率の平均を推定すると、そこまで違いがないということである。
これはつまり、5球終了時点での払い戻し率平均に信頼を持ちやすい、ということである。
その理由の一つに8面の平均をとっている、ということが挙げられ、この時点で1回のゲーム試行は8面のビンゴバルーンの試行の平均をとったものと同等になるため、その分ばらつきが少なくなる、ということがある。
もし100面ビンゴバルーンなどが発生すれば、ある1ゲームでの予想払い戻し率は、相当実際の払い戻し率に近くなるだろう。
なお、この8面のうちひとつでも7個ラインが発生すれば25倍となるので、8面の平均をとれば300%の払い戻し率を確実に超える。
500%を超えているのは、ほぼほぼ7個ラインが2面で成立あるいは7個ラインのオッズアップ(後者のほうが確率が高いと思われる)が発生したものと予想される。

また、上記のグラフは常時FREEを2個配置可能なもとでの試行を行っており、8面でこれを行えばほぼ確実に等倍以上の返りが期待できその半数程度?が2倍以上というものである。

これからわかる通り、ビンゴバルーンにおいてFREEが2個配置可能であれば、平均してBETより多くのWINを得られることが多い、ということになる。その確率がどれくらいかは、また53130個のデータを集めて100%以上のものを53130で割ればよい。
実際に過去のデータ総整理で、FREE2個配置ではたしかPO率が170%程度だったような気がする。

ただ、グラフだけを見ても実際のPOがどれくらいかを数値で判定しづらいので、凡例の右当たりの最近のPO率の平均を各グラフ別に記述しようと思っている。
以前にも述べた通り、凡例の上から順に数字が小さくなっていけば、それは何らかのメダルを増やさせまいとする操作が発生しているということになり、逆もまたしかり。

せっかくなので、FREE1個、FREE2個(率掲載)、3個、4個の場合のグラフものせておく。





2020年7月8日水曜日

予想PO率表示(3)

配当の期待値が、6~7球入賞後も表示されるように。8球後はそもそも期待値を掲載する意味がないので「---」で表示する。あと、以前のべた通り、すでに入っている番号は入賞済、という表記にしておいた。

上の画像は、6球終了時点での期待値をそれぞれの枠の右下に示している。
ここで注意すべきは、この黄色のバルーンの配置はあくまで5球後の最適と判断された位置であり、6球後に改めて最適の判断をしているわけではない。6球後にFREEを置けないという本家の仕様上、考える意味がないからである。
上の画像では右下あたりの盤面は4個ラインのリーチ待ちであるが、これが残り2球ともなるとずいぶん期待値が低い。
1~25の番号別期待値を見てもわかる通り、13,14に入ればかろうじて期待値が50%程度になるか、という程度である。なおまだ入賞番号は固定しているので7球目は7番に入賞するわけだが、この場合配当期待値はわずか21%である。
上記から見てわかる通り、FREE1個での配置ではもはやBET以上のWINは絶望的であることが分かる。
参考程度に、FREEを2個、3個、4個とした場合の6球終了時の配当期待値をのせる。
 FREE2個ともなると安定して等倍以上のWINが返ってくることが多い。
 FREE3個になるとBET×3倍程度も返ってくるようになったりする。
たしかアニマでは3倍か5倍かは知らないが、総額BETの何倍のWINを得るかでリザルト画面での効果音(無音、ピュリッ、テンジンジャーン)に変化が起こる。
FREE4個の場合、さらに配当の期待値は上昇し、例えばビンゴバルーン100BET×8面ならば総計800BETで、各番号の期待値は総額BETに対する倍率の期待値を示しているので、およそ5000~6000WINが期待できることになる。なお7と21番がよりよい配当を得られるとされているのは、7個ラインビンゴ成立によるもの。ただし、8面で平均を取られるのでそこまでずばぬけてこの2つの番号の期待値が高くなるわけではない。

さてそろそろ明日以降は、5,6,7球終了時の予想PO率の推移をグラフに表し、さらにゲーム終了時の配当率もグラフにしてみようと思っている。
もちろん5,6,7球と進むにつれて不確定性が下がってくるので、実際の配当率推移のグラフからずれにくくなっていくことが予想される。
どちらかというとこれの本領は実践モードである。もしこの予想PO率のグラフと、実際の払い戻し率のグラフがやたら離れていれば、それは操作疑惑濃厚である。

予想PO率表示(2)

番号モードのときのみ、各番号に入った場合の期待値を算出した。
例えば9番に入った場合は、今後の8面全体の払い戻し率として5.8倍程度が期待される、ということである。つまり、番号の右にある%の数字が高いほど、熱いナンバーである。

まだプログラムは組んでいないが、現時点で8や11は数値が小さいが、これらが入った後はそれぞれ11、8の数字が2段目2列目で7個ラインを形成するため、それらの番号の%の値が急上昇するはず。

なお1~5が0%なのは、すでに最初の5球でINしているため、期待値の総和の対象に入っていないということである。ただちょっと0%だと意味合い的によろしくないので、「入賞済」などにして対応予定である。

せっかくなのでアニマップにおける星獲得期待値も算出してみようと思ったので、それを実装。
%の上に小さく表示されているのが、星の獲得指数である。平均的な星の1面あたりの獲得率は通常、かなり低いので、平均星獲得個数に1000をかけたものとしている。
例えば×1と表示されていれば、それは星獲得平均個数は1/1000なので、平均的に1000回その盤面が出てようやく1個程度の獲得ということである。
左下はビンゴバルーン7個ラインによる星7個と、30倍以上の星3個が平均的であるというある意味直感と似た結果を出している。もちろん25倍で終わって星9個の場合もあるし、50倍を超えて星12個の場合もある。

明日からは、いよいよこの後の3球を実際に抽選させたり、ゲームを複数回行いその履歴をグラフにして表示したりすることを考えている。

2020年7月7日火曜日

予想PO率表示(1)

最適解のもとでの精密な期待値を、ウディタのほうでも計算させて表示させた。
…と1行だけ書いているが、実はこれが意外に時間がかかったりする。
各盤面に右下に色付きで書かれている数字は、もちろん平均払い戻し率(以後PO率と呼ぶ)であり、100%=1倍というわけで、この値が100%を超えれば等倍以上の配当が期待される。
とはいえ、例えば0倍が99%、100倍が1%であってもこの期待値は1倍、つまり100%であるので、値はあくまで目安である。長いこと同じ盤面で試行を繰りかえせば、その期待値に近づくが。

実際にうまくいっていることを念のため確認すると、左上の盤面はすでに3個ライン3が成立しており、これは2.5倍である。しかし平均払い戻し率が7.7倍であるのは、3個ラインがほかにも成立しやすいからである。その右の盤面は普通に5個ラインのオッズアップで400%以上は確定。そこに新規の4個ラインでの6倍、オッズアップ+1での6倍などの確率が上乗せされて553%となっている。

そしてやはり、FREEの個数が少ないと一気に期待値が下がってしまうということもこの8面を見るだけでも何となくわかる。
ビンゴバルーンで+FREEが最初に1個しか出なかった場合の期待値は40%少しつすでに判明しているので、8面全部+FREEが1個とかだと相当げんなりする。

とりあえずこれ以外にも、各番号ごとの期待値も別に計算させてある。これを右側に貼り付けようと思っている。番号を入力しない実践モードでは、これは必要ないというか不可能なので、何か別の機能でもつけようかと思っている。理論上の+FREE獲得個数と実際の獲得個数の比較によって、入ってほしい番号へのアニマ特有の操作があるかどうかを見極める材料にもなったりして。


余談だが、なんかこういう階級別に色付けする視覚的効果を付与するのが大好きだったりする。そして求めづらい数字がぽんっとプログラムの後で出たときの安堵と快感。
これはあのいわゆる極限を求める問題で答えが0や1、無限大以外に収束した場合の感覚と似ている(変態)

2020年7月6日月曜日

HIT処理全般(2)

謎の不具合が発生したがその原因は組→ID変換においての第4項のシグマ内の、単純乗算との混同の勘違いによるものだった。何を言っているかわからないと思うので、これはおいておいて、とうとう最適解をしゅっと与えるプログラムが完成し、それを視覚化した。
赤色が入賞バルーンで、黄色が最適解(平均払い戻し率最大)を与えるバルーンの配置である。なお、上の段から順に配置可能FREE数は4,3,2,1とした。
おまかせオートなどとは違い、しっかりと7個ラインや、5個ライン×2、そしてオッズアップの配置、さらに7個ラインリーチまでも考慮されていることがわかる。
本来は最適解の後に払い戻し率のデータがあったが、よく考えればここから1140通りの残り3球を考えてオッズの平均をとればいいだけなうえ、そもそも最適解をすばやくみつけることが重要なので、この辺りは気にしなくても良い。

なお、オッズアップの位置はいわずもがな赤色バルーンのあるところならばどこでもよい。一応上のほうから順番に、赤色の部分をオッズアップとするようにしているが、上の画像では下のほうに虹色が発生しているのは、これはかつて行った最適解探知での同一配置を得るための回転や対称移動を行った名残である。例えば右の列の上から3段目は、時計回りに半回転すると、組{1,6,13,15,23}に相当して、このとき若い番号1にオッズアップを割り振る。それをもどして(半回転させて)1が25の位置になっているので、下のほうに虹色が来ているわけである。
このようなことをする理由は、以前も相当これに悩まされたが、処理速度の問題である。
この1パターンを探知するのに、FREE4個ともなると相当な時間がかかり、CPUをフルにして何週間かかけることでようやく全パターンを得られるわけだが、それでも回転や対称移動での同一配置をかなり使っての結果である。

だがこれは逆に言えば、それだけ普通ではやりづらい試行であり、その分このデータの価値は高まる。事実、ビンゴバルーンの最適解について論じている人はこちらの知る限りいなかったのでそれだけ難しい(時間がかかる)ということだろう。

ここからは、各番号により配当期待値を出していってそれを色分けしたり、その後のランダム抽選での配当の偏りのグラフなどの作成も考えており、右側の余白に何を作るか楽しみである。


おまけ:ID→組への変換のプログラムの一部
演出がほぼ不要なのでスナック感覚でツールを作れるが、このあたりはノートにいろいろ書いて考えた。

ID→組への変換

さすがに頭の中で構築するにはあまりに難しいので、実際にID3000から組を導出する手順を考えた。
まず、組{1,2,3,4}…{1,2,3,25}までは、22組存在する。
つづいて、{1,2,4,5}…{1,2,4,25}までは21組。以下同様にして{1,2,24,25}までの組は
22+21+20+19+…+1となり、あのよくある等差数列で253個存在。

この後2つ目の番号を3に変えて{1,3,※,※}の形が何個あるかを調べると、これは21+20+19+18+…+1個存在する。

つまり、最初の番号がkであるものは、1を23-k個、2を22-k個、3を21-k個…と足し合わせたものになりこれは全部で(23-k)(24-k)(25-k)/6個存在することになる。ちなみにこれはk+1~25の数字を3つ並べる組み合わせで、25-kC3の値と一致する。

この25-kC3の値をk=1,2,3,4…と足しわせていくと、IDより大きな値になることがある。
例えばID3000の場合、k=1では2024。k=2まで足しわせると2024+1741=3765となり、超過。
つまり、k=2のところでこのID3000が存在していることになる。kの定め方より、ここでついに最初の番号が2と決まる。

この後、2番目の番号を探るために、とりあえず最初の番号が2のものの組み合わせのうち、何番目かを探る。そのためには3000から2024を引く。判定には3765を使用していたので、いましがたたした1741を再び引けばきれいにひとつまえの2024の値が残る。プログラムでも実際に[全体和]-[新規総和]みたいな感じでこれを行っている。

{2,※,※,※}の組で3000-2024=976番目であることがわかる。
この後、{2,3,4,5}…{2,3,4,25}は21個、…と再び同様のことをしていく。
ただし、この21個という値は、最初の番号が2だから21になるのであって、最初の番号がkの場合は23-k個になる。
21+20+19+18+…1は231であり、次の{2,4,※,※}は20+19+…1で210、{2,5,※,※}は190、{2,6,※,※}は171、{2,7,※,※}は153となる。これで和が955となる。
そして{2,8,※,※}は136通りあるので、2番目の数字は8と決まる。

そして3番目の数を同定するため、976から955を引く。すると値は21である。
{2,8,9,※}は16通り存在する。よって17番目は{2,8,10,11}である。
求めたいのは21番目なので、{2,8,10,15}となる。

以上より、ID3000は組{2,8,10,15}となる。実際にプログラムに3000を代入してもこうなることを確認。念のためにID1とID12650でそれぞれ組{1,2,3,4}と{22,23,24,25}が返されることを確認した。

なので組→IDよりID→組のほうが、少々プログラムは面倒になる。
…が、意外とウディタでも70行足らずでいけることが判明。

しかしこれ、4つの場合にしか適用されないので、これとまったく同様の手法を3つ、2つでも作っていくことになる。1つはIDがもはや組そのものなので操作は不要。

ウディタでのIDと組の相互変換

ここでやりたいことは、組{1,2,3,4,5}をID1として、組{21,22,23,24,25}をID53130とするような辞書式組み合わせ(重複なし)を考えるが、この組→IDとID→組の変換をウディタでやりたい、という話である。

過去の記事を見ると、組→IDは記号C(コンビネーション)とsumで表せる。
もちろんウディタにこの機能はないのでループを使って処理することにする。
シグマでよく使ういわゆる「k」的なものを変数として使って、これを利用して和をどんどんとっていく作戦である。難しそうに見えて実は難しくない。

以下はそれをウディタ用にアレンジしたもの。
3番目のIDが小さいことから、おそらくあってそうな雰囲気。
確かめるためには強制的に1,2,3,4,5マス目HITになるように数字シャッフルをしなければよいが、あとで分かるのでここはチェックはしないでおく。
以下はID
30769 -->[コモン10/78行]
2764 -->[コモン10/78行]
1803 -->[コモン10/78行]
24768 -->[コモン10/78行]
29065 -->[コモン10/78行]
35402 -->[コモン10/78行]
30604 -->[コモン10/78行]
5776 -->[コモン10/78行]

昨日、可変DBに最適なマスの位置をウディタに入力したので、あとはこのIDから可変にあらかじめ格納された最適解を示すID(1~1140)を呼び出し、それを5つの組に直せばあとは黄色バルーンを視覚的に配置するだけである。

なお、この可変DBへの入力、ウディタでは10000個しか最大でうつせないため、CSVファイルをぶつぎりにする必要があった。この作業も意外にいろいろと問題があって時間がかかった。

可変DBの値の呼び出しについてだが、例えばID12345の場合、
可変2のID2344番目にその最適解が眠っている。この2と2344の値は普通に10000での商にプラス1したものと、12345を10000でのあまりにマイナス1したものなので、ここの変換は一瞬。

次の記事ではいよいよ黄色バルーンを最適解として配置するところまでいく。

2020年7月5日日曜日

HIT処理全般(1)

とりあえず番号1,2,3,4,5,6,7,8に入った場合に赤色バルーンっぽくなるようにした。
加えて過去の自作アニマロッタからのビンゴの定義データを適用。これにより素早く倍率計算まで持っていくことができる。
ちなみにフリーを置いていないと上の状況では配当は0WINである。どこかで計算したと思うがFREE0個の場合のPO率はかなり低い。

なお、この赤色のバルーンは実際に領域を定義して、その領域内をクリックすれば赤色マスを置けるようにし、もう一度クリックすればそれを取り消せるようにゆくゆくはする予定である。
黄色バルーンについては、これは最適解を与えるためのものなので、機械側であらかじめ取得したデータから探って自動で黄色を配置する。
オッズの期待値の計算を行うのは、赤色バルーンが5個置かれたものから適宜、ということにする。ただ、この5つの番号の組み合わせをCSVファイルのIDに合うように5変数→1変数の変換が必要である。
例えばマスの組{1,2,3,4,5}からば1番目、{21,22,23,24,25}ならば辞書式で53130番目。
あとCSVをウディタの可変に入力していくが、悲しいことにウディタはデータを一つのDBで10000しか保有できない。
我の用意したデータは53130*2個のデータが各FREEに対して存在するので、
結局214520*2個のデータを可変に代入する操作が必要になる。
53130*2のデータを収容するのにDBが6個いるので、結局このデータは可変DBを24個ほど占有することになる。
しかしウディタは最初の10000個しか読めないため、以前作ったデータを10000個ずつこまぎれにするという作業まで発生。
これにより最適解データを可変側に導入するまで結構な時間がかかると思われる。

ビンゴバルーンの復習

我の手元にあるデータは、CSVファイルであり、例えば1行目には595,5.095614などと書かれている。右側の数字は払い戻し倍率の平均であり、つまりは何度も試行を行うと5.1倍程度の払い戻し率に落ち着く、という意味である。左の595というのは配置を意味している。

実はこのデータはFREEを4個配置できるという場合であり、オッズアップのようにすでにバルーンが配置されているマスにも黄色のバルーンを配置できるので25C4通り存在する。
その場合の数を辞書式にソート(例えばID1は最初の組み合わせで、これは1,2,3,4の位置にバルーンを配置)した順番が左に記されている。

これの変換の方法はずいぶん前なので作成した式を忘れたが、まあすぐに復元できるので良い。

まずはピクチャを用意する。これは自分で作成したただの●でよい。
縦7マス、加えて8面のようにするため、縦は28マス分の●を生成する予定。
たしか画面サイズは720であったから、一つの●あたり25ピクセルで25*28=700であるのでこれがよい。

地道に座標して以下のようになる。
まだまだしょぼいが、そもそもこのツール?は演出を目的としていないのでこれくらいでよい。
ここからは、番号モードとマスモードを別々に作っていこうかと思っている。
番号モードは、おそらくあまり使わないが、入ったナンバー5つで自動で最適解を探索するというもの。もちろん200マスも入力などしていられないので、これは実際にランダムに番号を振ってイメージトレーニングの一環としてやっていこうと考えている。
こっちのモードでは、せっかくなので次の番号がどこに入れば払い戻し率の平均がどれくらいかも表示したいと思っている。場合の数は20C3で1140通りなので、これならすぐに処理が可能と思われる。実践でないし。それで期待値別に%を色付けして、どの番号に入るとどれくらいの払い戻し率かを視覚化する。わくわくしてたまらん(変態)

通常モードは、普通に5球終了時にすぐに最適解を表示するシステムを考えている。
ただしこの場合、番号別の期待値は計算できない(番号を定義していないため)ので、これ以降の更新は行わない。
ただ、実際のWINとの乖離などを調べる指標として、ゲーム終了後の払い戻し率(理論)と実際のWIN率の関係を示したものなどが準備できればこれも面白いだろう。

まずは番号モードを作って、番号別の期待値を計算するモードを作ろうと思う。
バルーンの列などの定義は、いわずもがな過去作成した自作アニマロッタのプログラムをこちらに転用予定である。

とりあえずピクチャだけ配置。
…がしかしまだまだ先は長い。



再開の恐れあり

なんとか落ち着いてきたので、タイトル通り再開の恐れがある。

この期間中にアニマアンケートなどがあったらしいが、各コメントに200文字以上くらいの感想を書き込んで1万文字くらいになったかもしれない我のアンケートはなぜか向こうに送信できず残念であった。

あのアンケートから、アニマロッタ6ではおそらくフレンド機能でなんかいろいろ解放とかがあるのだろうと予想がついたので、現時点で自作アニマロッタをよいところまで持っていっても最新作の置換によってその威光?を失うと踏んだため、以後は実用的なものを作成しようと計画中である。

その中でもおそらく最も気になるのが、以前mathematicaで何十時間もかけて解析したビンゴバルーン最適解法である。この「最適」は、単にペイアウト率を最大にする、ということにしており、りんごの獲得や抽選の偏りは考慮していない。

そしてそのビンゴバルーンを8面で行った時、ユーザー側がセカンドロッタまで入ったマスを入力することで、最適な位置及び各面での払い戻し率を計算させようかと考えている。

この最適解を得るためには、当たり前だがすべて5球分入力し終えてから処理に入るととても間に合わないので、半年くらい前にPCにやらせまくった例のデータを用いる。

とはいえ、現時点では何もできていないので、以上のことは構想であることに注意。

今からその「ビンゴバルーン最適配置」をいつも通りウディタで作成していこうと考えている。これに関してはそこまで時間はかからないため、数日で出来上がるだろうとみている。


2020年4月7日火曜日

今後の予定

引き続き当分長い時間が取れそうにない感じなので、いったん休止とする。

2020年2月28日金曜日

現時点の状況

とりあえずあと2週間くらいはいろいろあって落ち着かないとみられている。

2020年2月12日水曜日

18-3 クリスタルチャレンジBETタイム

BETタイムをそこそこ実装した。
ルーレットの円の部分など、あまりに加工が下手なところが見えてしまっているが、こういうのは後で修正できるのでまあ置いておく。

上の画像のように、BETした額に応じて各マス加重値というものを与えており、
BET×加重値の分だけりんごの価値が上昇する。例えばオレンジのマスは加重値を8に設定、すなわち平均で280*8=2240程度の内部値になり、この内部値は金りんごLv1と金りんごLv2の境目付近である。

これを作るのに何が大変だったかというと、とにかくピクチャの配置の拡大率や座標、画像の加工で、肝心のプログラムとしては特に難しいことはしていない。

後はこの処理に、BETよりCREDITが少なかったりMAX3000BETを超えているとBETできないなどの拒否要件をつけて、左右の空白のりんごの枠に適切なりんごを配置するなどを行う。

これらを作成すると、ようやく抽選に移ることができる…が、当然ながら抽選を再現できるはずがないので、一定時間経過後に乱数によって結果が決まる、ということにする。

あとはGET!などの文字を作成して、ワンダーステップにぶちこむ、という作業になる。

ただしここから、クリスタルリンゴが介入してくるため、いったんこれまでのプログラムを見直す必要がある。とりあえず考えていることとしては、ワンダーステップの枠と予備枠計14個の変数を用意して、ここに1が代入されていればその枠はクリスタルである、ということにしようと思う。こうすれば内部値を保持したままクリスタルリンゴのピクチャをステップに表示することができる。

とはいえ、まだ羽りんごの処理も行っていないし、クリスタルJPの処理も未設定。
このクリスタルに関する一連の処理にはかなり時間がかかることは間違いない。
なにしろまず画像の調達とそれの加工で相当な時間を有するので。

2020年2月9日日曜日

18-2 クリスタルチャレンジ作成開始

いよいよクリスタルJP系の処理を作っていくことにする。
そのためにはまず羽りんごの実装だが、とりあえずこれは置いておき、まずはクリスタルチャレンジから作成する。

流れとしては、説明文がしばらく出た後、BETする画面になり、BETによって中央の円の中にある8つのりんごがパワーアップしていく。これがいったいどのくらいの価値上昇になるかは定かではないが、ここもまた推測でどうにかする。

まず参加には30BETが確定で必要で、いきなり500BETなどはできない。
この30BETで、縦横以外の4マスに必ずりんごが4つ出現する。その後はBETの切り替えにより、リンゴが発生したりりんごの価値が上昇したり、ということになる。

また並立処理としては、開始時からレインボーポケットが時計回りに90フレームくらいの間隔で推移していく。

あとは抽選されて、該当部分がGET!という演出を施し、ワンダーステップ枠に追加して終了となる。

というわけでまずは初期画面。
クレジットタブが出ていない問題はまたいつか解決予定。
とりあえず切り抜きなどしてかなり手作り感満載の初期画面を作成。
もうとにかく素材加工などが大変でなかなか前に進まないという。

ここから次はBET画面を作っていくことになる。

2020年2月8日土曜日

18-1 星システム一部実装

ちょっと余裕?があるので、アニマロッタのスターシステムについて導入を考えている。
ゆくゆくはプレイヤーごとに獲得星のランキングなどを作ることができれば…。

まず、アニマロッタのスターが何かということは、おそらくこのブログを見ている人ならばアニマロッタを知っているので言うことはないが、一応言っておくと特定の条件を満たしたときに付与されるオプション解放等に必要な「コイン」のようなものである。

がしかし、完成しているように見えて全然完成していない我のアニマロッタは、まだその星を消費できるような段階には当然至っていない。しかし、その星をある変数に格納して保存することならばできるわけである。

星は基本的にBET数×n倍の配当や、JP関係の獲得、最高役の獲得などで得られる。
これらが自作アニマロッタ内で発生したとき、ゲーム終了時にテロップを用意して星獲得を知らせる、という処理を行いたい。

ただし、やはりこれの作成にもまずは素材が必要。

テロップは透明状態から不透明度を増しつつ左へ座標移動していく。この間はたぶん数十フレーム程度。その後星獲得の理由と星獲得個数が右から流れてきて中央で止まる。2,3秒表示した後先に文字が左へフェードアウトし、ついでテロップもフェードアウト。
この操作が2回以上あれば、1回目が終わった後に2回目が順次発生、という形になる。

流れをスムーズにするため、この処理は並立実行、すなわちゲーム進行と同時に行う形にする。よってリザルト画面が出ているがこのテロップも出ている、ということはありうる。これらの点を踏まえると、なるべく上に表示、すなわちピクチャ番号を大きくする必要がある。

そして以下のように、星を獲得したことがゲーム内で表示されるようになった。



2020年1月5日日曜日

17-10 ビンゴバルーンのPO率実戦

さっそく、ビンゴバルーンを掲示板の疑問に適用しようと思う。
さすがに掲示板で発言するのは我の性にあわないので。以下の分をメダルゲーム掲示板より引用。


「ビンゴバルーンでfreeが4回に1回ぐらいしか2個以上出ない(3個は滅多に出ない)店は勝つのが難しいですかね?あと、poはどのくらいの設定でしょうか?」

この文面から判断するに、+FREE1個が70%、+FREE2個が25%、+FREE3個が5%くらいだろうと勝手に考えると、期待値の式に代入すると1.27567 - 0.545465 x - 0.202532 yにx=0.7,y=0.25なので1.27567-0.3818255-0.050633=0.8432115という結果になり、
最適な配置をしたもとでPO率は84.3%となる。
ワンダーチャンス分がPO率に5~10%程度影響すると仮定すると、このPO率は通常のゲーム範囲である。
このようにして、ビンゴバルーンのFREE配置率などを統計することにより、おおまかなPO率が把握できる…かもしれないと考えている。ただ向こう側の確率のシステムが一様なものだと仮定しての話だが…。

もう一つ引用。

「常に2個ずつ点灯していてもPO100%超えにはならないと思う。」

と文章があったのでこれも検証。これは単純にx=0,y=1なので1.07035ということで、予想に反してPO率は100%を超える。ただ、最適に配置した場合でこれなので、普通にやっていたりアニマロッタお得意の謎軌道ボールを考えると必ずしもこうとは断定できない。


2020年1月3日金曜日

17-9 ビンゴバルーンたぶん完全解析

ついにすべてのパターンの最適解探索が終了した。
これにより、FREE配置が1,2,3,4個いかなるときでも最適解を構成する一次元データが即座に得られる。(一次元というのはいわゆるIDのようなもので、ちょっとこれを組に変換する関数をつけば直ちに最適解を示す1~4次元のベクトルを得られる)

まず気になるFREE4個配置可能時のPO率は、1535.8%である。
したがって、平均としては、シンキングタイム時にFREE4個配置可能な場合、15倍の配当が期待できることになる。
これまでの結果をまとめると、
FREE0個配置 7.6%
FREE1個配置 43.8% 
FREE2個配置 189.9%
FREE3個配置 488.2%
FREE4個配置 1535.8%
ということになり、このデータから最初に+FREEのマスがどれくらいの確率で存在するかで、ビンゴバルーンで「勝てる」かどうかが分かる。

その前にちょっと20日くらいかけて得られたデータが正しいか確かめる。
シンキングタイム終了前、以下のようにバルーンが配置されていたとする。
このとき、FREE4個を置けるとすればどのように配置するのが最適か。
上記の場合、5個ラインにオッズアップ2個をかぶせて確定6倍とするのがよいか、
それとも5個ライン2つを狙いに行くのが良いか、はたまた7個ラインリーチを狙うのがよいか、さらには4個ライン×2の確定と5個ラインリーチなどを狙うか、などいろいろな考えが出てくる。
これを最適解データを使うと、この配置は{6,7,12,14,18}なのでIDは38094である。
このIDの最適解(一次元)を参照するとPO率が753.86%と出て、およそ7.5倍返し。
最適解はID2532であり、これは組にすると{2,5,9,22}。すなわち
これが最適配置となるらしい。5個ライン2つを狙いに行って、さらに4個ラインも成立しやすいような配置となっている。

ではいよいよ本命。ビンゴバルーンで勝てるのか否かを計算する。
ここまでの議論により、以下の結果が判明している。
FREE1個がx*(4/5)+y*(19/30)
FREE2個がx*(1/5)+y*(1/3)+(1-x-y)*(19/46)
FREE3個がy*(1/30)+(1-x-y)*(2/23)
FREE4個が(1-x-y)*(1/230)
xは初期+FREE1個が配置される確率、+yは初期FREE2個が配置される確率である。
1-x-yは当然ながら+FREE3個が出現する確率である。このあたりは確率の定義から自明。

あとはこの各出現率に各FREE個数による期待値を代入すると…。

上のグラフで、1.0という値を超えているような部分が一応「勝てる」場合に相当する。
もう少し具体的に言うならば、上記の期待値は1.27567 - 0.545465 x - 0.202532 yとなるため、これが1より大きい、すなわち
上のグラフで、青い線よりの位置に{x,y}の座標が存在すればよい。
もちろんいうまでもなく、確率は1までなので縦軸の1より大きい部分は意味をなさないので、実際は上のグラフより上かつxとyは0以上1以下、さらにx+yは1以下の制約がついたりする。

分かりやすいように以下にまとめると
開始時FREEマス1個が50%以上→だめ
開始時FREEマス1個が30%程度→FREEマス2個が60%以下(=FREEマス3個が10%以上)で勝てる
開始時FREEマス1個が10%以下→勝てる
というような具合になる。
なのでFREEマスが常に1個だけのようでは勝つのは難しいといえる。

ついにビンゴバルーンの最適解構成が完全に終了したが、今後どうするかは不明。
なお、この解析に当たり、4個ライン×4と3個ライン×7はまだ情報が不明なため、それぞれ30倍と50倍、という風に推測している。
がこの成立確率は極めて少ないため、あまり気にする必要はない。

もうこれでビンゴバルーンのどこにFREEを配置すべきかとかを考える必要はなくなった…が、正直役立つかと言われれば微妙。やはりいつかアプリ化してもよいかもしれない。


ついでに今後の自作アニマロッタの展開を述べるが、春まで非常に忙しいのでこれを作る余裕は皆無。春になれば再開する可能性あり。配布とかをしても面白そうだがこのブログのアクセス数は非常に少ないので需要がないと判断。
作るとすれば以下のシステムなどを実装予定。

ランキング
マイページの一部
羽りんご、クリスタルりんごとクリスタルJPC
ダブルアップチャンス
ワンダフルJPC

このあたりは実装する可能性がある。



2020年1月1日水曜日

17-8 ビンゴバルーンFREE4個解析途中経過(2)

さらに10001通り目から15000通り目までの解析が終わり、残すは15001通り目から53130通り目となった。一見30%程度しか進んでいないように見えるが、実はここまで解析してきたパターンはおよそ6000通りであり、残りはわずか1000通りである。
したがって、残り3日弱での完成が見込まれる。

これができれば、FREE4個の配置の最適解を与えることができ、晴れてビンゴバルーンの解析は完全に終了することになる。

なお常にPCが稼働しているので、排気の熱を常に放出している。かれこれ16日(400時間程度)も連続で計算させていることになっており、なかなかがんばってくれている。

なお我は、アニマロッタの工学的な構造及びプログラムのコード、あとは画像データからBGMに至るまでとにかく様々な点に興味津々である。
なのでたまにオークションにあるシステムディスクとかがすごく気になるが、何も有益なものが入っていなければ悲しいので購入を躊躇している。
将来いつかアニマロッタの上記秘密を知るつもりで現在いろいろ頑張っている。