Deterministic FF12について

機能説明

概要

これは、FF12の乱数系列を観察したり、特定の性質を持った乱数位置を探したりするための、ブラウザ上で動作するツールです。このページではこのツールの使い方について説明します。

実行にはJavaScriptを解釈できるブラウザが必要です。今のところ、Firefox 3.0、Opera 9.64、IE 7、IE 8で動作確認をしています。IE 6では動作しません。また、IEでは全体的に動作が遅いです。

このツールをブラウザで開くと、画面の右半分に表が出現するはずです。これは、FF12の乱数系列の一つ(「系列A」)の一部分を切り取ったものです。初期状態では位置0から位置49までが見えています。

表の各列の意味について説明します。初期状態では四つの列があるはずです。例えば三行目は「2 2 1403677032 3340」のようになっています。このうち最初の「2」(斜体になっているはずです)は、単なる目盛りで、表の内容には関係ありません。次の「2」は乱数位置を表します。つまり、この行は乱数位置「2」に関する行です。次の「1403677032」は乱数位置2における生の乱数値です。最後の列は、この乱数位置で何か特定の処理をしたときの結果を表しています。具体的にどんな処理かは画面左側で設定できますが、初期状態では、ある条件下の銃ダメージを表示するようになっています。つまり、仮に乱数位置2で銃のダメージ計算が行われたら、3340ダメージが発生するだろうという予測です(実際に乱数位置2でダメージ計算が行われるように銃を撃つのは不可能ですが)。

位置設定

画面上部では表示する乱数位置を設定できます。「移動」ボタンをクリックすると指定した乱数位置に飛びます。「<<」「>>」の各ボタンはそれぞれ一つ前、一つ先の位置に移動するのに使います。「<<<」「>>>」を使うと好きな距離の移動ができます。

なお、長距離を移動する場合、移動距離に比例した計算時間が掛かるので、余りに長い距離を移動しようとするとブラウザが固まることがあります。ブラウザの種類やPCのスペックにもよりますが、±10万程度の移動なら問題ないはずです。

列の設定

画面左部では、表の最後の行の内容を設定します。行の内容にはいくつか種類があり、ドロップダウンリストで選択できます。

銃/計算尺

銃、計算尺、一部のロッドのダメージを予測します。「攻撃」欄には攻撃の値(銃と弾の合計)を、「倍率」欄には属性やオプション等の補正をすべて掛け合わせたものを入力してください。

ブレイカー

斧、ハンマー、ハンディボムのダメージを予測します。「倍率」欄には基礎倍率(力 * (レベル + 活力) / 128)に補正を掛けた値を入力してください。有効数字は6桁あれば大抵問題ないはずです。

その他武器/魔法

その他の武器や、魔力依存のダメージ魔法/回復魔法のダメージ/回復量を予測します。基礎倍率の算出方法は武器の分類ごとに異なります。詳細はFF12Wikiの武器のページを参照してください。なお、魔法の基礎倍率は(魔力 * (レベル + 魔力) / 256 + 2)です。

剰余

乱数値を定数で割った余りを計算します。

ノックバック

ノックバック判定の結果を予測します。「y」は成功、「n」は失敗を意味します。

連撃

連撃判定の結果を予測します。連撃発生時にはhit数も算出します。「連撃率」の欄には、(連撃値ではなく)連撃率を整数で入力してください。連撃率は、源氏の小手を装備していない場合、武器連撃値に0.7を掛けて小数点以下を切り捨てたものです。

トレジャー

トレジャーを開けたときに望みのアイテムが得られるかどうかを予測します。「y」なら得られ、「n」なら得られません。

ある乱数位置におけるダメージや連撃数の予測は、その位置でダメージ計算や連撃判定が始まった場合の値であり、その位置で攻撃を行った場合の値ではありません。例えば、ある条件で乱数位置1000における銃のダメージが5428と算出された場合、乱数位置1000で銃を撃っても5248ダメージが発生する訳ではありません。5428ダメージを発生させるには、乱数位置1000でダメージ計算が開始されるように、乱数位置995で銃を撃つ必要があります。

「<<前を検索」「次を検索>>」のボタンを使うと、その列の算出値が特定の値になる乱数位置を検索することができます。検索は現在位置から開始され、条件を満たす位置が見つかると自動でそこに移動します。検索中は表のすぐ上に進行状況が表示され、目標が見つかりそうにない場合はそこで中断することができます。

初期状態では、自分で内容を決めることの出来る列は一つだけですが、「列を追加」ボタンをクリックすることで列を増やすことができます。不要になった列は「この列を削除」ボタンで消去できます。

メモ

表の各行の後半部分はメモ欄になっていて、自由な文字列を書き込むことができます。このメモはツールを終了させると失われますが、画面下部にある「メモをテキストとして表示」ボタンをクリックし、表示されたテキストをファイルに保存することで、メモ内容を記録しておくことができます。テキストとして保存したメモは「テキストからメモを導入」ボタンを使って読み込めます。

使用例

乱数位置の特定

このツールの使用例として、銃のダメージを使って乱数位置を特定する手順を紹介します。

まず、敵に妨害される恐れのない安全な場所に移動し、準備を整えます。銃で味方を攻撃するので、ダークショットの攻撃を防具で吸収するのが安全でしょう。この例では、スピカ(攻撃34)とダークショット(攻撃4)を装備したキャラが、黒の仮面を装備した味方を攻撃することにします。乱数を消費する恐れのあるステータス効果は解除しておきます。レビテガなどを自動で掛けなおすガンビットを使っているなら切っておきます。

準備が整ったら、とりあえず二発攻撃を行って、ダメージ(実際には回復量ですが)を控えます。この例では順に1910, 1934ダメージでした。

次に、このツールの列の設定を、実情に合わせて変更します。列の種別は「銃/計算尺」、「攻撃」の欄には38を入れます。攻撃役のキャラクターがHP満タン攻撃力UPの効果を受けているので、「倍率」欄は1.2としました。

乱数位置0に移動して、最初のダメージである1910を検索します。すると乱数位置22が見つかりました。二発目のダメージと整合しているか見るために、8個先である乱数位置30の予測ダメージを確認すると、その値は1982で、間違っています。よって、乱数位置22でダメージが一致したのは偶然だったと判断します。

次の候補を探すために「次を検索>>」をクリックすると、乱数位置286が見つかりましたが、やはり二発目と整合しません。もう一度「次を検索」すると、乱数位置608が見つかり、その8個下である乱数位置616でのダメージ予測値が1934になっていて、結果と整合します。

これでおそらく正しい位置を見つけられたと思いますが、念のためにもう一回攻撃を行ってダメージを比較します。予測が正しければ、次のダメージは、乱数位置624で計算され、1843ダメージになるはずです。実際に攻撃を行ったところ、まさに1843ダメージが発生しました。

最後に、厳密な乱数位置を考えます。乱数位置624と625はダメージ計算のために消費され、626は追加効果発生判定のために消費されたはずなので、現在の乱数位置は627です。また、この特定作業によって3*8個の乱数を消費したので、作業を行う前の乱数位置は603だったと考えられます。