Xi JUMBO-ハッピ-ワンでの予約チェインの挙動の考察
作成日:2022/11/10 20:37
最終更新:2022/12/16 11:08
最近あまりxiで遊ぶ時間がないからYoutube上に上がってるRTAランナー様の動画見てサイコロ転がしたい欲を抑えてる今日この頃です。みなさんいかがお過ごしでしょうか。
xi JUMBOで前々から気になっていた予約チェインの原理。「これは予約入ったろ!!」と思っても予約入ったSEが鳴らなかったり、逆に思わぬところで予約のSEが聞こえて「えっ今ので予約判定なるの?!」なんていうことがよくあります。
で、自分のプレイ動画にスコア変動を分析してたりyoutubeに上がってる動画を見て、ハッピーワン時の予約チェインの挙動について一つの説が浮かんだので今回はそれのメモ。
※注意※
コード分析をしたというわけではないので、あくまで自分の予想です。100%妄想記事。ご了承ください。
0-1.ダイスが二段目から落ちるときの挙動
ダイスが二段目から一段目に落ちるとき、二段目のダイスがある一定の高さ以下になると一段目のダイスは消えます。そして落下しきるまでに多少の時間がかかります。しかし予約チェインの際、予約されたダイスが落下する最中にチェインを重ねてもリンク(サイコロがつながった数)は途切れないし、逆に関係ないダイスが落下し始めたタイミングではリンクはちゃんと途切れます。
色々あってJUMBOのプレイ動画をコマ送りで見たりしていた結果、「落下アニメーションの最中には既に2段目のダイスが1段目にコピーされているのではないか」という予想に至りました。
つまり落下の最中には(内部的には)既に2段目のダイスが1段目に来ており、そして落下しきった際にチェインが発動する、という流れです。
落下中に生成される一時的なダイスをここでは『コピーダイス』と呼ぶことにします。
0-2.ハッピーワンのダイス処理の挙動
これもコマ送りをして気付きましたが、[1]の目が消える処理は完全に同時ではなくフィールドの左下(手前)から右上(奥)へ流れるように消えています(1/60秒で処理される量が多いので具体的な方向については不明)。上にダイスが乗っている状態だと落下タイミングがわずかに違うので分かりやすいかも?
つまりハッピーワンで消えるサイコロの上にあるダイスも、手前から奥にかけて順番に落ちていて処理もそれに追って行われるという形です。
1.本題
https://scrapbox.io/files/6398a05bb3ba86001eef338d.png
上の画像はフィールド上のある列を横から見た図だと思ってください。上側はフィールド2段目、下側が1段目。
(本来数字の目は真上の面(図の視点だと□の上側の辺上)にありますがここでは便宜上側面に書いています。)
ハッピーワン前の時点で[4]が6個予約されているのが分かると思います。
*******************************************************************************************
https://scrapbox.io/files/6398a09b3cd5e8001e28666c.png
https://scrapbox.io/files/6398a09d223fa9001d22dec5.png
さてハッピーワンが起き1段目の[1]の目が消えました。2段目の[4]の目は着陸態勢に入るため1段目にコピーダイスが生成されます(画像の赤枠)。
*******************************************************************************************
https://scrapbox.io/files/6398a0a0c101c1001e9a47fd.png
https://scrapbox.io/files/6398a0a24b8689001e7b9230.png
※画像では分かりやすいようにダイスが落ちるタイミングをかなりズラして表現しています。
1つめのダイスが1段目に到達しました。ここで初めて新たに消されたダイスが数えられます。まだどのダイスも数えられていないので「消去ダイス=リンク数」となります。(画像では10個)
地面に到達した左端のコピーダイスはめでたく役目を終え、プレイヤーには全く気付かれないまま姿を消します…
残りのコピーダイスも同様に消えていく運命なので最後まで見守ってあげましょう。
*******************************************************************************************
https://scrapbox.io/files/6398a0a48dcc2f001e944818.png
さて2個目の予約ダイスが地面に到達しました。ここでもリンク数は変わらず10個です。あとは役目を終えそのまま消えるだけ...
だがしかし。駄菓子菓子
ここで問題が発生します。
1個目の予約ダイスが消えた時に残っていたコピーダイスは既に数えられています。しかし開発者はコピーダイスに「既にカウントされたよ!!」という処理を載せ忘れてしまいました。
...はい。お察しの通りです。
2個目の予約ダイスが地面に到達して初めて2個目の予約ダイスがカウント済みに分類されるのでここでは新たに「5個」消されたことになります。
*******************************************************************************************
https://scrapbox.io/files/6398a0a79289f1001d970977.png
3個目の予約ダイスも同様です。ここでは新たに「4個」消されたことになります。
*******************************************************************************************
https://scrapbox.io/files/6398a0a917d533001db4ce2b.png
https://scrapbox.io/files/6398a096c101c1001e9a472d.png
https://scrapbox.io/files/6398a098e0f968001e650a4d.png
それ以降も同じで、新たに「3個」,「2個」,「1個」...
*******************************************************************************************
つまりトータルで「10+5+4+3+2+1=25個」のダイスが消された判定になる訳です。
2.本当に「n-1個」から順番に計算されてるの?
まる様が以前に検証動画を出されていたのでこちらを参考にします。 https://youtu.be/itc6utXUvJk
こちらの動画では全体でリンク数が35個、20個同時予約をしています。
「6を70個消そう」というお題に対し「72個」の消去判定が出ていますが、これは2個目の予約ダイスの計算の時点でノルマ必要数を上回ったからでは?と考えました。
具体的には
table:消去数
処理される予約ダイス 消去数 累計 補足など。
1個目 35個 35個 CS: 6×35×2 = 420
2個目 19個 54個 CS: 6×35×4 = 840
3個目 18個 72個 ←この時点でノルマ必要数を上回る
4個目 17個 89個 CS: 6×35×8 = 1680
5個目 16個 105個 CS: 6×35×10 = 2100
6個目 15個 120個 ⋮
7個目 14個 134個 ⋮
⋮ ⋮ ⋮ ⋮
20個目 1個 225個 CS: 6×35×40 = 8400
という感じ。
なおオーバーフロー説もありますが、こちらの動画を見るとリザルトにちゃんと最後まで加算されているのでオーバーフローではなさそうです。 3.新たな可能性
ここまで色々考えていると「コピーダイスが生成されていれば同時予約に限らず消去数を水増しできるのでは?」という考えが出てきます。
ざっと確認した所、コピーダイスが生成されるのは2段目からダイスが落ちるとき。その場で飛び跳ねた時や1段目にあったダイスを持ち上げて1段目に落とす行為はノーカンみたいです。(※2段目のダイスを持ち上げて1段目に落とした場合は未検証)
以上を踏まえて、「N個同時予約と同じタイミングで2段目からダイスを落としたら消去数判定は 1+2+...+N個 になるのか」を検証。その結果が下の動画です。
https://youtu.be/rb0slp6RY3w
結論からいうと、できました。水増し成功ですいえーい
ただし水増しされるのは「消去数判定」のみであり、「チェイン」などは通常通り[予約ダイス数]×2 + [予約なしで落としたダイス数]なので注意。
と言ってもタイミング合わせるのが意外と難しいので実用向きでは無さそうです。多分予約を1個増やす方が時間的にも技術的にも安定すると思います。
余談
「2.本当に「n-1個」から順番に計算されてるの?」の表で書いた通り、ノルマ達成要件を満たした瞬間でノルマとしての処理は終わります。(ボーナス点数計算時の基礎スコアも、満たした瞬間におけるCSまでがそのノルマのボーナス点になります。)
...ということは各レベルの最後にある「次のレベルまで〇個消す」→「Xをn個消す」ではインターバルが無いから過剰分はそのまま次のノルマに流れるかも?と思いこちらも検証。しかし何度やってもダメでした。
インターバルが無くても「ノルマ達成→この時点での基礎スコアを基にボーナス点を算出→残りの同時予約チェインのCSを基礎スコアに加算→次のノルマへ」という流れで処理されているのでしょう、きっと 詳しいことは知りませんが。
そもそも降り注ぐ雷とダイスの中で同時予約を組むこと自体至難な気がするのでもしこれができたとしても実用性はなさそう。
追記 2022/12/16
以上、(一応裏は取りつつ)自分の妄想に溢れた記事でした。