FINAL FANTASY XのRTAにおける乱数調整の基礎まとめ

最近FINAL FANTASY X(ファイナルファンタジー10)のany%RTAを始めたのですが乱数調整を行うためのツールの利用や調整周りが複雑なので備忘録兼ねて自身で学んだことを簡単にまとめます。

なお、2022年8月時点でのspeedrun.com(以下SRC)及び海外コミュニティではこれらツールの使用は認められています。

この記事で書くこととその対象

・FFX HD版のPC向けの基本的な調整方法
※PS2版やコンソールのHD版も可能ですがまだそこまで僕が勉強できていないです

・初期Seedの調整(manip-tool)

・装備品の調整(drop)

・ダメージ乱数の調整(action)

そもそもどんなことができるようになるのか

このゲームはタイトル画面上のNew Gameを押下した瞬間でどのSeedが割り当てられるかが確定します。
Seedは乱数生成における任意な値と思ってください。

Seedを特定すると以下のようなことが固定・調整することができるようになります。
・エンカウントで出る敵の数と種類の特定できる。さらに先制する・されるが事前に特定できる。
・アイテムや装備品のドロップ有無とその中身の特定と調整
・2回目の盗むが成功するかどうかが分かる。さらに盗む予定のものがレアか否かを特定できる。
・特定行動下におけるダメージ乱数の固定化、クリティカル発生の調整
etc...

昨今では上記1,2番目を活用して、盗まれた祈り子の洞窟(ヨウジンボウのとこ)で低確率で出現するゴーストという敵からドロップする「エンカウントなし」というアビリティのついた防具を意図的に出す調整を実施し、終盤をスムーズに攻略するのが流行っています。

必要なツールについて

必須

Python ツールを起動するのに必要です。インストールするだけ。

manip-tool 初期seedを調整するのに必要です。よく配信で「ポ」って音が鳴るのはこれです。
※countdown有りと無し版がありますがどちらでもいいです。私は無しを使ってます。

RNG-Tracker ドロップ調整、エンカウント調整など。最も使用頻度が高いです。

必須ではないがあると大変便利

seed finder 連続でseedを算出するときに便利です。
この中にある「seedfinder.py」を使います。

Cutscene Remover カットシーンを自動でスキップしてくれるmodです。seed調整の時間が短縮できます。
「FFXCutsceneRemover.exe」を起動しつつFFXを起動するだけで機能します

4GB-patch PC版のカットシーンがグリーンバックになるバグを抑制するパッチ。
最初の1回しか使わないので楽。「4gb_patch.exe」を起動後、steamのffx.exeを指定すれば以降は勝手に機能してくれる。
※保管先一例「D:\SteamLibrary\steamapps\common\FINAL FANTASY FFX&FFX-2 HD Remaster\FFX.exe」

Seed値の特定方法

特定のSeedに調整の前に、最初は自分がどのようなSeedを取得したのかを確認する方法について見ていきます。

まずはタイトルでNew Gameを押して一番最初の戦闘シーンまでゲームを進めます。
アーロンから剣を渡され、「ザコにかまう時間はない 突破するぞ」のセリフの後からのダメージ数をメモする作業をします。

1.一番最初のティーダのターンのみ防御して、
「アーロン1回目→ティーダ1回目→アーロン2→ティーダ2→アーロン3→ティーダ3」の順で戦うを選択。
この時に敵に与えたダメージを全てメモしておく。

2.ツールに与えたダメージ半角スペース区切りで入力していく。
例) 「274 129 281 278 532 139」など

3.正しく値を入力すると2つのウィンドウが表示されます。
この内、メイン側の「ffx_rng_tracker」のSeedタブ一番左上に「3243770768」という数字の並びがあると思います。これがSeed値になります。
この後全滅さえしなければこのツールを用いて色々な調整ができるようになります。

もう1つのウィンドウにはエンカウントのリストが表示されます。
左側でどこで何回エンカウントしたかを調節するとその結果として右側に何回目にどの敵が出るかを見ることができます。

例えばこのシードの場合、海底遺跡前での水中ランダムエンカウント回数が1回の場合、次のタコのボス:トロスとの戦闘が先制攻撃されることがリストから事前に確認することができます。


※Preemptiveはこちらが先制する、逆にAmbushは敵が先制する

これで現在Seedの特定ができるようになり、エンカウントなどの今後起こりうる結果が見れるようになりました。
ただしいくら先が見えて、色々調整できるとは言ってもSeedによってはどうあがいても敵に先制ばかりされてしまったり、来てほしい敵が出にくい、ほしい装備が手に入らないといったことがあります。

次項で欲しい特定のSeedに調整する方法を記載します。

特定のSeed値に調整する

ここでは一例として私が使用している「3087458977」というSeedを狙う想定での手順を記載します。

1.manip-tool(ffx_hd_pc_manip_tool.py)とFFXを起動します。

2.Manip-toolを開いた直後にミステリーバイトが特定済みが聞かれるので無視してEnterでスキップします。

3.現在時刻が表示されるので好きな時間でEnterを押すのと同時にFFX側でNew Gameを押下します。


上記はcountdown無しの方法。countdown版を使用する場合はEnter不要。

4.特定の時間でNew Gameを押した時点でのSeedを求められるので前項と同じように6回のダメージをメモして、Seed finderで現在のSeedを特定します。

5.特定したSeed値をmanipツールに入力してEnterを押します。(コピーしたらツール上で右クリックすればペーストできる)

6.ミステリーバイトが表示され、次に調整したいSeed値を聞かれるのでSeed値を入力してEnterを押します。
今回の例では「3087458977」を狙うのでこれを入力。

7.現在のミステリーバイトからそのSeedに到達可能かどうかの結果が出ます。大体の場合は失敗して以下のようになります。


失敗例 大体この画面になるのでFFXとこのツール両方再起動して手順1からやり直す
※目当ての範囲のミステリーバイトを出すのは確率にしておよそ1/8なので、手順1~7は結構ループすることになります

成功すると以下のような画面になり、調整したいseedでゲームを開始するための時間の一覧が表示されます。


成功例 次の手順に進みます

8.到達可能な時刻が表示されたらそのままボス:シンのコケラエムズ戦で自身に戦うを実行してすぐゲームオーバーさせます。

10.そのままゲームのタイトルに戻ったら表示されたタイミングでNew Gameを押す。
時間になると「ポ」って音が鳴ります

11.うまく時間通りにNew Gameが押下できていればその後の例の6回攻撃で狙ったseedのダメージが出るようになります。

ポイント

初期シードの調整にはちょっとした規則性があり、最初のミステリーバイトを特定する際のSeed値と狙いたいシード値が近しい値でないと基本的に合わせることはできません。

例えば狙いたいシードが321~である場合、最初にミステリーバイトを特定するときのシードが315XXXX~334XXXXあたりでないと基本的に合致することはありません。これによりある程度慣れてくると最初に算出したシードから狙ったシードへ調整可能か不可が判別できるようになります。(=調整時に多少の時間短縮ができる)

 

ドロップ品を調整する

ここからとても難しくなります。
使用するSeedを決めたらそのシードでエンカウント無し装備の調整、特定の敵の盗むを複数回成功させたり、レアドロップ調整などを狙っていきます。これらの予測結果を調整するには盗む(steal)、敵を倒す(kill)、仲間が死ぬ(death)のいずれかでテーブルの調整を行っていきます。さらに詰めていくとより詳細な調整ができますが基本この3点である程度は調整できるので今回は割愛します。

まず、trackerを起動して使用する目当てのSeedで算出される6値を記入し、リストを表示させます。

アイテム周りの調整ではメインウィンドウの「drop」タブの画面を使用します。画面の左側がプレイヤーの実行する行動を示しており、右側にはその行動による結果が自動出力される仕組みとなっています。

なお、左側にはツール作者によるRTA用の行動テンプレートがあらかじめセットされているのでこれを自分なりのパターンに修正していくことになります。
※デフォルト設定は直接編集することも可能

入力規則など

・敵をKillした場合
[倒された敵名] [倒したキャラ名] ※もしくは kill [倒された敵名] [倒したキャラ名]
例:ghost tidus

・deathの場合
death [倒されたキャラ名] ※キャラ名は入れなくてもよい
例:death tidus

・stealの場合
steal [敵名]
例:steal iron_giant ※2回目の盗むならsteal iron_giant 1

なお、#によるコメントアウト(#〇〇)は実行例に反映されないのでメモ書きなどに使えます

例えば最初にリュックと合流して戦うボス:クリック戦において、「steal klikk」 と記入すると右側で盗むの結果が出てきます。2回目の場合はsteal klikk 1と入力することで盗むに成功したか、失敗したかを事前に確認できます。

次に以下のケースを見てみます。
最初のシーモア戦の途中で戦うことになるアニマから「サイレントマイン*3」を2回盗みたいとします。
下記の画像の場合はこのまま進めてしまうと2回目はFailedになってしまうのが分かります。

そこで少し前の雷平原で盗むの回数を増やしてみます。※steal iron_giant
すると結果が更新されて今度は盗むに成功するパターンが表示されました。

このようにどのタイミングで倒した、倒された、盗んだかによって結果が都度変化していきます。逆に言えば決めた行動通りに動けば必ず同じ結果になるということです。

装備品も同じように調整できますが装備は特殊な要素が2点あります。
1点目は固定Equip値です。
実はゲームを開始してから〇番目のドロップが武器なのか防具なのかはというのがSeedごとに決まっています。これはTrackerのSeed infoから見ることができます。

例えば下記画像のように#7であればゲームの進行上における7回目の装備品ドロップは武器であることが分かります。

なお、ボスによっては確定装備ドロップの敵がいるため、例えばルカのボス:ブリッツシューターから雷武器をドロップさせたい場合は強制ドロップを加味してequip#7などでweponが出る状態を作る必要がある、といったことを考慮しなければなりません。

エンカウント無し付き防具を取得する場合、equipが#24~#30にArmorが多く設定されているSeedがおすすめです。

プレイ中equip値が目標値からずれる場合は、装備を一定確率でドロップする敵の直前でdeath,stealを挟んで装備ドロップ数を増やしてequip値をずらすことで補正することができます。序盤はほぼ固定なのでequipの調整は難しいですが、後半になるにつれて様々な分岐、調整ができるようになります。

2点目は対象キャラクターについてです。
装備ドロップの結果に「for killer」と表記されているものがあると思います。これはとどめを刺したキャラクターの装備が出ることを意味します。これを利用してブリッツシューターなどで雷属性のアビリティがついた武器がkillerでドロップする場合、最後のとどめをずらしてティーダにすることで最短ならルールーが取得する場面でも後々有用になるティーダで取得する、といったことができます。

ただし、召喚獣で敵を倒した場合、killerであっても装備はユウナではなく、全てのキャラクターの中のいずれかが選定されます。

また、その他にkillした際、どのキャラクターが倒したかという結果は後々の対象キャラクターに影響を与えるだけではなく、装備品のアビリティの中身に影響を与える特性もあります(ただし大きくは変化しない)。このため、dropリストの左側におけるkillerは正確に記入する必要があります。

ドロップ調整において注意しなければならない特殊要素

前項にてドロップはsteal,death,killの3要素で調整できると記載しましたが、それ以外に考慮しなければならない特殊要素がいくつかあります。

・シンのコケラ・ギイの腕
2022年8月現在の通例パターンではギイに対してキマリの自爆→ヴァルファーレのOD2回が広く採用されていますが、このヴァルファーレのOD1回目と2回目の間で腕が復活するパターンとそうでないパターンが存在します。
この腕が復活したか否かという結果は後々のドロップテーブルにかなり影響が出ることになります。

補正の仕方ですが、drop表のギイ戦において「# If the arms respawn」と書かれた箇所があり、その下にコメントアウトで「# roll rng10 6」と書かれているかと思います。

これは「1回目のヴァルファーレのOD後に腕が復活したら下の値をいれてね」という意味です。
よって腕が復活しない場合はここは触れなくてよいですが、腕が復活した場合は「# roll rng10 6」の#のコメントアウトを消してテーブルに反映させる必要があります。


腕復活時にこの演出が出たら#を消す

・アルベドガンナー戦におけるアルベドシーラーの裏kill ※加筆修正しました
マカラーニャ湖で戦うアルベドガンナーは本体から出るアルベドシーラーという小さい機械を出してきます。通常、シーラーを倒してからガンナーをライトニングボルトで倒しますが4回雷攻撃を受けると追加のシーラーを出す特性があります。

ここでライトニングボルトを使用すると途中で4回目の攻撃判定が出るものの、そのままボスを倒す形となるため、画面上は見えていないものの、内部的には自滅扱いで追加killされる形となります。

通常アルベドシーラーはドロップがポーション1個(オーバーキルなら2個)ですが、リザルトで2個(オーバーキル込みなら3個)表示になっていることで追加killされることがわかります。何もミスをしなければ必ず追加killされるのでデフォルトの行動表にも追加kill(negator negator)があらかじめ記入されています。

・石化による敵撃破
これは特にアルベドホームでの強制戦闘が絡む要素となりますが、石化で敵を倒した場合、どの敵が最初にkillされたかというのはランダムで決定されます。

killしたのが内部上1番目なのか2番目なのかでそのときの戦闘結果におけるドロップ状況は変化してしまいますので、キマリの石化ブレスで敵を倒した際の装備ドロップがどうなったかによってどの敵が何番目に倒れたかというのをプレイしながら補正する必要があります。ランダムであることからFFXのRTAの調整で一番忙しく、厄介な場面です。

 

アクションダメージの調整

おそらくまだトップ層も完璧には詰めれていない重要なところです

trackerの「action」タブではどのキャラがどのタイミングでどの行動をとったら何ダメージを与えるかという結果を見ることができます。dropと同じように左に行動内容を記入して、右側にそれによる結果が出力されます。dropとは異なり、actionは誰がどのタイミングで何をしたか、エンカウントの数が関わってきます。

例えばトップ層の動きにおいて、ビサイドからキーリカに移動中のシン戦でティーダが無意味にポーションを使用する場面などがありますが、これも1つの調整になります。防御やはげますなどは影響を受けませんが、攻撃や回復など数字が出るアクションは以降のアクション値に色々な影響を与えます。

例えば上記のようにシン戦まで完全に同じ動きをトレースしていくとこの次のボス戦の特定タイミングでODするとクリティカルを出すことができます。


例1 特に何も調整しない場合


例2 エキュウ戦前でポーションを利用するとその後ODのスパイラルカットでクリティカルが出るようになる

このようにちょっとしたアクションの変更でクリティカル調整ができるので便利なように見えますが、どのタイミングでエンカウントしたかも乱数に響いてしまうため、余計なエンカウントが1つ増えてしまったといった事象が発生するとそれ以降は想定する値から外れてしまいます。

このため、ルカ終了までは固定化するのが容易ですが、マップ移動の仕方によってエンカウントが変化するミヘン街道以降は値がずれがちです。いくつかのエンカウントパターンを準備しておくとよいでしょう。うまくいけば最後までクリティカルダメージのコントロールができるかもしれません。

おわりに

もっと細かい部分の調整方法などもありますがざっと上記の方法で概ね調整することができます。
最初はとても大変ですが、慣れると片手でプレイしながらリアルタイムに微調整ができるようになります。いっぱい練習しましょう。

おわり

-その他ゲーム

現在ふぃすがTwitchにて配信中!!
現在はオフライン

Copyright© ふぃすの小部屋 , 2022 All Rights Reserved.