• SFC版DQ6 エンカウント判定処理

    2016-08-24 20:46
    SFC版DQ6におけるエンカウント判定処理についての調査結果について説明します。

    1. エンカウント処理の概要

     SFC版DQ6では、SFC版DQ3と同様にいわゆる歩数エンカウント方式によってエンカウント判定が行われています。
     エンカウントが発生するフロアに入った時点や戦闘終了後などのタイミングで、エンカウントするまでの値(以下エンカウント歩数)が初期化されます。このエンカウント歩数は1歩歩くごとにフロアやエリア、地形に応じた値が減算され、エンカウント歩数が負になると戦闘に突入します。
     

    2. エンカウント歩数の初期化

     エンカウント歩数はRAM内に16bit整数型保持され、以下の式によって初期化されます。

    Enc = (16 + rand[0,33] + rand[0,33]) * 256

     つまりエンカウント歩数の初期値は[4096, 20992]となります。
     rand[0,33]は [0,255] * 34 / 256(端数切捨て) によって計算され、ほぼ一様な整数乱数値となります。
     以下のグラフがエンカウント歩数初期値の分布図になります。



    3. 地形によるエンカウント歩数の減算値

     各地形におけるエンカウント歩数の減算値は以下の表の通りです。
    1歩歩くごとに、現在いる地形の減算値とエンカウント係数(4章にて後述)が乗算された値がエンカウント歩数から減算されます。また、しのびあし使用時は減算値が1/2倍になります。
     
    地形減算値
    草原256
    茂み384
    砂漠384
    森林460
    毒沼460
    640
    102
    雪原256
    雪林256
    海底102
    ダンジョン264

    4. エンカウント係数

     エンカウントテーブルごとにエンカウント係数が設定されています。3章で上述した通り、地形の減算値に現在いる地点のエンカウント係数が乗算された値がエンカウント歩数から減算されます。
     エンカウント係数値は1/2倍, 2/3倍, 3/4倍, 1倍, 5/4倍, 3/2倍, 7/4倍, 2倍の合計8通り存在します。フィールドではほとんどのエリアが1倍ですが、以下のフロアはエンカウント係数が異なります。
     
    エンカウントテーブルID係数値エリア例
    201/2倍レイドック周辺(下)
    211/2倍アモール周辺(下)
    733/2倍マウントスノー周辺(下)
    773/2倍ライフコッド北(下)
    835/4倍ガンディーノ南(下)
    953/4倍北東海域(上)
    963/4倍中央海域(上)
    1045/4倍各地水路(海底)
    1163/4倍絶望の町周辺(狭間)

    5. エンカウント歩数マップ

     以上の結果を用いて、夢幻斎さんがSFC版DQ3用に公開しているエンカウント歩数マップのSFC版DQ6バージョンを作成しました。


     使い方はまずマップのシートを開いて、指定したいルートのセルをCtrlを押しながら範囲選択します。そうすると、Excelの右下あたりにセルの合計値が出ます。各セルにはエンカウント歩数値が格納されているため、セルの合計値は即ち指定したルートのエンカウント歩数値となります。





     得られたエンカウント歩数値としのびあしの有無を「エンカ率」シートの黄色いセルに入力すると、0エンカ率が計算できます。1エンカ以上の確率に関してはおそらくシミュレーションが必要になる上に、各歩数におけるエンカウント歩数値のデータが必要となるので対応していません。(良い解決案求ム...)



    6. まとめ

     今回の調査によって、SFC版DQ6におけるエンカウント判定処理の概要を把握することが出来ました。また、エンカウント歩数マップによって任意のルートにおけるエンカウント歩数値の把握と、エンカウント率の簡単な計算を行うことが可能となりました。
     DQ6ではマスによってどの地形なのかわかりづらい場所もありますが、エンカウント歩数マップを見れば正しく把握することが出来ると思います。RTAにおけるフィールドの歩き方の最適化に役立てば幸いです。

    7. 参考文献

    1. SFC版DQ3 エンカウント率を考える
    2. プレハブ小屋
    3. DQバイナリ改造 @wiki
    4. データ置き場 "エクセル関数を使ったフィールドマップ作成の作業メモ"
    5. SFC版ドラクエ6 縛り付き人生プレイ 特設サイト "モンスター分布図"


  • 広告
  • SFC版DQ6 モンスターの行動選択処理

    2016-07-31 23:52
    SFC版DQ6におけるモンスターの行動選択処理についての調査結果について説明します。

    1. 行動パターン

     各種モンスターには行動タイプが設定されています。行動タイプは8パターン存在し、それぞれ以下のようになっています。

    0: 均一ランダム
     行動選択率がほぼ一様な確率で選択される。
    1: 偏向性ランダムA
     行動選択率に緩やかな偏りが存在する。
     例: ジャミラス, 嘆きの巨人, デスタムーア3Bなど
    2: 偏向性ランダムB
     行動選択率に大きな偏りが存在する。
     例: しれんその1, 左手, 右手など
    3: 2確率ランダム
     行動選択率に2通りの偏りが存在する。
     例: オーシャンナーガ
    4: 個別ローテーション
     1匹ごとに6回周期のローテーションで行動する。
     例: ガーディアン, デスタムーア3Aなど
    5: 3段階ローテーション
     1匹ごとに毎回2択の3回周期のローテーションで行動する。
     例: ムドー3, アクバー, デスタムーア1AB, デスタムーア2Bなど
    6: 2段階ローテーション
     1匹ごとに2回目に5択の2回周期のローテーションで行動する。
     例: 試練その3, ミラルゴなど
    7: グループローテーション
     グループ毎に6回周期のローテーションで行動する。
     例: ポイズンゾンビなど


    2. 行動スロットと行動確率

     各種モンスターには行動スロットが6個存在し、それぞれに戦闘行動が格納されています。実際の処理では一様整数乱数取得ルーチンを呼び出して[0,255]の一様整数乱数を取得し、その値によって行動内容が決定されます。行動タイプ0~3では行動スロット毎に分母を256、分子を以下の数値とした選択率となっています。
     
    行動タイプ行動0行動1行動2行動3行動4行動5
    均一ランダム434243434243
    偏向性ランダムA685848382717
    偏向性ランダムB200408431
    2確率ランダム707070161515

     また行動スロットによっては複数回行動不可能に指定されているものがあり、その場合は複数回行動する際に1ターンに2回以上選択されることはありません。

    3. 行動選択の再抽選

     モンスターの判断力が高く、かつ選択された行動がMP切れや封じられているなどの理由によって実際には行動されない場合、その行動スロットを排除して再度再抽選を行います。実際の処理の流れとしては、排除されたスロットの分子分を分母から引き、[0, 排除後の分母]の一様整数乱数を取得します。
     例として偏向性ランダムBで行動0(200/256)が選択され行動不可だった場合、[0, 56]の整数乱数を取得し行動0を排除して再抽選を行います。
     再抽選の結果選択率の分母が256にならない場合、 乱数取得ルーチンにおける[0, 256]→[0, 分母]の変換により乱数が「完全な」一様乱数にならない場合があります。
     6スロット全て行動不可となった場合は、攻撃が選択されます。(試練その1で確認)

    4. 実際の例

     特に重要と考えられるデスタムーア3を例にとって、行動確率を挙げてみます。イオナズン選択後の2回目の行動確率は面倒なので挙げないことにします。右手や左手は回復・蘇生魔法は使われないケースのみについて挙げます。
    4.1. デスタムーア3B(マダンテ圏外, MP残存時)
    行動選択率(分数)選択率(%)
    メラゾーマ82/25632.42%
    イオナズン70/25627.34%
    火柱58/25622.66%
    Aローテ移行46/25617.58%

    4.2. デスタムーア3B(マダンテ圏内, MP残存時)
    行動選択率(分数)選択率(%)
    メラゾーマ77/25630.08%
    イオナズン64/25625.00%
    火柱54/25621.09%
    Aローテ移行42/25616.41%
    マダンテ19/2567.42%

    4.3. デスタムーア3B(MP0時)
    行動選択率(分数)選択率(%)
    火柱109/25642.58%
    Aローテ移行86/25633.59%
    暗黒の力61/25623.83%

    4.4. 左手(追い風非誘発or使用済み時)
    行動選択率(分数)選択率(%)
    鋭い爪171/25666.80%
    鷲掴み64/25625.00%
    攻撃21/2568.20%

    4.5. 左手(追い風誘発時)
    行動選択率(分数)選択率(%)
    鋭い爪128/25650.00%
    追い風64/25625.00%
    鷲掴み48/25618.75%
    攻撃16/2566.25%

    4.6. 右手(補助効果無効時)
    行動選択率(分数)選択率(%)
    鷲掴み171/25666.80%
    正拳突き64/25625.00%
    攻撃21/2568.20%

    4.7. 右手(補助効果有効時)
    行動選択率(分数)選択率(%)
    鷲掴み128/25650.00%
    凍てつく波動64/25625.00%
    正拳突き48/25618.75%
    攻撃16/2566.25%

    5. まとめ

     今回の調査によって、不明瞭だったモンスターの行動確率を特定することが出来ました。特に偏向性ランダムAの行動パターンは従来では「2確率ランダム」とされていることもあったため、正しい認識を得ることが出来たと思います。
     特にムーア戦の戦術考察について、参考になれば幸いです。

    6. 参考文献

    1. プレハブ小屋
    2. ドラゴンクエスト大辞典を作ろうぜ!!第三版 Wiki【行動パターン】
    3. SFC版DQ3 モンスター行動率を考える
    4. ドラゴンクエスト6を究める





  • PS2版DQ5RTA アベレージ10走戦 6:22:53

    2016-07-24 14:52
    2016年6月19日~7月23日にかけて行ったPS2版DQ5RTAのアベレージ10走戦のまとめです。

    1. プレイ環境

    ・プレイ者:Maru
    ・使用機種:PS2 SCPH-90000
    ・使用ディスク:通常版(SLPM65555)
    ・使用コントローラー:HORI アナログ振動パッド2 TURBO

    2. レギュレーション

    ○ラインハットでのヘンリーとの壁越しの会話
    ○地下遺跡の洞窟、エルヘブンでのショートカット
    ○ボブルの塔でのドラゴンの杖2本取得
    ○スカラつなぎ
    ×カジノ技
    ×ディスクトレイの開閉を用いた全てのバグ技

    ×アイテム増殖技
    ×アイテム空売り技
    ×デバッグルームの使用

    ×主人公とベラのAI変更

    3. チャート・戦術の概要

    チャートや戦術は基本的に全て公開チャートに準ずる。
    特に重要と考えられる戦術は以下となる。
    • 確定仲間モンスター:アプール, ピエール, ボロンゴ
    • サンタローズの洞窟攻略後にピエールを仲間にする(後ピエールツモ)
    • フローラと結婚し、青年期後半で神秘の鎧を回収する
    • 青年期後半ではぐれメタルを6体撃破する

    4. 目的

    • 自分の現在の実力を測る
    • 各運要素のサンプルデータを集計する
    • 先ピエールツモと後ピエールツモを比較する
    • ビアンカチャートとフローラチャートを比較する
    • はぐれメタル狩り戦略と爆弾石戦略を比較する

    5. 他の走者による結果など

    5.1. たらひろさんによるアベレージ10走戦
    嫁フローラ・爆弾石戦略によるアベレージ10走戦(2012年5月)
    5.2. ムウさんによるアベレージ10走戦
    先ピエール・嫁ビアンカ・はぐれ6匹戦略によるアベレージ10走戦(2014年1月)

    6. 結果



    詳細はこちら

    7. 結果を振り返って

    7.1. 幼年期(目標1:13:00)
     パパスエンカは10走とも主人公Lv3に到達していたので、運は良かったと思います。
     レヌール乙は2/10で1回くらいは引くだろうという印象だったので、この結果は妥当な範囲でしょう。
     幼年期の一番のキーポイントになる女王戦ですが、勝率は大体2/3くらいで見積もっていたので15戦10勝5敗くらいが妥当なラインだと思ってやっていました。最初の2走で早速5乙してしまい相当焦っていましたが、その後の女王乙が少なかったのが幸いです。結果として17戦10勝7敗とこれもまあ妥当と言えると思います。更にベラのルカナンがかなり入っていたため、タイムとしては多少加速した結果になったと思います。
     また古代の洞窟乙も10回走ったら1回引いてもおかしくないくらいに思っていましたが、こちらは1度も引かなかったので幸運でした。
     幼年期全体としては目標の1:13台ですので、最初の女王ループが印象に強く残っていますが、ルカナンが多かったりでなんだかんだ妥当な結果に落ち着いてくれたと思います。

    7.2. 青年期前半(目標2:23:00)
     アプールは平均2.1ツモ、ピエールは平均4.0ツモとどちらも期待値でツモれた結果になりました。サンタローズ洞窟のメタルスライム撃破数は平均1.2でしたが、平均1くらいで見ていたのでこれは運がいい方だったと思います。後ピエでサンタメタル4とかは逆に困りますが...
     経験値に関しても火山でエンカウントをあまり増やさず全て原人後リレミト調整ができていたので(8走目に関しても主人公が原人戦で生存していればリレミト習得でした)、よかったと思います。原人戦主落ちは欲を言えば1/10で抑えてほしかったところです。
     原人撃破~ジャミの区間は10走平均で57:29(うち2回火山デスルを含む)で、自分の腕が上がったのか運が良かったのかは分かりませんが、体感より速いタイムが出ていた印象でした。カンダタの痛恨も10走目の1回のみだったので、これも少し運が良かったかと思います。
     青年期前半全体としてはほとんど目標通りのラップタイムで走れた結果になりました。ただ印象としてはもう少しタイムを伸ばしたかった感が何故か残ります...

    7.3. 青年期後半(目標2:49:00)
     エルヘブン道中に関しても1乙くらいは引いてもおかしくないだろうと思っていたので、妥当な結果でしょう。
     はぐれメタル狩りは非常に好調でした。9走目で43分かかりましたが、それでもお釣りがくるくらいのデレでした。
     はぐれ後に関しては非常に悔いが残ります。ブオーン2乙に大神殿1乙と、両方合わせて1回くらいに抑えてほしかった事故を引いてしまったのが非常に残念です。また今回の10走は世界樹の葉消費率もかなり高かった気がします(特にゲマ1)。はぐれ後で後1分半ほどは縮めたかったところです。ただミルド2戦に関しては戦闘時間7分切りが7/10、うち5分台が1回と非常に速かったです。こちらに関しても自分の腕が上がった結果なのか運が良かったのかは分かりませんが、個人的に満足しているところです。
     青年期後半全体としてはやはりはぐれに助けられたのが大きく、かなり速いタイムで抑えることができました。

    8. 他戦術との比較

     走者のアベレージ戦との結果を比較し、戦術差による違いなどを簡単にまとめてみます。
     ただし10走という少ないサンプル数である、またラップタイムを取っているタイミングが異なる場合がある、ということを前提に入れた上で読んでいただければ幸いです。

    8.1. 青年期前半の比較
     ムウさんのアベレージ戦の結果から、青年期前半における先ピエール・ビアンカチャートと後ピエール・フローラチャートの比較を行います。



     フローラチャートの場合は、結婚イベント周りでビアンカに対して4分程度のロスが発生するのですが、それでも平均値では今回の方が5分程度速い結果となりました。また最速値は先ピエビアンカが2:13なのに対して後ピエフローラが2:16でしたが、結婚イベント分の差を考慮するとほとんど変わらない結果となっています。これに対して最遅値は先ピエビアンカが2:38なのに対して後ピエフローラが2:29と9分程度の差が出ています。
     サンプル数が10走と非常に少ない上での比較ですが、やはり後ピエ戦術の方がタイムは安定し、更に速い場合も十分に多いということが見える結果だと思います。

    8.2. 青年期後半の比較
     たらひろさんとムウさんのアベレージ戦の結果から、青年期後半における爆弾石チャートとはぐれ狩りチャート、またはぐれ狩りチャートにおいてはビアンカとフローラの比較を行います。



     まずはぐれ6匹狩りチャートにおけるフローラとビアンカの比較について見ていきます。はぐれ狩りの時間を除いたはぐれ外のタイムを見ると、フローラの方が4分半程度速いという結果となりました。フローラの場合は神秘の鎧回収によるボス戦の加速及び安定が特徴となりますが、その恩恵によって結婚イベント差による4分程度のロスを完全に取り戻せています。個人的には取り戻せるのは2分程度という印象でしたが、それよりも大きい結果となりました。またはぐれ外の標準偏差もフローラの方が小さく、タイムも安定しているといえます。
     またもう一つ挙げるべき結果として、ムウさんの場合では魔神の鎧回収は10走中1走のみとのことですが、今回のアベレージ戦では10走全て回収しています。魔神の鎧回収よる加速の恩恵がどれだけあるかは測りかねますが、より安定を確保した上でタイムを取り戻せると考えられます。
     ただしムウさんのアベレージ戦時のチャートと現在のチャートでは炎の鎧購入やボブルの塔の戦術が変わったなどで、現在では1分弱程度は速くなる可能性があります。
     続いてはぐれ狩り戦略と爆弾石戦略の比較について見ていきます。こちらもたらひろさんのアベレージ走が4年以上前のものなので、現在では更に最適化されていたりする可能性も大いにありますが、平均・標準偏差ともはぐれ狩りチャートの方が優れている結果となりました。爆弾石チャートの場合にははぐれ狩りに対してタイムのぶれが減らせるのが大きな特徴ですが、その代わりゲマ1を初めとしたボス戦の事故による減速が影響してしまう、というところでしょうか。

    9. まとめ

     自分の中で目標にしていた平均タイム6:25を達成することが出来たので、満足の行く結果となりました。また今回のアベレージ戦を通して、一発勝負における自分のチャートの有効度をある程度示せたのかなと思います。
     心残りな点としては、フローラチャートの一番大きい加速要素であるはぐれ後のタイムが振るわなかったところです。はぐれ狩りのタイムが良かったため平均タイムとしては非常に良いものとなりましたが、それよりもはぐれ後の速さというアピールポイントをもっと結果として示せれば良かったと思います。
     
     未だに様々なチャートや戦術が存在するPS2版DQ5RTAですが、今回のデータと自分の傾向や趣向などを照らし合わせてチャートや戦術を選択する参考になれば幸いです。またこれをきっかけにたくさんの方がアベレージ戦などの結果をアウトプットして、PS2版DQ5RTAが更に盛り上がればと思います。