Jump King を2022年1月16日からはじめ、2022年12月までに以下をクリアしました。
- 表面通常クリア(2022/04/29)
- 裏面通常クリア(2022/09/23)
- 表面スネークリングクリア(2022/11/03)
- 表面ジャイアントブーツクリア(2022/11/05)
- 表面落下0クリア(2022/11/05)
- 裏面スネークリングクリア(2022/11/16)
- 裏面ジャイアントブーツクリア(2022/11/16)
- 裏面落下0クリア(2022/12/06)
- 裏裏面通常クリア(2022/12/29)
(配信プレイリスト: https://www.youtube.com/playlist?list=PL2M7xTSHX0Hrvv3l0LI2-Jg2QeGATpmGN)
(実績は残ってるけれど)Jump King はやりきったので、一旦 Jump King からは離れようかなと思いました。 そこで、このページでは Jump King 攻略にあたって今までにやったことなどを備忘録としてまとめます。
- ジャンプ軌道の計算
- 立ち位置に関する考察
- 各画面のスクリーンショット集め
- 風の周期の計算
- ポーズバッファによるストップジャンプ
- ポーズバッファによる任意フレームチャージ
- 落下0のクリア時間の期待値計算
- 雑感
ジャンプ軌道の計算
初見時の裏面があんまりにも難しくて、ジャンプの軌道を計算しました。Jump King のジャンプについて、以下の性質があることがわかりました。
- (有名な事実として)ジャンプのチャージは1Fから36Fの36段階ある*1。
- Jump King のジャンプは空気抵抗などがない純粋な放物運動をしている。
- 「ジャンプのチャージ時間」は「ジャンプしてからジャンプの最高点までに達するまでの時間」と一致する。
- チャージの量によらず、ジャンプの初速度の水平方向成分は一定。初速度の鉛直方向成分はチャージ時間に比例する。
- 最大チャージジャンプしたときの最高点の高さは、ゲーム画面の高さの約0.44倍である。
- 最大チャージで右(左)にジャンプするとをすると、最高点にたどり着くまでに水平方向にはゲーム画面の高さの約0.34倍進む。
これらを使うと、
- Jump King における重力加速度
- ジャンプの初速度の水平方向成分
- 各チャージフレームにおけるジャンプの初速度の鉛直方向成分
が求まります。
求め方
これらからジャンプの軌道が求まります。各チャージフレームにおけるジャンプの軌道をグラフ描画ツール「desmos」で描画したのが以下になります。
desmos のこのグラフのリンク: https://www.desmos.com/calculator/hq8zaqlyqw
desmos の画面に現れる各変数の意味は以下の通りです。
- $s$ は向き(左なら-1、右なら+1)
- $v_x$ は初速度の水平方向成分
- $g$ は重力加速度
- $T_1$, $T_2$ はチャージフレーム
- $T_1\cdot g$ や $T_2 \cdot g$ は初速度の鉛直方向成分
- 初速度の鉛直方向成分を $v_y$ としたとき、$v_y - gT = 0$ ($T=T_1, T_2$) を満たすので。
- $v/v_x$ はジャンプしてからの時間を表す
- ジャンプしてからの時間を $t$ としたとき、$x = v_x t$ を満たすので。
また、グラフの赤い領域はJump King のゲーム画面を表しています。
このグラフをゲーム画面のスクリーンショットと重ねると、こういう感じになります。
重ねることで、以下のことがわかり、参考になりました。
- 何フレームのチャージで跳べばいいか
- そのチャージのジャンプの最高点の高さはどのくらいか(ジャンプ練習に使う)
立ち位置に関する考察
一般に右上(左上)に跳ぶ際には、次の足場から離れて跳ぶといいと言われています。次の足場から離れて跳ぶほうがいいことを導出しました。(以下の画像は個人用のメモでやや雑ですが)
双曲線の式が出てくるのはなかなかおもしろかったです。
なお、この事実は、「各チャージフレームにおけるジャンプの軌道」のグラフからもわかります。
ただし、ゲームの時間は離散的(フレーム単位)であるため、実際足場から離れたほうが猶予フレームが増えるかというとそうとは限らないのが難しいところでした。(例えばロストフロンティア4枚目)
各画面のスクリーンショット集め
このような感じでスクリーンショットを FigJam に集めて、放物線のグラフと重ね合わせて考察をしたり、ここは何フレといったメモをしたりしました。(裏裏面はまだ集めてない)
風の周期の計算
裏面のロストフロンティアからアンダーバーグに落ちたときに、風の向きによって落下地点が異なりがちです。 左に風が吹いているときに落下すれば、落下地点を以下の位置(アンダーバーグの上の方)にすることができます。
ただし、ロストフロンティアにいる段階では、アンダーバーグの風の向きはわかりません。そこで、風の周期の長さを計算して、ゲーム内プレイ時間から風向きを調べて、左風が吹き始める少し前に跳ぶようにしました。
一般に風の周期は13秒と言われていますが、正確な値ではなかったです。そこで、風の周期を計算したところ、25237.17秒くらいで1933周することがわかりました。つまり、風の周期は13.05596秒くらいであることがわかりました。
また、左風の吹き始めは 5.5 + 13.05596×n 秒 (n=0,1,...) であることがわかりました。
いちいち計算するのは大変なので、左風の吹き始めのタイミングを以下の表にしました。
ロストフロンティアではこのタイミング(-1秒くらい)で跳ぶようにしました。その結果、アンダーバーグでめっちゃ落ちることは減って少し楽になりました。(配信中における具体例: https://youtu.be/rgRXmuq21vY?t=1750)
ポーズバッファによるストップジャンプ
表面でスネークリングをつけて攻略しているときに、ストップジャンプ(着地したときに逆向きにジャンプして止まるの)がなかなかうまくいかなくてポーズを活用してストップジャンプをしていました。具体的には、以下の方法で行っていました。
- ジャンプをして、ジャンプ途中でポーズをする
- ポーズ解除と同時にジャンプボタンを押す。ポーズ解除後もジャンプボタンは押し続ける。
- ポーズ連打をして、着地直後にポーズをする。
- ジャンプボタンを話して逆向きの方向に入力を入れてポーズを解除する(これでストップジャンプが安全にできる)
↓具体例
このゲームはポーズ解除後すぐにまたポーズができてしまう(ポーズバッファの対策がされていない)ので、いろいろ悪さができてしまいます。
ポーズバッファによる任意フレームチャージ
表面のスネークリングが大変で、ポーズバッファによる任意フレームチャージをやりました。
ポーズバッファを使って、1フレームずつコマ送りをすれば、理論上は任意フレームのチャージができます。なお、1フレームコマ送りは現実的ではないです。ただし、背景のアニメーションを使うことで、任意フレームチャージがやりやすくなります。
背景のアニメーションは 5F に1回、8F に1回 などのペースで更新されます。 例えば、表面のフロンティアの雪のアニメーションは5F単位で切り替わり、旗のアニメーションは8F単位で切り替わります。
この背景のアニメーションの性質を使うと、任意フレームのチャージがやりやすくなります。 ここで例として、「雪のアニメーションがあるところで27Fのチャージをしたい」という場合を考えます。ポーズバッファで雪のアニメーションの切り替えが5回変わるのを見て、2F後にジャンプしようとすることで、だいたい 27F のチャージができます。
↓実際のプレイ(25Fチャージ)
この技を使うと、ややゲームが壊れてしまうため、裏面スネークリングなどでは封印していました。
ちなみに、裏面の聖域など、背景が完全に静止画なエリアもそこそこあり、すべてのエリアでこの技が使えるわけではないです。
落下0のクリア時間の期待値計算
裏面落下0クリアを目指すときに、クリアにどのくらい時間がかかるか気になったので、落下0のクリア時間の期待値を計算してみました。
最初からn面突破までの時間の期待値(ここで「面」はバーグや聖域などの「エリア」のことを指しています)は以下のように計算できるはずです(幾何分布の気持ち)。
「最初からn面突破までの時間の期待値」 = (「最初からn-1面突破までの時間の期待値」 + 「n面の所要時間」) /「n面の突破確率」
クリア時間の期待値は、最初から最終面突破時間の期待値ということになります。
ある程度裏面をやって各面の突破確率を求め、n面所要時間は3分で固定し計算をしてみたところ、以下のようになりました。
タワー突破(クリア)の時間期待値が35445分(590時間)となってしまいました。 なお、実際にはこの突破率より練度が上がって、(裏面入口スタートですが)20時間程度でクリアできました。
(結果としてあまりこの計算は役に立たなかったですが、期待値よりだいぶ早くクリアできたことがわかり、上達を感じるきっかけにはなりました)
雑感
- 高校数学や高校物理の知見が活きるのは楽しかったです。
- フレーム単位であれこれ考えたり、ポーズ使ってあれこれするのは楽しかったです。
*1:これは多分嘘で、1Fのチャージはできないと思います。おそらくジャンプボタンを押したフレームから離したフレームまでチャージされるので、最小チャージは2Fだと思います。