ブログ内検索

2019年9月23日月曜日

14-10 アニマロッタ番号予想?

アニマロッタは実際にプレイする場合には攻略できるのか、という話。
ここでは、さまざまなボールの発射から入賞までの盤面回転数(ポケット数)をxとして、確率p(x)はそれが起こる確率とする。
例えばP(25)=1とは、25マス分、つまりちょうど1周して入賞する確率が1ということになる。ただしこの1周は、ルーレット版という慣性系から見た話で、固定座標系の話ではない点に注意。初めは固定でやろうと思ったが後々慣性系のほうが扱いやすい気がしたのでそちらに変更した。

さて、以下はいろいろとボール入賞の時間を決めるさまざまなパラメータを定義していく。前提として、アニマロッタの盤面は25秒でちょうど1回転する。

p(x):発射してからxマス分通過して入賞する確率
q(x):カウント0から発射までに盤面のマスがxマス分移動する確率
L:ボール発射の間隔。ポケット移動数で決める
S:セカンドロッタ発射までのポケット移動数 ここでL,Sはたぶん定数だと思われる。
N:残りBET時間25秒の時点での盤面中心と発射口を結んだときの番号との交点


このようなもとで、BETタイム残り時間が25のときに、どのようにアニマツリー(ヘブンツリー)の番号を設定すればよいのか、という議論を行う。ビンゴガーデンでも似たようなことが言える。

さて、まずは具体例で考えてみる。
残り時間25秒の時点で発射口と中心を結ぶ直線状に番号が1であったとする。
これは定義からN=1となる。
すると25秒経過後は角速度が2π/25であるから(25秒かけて2π回転)
残り0秒でボール発射口付近の番号は変わらず1。
q(x)はxによって定まる確率分布である。なぜなら、開始時「ゲームスタートです」とかアニマのセリフなどがあるため、不確定要素だからである。
さて、ここでは具体例なので分かりやすくq(x)をデルタ関数として扱う。つまり、q(12)=1というようなイメージで考えてほしい。離散型なのでこれで定義できているはず。もちろんq(x)=0(x!=12)である。
こうなると、発射時発射口付近の番号は12で確定。
そしてp(x)がxマス分の移動で入賞、ということなので12+xを25でわったあまりが入賞ポケットとなる。ただしx=13の場合は25と約束する。

当然このpは偏りがあればあるほどうれしいことになる。
p,qがデルタ関数であるならば最強だが…。

なお、サードロッタ以降は不確定要素がどんどん増えてきて確率分布に鋭いピークが見られなくなってくる感じなので、考えないことにする。


ではこれを一般に拡張して考えてみる。ただし、N+kなどは26以上になることもあり、これらは先ほどの定義に従って剰余を取って計算するものとしておく。
残り25秒での番号はNである。よって残り0秒での番号もNである。
カウント0から発射までに盤面はq(x)の確率でx移動する。
よって発射時N+kの番号である確率はq(k)とあらわされる。(1周以上はしない)
そして、p(x)の確率でxポケット移動するので、
入賞時N+1のポケットである確率はx=0のときで、これの確率はq(1)p(0)である。
入賞時N+k+nの番号である確率は、x=nのときで、これの確率はq(k)p(n)である。

じゃあまずはここまでの話をまとめる。適当に確率分布として
p(n)=(n-50)/k(50<=n<=70),20/k-(n-70)/k(70<n<=90)となるように(パルス波)
うまくkを定める。
高校2年の基礎的な問題だが面倒なのでmathematicaに投げる。
k=400とすれば離散型確率分布の定義を満たす。
例えば、2周と10ポケット分回って落ちる確率は2周が50ポケットに相当するのでその和は60ポケット分。すなわちp(60)=(60-50)/400=1/40となり2.5%である。

同様に、qはさすがに0秒から発射までは15ポケットはまず移動しない(全ステーションワンダーチャンスならばあれだが…)
q(n)=(n-5)/k (5<=n<=10), 5/k-(n-10)/k (11<=n<=15)と狭く定めるとk=25が適する。
N=1と仮定すると、N+k+nの番号に入る確率はq(k)p(n)である。
よってⅹ番に入る確率はN+k+n=xであることより、n=x-k-Nとなるので、
確率はq(k)p(x-k-N)となる。ここでNは定数、kは5から15までを動くことを考えると、
このkを各々足し合わせたものが実際の確率になると考えられる。

それをmathematicaに描画させると
このようになり、x=80付近で極大値かつ最大値をとる。
極大とは近傍で最大という最大値の特殊バージョンのようなものである。
y=x^3のx=0が極値でない理由は極値の定義を満たさないため。十分小さな正の数εに対して明らかに±εをとればそれぞれx=0が極大、極小である定義を満たさない。
これは25での剰余が5なので、番号5にもっとも入りやすい(といっても確率は4~5%だが)という結果を得られる。たぶん。
当然、N=1、pの最大値が70でqの最大値が10なので80付近に集中するのは実はこんなことしなくてもわかる話という…。

しかしこれまでの議論はパルス波でおこなっただけであり、やはりこれが真価を発揮するのは確率分布に複数のピークがある場合である。
これらは実際に統計をとってみるしか方法がない。

ちなみにこれまでの議論は1球目の話で、2球目は1球目の入賞の確率分布を明らかにLポケット平行移動させたものなので、2,3球目は簡単。

後は1,2,3球目それぞれ1~25番ごとの確率変数について定義しなおして、ファーストロッタでもっとも入りやすい番号がどれかを議論する。
普通に26→1,27→2,25→25,50→25などに引数をうつす写像を考えればよい。
これは普通に引数が、25での剰余が0の場合は(商-1)*25を引数から減算し、それ以外の倍は商*25を減算すればよい。以下はそれを参考にして、1~25番別に入賞する確率を示したものである。
80付近、つまり5番に集中しやすいのが、1~25番別に1球目の様子を見ていてもわかると思う。逆に20番付近は、少し入賞確率が低いことが分かる。ここまでの議論があっていればの話だが。
とはいえ、入賞確率はほとんど3.8%~4.6%程度とほぼ変化がない。
その理由は、pの確率分布の範囲として50から90という実質2周で落ちるものもあれば4週近く回るものもあるという本物以上にばらつきのあるもので実験をしたからと考えられる。ではそのpの確率分布を狭めるとどうなるのか、というのを、pの範囲を50から70に狭めてみると以下のようになる。
この場合はpが60が最も出やすく、さらにqは条件はそのままで10が最大として、
70。これは番号でいうと1+70%25で21付近。たしかに上のグラフは21付近で最大値を取っていることが分かる。そして、この場合は5~10番付近がほぼ入賞しないということが分かる。

このように、たった2つのパルス波のような確率分布を考えるだけでもこのようにボールの入賞確率は多様に変化するという面白みがある。

アニマロッタを本気で攻略するなら、これに加えてp,qの確率分布の特徴をより細かく見ていくなどしていけば、おおまかな番号予想は不可能ではないと考える。
まあなんか、謎の力?によって目当ての番号を外せるっぽいので、完全に有効とはもはやいいきれないが、おおまかな予想ができるだけでもヘブンツリーやビンゴガーデンは有利になる。

この数字予想の考えはすでにアニマロッタ2に先駆者たちが実験して稼いでいたらしいので、我も確率分布で可視化してデータを地道にとってやってもよいと思っている。
彼ら?は相当賢く、チェーンボンバー大辞典などを作ってアクセス数1000000超えのまさに大物である。我は当時そのようなシミュレーションをできる人物にあこがれていたのは秘密。

2019年9月22日日曜日

14-9 アニマロッタの最高設定について

まず、アニマロッタの最高設定は、店側が設定できるPO率で最大のもの、とラフに定義しておく。
では、その最高設定ではいったいどれくらい増加し、またこの設定の影響を受けやすいゲームはどれか、ということを考える。
ちょうど、アニマロッタを貸し切って最高設定で遊ぶというすさまじい動画があったので、それを参考にさせていただく。

エクセルで処理した結果が以下。
注意として、ツリーは一律3000ではないが5000での配当も3000BETして処理しているので実際より高い値がでている。この点に注意。
あとたまにクラッシュドロップ、サンダースマッシュが混じっているが、この表ではほぼほぼアニマドロップとサンダーブレイクと割り切ってよい。
左からアニマツリー、ハッピーフラワー、ビンゴバルーン、アニマドロップ(クラッシュドロップ)、チェーンボンバー、ビンゴガーデン、サンダースマッシュ(サンダーブレイク)、ハニーファイブ、ビンゴファーム。

TOTALは、109ゲーム分取得したもののWINの総和。
AVERAGEは3000BETとしたときの平均返却枚数。いわばほぼPO率そのもの。
POは、OUT/INに100をかけたもの。100overで勝っており、100lessで負け。100は引き分け。
CONTRIBUTEは配当への貢献度。高ければ高いほど、そのゲームの配当がもたらした成果が大きいことを示す。

さて、上のグラフを見ると、アニマツリーは一部5000BETを3000BETと扱っているので高い値が出てしまうので、それを考えるとおそらく実際のPOは100%を切っているはず。

MAX設定の割にはハッピーフラワーのPO率は65%と良くない。
ビンゴバルーンはPO率95%と、やはりFREEの柔軟性のおかげか払い戻しの割合が良い。
うまくFREEを配置すればもっと良い効果を得られるかもしれない。
アニマドロップはPO率101%で、相当良い。このアニマドロップは後続の緑、赤、紫ドロップが内部依存な感じがかなりするので、やはりそれが顕著に表れているのだろう。
チェーンボンバーは79%で、あまりよくない。やはり100ゲーム程度なので全消しも出にくいのかもしれない。
ビンゴガーデンは91%で、これもなかなか良い…が面白みが少ない。
サンダーブレイクが最上段獲得が2回あったらしくこれでPO率は跳ね上がっている。
この大当たり2回を除いてもPO率は70%台っぽく、これはなかなか設定依存らしい…?
ハニーファイブは連荘が全然しておらず、PO率も62%程度とシミュレーションなどの結果とかなり酷似する。最高設定のもとではあまりすべきではない…?
ビンゴファームは90%で悪くないがジリ貧。

以上をまとめると、やはり内部依存度の高いアニマドロップ、サンダー系が良いような気がした。これらは初期配置で雷が多かったりドロップ補充でよいドロップを生成したりなど、デジタル部分の要素が多いからだと思われる。

よしじゃあ決まりや…。
最高設定のアニマがプレイできるときはとりあえずビンゴバルーン、アニマドロップ、サンダー系をやろうか…。


14-8 虹りんご獲得動画

以下は虹りんごが出現し、それをGETするまでの動画となる。
虹りんご発生については以下のイベントなどで動作している。
まずコモンイベント767で行われているのは、この画面では上のほうから見ていくと、
0でない数字を詰めていくという結構使うかもしれないプログラム。
実際には、BETしていないゲームにはリンゴは出現しないので、
cself[20]で各ゲームのBETを取得している。BETや設定はいつでも変更しやすいように可変DBに登録している。
そしてBETが0でない、すなわちゲームに参加している場合のみ、カウントという変数を用意して順番に所定の変数にその番号を代入するようにしている。
例えばビンゴガーデン、チェーンボンバーのみにBETしていたら、ナインビンゴにおけるこれらのゲームIDはそれぞれ5,2なので、全部BETで9ゲーム(ナインビンゴには虹は出現しないとしている)より9つの変数のうち、前から2,5を返されることになる。
ちゃんと次ゲームでこのカウントは初期化する必要があるので、これはリザルト画面後のローカル変数初期化処理を作ってそこは対処している。
そしてこの2,5というのは明らかに長さ2の列(この長さ2というのはカウントの変数そのものである)なので、確率変数として1or2をランダムに生成することにより、賭けているこの2ゲームのいずれかに虹りんごが出現する、というプログラムである。

もちろん1~9ゲームをランダムで選んで、その後BETしているかどうか判定してBETしていなければまたランダムで選んで…を繰り返しても良いが、これだと1ゲームしかBETしていないと無駄に処理の繰り返しの確率が上昇して処理がわずかだが重くなる可能性がある。あとしかるべき処置をしなければBETなしで無限ループする。

そういうわけで、時間がかからないという保証を得られる前者のプログラムのほうがよいだろう、という結論に最近至った。
これまではあまり考えていなかったが、ハニーエイトのSTARTやLUCKYの規定をおこなうあたりからこの案が自然と芽生えてきた。以前はそんなことを考えていなかったが、このほうが良いような気がした。
ただでさえこのゲームは並立コモンが莫大な量存在して、なんとかプログラムの処理を軽減しようとひたすら特にチェーンボンバーとアニマドロップでがんばったものなので。


話を戻して虹りんごが出現するゲームが消えた後は、りんごの内部値を現在のもの(BETタイム時に既定)から-1に変更する。内部値情報を失うが、そもそも虹りんごは平均BET依存なので問題ない。あと-1にしておくことでリザルト画面でのワンダーステップへのりんご内部値の代入及び水平投射運動も、1以上の内部値に対して行う、という定義からりんご未取得同様、無視できるので都合がよい。
羽りんごやクリスタルりんごは、内部値をもっているのは明らかなのでこの場合は、10万の位が1のものという位置づけをすることが考えられる。
内部値100000をこの定義以外で出すには、MAX3000BETのアニマでは内部値は21000周辺なので不可能である。もちろんワンダーチャンス140000付近からの0ラインを連発すればいつかはたどり着くが…。
まあこういうのはあとで考えればよいので割愛。

あとはピクチャとして「(りんご)出現!」というマークを出すのが鉄則になっている。
余談だが、アニマ4,5ではとりあえず虹りんごの場合はSTARTの文字出現と同時にでてきて、羽りんごの表示は各ゲームがSTARTによってゲーム開始許可を与えられてから行われる。ただ、アニマ1,2付近はそうではなく、やはり後者の表示タイミングに準じていた。

たっだコモンイベント1個のしかも50行程度のプログラムでも結構話す内容がある。
…となるとこの1個あたりこれの数倍から数十倍のものが多い800個近いコモンイベントを話しているとたぶんとんでもないことになるので、全部の説明はいやや。



2019年9月21日土曜日

14-7 虹りんごの実装

さて、ゲームも安定してきたのでいよいよ虹りんごを作成しようかと思っている。
画像は、すでにカラコロッタにもあるように加工済み。
以下の画像を使う。
さて、ここから虹りんごの処理を通常のりんご獲得に付加する形でプログラムを組んでいくわけである。そしていろいろやって虹りんご出現から獲得、JPCへの流れを実現した。
 虹りんごが出現する。
 虹りんごGET確定
 虹りんご獲得エフェクト
 ダイレクト獲得の喜びを全画面で表現
なお作品によってDIRECTの背景が虹ではなくて緑だったり金だったりするのもあるっぽい。
リザルト画面では虹りんごは表示されずDIRECTとして最下段に描画されてそのままJPCへと移行する。JP額はナインビンゴモードなのでこのBET額だと150000である。たぶん。

あ、もちろん虹りんごはワンダーチャンス中には出ない。
虹りんご獲得時はワンダーチャンス終了かつ8ライン成立+JP額を所定の計算式、というふうにしているのでおかしなことが起こる。
ただし虹りんごからのJPCであることを示すためにあるフラグ一つによって判別しており、それによって最下段に「ワンダーチャンス」か「DIRECT」かが判定されている。

この一連の流れ、結構面倒だが演出としてはなかなか面白い。
また画像と音を動画から探して地道に加工した。

もちろん虹りんごの発生率は1ゲームごとに0%から100%まで1%きざみで設定可能。
わずかにいじくれば0.1%きざみでもなんでもできる。

虹りんごは以下のように通常ゲームに溶け込んでいる。
 ビンゴの配置プログラムが最適化されていないのでビンゴバルーンだけ配当なしという実機では珍しい現象が起こる。そしてこのビンゴガーデンに虹りんご発生中。
ラインのパイプ?が虹色じゃないやん!とかいうことには突っ込まないこと。
おっええやん

2019年9月20日金曜日

14-6 自作アニマロッタ5プレイ動画

久しぶりにプレイ?動画をあげることにする。
前回のナインビンゴから変更点などもあるので。
…と思ったんだが、なんか容量が重くてアップロードできん…。
そのため、画質を下げて投稿することにする。
もちろん実際の自作アニマロッタはもっと画質はきれいである。
やっぱりにぎやかになるとその分フレーム間の差分が増加するので圧縮しづらいっぽい。
この動画で90MBくらい。普通にフル画面で撮ると130MBとかいって投稿できない。

確かにワンダーチャンスや、背景の雲の移動、配当表示の更新などに変化がみられるのが分かるだろう。

いやしかし我もなんかハイベットとかして楽しんでみたいなあと思っていたりもする。
ラウンドワンなんか10BETずつそれぞれ1つのゲームにかけていても1000円で1時間持つかどうか。あれでは話にならんが、勉強だらけの合間の気休めあるいは癒しには悪くない。

YAZ寝屋川でアニマロッタMAX設定となるので夕方まで勉強してから行きたい。
あそこは子連れだらけでまず席は空かないが、22時を回れば子供は強制退去なのでそれ以降はほぼほぼ席がわずかに空いてくる。
アニマロッタのMAX設定とはいったいどのような構成となっているのかを確かめる。
それを参考にすれば自作アニマロッタでもPO率設定の目安が分かるか…?

ちなみにMAXのカラコロッタの挙動はというと、
サルサルベージの倍率が3,4球連続から出現するものばかり、
あにまだまは消し玉購入で色が分散する、
バブルクラップでオッズアップ玉が出やすい…?
スペシャルゾーンに入る可能性が気持ち高い…?

など、特にサルサルベージとあにまだまはやはり設定の影響を相当受けるらしい。
ただ残念ながら、22時を超えないと席は空かなかったうえこれに気づいたのが金曜日で、しかもその日は模試で朝9時から20時まで延々とテストが5教科あったため、YAZについたのは21時を回っていた。22時過ぎから23時30分頃までなんとかプレイ出来て上記のような感想となった。

ただYAZ寝屋川は禁断の技を使うため、常連でない我々は確実に不利となるため注意。
あと常連の輪がなぜか濃いため、周囲を寄せ付けないような雰囲気になっている。
さらにJPCの額が6桁、7桁なので圧倒されるだろう。

アニマを相当極めたもののみが許されるような世界といえなくもないかもしれないが、
我もある意味アニマを別の意味で極めている。もう熱中することはなくなったが…。



14-5 アニマドロップのPO率調整

アニマドロップの初期配置はこちらが調べた限りでは7パターン存在して、経験則から最初の2球で全消し可能な配置がPO率が高そうなのは明白である。
ついでそれに1個だけ番号のついたやつ、そして最上段が全部くっついた「良くない」配置がある。
以下はサンダースマッシュのときと同様のメモ。あまり気にしない。

パターン1 最上段8個
パターン2 最上段8個
パターン3 最上段6個
パターン4 最上段6個
パターン5 最上段8個
パターン6 最上段6個
パターン7 最上段6個
あっこれ、最上段7個のパターンないやんということに今気づいたが、まあ別にええか…。
当然ながら、良配置はパターン3,4,6,7を意味する。

そして悪配置、つまり最上段が常に8個になる配置でPO率がどのように推移するのか再び夜通し試すことになる。
ついでに本物らしく光や背景にちょっとしたエフェクトをつけてみた。

上の画像、実は背景の雲の画像が左側に流れるように動いているが…これでは非常にわかりづらい。しかしこれでなんかより本物っぽい躍動感?の導出に一歩近づいたような気がする。

これでアニマドロップの挙動の様子を見る。初期配置の影響がPO率にどれくらい影響があるのかも知っておきたい。

14-4 配当傾斜表示

さて、各ゲーム数が1000を超えてだいぶんPO率も安定してきたところでその画像を貼る。
これによると、アニマドロップ以外はなんかいい感じのPO率になっているのではないかと思う。ガーデンとバルーンが悪いのはしょうがない。
これはやっぱりアニマドロップの初期配置にもPO率依存の設定を加えるほかあるまい…。
全体POは84%で、ラウンドワンが88%らしいので、なかなか再現率が良い…?

さてこの記事での本題に移る。それは、これまで配当はなんかなぞの図形にx軸に水平に数字が描画されていたと思うが、それを今回は反時計回りにπ/18(10度)ほど回転させたいと思っている。
しかし、この数字描画はどうやっているかというと、
例えば5桁表示なら所定の中心座標を取得した後中央にある3桁目は普通にそのマスでよいが、拡大率に応じて2桁目と4桁目は文字を開けなければならない。
そして1,5桁目もそれは同じである。
このようにして、ピクチャ5個を間隔をあけて表示しているというところに、配当文字の傾斜を容易とできない理由がある。

しかし、図を使うことにより、これは簡単に解決できる。
もし中心の座標が分かれば、そこを中心として文字を現在位置から中心座標と等しい距離を保ちながら10度回転させ、さらに自分自身の文字の傾斜度も10度回転させればそれでよい。回転処理、というとすぐさま回転行
列の話になってきて、ウディタでは行列は実装されていないが定義により簡単に導入することも可能である。
がしかし、今回は回転させるのは反時計回りに10度くらいしかないので、もうちょっと初等的な解放を使って求めてみることにした。単純に回転させた軌跡を描いて、そこに直角三角形を描いて実際の相対的な移動を考える方法である。

さて、n桁で上からm番目の桁は、(n+1-2m)/2にaを乗じた距離分、中心から離れている。
ここでaは拡大率依存の文字間である。
例として、n=1,m=1ならば自分自身が中心なので当然距離は0。
距離が0ということは点は一致。詳しくは距離空間の定義を参照。
n=6,m=2ならば3a/2である。
これは、6桁目で2文字目、つまり一万の位であり、
一万と千の位には定義から文字間a、そして千と百の位は、この間に中心があるので
中心からの距離としては線の位はa/2。よって合計して3a/2である。

中心との距離さえわかってしまえば、反時計周りにθ(>0)回転させるということは、
x軸方向に(n+1-2m)/2 * (1-cosθ)移動し、
y軸方向に(n+1-2m)/2 * sinθ 移動するということに置き換えられ、これは
中心座標と自身のピクチャ座標に依存しない。
というわけで、中心座標を入力せずに、引数としては回転角度、桁、昇順での桁番号を取得するだけで複数の数字を一つのピクチャとみた回転処理ができるわけである。

余談だが、ウディタでは数字をピクチャとして描画する機能があり、これを使えば数字の拡大などは楽だが、なぜか回転できない。結局これを自分で作るしかないわけである。

プログラムへの組み込み方としては、
さきにn+1-2mを計算させておいて、1000-(cosθ*1000)を計算。それから最後に2*1000、つまり2000で割ればよい。でないと問題が生じる。
具体的には、2*0.5とかをウディタで計算させるとき、2*5/10としなければならず、2/10をしてから*5するのはNG。なぜなら2/10は0を返してしまい、それに5をかけても0だからである。この点に注意して常に配当計算やPO計算を行っている。もちろんこういうゲームを作り始めた初期(2年くらい前?)は、これの計算でやらかしてたりする。

そうしてプログラムは以下のように組んだ。
要するに桁数を取得(このもうちょっと上の行なので表示されてない)して、各桁の数字に対して先ほどのべた座標移動を施す。そうして以下のように配当表示が進化した。
確かに配当の表示がアニマロッタっぽくなったような気がする。
ついでに数字のピクチャも若干金色の明度をあげた。

さて、今度は話を戻してアニマドロップの初期配置によってなるべくPO率を設定できるようにしてみる。これはコモンイベント579番で、800行くらいある。



2019年9月19日木曜日

14-3 全体POとサンダースマッシュ

数値化してわかりやすく全体的なPO率がワンダー抜きとありで表示されるようにした。
サンダースマッシュの設定を下げたのでPO率が70~90%くらいにおさまってくれればうれしい。
本日夜よりやはり連続でゲームを行わせて様子を見る。




14-2 サンダースマッシュPO調整

最近ルイーダの酒場が遠くて行きにくいのでエオルゼアカフェに行きだすようになった。
さて、手始めにサンダースマッシュから手を付けていくことにする。

初期配置は番号の一致からとにかく地道にマスを定義したため、これはコモンイベント681番に相当するが、プログラムとしては2503行となっている。これは扱いづらいわ…。

ここではちょっとメモ代わりにこの記事を使用する。こちらがyoutubeなどの動画を参考にしてとったデータでは、とりあえず12パターン(左右対称は同一とみなす)存在した。
そのパターンにおける雷マスの数を順に書いていく。
また、最下段には必ず雷マスが1個だけ配置されるという条件も満たさなければならない。

パターン1 最下段あり 雷7個
パターン2 最下段なし 雷5個
パターン3 最下段なし 雷6個
パターン4 最下段あり 雷6個
パターン5 最下段なし 雷5個
パターン6 最下段あり 雷7個
パターン7 最下段あり 雷8個
パターン8 最下段なし 雷7個
パターン9 最下段あり 雷6個
パターン10 最下段あり 雷7個
パターン11 最下段なし 雷7個
パターン12 最下段あり 雷7個
さて、これらからわかることは、雷マスの個数は5~8個で、パターン5とかが設定がよくないときに配置すべき…?という推測くらいである。
しかし5個や8個のパターンは少ないため、ここは6個以上の出現確率と7個以上の出現確率と2つの変数(実際には後者は前者によって定まるので変数は1つ)でPO率を調整するのがよさそうである。
そのためには、とりあえず雷6個以下と雷7個以上になるような配置を考える必要がある。
ただし前提条件として、最下段には雷マスを最低1個含み、左右対称はたぶんあってもよかったような気がする。

とりあえず6個以下、7個以上に分けると
6個以下…パターン2,3,4,5,9
7個以上…パターン1,6,7,8,10,11,12
さらに最下段存在が1,4,6,7,9,10,12である。
例えば左側が6個以下、右側が7個以上というふうに乱数で選ばれたのならば、
とりあえず左か右どちらに最下段雷のパターンを配置するか決める必要があり、ここでは仮に左とすると、左の候補は2,3,4,5,9かつ1,4,6,7,9,10,12を満たす番号からランダムに一つ、つまり4,9のいずれか、右側は1,6,7,8,10,11,12かつ2,3,5,8,11の共通集合となりこれは8,11。
よって4パターンに絞られることになる。
共通部分とかどうすんねん、とかいう話はあるが、こういうのは例えば加算の応用などによって取得できるのは直ちに分かるのでやり方はちょっと割愛する。
方針が決まったので後はなんとなく適当に、しかし確実にプログラムを組んでいく。

そして以下のようになった。上の画像は6個以下100%の確率。下の画像は7個以上100%の確率。
たしかに存在する雷マスの個数が6個以下と7個以上になっているのが分かる。
とりあえず、これらをごちゃまぜにした以下のデータを参考にしてみる。
一律3000BETとして、サンダースマッシュを919ゲームさせたときの様子。これはPO率96%ということになっている。ただこのPO率はかなり高いとみられ、雷マス7個以上確定にするとこれはほぼほぼPO率100%を超える可能性がある。構成パターンなどから絶対に超える、とは言い切れないが。
というわけで、6個以下の配置率を100%にすれば、このPO率は下がるのではないかということに期待して、再びPO率の統計を取っていこうと思う。
後はついでにアニマドロップの補充のパターンをちょっと悪くしてPO率85%程度にしたいのでこれを変更。
一応、緑ゾーンの悪配置、普通配置、良配置の確率(%)を30,50,20から30,60,10として、
赤ゾーンを20,40,40から20,50,30
紫ゾーンを10,30,60から10,40,50というふうにしてPO率の減少具合を見てみる。
あとチェーンボンバーもPO率が高いので黒、赤、青、虹爆弾出現率は原稿を80,8,7,5%としていたがこれを90,4,4,2と変更する。
あとはこれで夜通しひたすら無人プレイさせるで。

2019年9月17日火曜日

14-1 PO調整処理開始

さて、ここまでシステムをくみ上げれば、あとはいよいよPO率の調整システムを組み込む段階に入ってくる。
さて、PO率調整とは何かをあらかじめ述べておくと、たぶん知っていると思うが、
こちら側(プレイヤー側)がメダルをINした枚数を分母とし、機械によって払い出された枚数を分子とし、それを百分率としてあらわしたもの。
例えば1000枚投入して500枚返ってきたのなら、それはPO率50%という。

ここで注意しておきたいのは、開始のCREDITが1000枚で、何ゲームかプレイして500枚となった場合、これはPO率50%とはいわないことである。
なぜならそれが1ゲームで500BETしたのならば、結局はメダルのINが500枚で、払い出しが0枚ということになり定義に当てはめるとPO率0%となるからである。

そして、当然だがアニマロッタなどには設定、いわゆるPO率をおおまかに調整する機能が存在するらしい。その証拠画像や体験はもうすでに知られている通り。
設定とか存在しなくて完全物理抽選やとかい言う人もいるが、それは気にしない。
このアニマロッタは甘くないということが自作アニマロッタのプログラミングに数十万行、しかも初代から断続的ではあるが通産7年触れあった我が言うのだから信憑性はあるだろう。
現にYAZ寝屋川はMAX営業と称してたまに最高設定で稼働させているし、動画にも「最高設定」と書かれた動画もあるはず。

話を戻して、PO率がどうとかいうのは過去に我がウディタ内でグラフを描画させてわかりやすく?解説している。なので一気に話を飛ばして、各ゲームのPO率の詳細な設定をどうやるか、というところから話を始める。

ビンゴガーデン
これは初期配置カードにより、PO率は60%くらいから100%近いものまで推移し、とてもPO率調整には向いているゲーム。
チェーンボンバー
これが非常に難題で、本物はチェーンボンバー大辞典などにあるようにパターン化されているっぽいが、ランダム配置の我のアニマロッタではPOの調整する手段がない。
ただ、疑似的に表現するならば、5色のブロックをなるべく4色のブロックで構成するようにして連鎖しやすくする、というのが挙げられる。
ただこれ、アニマロッタのゲームの仕様から直ちにBETタイム中に見抜かれて対策されると思われる。よってこれはあまりよろしくない。
そこで、チェーンボンバーには爆弾付与確率を設定する。上から降ってくる爆弾が色爆弾になる確率分布をいじくればいいわけである。
当然、青や赤、虹が出やすくなれば配当獲得率は上昇する。
アニマツリー
ODDSUPと2,3FUPのアイテムによりかなり設定できるので楽。
ビンゴファーム
緑カード出現時のカード配置が重要で、緑でもランダムに配置しているとこれまでの自作アニマロッタの統計からPOが100を超えてしまう。そこで、FREE4個や5個のしょぼいカードを作ることにより、PO率の減少をはかる。
そのためにはプログラムを少し改変する必要あり。
ハニーエイト
スタートマスを端っこにつくればPO率は減少する。
端っこの定義としては、地道にやっていくしかない。
具体的には、周囲のマスを与える関数があるのでそれをランダムなマスに対して実行して、周囲のマスが5個以下(ないマスについては0が返される)とかが端っこに相当するのでそれがでるまでループさせる、という手もあり。よってこれも手を加える必要がある。
ビンゴバルーン
初期FREEによって決定される。もはやそれしかない。現行のままでよい。
ハッピーフラワー
初期芽の個数によって決定。これももう手を加える必要はない。
アニマドロップ
初期の配置によっても影響されるが、やはり補充ドロップの構成による。
初期配置がPO率依存するかどうかは気分で決める。
サンダースマッシュ
雷が最初に少ないほど、PO率が下がるような気がする。
実際にはプログラムを組んで、現在我が手で打ち込んだ15パターンの組み合わせでどれがPO率が高いかどうかの統計をとっても良いが、これはこれで面倒なので雷の個数で行く。
ナインビンゴ
これはまた後々考えよう。
ワンダーチャンス
POが設定値より小さければよいカードを、大きければ悪いカードを配るという方法がある。

もっとも、デジタル抽選なので意図的に番号をずらして当たらなくすることも可能だが、それではあまりにも面白くないので、以上のような操作をしようと思った。

次の記事以降では、PO率の具体的な調整をプログラムを見せながら解説していこうと思う。

2019年9月15日日曜日

13-5 配当表示完了

ついに配当表示を終えて、通常ゲームとの接続が可能となった。
ついでにJP額は1000000WIN超えの表示にも対応するようになった。

13-4 おおまかな流れ完成

とりあえず70球ボールが来て音が変化したりする基礎部分は作った。
後は配当を中央に表示してCREDITに加算すればたぶんほぼ終わり。
クリスタルとかの影響は除いている、というかまだ作っていない。
現時点ではJP種別などは固定だが、当然これまでに作ったゲームからのりんご内部値総和依存のワンダーチャンスの配当からこちらへ接続される形となっているのでJP額は変動する。
これができればとうとうゲームの基本的な流れができるようになり、とりあえずひと段落つくことになる。

13-3 JPCの画面を整える

とりあえずもともとあるものはある程度貼り付けておいた。
ここからようやくプログラミングを開始できるようになると思う。

13-2 オッズ表設定

ワンダーで決定されたJPの額に応じてオッズ表が設定される。
ちなみに、5HIT以上でJP額の2%、4HITでJP額の1.4%、3HITで0.8%、2HITで0.4%となっている。
噂によると同じポケットに所定数(たぶん10~20くらい)入るとエラーを返されるらしい。
それでもたぶん、JP獲得できなくてもJP額を上回る事態は発生すると思われる。

なんか意外にオッズなどを配置するだけでも時間かかんな…。
しかしまだメインの中心が全然出来上がっていない。

今日はこれらを準備してうまく動くところまでいけばいいが…。

2019年9月14日土曜日

13-1 JPC処理開始

ついにJPCの制作にとりかかろうかと思っている。
流れとしては、レディースアンドジェントルメンからだいたいスタートして、いろいろと画像が用意される。現在はひたすら画像をいろいろ探し、加工している最中である。

とりあえずはまずは画像を用意して、JPCモードとする。
やっぱり画像の加工は大変やしなんかお粗末やな…。

ここにオッズ表や残りポケット数などをどんどんピクチャとして貼り付けていく。
そして上の各所定の位置に番号付きマスを配置していくことになる。
プログラムに入るまでに何時間もかかるというこの大変さ。その大変さがあるからか、自作アニマロッタを作ろうとするものはほぼいない…。
画像とかは少々汚くてもいずれさしかえればよいので大きな問題ではない。

実はこのJPCを作ったところで各モードの処理(シングルのりんご3個対応可、オールのシークレット付きゲーム実装)そしてワンダフルの処理、ダブルアップチャンス、メニュー、ランキングなどと大量にありすぎて作成としては半分どころか全体の1割も行ったか怪しいかもレベル。
しかし我々の目標は、ナインビンゴなどでゲームを回して一応プレイできるような形を目標にしているので、シングルモードとか普通のマルチにあまり興味はない。




2019年9月12日木曜日

12-9 ワンダーチャンスほぼ完了

ついに開始時のアニメーションや、終了時の配当への組み込みが終わり、いよいよワンダーチャンスが真に実装された。
そこで、今回は奮発して金リンゴLvMAXを開始時7個投入してゲームを開始することにする。
なんか処理が重い。どうもPCを一回閉じて開きなおすと処理が重くなる…?

2019年9月11日水曜日

12-8 ワンダー突入処理

ワンダーの配当、外れ時のりんご処理も出来上がったはずなので、いよいよゲーム開始時の判定を行うことになる。つまり「ワンダーチャンスだにゃあ」である。
当然、ミラクルルーレットへの発展もあるが、まあこれはとりあえず置いておこう…。
こういうのは別にJPC作ってからでもいいし…。

とりあえず、あの木の背景の「ワンダーチャンス突入!」の画像をどこからか取ってくる必要がある。初代だけはその後にオールラインビンゴでJPCとかいう説明があったが。その後のカードの出方も後方からホシャシャシャシャーンといいながら回転しつつ近づいてきた演出があった。あれもう7年半前か…。当時はアニマロッタを買いたいと本気で思ってたわ。そんなん自分で作ったほうがええやん。

話を戻して、突入ピクチャは後で地道に探して周囲をけずって透過するとして、ワンダーチャンス突入かの判定が必要になる。
これは単純に7個目のりんごの内部値が1以上、である。
一応りんごには何らかの0でない内部値を付与するつもりなので。

このとき、ストックの7個を現在の7個に置き換える。これでりんごの更新は完了。
ただ、ワンダーチャンス継続中にりんごが7個集まって再抽選されるとアウトなので、ワンダーチャンス中というフラグが立っているときは7個たまっていてもこれを無視。

そしてチュチュチュチュチュチュの音とともにピクチャ番号103131あたりのりんごがあたかも合体して不透明度を下げて一気に拡大。そこから木の突入板を出すことになる。

以下は関係ないがすでに実装済みである。



2019年9月10日火曜日

12-7 オッズ表の詳細作成

体調不良を起こしてしまったらしいがまあそれはおいといて、今回はオッズ表の演出に着手する。何をするかというと、普通に該当ラインを点滅させて配当を示唆するだけで、あとは倍率時の×nという表示の演出を行う。そうしたものが以下の画像。
さて、ここからはいよいよワンダーチャンスと通常ゲームの切り替え処理に移る。
どうするかというと、普通にワンダーがアクティブのときはどこでもよいのでタッチされれば縮小モード(連続的変化)、非アクティブ時はワンダーの縮小部分に触れればアクティブ化、ということを行う。

そしてついにナインビンゴモード+ワンダーチャンスということで、11ゲーム化を実現。
いよいよJPCへの準備が徐々に整ってきている。
縮小モードを実装し、クリックでアクティブとノンアクティブを切り替えられるようになった。
あとはワンダーチャンスの発生条件定義、配当組み込みとJPCへの移行処理などとなる。
クリスタルやワンダフルの詳細は考えていないのでこの辺りはまだまだやるべきことを大量に残しているが…。

余談:参考までに以前我が作った(1年前の春)ゲームは以下。
当時のゲームよりよりアニマロッタらしさが出ている。あたりまえやけど




2019年9月9日月曜日

12-6 ワンダーチャンスの演出

以下のように、ワンダーチャンスの演出を付け加えていき、いよいよビンゴの視覚的な表示がだいぶん終わった。
 ↑JPCリーチになったときの演出。曲がった文字の再現は面倒なんや…勘弁
 ↑入りましたぁの直前。ホシャシャシャーンした後のわずかな時間。
↑でっかくJACKPOT CHANCE 獲得 と出現する。
文字はなんとなく少し本物っぽいものを例のロゴ作成ツールで作った。

ほかにワンダーチャンスでやるべきことといえば以下の事柄である。
現在ラインに連動した配当表の対応
残り球数更新
リザルト画面への対応
非アクティブ時画面上部への退避
ゲームをまたいだときのマスの変換、最終配当表示 など

2019年9月6日金曜日

12-5 オッズ表配置

内部値やりんごボーナスはこれまでに議論した仮定を用いることにして以下のように作った。
内部値は7000としており、ここから500前後のランダム性により6500にJPが変化。0ラインのりんご1個の価値は7000/3=2333くらいなのでこれは金リンゴLv1帯に相当。とはいえかなりLv2に近い価値の金Lv1だと思われる。6,5,4ラインのりんごは7000/7=1000なので、これは銀リンゴの範囲である。たぶん。
実際のアニマでも、画像を検索すればわかるが6000のJPなどはやはりこのりんご構成と同じである。この辺りのりんごはもちろん、変数によって描画されているので内部値を変更すればライン配当、りんごの色も変わっていく。
以下は適当に内部値を147500としてみた場合。だいたい147500/7=21070くらいなのでほぼ3000BETをし続けたときに出てくる可能性のある額だと思う。


同じ金リンゴLvMAXだが、6,5,4ラインの金リンゴLvMAXの内部値は21071、0ラインの金リンゴLvMAXの内部値は49166であるから、これはツリー継続5000BETでのりんごよりも15000くらい内部値が高いことになる。

とりあえずここまででワンダーチャンスの初期配置がある程度出来上がってきたので、
次以降はワンダーチャンスの処理とさびしい右側はたしかワンダースロット(課金促し)の掲示があったので解像度のいいものを探して貼り付けておくか…。
というわけで上の画像を差し替えておいた。
知っての通り、ワンダーチャンスは特に技術を必要とするようなプログラムはないと思われる。なお同時開催ゲームとしては通常9ゲームとナインビンゴそしてこれなので11ゲーム。にぎやかになってきたでこれは。
ただそのためには数万や数十万行のプログラムが必要という…。
コモンイベントのdatファイルの容量は6.4MBになっていた。
カラコロッタ4も見に行くとするか…。

2019年9月5日木曜日

12-4 ワンダーチャンスマス配置

ようやくマス配置への着手開始。いつも通りランダムに番号をシャッフルするプログラムをちょっと作ったりして、マス情報をどんどん作っていく。
とりあえずだいたいのマス配置は終わったので、次はオッズ表あたりを作る。

12-3 初期抽選完了

とりあえず、ワンダーチャンスのカードが出現するところまではなんとかそれっぽくなった。
 このようにビッグが音付きで抽選されて…。
一応基盤だけは表示される。ちょっとマスが下のほうだったのでこの画像よりy座標を10減らしておいた。つまり、「上」方向に10ピクセルずらした。

とりあえずここまでできれば、後はビンゴなどもろもろの処理を加えていくというようやくワンダーチャンスらしいお話になってくる。
とりあえずまずは左側にオッズ表を作る。ワンダーチャンスの額は以前から述べているように、内部値総和をもとにした切り捨て+ランダム方式をとることにする。


12-2 ワンダーチャンス画像用意

以下のように地道な作業を行っている。
こういうのが積み重なって自作アニマロッタ5は生成される。
これはワンダーカード出現時の光を表しており、加算モードで描画する。

あと、ワンダースロットのビッグとかが出てくる順番は、
まず星に隠れてみないがどうも通常から始まっているらしく、順番を列挙すると

通常
ビッグ
スーパー
通常
通常
ビッグ
スーパー
通常→アニマロッタ5ではワンダフルになり、ここで停止候補
通常
スーパー(停止)
通常(停止)
ビッグ(停止)
アルティメット(停止)
通常

という順番。ビッグのとき、通常の停止より若干ルーレットが長いのはこのため。
たぶん必ず停止、と書かれた位置でとまる。
とりあえずなんか星でも作ってそれが拡大してスロットの基盤を作って、そこから最近がんばって切り取ったりしたアレを使うか…。
こんな感じか…?
後は各抽選状況に応じて移動を調整する。それとなんか右に凡例があったのでそれもつくっとくか…。

あっ今気づいたがアニマ4バージョンやん。
ワンダフルに変更せんと…。8番目が通常からワンダフルに変更された。
そのためワンダフルになるときは、はやめの決定となる。



2019年9月4日水曜日

12-1 ワンダーチャンス製作開始

今週はカラコロッタのロケテストにいきたいと思っている。JPなどの確率を求めてもよいと思っているが、まさかの先に確率を求められていた。何者や…強い…!
だがそれでもアニマドロップやサンダースマッシュなどは我の専売特許ともはや化しており、大まかな確率の情報を提供する意義はまだ失われていないと考える。
カラコロッタ4の新ゲームの確率を求めてみるのもよいかもしれない…が、知っての通り毎日勉強三昧かつアニマロッタの作成をやっている我にとって、そんな悠長なことはやってられないわけである。

いよいよ画像の準備もある程度整ったし、ワンダーチャンスの制作に入っていこうと思う。

ワンダーチャンスの処理や確率自体は、言うまでもなく簡単すぎるが、細かい処理を行っていくとなるといろいろ作業や模倣が必要になる。

まず、ワンダーチャンスのカード出現時であるが、アニマロッタ5からはドンチュピーンの音とともにミラクルルーレットの画像が出てきてその背後に一定の不透明度、一定の角速度で回転する虹色の演出。
そして通常の時は初代からの例の木の背景に「ワンダ^チャンス突入!」である。
ここまではええんや。

その後が問題で、知っているかはわからないが、
残り穴5~6の場合は普通に回転しながら出現でいいが、
残り穴4などのちょっとレアカードではさらに演出が入る。後何気に音もシュイーンとか入っていた気がする。このあたりの音は、あるyoutubeの動画にそのアニメや音を録画した素晴らしい動画があるのでそれを利用させていただく。
さらに、超レアカードの場合はよりカードが回転して色もちょっと変わる。
この3つのパターンを作りたい…が技術的問題がこれを妨げる、というよりはむしろ面倒、ということで実装しがたい。
しかしこれが実装されればなんか楽しくなりそうなので、ここからがんばってつくっていく。
その後は普通にワンダーチャンスを進めていくだけ。
マスに入った時のホシャシャシャーンは普通に不透明度を上げながらの拡大率減少かつ一定の角速度で回転で問題ない。

JP額の計算は、これまでも言及したと思うが、とりあえず、各りんごの内部値の和を0,500が下3桁となるように適切に切り捨てて、そこから500枚の範囲でJP値がランダムに変動、と仮定する。6ラインはその決まったJP値に対して5で割ったものに100前後のランダム要素を考慮したものとする。5ライン以下は普通に固定なのでいうことはない。

あ、そういえばワンダースロットも必要やん。あれもどれくらい動くかをコマ送りで見てそれに極力似せる必要がある。大変やな

2019年9月2日月曜日

11-15 りんごの獲得率

なんとなくりんごに少し条件をつけてやってみたときのりんご獲得率の結果。
1163ゲーム分。アニマドロップのPOが高い。

2019年9月1日日曜日

11-14 ナインビンゴモードプレイ動画2

今度はりんご実装つきでのナインビンゴモードの動画をとった。
以前よりりんごによってにぎやかさが増している。
なんとかりんごの放物運動が再現できてるっぽい気がする。
あっ後でみて気づいたがこれはナインビンゴのりんごの開始位置がまちがっとるわ…。
あとPAIDもいじくったせいで配当とCREDIT増加があってない。まあこの辺りは些細な問題なのでいつでも変更できるので気にしない。本物でこんなバグがあればお祭り騒ぎや。

ちなみに余談だが、今週は東京にちょっと1泊2日でごはんを食べに行き、そのついでにカラコロッタの新作があるというのでどこかの日に行こうと思っている。
まあカラコロッタ自体もうあかんほど当たらないので、正直…な感じはしている。
そもそも増やすこと自体完全にあきらめている。
もちろんデータをどんどん取っていってシミュレートや機械の癖(特にLITE)を見抜けばなんとかなりそうかもしれないが、遊びなのにそんなに本気になって本来の目的を見失うとこれは本末転倒。

11-13 ワンダーステップ実装

ついにワンダーステップが実装された。リザルト画面の結果でりんごが放物運動を描いてワンダーステップの欄に移動してステップがたまるようになった。8個目以降は7での剰余の位置に移動するが、内部値として保存されるだけで実際に描画はされないという本家の仕様をたぶん踏襲した。
ついでに昨日はまだ全然ない、というかこのあたりはさすがに厳しいが、ボタンも左下に貼り付けておいた。
一応1ゲーム目から内部値は200,400,600,900,1400,3400,5400,7400,9400,11400ということになっており、それに対応したりんごの色が表示されている。
さて…ワンダーチャンスのときがくんで…。

11-12 リザルト画面りんご反映

卯木はいよいよリザルト画面のりんご設置に移る。
すでにフラグはまとめて取得済みなので、ちょっと触るだけでよい。とっても数十分はかかるが。そして以下のようにGETしたりんごはリザルトに出る。


さてここからりんごをステップへと吹っ飛ばす処理を行う。
本家を見てみると、開始点での微分係数0からたぶん60フレームくらいかけて目的の場所に移動すると思われる。

というわけで、ここでは60フレーム、という部分を後からでも修正できるように変数Tとしておき、1フレーム目からTフレームまでの位置を返す関数R^1→R^2を定義するで。

まずはt=0で開始地点が(a,b)であるとして、t=Tで終了地点が(c,d)であったとする。
これも変数として与える。そうすれば後で座標を指定すれば一挙にチュピーンや。

まず、放物運動であるという仮定より、x軸方向の移動速度は一定。
したがって、c-aというx軸方向の距離を時間Tかけて移動するので、時刻tにおけるx座標はa+(c-a)t/Tと直ちに求まる。
次にy座標を求める。
はじめはbであり、時刻Tにおいてdとなる。
ここで、微分係数が0だったので、当然ながらy軸方向の初速は0。
ということは物理のあれを用いると、普通にb+A(t/T)^2がベースとなる。
なぜこれかというと、t=0でbの値を取り、t=Tでb+Aの値をとる。ここでA=d-bと定めてやると、ちゃんとt=Tでdという値になる。ここは数学的ではなく物理的な法則に注目しての話であることに注意。
というわけで、座標は(a+(c-a)t/T,b+(d-b)(t/T)^2)と与えられる。
試しにt=0をぶち込むと、(a,b)となり、t=Tを代入すると(c,d)となる。
なお中間の時刻t=T/2において、座標は((a+c)/2,(b+3d)/4)の値となる。

さてこれをウディタで表現するわけだが、毎度のごとく小数点以下は切り捨てとなるため、例えばT=60などとするとt=1だと(1/60)^2とかで有無を言わさず0。もっというなら、t=59まで0の値をとる。これでは話にならん。
そこで、tを100tあたりに拡張する。こうすることで、t=1の時点でも切り捨てによる問題が少なくなる。あと、2乗は先にばらしてt^2/T^2とするほうが吉。

これをウディタに打ち込む。
上記のように移動する。これは今のところテストのため、全部移動先を座標を右上にしている。そのため、各リンゴのx座標が等しければ開始と終了のx座標も当然等しいので、これ2つしか引数にもたないx座標は一定なのは当たり前。
この後は当然、各りんごが何個目のステップに入っていくのかを定義する。

これも簡単で、現在の個数を読み取っておくとよい。具体的にはワンダーステップの内部値格納用の変数14個をつくる。なぜ14個かというと、たしかアニマロッタは7個以上たまれば一応余ったものがストックされているという仕様のため。
さすがに15個以上りんごが集まるのはないため、それ以後もたまるかは我は知らん。
ただそんなことはほぼないので、とりあえず14個まえはたまり、それ以外は新しいものは廃棄、という処理でいくことにする。
順番にこの変数14個に内部値を代入して、内部値の代入が0でない場所を順次りんごの行先として同時に変数に内部値を代入。後で一気にやると当然ながら全部最初のところと同じ位置に入り込むため。
ただし、途中で7個を超えた場合は、7で割った剰余をその順番として、変数は普通に7個以降のところに代入するというだけの話。

これができれば、いよいよワンダーステップが機能することになる。

そうなれば、ついにワンダーチャンスというものが発生する。
ここまで長かったわ…途中1か月くらいは飽きていたので実質3か月くらいで作ったことになる。