ニューマリDSの乱数調整について(青甲羅乱数+α): part 2

結果を報告します、などと言っておいて一年以上間が空いてしまいました。情勢がガラッと変わったので、前回から更新された点などをピックアップし、自分の考察も交えて現状報告します。また、20205月あたりから少しずつ解析が進んでいるので、それについても少し触れておきます。

 

・世界記録の更新: 前回の22:52からさらに22:37まで短縮。8-2空中二段が組み込まれたのが大きい。それ以外の箇所は動作の細かい最適化、基礎動作の見直し、細かいテクの応用と言ったところでしょうか。一方、後半のマップ運は相変わらずで、依然として理論値+9秒を彷徨いています。

 

1-2での青甲羅装備以降の乱数(Extended Manipulation, EM)の検証を行う予定ではありましたが、代わりに別の走者が裏で進めています。ワールド1のマップ挙動はそこそこ固定できている一方、ワールド5は不安定だそうです。おそらく考慮されていない消費があるのでしょう。ワールド1の調整がある程度利くのは、(知られている範囲では)効果音が消費要因だと統一的に説明できていることも併せると、 1-2サブエリア消費の発生する間隔が人力でもどうにかなる程度の猶予(510f?)だからだと考えても差し支えないでしょう。(100%を走る際、1-1地底を経由しても青甲羅乱数は可能であるということからも安易に推定できます。)

 

・前述した走者の組んだEMチャートは、前回紹介した旧TASとは異なった内容になっています。具体的にいうと、

5-2に来るパタパタで甲羅ストックをゲット→ 5-GHにくるブロスを倒してマメキノコを回収 → GHの半強制スクロール終盤でストックの甲羅を装備

といった具合です。安定性、確率面からすれば妥当な選択でしょう(必要な調整がワールド5で完結している = ワールドを跨いだ際の消費を考える必要がない、マメでワールド8序盤を通過する必要がない、など)。マップでの動きは以下の通り。

パタパタ(5-T スタート): 5-T → 5-2

ブロス(5-4 スタート): 5-4 → ? → ? → ? →5-GH

(最小ロスのマップ調整を考慮しない限り)ブロスの経路は多数存在し、どうしても煩雑になるので割愛しました。「意図したステージに移動させるだけならば」TASのチャートと比べてだいぶ手間が省けるはずでしょう。(それでも確率は低いですが…)

 

ここで、パタパタの復活とその影響についても考えておく必要もあります。通常、スコアカウンターが50,000の倍数を跨ぐたびにマップ上の動点が1つ復活する仕様となっており、すでに2点存在する場合は復活判定が入りません(繰り越しもないハズ)追記: 復活時の初期位置は複数用意されており、他方の点の位置等に影響を受ける模様。要検証。個人差はあれど、1-T撃破後と5-2撃破後にそれぞれ50,000100,000を超えて復活判定を受ける場合がほとんどだと思われます。これを逆手に利用できるケースを2つ挙げておきます(あくまで仮説と捉えてください)

 

(i) パタパタ復活の判定をスキップ…… 正確には、ワールド1の時点で少しずつスコアを多めに貯めておき、5-1撃破時に100,000点以上持ってクリアすることが目標です。こうしておくことで、ワールド5プレイ中に起こりうる復活判定が一回減り、ロスを減らせる可能性が生じます。さらに応用的に、ワールド5後半でスコアを節約することで、5-GH撃破後に起こりうる復活判定も避けられる可能性があります(実際、過去に5-GH撃破時のスコアが惜しくも150,070点になった経験があります)。デメリットは、EMが上手くいっているかを判別しにくい・そもそも判定をスキップできるだけスコアを貯めれるかが怪しい、などです。ただ、EMを行なっていない場合でも恩恵に与れるのは美味しい。

 

(ii) ブロスとの相対的位置で運を操作…… ワールド5のパタパタ復活判定をスキップする代わりに、パタパタとの位置関係を利用する応用的なケースを考えます。2動点が同じステージに移動/存在するのは不可能なので、2動点が2マス離れている場合、ステージ撃破後の動きは離れ合うか同方向に移動するかの3択(分岐を無視する場合)に減ってしまいます。これを踏まえると、ブロスを一定区画に「閉じ込める」ことも可能だと思われます(直線形のマップだとイメージしやすいでしょう)。ワールド5は直線形ではありませんが、長方形状のエリアを上手く利用して調整を探せるのではないでしょうか。最大の難点は、移動確率計算の処理が未だに不明だという点。ただ、移動パターンを制限できる可能性を考えると魅力的です。



擬似乱数について

初期シード生成は、起動時間・起動時のボタン入力・GPUステータス等々の要素をかき集めて行われます。初期シードをもとに初期値が与えられ、残りの乱数列はLCG関数を用いて生成されますが、その性質上(ある種)致命的な欠点があります。多様されているLCG関数(通称”ranqd1”)はとりうる全ての値を取ってからループする(=最大周期をもち、全ての数が単一の周期に属する)という性質を持つのに対し、ニューマリでは同じ演算に少し手を加えたことによって1653種類に増えているのです。循環列が増えること自体はさほど問題とは言えませんが、さまざまな長さの周期のうち、長さ=1 (=定点)の物が存在するのがプログラム上よろしくないと言えます。アクションゲームであること、32ビットという分母の途方も無い大きさからするに、実際プレイしていて引く可能性は低いです。ただ、万が一定点となるシードを振り分けられた場合に所謂「ランダム性」が失われ、さまざまな副作用が現れるそうです。RTA的観点から見てあまりメリットはありませんが、定点におけるマップの振る舞い方は気になりますね。