きほんはまる?

DQRTAについていろいろ書いていきます。こっちでは最低限のアウトプットには書かれない細かい話がメインです。

SFC版DQ2 はぐれメタル1+ホイミスライム4のはぐれメタルのHP決定について

SFCDQ2並走部で話題になっており、独自に調査していたのでそのまとめ。
ch.nicovideo.jp

結論としては、はぐれメタル1+ホイミスライム4出現時のはぐれメタルのHPは、ほとんどの場合で4となるが、極めて低い確率で5となる場合もある」となる。

1. SFCDQ1・2における乱数生成処理

SFCDQ1・2における乱数生成処理は、Kriさんが述べているように計算式としては以下のようになる。
DQ1,2(SFC)乱数生成について

R_{n+1} = R_n * 3 + 0{\rm x}3549 + $7e0067

ただし上記ページでも述べられている通り、0x3549の加算時に発生したcarryは乱数の上位16bitには加算されず、その後の$7e0067の加算時に下位16bitに加算される仕様となっている。$7e0067の加算時に発生したcarryは正しく上位16bitに加算される。

このように数式だけで処理を正確に表現し切れないので、C++による再現ソースコードを提示する。
上記留意点に注意した上で、乱数生成処理を再現したソースコードが以下のようになる。
(add_with_carry関数は引数と返り値を__builtin_add_overflowに揃えるべきかとも思ったが、今回はこちらの方が都合がいいため下記のように定義した。)

#include <cstdint>

uint16_t add_with_carry(uint16_t a, uint16_t b, bool *carry)
{
  uint32_t ext_ret = a + b + static_cast<uint16_t>(*carry);

  uint16_t ret = static_cast<uint16_t>(ext_ret);
  *carry = static_cast<bool>((ext_ret >> 16) & 0x1);

  return ret;
}

uint16_t dq12rand(bool ret_16_t = false)
{
  static uint32_t rand;
  static uint16_t frame;
  // Assume little endian.
  static uint16_t *rand_upper = reinterpret_cast<uint16_t*>(&rand) + 1;
  static uint16_t *rand_lower = reinterpret_cast<uint16_t*>(&rand);

  uint16_t ret;
  bool carry = false;

  rand *= 3;

  *rand_lower = add_with_carry(*rand_lower, 0x3549, &carry);
  *rand_lower = add_with_carry(*rand_lower, frame, &carry);
  *rand_upper = add_with_carry(*rand_upper, 0, &carry);

  ret = *rand_upper;

  if (!ret_16_t) {
    ret &= 0xff;
  }

  return ret;
}

2. エンカウント内容決定処理

エンカウント内容決定処理は、下記サイトで述べられているアルゴリズムで行われる。
DQ2(SFC)系小ネタ集:後でできない事を知らせるゲーム攻略サイト

ロンダルキア6Fにおけるエンカウント内容決定は、以下のようになっている。

  1. SR$0BA550をcallし、2Byteの乱数を得る。
  2. 乱数を0x10で割った剰余が0xfの場合はぐれメタル1+ホイミスライム4が出現する。

再現ソースコードは以下のようになる。

uint16_t r = dq12rand(true) % 0x10;

if (r == 0xf) {
  // はぐれメタル1+ホイミスライム4出現
} else {
  // その他のエンカ
}

つまりRが0xXXXfXXXX(X : Don't care)になる場合、はぐれメタル1+ホイミスライム4が出現することになる。

3. はぐれメタルHP決定処理

ロンダルキア6Fにおいてはぐれメタル1+ホイミスライム4が出現する場合、はぐれメタルのHP決定は2章のエンカウント内容決定処理における乱数生成の直後の乱数生成によって行われる。

  1. SR$0BA550をcallし、1Byteの乱数を得る。
  2. 乱数を0x8で割った剰余が[0x0, 0x3]の場合はHP:=5、 [0x4, 0x7]の場合はHP:=4となる。

再現ソースコードは以下のようになる。

uint16_t hp;
uint16_t r = dq12rand() % 0x8;

if (r < 0x4) {
  hp = 0x5;
} else {
  hp = 0x4;
}

1Byteの乱数を得る場合、$7e00e2の1Byte値が乱数となる。

4. はぐれメタル1+ホイミスライム4出現時の乱数の挙動

2,3章の仕様に沿って、はぐれメタル1+ホイミスライム4出現時の乱数の挙動を追ってみる。

  1. 2章より、はぐれメタル1+ホイミスライム4が出現する際にRの取り得る範囲は[0xXXXf0000, 0xXXXfffff]となる。(以下Rの上位12bitは結果に関係しないので、全てDon't careとする。)
  2. その直後にはぐれメタルのHP決定のための乱数生成が行われる。まず乱数式中の最初の計算となる3の乗算によってRの取り得る範囲は[0xXXXd0000, 0xXXXffffd]となる。
  3. 続いて0x3549の加算が行われるが、この時のcarryはRの上位2Byteに加算されないため、Rの取り得る範囲は[0xXXXd0000, 0xXXXffffd]となる。
  4. 最後に$7e0067の加算が行われる。$7e0067の取り得る範囲は[0x0, 0x4ff]であり、この計算 時のcarryはRの上位2Byteに加算されるため、Rの取り得る範囲は[0xXXX00000, 0xXXX004fc]と[0xXXXd0000, 0xXXXfffff]となる。
  5. このRがはぐれメタルのHP決定時の値となる。この時、$7e00e2の下位4bitは0xd, 0xe, 0xf, 0x0の4通りとなるため、0x8で割った剰余は0x5, 0x6, 0x7, 0x0の4通りとなる。

5. はぐれメタル1+ホイミスライム4出現時のHP5はぐれメタルの出現率

はぐれメタルのHP計算時に$7e00e2の下位4bitが0x0となるのは、乱数生成式の乗算時のcarryが2かつ$7e0067の加算時のcarryが1である場合であるので、極めて稀なケースとなる。
はぐれメタル1+ホイミスライム4出現決定時の乱数値とはぐれメタルのHP決定時の$7e0067の値の生起確率はそれぞれ同様に確からしく、かつ独立であることを前提にすると、はぐれメタルのHPが5となる確率は0.3248%となる。
よって、剰余が0x5, 0x6, 0x7の場合がほとんどであり、この場合にはぐれメタルのHPは4となる。

埼玉大学第66回むつめ祭 PS版DQ4お使いRTAを終えて その3

 一週間前くらいにノートPCを買い換えました。父親の影響もありずっとVAIO信者だったのですが、今回とうとうMacに手を出してしまいました。
 購入したのはMacBookPro13Retina 2015Earlyで、少し使って思ったのは

といったところでしょうか。まあ前使っていたのはVAIO Pro 13 だったので、それに比べたら重いのは当然なのですが...
前みたいに一々開発のためにUbuntuを起動することもなくなったので、今のところは快適です。

 さて、本題のお使い後日記第3弾。第2弾に引き続き各問題について作問の裏話や当日の様子を書いていきます

4.2. 討伐課題

 これまたお使いRTA定番のモンスター討伐課題。2回のDQ3お使いRTAの経験から、問題の条件として慣例的になっていた以下の3点に気をつけて問題を考えていきました

  • 普段倒さないボスを撃破させたり、普段行かないフィールドエリアやダンジョンに行かせる。
  • 固定出現で戦える雑魚敵を抑えているかどうかを確かめる。
  • 討伐課題を通して必要進行度を間接的に設定する。

 また達成条件の「まもののむれ」表示は無効というのも慣例的にそのようにしました。まあその方が面白い課題もあったからなのですが(笑)。

4.2.1. つかいま

 実は最初は問題案に無かったのですが、4章で取り組む課題が何もないという指摘を御茶さんから頂き、では4章限定モンスターを撃破してもらおうということで作成された問題でした。
 4章限定モンスターといえばこいつといしにんぎょうですが、調べてみたところいしにんぎょうは複合出現が存在し、さらに4章ではまもののむれメッセージを回避するための手段(ニフラムやそろばん、風神の盾など)が存在しないので、単一グループのみで出現するつかいまのほうにしました。
 たーひゅさんとけったさんは道中で出現し、難なくクリア。hishiさんはコーミズ西の洞窟のオーリン加入前で単体エンカが2,3回で出現していましたが、倒さないと判断したのか逃走。その後道中で出現し撃破しましたが、報告画面のメッセージを飛ばしてしまい達成ならず。その後、ハバリアで結構粘った末に出現し達成といった様子でした。単体ならオーリン加入前でもどうのつるぎを残していればミネアの攻撃+メラで高確率で落とせるので、逃げずに倒しに行っていきたかったところです。

4.2.2. いどまじん

 こちらは固定モンスター枠として出題しました。いどまじんはイムル南の井戸の固定出現以外だと裏ダンジョンの通常エンカしかないので、実質的には想定解のみで達成可能となります。また、RTAの5章では訪れないバトランド地方へ行かせるという意図も含んでいました。ついでにいどまねきとこんがらがりそうで少し面白そうかなというのもありました。
 本番ではたーひゅさんがバルザック+撃破後くらいに撃破し、一番最初に達成。けったさんとhishiさんは気球入手後に撃破しクリアといった様子でした。けったさんはバトランドのたからのにおいを達成した流れでこの課題を達成しており、達成タイミングや手順としても完璧でした。

4.2.3. マネマネ

 こちらはDQ3ベビーサタンやバラモスエビルなどのように通常エンカでも撃破出来るが、固定出現も存在するというパターンでした。デスパレスのモンスターをこのパターンとして出題するのは最初から決めていたのでどれがいいか悩んでいたところ、通常 RTAではデスパレス内の道中でシンボルが見れず、おそらく一番印象に残らないマネマネに決めました。モシャスという一癖ある呪文を使うので、「モシャスを使われた状態で倒すと達成条件を満たさなくなるのではないか」という、プレイヤーのミスリードも狙っており、後で話を聞いたところ何人か引っかかっていたようです。通常エンカだと出現率が10%以下と、想定解以外だと時間がかかる可能性があるという点でも良かったと思っています。
 本番ではたーひゅさんが闇の世界の通常エンカで達成。口笛1エンカ目で見事マネマネ4を引き当てていました、ずるい(笑)。けったさんとhishiさんは闇の世界まで到達出来なかったのもあり達成ならず。デスパレスでの固定出現には3人とも気付いていなかった様子でした。誰かがデスパレスの祈りの指輪を回収していた気がするのですが、その道中にいるのでそれも素通りしてしまった様子です。

4.2.4. ピサロナイト

 RTAではおろか通常プレイでも倒されない可能性がある、ストーリーに関係ないボス。もちろん普段やらないことをやってもらうためにしっかり課題に組み込みました。プレイヤーも全員想定していたと思います。
 ボスとしては静寂の玉の入り具合によりますが、基本的には非常に弱いボスなので、二次王家終了後のレベルが上がりきった状態で行けばこのために戦力を整える必要はほとんどありません。ただし気を付けなければいけないことが以下の2つあります。

  • エスタークを撃破すると戦えなくなる。
  • 仲間呼びで出現するアイスコンドルを倒してしまうと、撃破条件を満たせなくなってしまう。

 割と致命的な落とし穴が2つもありますが、二次王家終了後であればアイスコンドルを飛ばすための風神の盾はアリーナが持っているし、予め想定できて一度戦ってみていればどちらも気付けるだろうと思っており、あわよくば引っかかってくれればと思っていました。
 本番ではたーひゅさんがなんとバルザック+撃破直後に戦いに行きました。たーひゅさんは1次王家でアリーナを落としてしまっていたので、その経験値の補填も狙ったのかとも思ったのですが、このタイミングだと風神の盾が未回収なので、この時点で「あ、達成出来ないぞ」と思いながら見ていました。案の定アイスコンドルを普通に倒してしまい、「まもののむれ」表記で達成出来ずでした。
それを見ていたけったさんとhishiさんは2人とも二次王家後に挑戦。hishiさんが先行して戦闘に入りましたが、たーひゅさんのを見てアイスコンドルを倒してはいけないということまでは把握していた様子ですがアイスコンドルを風神で飛ばす考えはなかったようで、なんとアイスコンドルを呼ばれない待ちリセゲーを開始しました。なおピサロナイトはローテーション行動で必ず3T目にアイスコンドルを呼んくるので、このリセゲーが通ることはまず無いです。そんなhishiさんがリセットした後にけったさんが挑戦し、「こうやってやるんだぞ」と言わんばかりの様子で風神の盾を使用していましたが、けったさんのアイスコンドルがなかなか飛ばず、後から戦闘に入ってけったさんの風神を真似したhishiさんが先に達成してしまうという何とも皮肉な結果になりました。この辺のやり取りはリアルでの対決ならではのもので、見ていてとても面白かったです。

4.2.5. デスピサロ

 一応最後まで進めてねということで出題しました。時間的に結構厳しくなってしまうので、ヘルバトラーにしようかデスピサロにしようかずっと悩んでいたのですが、尻にひかれ隊やたいりょく130、ダメージ350と合わせて最終パーティを悩ませたかったことからデスピサロに決めました。
 逆に言ってしまえば、このデスピサロを最初から切ってしまえば他の課題の達成は結構楽になると思います。更に闇の世界に到達してからデスピサロを倒すために約25分かかっての100点獲得なので、得点効率もそこまで高くないです。
 本番ではやはり時間が足りず全員クリアならずでした。

埼玉大学第66回むつめ祭 PS版DQ4お使いRTAを終えて その2

 PS版DQ4お使いRTA後日記その2。
 今回は各問題について、作成や意図などの裏話について書きます。

4. 各問題の詳細

4.1. 収集課題

 お使いといえば定番のアイテム収集課題です。プレイヤーとしてはしっかり準備しておけば取れる問題が多いように、配点も高めに設定しました。

4.1.1. ちからのたねx10

 恒例の1つの非売品アイテムを複数収集する問題。非売品アイテムの回収場所をしっかり抑えておいてねという問題です。種全種の問題と重複しているので命の木の実にしようかずっと悩んでいたのですが、ダメージ350とのシナジーを合わせて力の種に決めました。
 当初は15個の予定だったのですが、配点の割に時間がかかりすぎるとの指摘をhiroさんから頂いて、本番は10個に修正しました。10/19なので4,5章の金策にもほとんど影響しなくなり、比較的簡単になったと思います。
 本番ではけったさんとたーひゅさんが達成。hishiさんは途中回収していたのか見ていなかったのですが、時間がギリギリだったのもあり達成できなかったようです。

4.1.2. うまのふんx3

 こちらはボンモール北の村で購入できるのを知っていないと想定解で解けない癖のある問題です。これを知らない場合は移民を集めなければいけないので、プレイヤーが想定してくるであろう「移民の町を使わせる」というミスリードを誘う問題でもありました。
 ただしボンモール北の村で購入するとアイテム欄が非常に重要な3章においてアイテム欄を圧迫してしまうという問題があり、間違ってネネ転売に出してしまうこともあり得るので達成条件をどうしようか非常に悩んでいました。袋ではなく3章でも達成できるように設定しようかとも思ったのですが、その場合は作成データから数分で達成できてしまうため、誰かが想定解で達成したのを他プレイヤーが見てリセット入れて達成できるのを防ぎたかったので、泣く泣く5賞まで持ち越してもらうようにしました。
 本番ではけったさんのみがボンモール北の村で購入できるのを知っていたのでクリア、お見事でした。hishiさんは移民を集めて3つ目を入手する様子でしたが、間違ってネネの転売に出してしまったため諦めた様子でした。たーひゅさんも想定解には気づかず、その場合の回収コストの大きさから、この問題は切って進行を進めるのを優先した様子でした。

4.1.3. はぐれメタルよろいx3

 こちらも定番の金策問題。DQ3でいう危ない水着に相当する問題です。
 個数の設定としては実際に調べてみて、2個だとかなり余裕で買えるが3個だとメダル景品などももらっている上で少し足りないくらいだったので、金策になるアイテムをしっかり抑えているかどうかを確かめるためにも3個に設定しました。
 ミネアチャートを使用する場合は耐性よりも守備力が重要になってくる場合があるので、購入後そのまま勇者とミネアの装備としても使用できるようにしました。
 本番では時間が足りなかったため達成者はおらず。全体的に時間が足りなかったので、誰も解きに行けなかった問題がこれを含めて数問出てしまったのが今回の作問者側の反省点でもあります。

4.1.4. 「のたね」と付くアイテム全種

 これはかなり最初の方から思いついていた問題です。「誰か一人パテギアの種に引っかかってくれないかな」と思って作成しました。ちなみに条件を「たね」にしてしまうと聖なる種火が該当しどうやっても達成不可能になってしまいます。
 ちょうど回収が限られている賢さの種やラックの種もパテギア回収前のミントスで回収できるので、作ってみたらなかなかいい問題になりました。5章序盤で達成できるため、ポイントの動きを早くするのにも貢献してくれました。
 本番では全員パテギアの種にはしっかり気づいていて、けったさんとたーひゅさんが達成。hishiさんは揃っていたのですが報告をせずにスルー、後で聞いてみたところ「スタミナの種」も存在するため足りないと勘違いしていた様子でした。

4.1.5. 「鉄の」と付くアイテム全種

 一番の意図は通常RTAでは入手しない鉄の金庫を取らせることです。かといって、ただ鉄の金庫のみを入手する問題にしてもつまらないので、鉄のシリーズとして出題することにしました。
 問題を作った後に調査プレイをしていて、5章になると鉄のツメが購入出来ないことを知り、売却するとドロップ待ちになってしまうというちょっとした落とし穴になった感じです。しかし、そこさえ気を付ければほぼ間違いなく達成できる課題だったと思います。
 本番では3人ともクリア。しかし最初の報告時では鉄のおうぎを忘れていた人が多かった模様です。更にたーひゅさんはハバリアの武器屋で購入しに行くも武器屋が売ってくれないというところまでしっかりやってくれました。ハバリアの武器屋は4章限定で、5章になるとアネイルでのみ購入することが出来ます。

4.1.6. 「の杖」と付くアイテム全種

 お使いといえば絶対欠かせないメダル課題。メダル課題を設定する上で考えていたのは以下の事でした。

  • 回収数が多すぎず少な過ぎない(多すぎると制限時間を増やす必要が出てくるため)
  • (出来れば)課題達成に必要な数より少し多く集めると、進行が楽になったりする。

 以上を踏まえた上でメダル景品を眺めていて一番目に付いたのはメガザルの腕輪で、これが回収できるようにすると他の課題で主力パーティを通常RTAから崩させても楽になるので、これを取ってもらうように決めました。かといって直接メガザル2枚を課題としてもつまらないので、その直前の景品の天罰の杖にターゲットを決めました。更に天罰の杖だけ指定してもつまらないので、シリーズの流れで杖シリーズを集めてもらうことにしました。この杖シリーズの課題は2010年駒場祭のPS版DQ4ReTAでも出題されているため、過去問を勉強してきた人がしっかり得をするような意図にも沿うようになってくれました。
 本番ではけったさんがメダルや力の種の回収場所をしっかり抑えているだけでなく回収手順の最適化までしており、ここら辺はさすがReTAやお使いRTAを経験しているだけあっての調査量でした。しかし時間不足で全員達成することが出来ず、ここら辺も作問者としての反省として残る点でした。たーひゅさんは進行重視で初めから切っていた様子でした。hishiさんはよく見れていなかったのですが、あまり回収出来ていなかったように思います。

埼玉大学第66回むつめ祭 PS版DQ4お使いRTAを終えて その1

埼玉大学のむつめ祭で行われているRTA企画に参加してきました。
1日目はPS版DQ4お使いRTAが開催されましたが、自分は今回作問を担当させていただきました。

www54.atwiki.jp

ということで、裏話などを書いていきたいと思います。
問題や本番の結果などは上のURLから御覧ください。

1. きっかけ

 ニコ生で開催された第1回DQ3お使いRTAに出場させていただいたり、第2回DQ3お使いRTAではテストプレイヤーとして携わらせてい頂いたりといった中で、「作問も楽しそうだし一回やってみたいな」という思いがありました。そこで時間もそこそこ手頃で問題もそこそこ作りやすそうなPS版DQ4でできればいいなと思い、第2回DQ3お使いRTAが終わった頃にもう問題を考えていて、大枠はすぐに完成しました。最初はニコ生で開催しようかなとも思ったのですが、「これSTとかリアルの企画でやっても面白そうだな」と思い、8月くらいにあったBBQで御茶さんに提案したのがきっかけです。その後、御茶さんの方から「ぜひやりましょう」とお声掛けをいただいて開催が決定しました。

2. 問題を作るまで

 そんなわけで問題を作っていたのは第2回DQ3お使いRTAが終わった後の6月くらいで、問題は割りとすぐに出揃いました。
 複数アイテム入手問題として力の種、金策問題としてはぐれメタルよろい、メダル問題として杖が決定。普段RTAではやらないことをやらせる問題として鉄シリーズ(レイクナバ北の洞窟)、神の装備(角笛のほこら)、ピサロナイトが決定、通常のチャートを崩す問題として尻にひかれ隊が決定、その他いろいろしてほとんど今の問題になった感じでした。
 作問するにあたって一番気にしていたのは時間で、配信だとリスナーは途中自由に休憩挟んだり他の事をしたりできますが、リアルでやる企画ではそうも行かないのであまり長くしてしまうと絶対にダレてしまうだろうというのが危惧していたことでした。そのため制限時間の限度は5時間だろうなというのは最初に決めてあって、それに収まるように問題を考えていったつもりです。幸いリアルでやる分にはこちらでデータを用意できるので、運要素が激しくさらに問題を入れる余地が少ない2章を飛ばして、3章からのデータでやってもらおうということで解消することができました。

3. 本番までの準備

 御茶さんからお話を頂いた時点で既に問題がほとんど出来上がっていたので、まず問題を御茶さんに見ていただきました。その後2人でテストプレイや想定解の調査などをして、問題の修正や調整、配点決めなどを行いました。
 その後、11月頭くらいにナナカさんとhiroさんにテストプレイをしていただきました。ナナカさんはSkypeで実際にテストプレイ画面を見ながらやっていただきました。hiroさんにも当初テストプレイを依頼していたのですが、PS2本体の不調でフリーズが多発するということでとりあえず出来るところまでやっていただいた後に(3章終了まで)、問題を見た印象や想定解の解説を受けての意見などを頂きました。ナナカさんはテストプレイで410点、更にhiroさんにもプレイ時間の不足については指摘をいただき、これを受けて問題を減らしたり、個数を減らしたりなどの微調整を少し行いました。
 その後は配布用の各種リーフレットや解説スライドの作成、点数表のGoogleスプレッドシートの準備などを行って本番を迎えた感じです。


次回は問題ごとに作成の裏話的な話と、本番でのプレイについて書きます。
というわけで続く。

第6回底辺駅伝予選を終えて

2015年7月31日~9月6日まで、第6回底辺駅伝の約1ヶ月以上にわたる長い長い予選があり、ようやく終了しました。
自分はDQ3で参加し、結果予選2位で本戦出場が決定いたしました。
予選走行中は大分闇に落ちていたと思いますが、応援してくださった方々本当にありがとうございました。

com.nicovideo.jp

折角なので、予選に向けていろいろ考えたことや実際予選の走行中に意識していたことを軽くまとめてみようかなと思います。

1. 予選ルール発表を見た反応

大会開催告知とともに予選のルールが発表されました。
前回の予選ルールは簡単に言えば上位2割の平均タイムを競う物でしたが、今回はそれとはまったく真逆の下位2割を除いた平均タイムを競うものでした。
個人的には前回のルールを受けて、「6割くらい採用タイムにするのがバランス良いのかなー」とか勝手に考えていましたが、その予想を上回る8割採用で正直ビックリしていました。
このルールにおいてDQ3を走る上で考えていたのは、大体下のような感じでしょうか。

1.1. 対ゾーマ

あの予選ルールを受けて、DQ3の走者なら誰もが一番悩んだと思われる対ゾーマ
勝率の定説は葉2枚で80%以上くらい、落ちれば約20分のタイムロスという上位8割採用アベというルールに絶妙に絡んでくる一番の難所です。
きっと誰もがゾーマ落ちは15本中3本に納めなければ予選突破は苦しい」と思い、ゾーマ戦の安定を第一に考えていたでしょう。僕もそう考えてました。

1.1.1. そもそもこのルールでそれくらいゾーマ戦の安定を取る必要があるの?

そんなわけで「ゾーマ落ちちゃダメだゾーマ落ちちゃダメだゾーマ落ちちゃダメだ・・・」とそのままエヴァにでも乗りかねない勢いになるわけですが、今回競っているのはアベレージである以上「その安定取った結果のタイムロスがゾーマ落ちによるタイムロスの期待値より上回ってたらその戦術ダメだよね」って話になるわけです。
具体的に言えば、例えばゾーマ落ちで18分ロスると仮定して、勝率を8.33%(1/12)上げるために1分半以上のタイムを使ったら、それはこの予選におけるアベレージの結果としては悪化することが多いということになります。
そもそもゾーマ落ちの原因としてケアするにも非常に難しいパターン(打撃2連とか吹雪連発とか石先行とか)もある中で、どれくらいのタイムコストを払って安定を取るかが非常に難しいのです。
どうしても最大限の安定を取りたくなるところですが、上記のことは常に頭に入れて戦術を構築する必要があります。

1.1.2. ゾーマの安定策

ゾーマ戦の勝率アップに貢献すると考えられる戦術を挙げてみます。

  • スクルトをなるべく入れる
  • ダメージソースを多くする
  • 味方の最大HPを高くする
  • 賢者の素早さを高くする

まず上2つの戦術ですが、これらは見事に相反することになります。
スクルトを入れなければ前列打撃2連や後列打撃吹雪で死亡するケースが増えますが、ルカニバイキルトや魔戦を動かすことによってダメージソースを稼がなければ吹雪2連や石先行、賢者後攻、後列打撃2連などで死亡するケースも増えてしまいます。
この絶妙なバランスがゾーマ戦を最も難しくしている要素だと個人的には考えています。

しかし、下の2つに関しては絶対的な安定をもたらします。
特に最大HPの高さは耐久力という点でも貢献しますが、ルカニの選択を後押ししたり、魔戦が動きやすくなるなどダメージソースを稼ぐという点でも大きく貢献します。またダメージソースが大きくなるため、HPアップに多少のコストを掛けてもゾーマ戦の時間短縮によりタイムを回収出来る場合もあります。

上記の考えから、ゾーマ戦の勝率に関してはパーティメンバーのHPを高くするという手段で安定化を狙うことに決めていました。

1.1.3. 経験値・レベルプラン

上記のHP確保のために、経験値プランは以下のように設定していました。

  • 魔戦は鉄人orタフガイのみ採用し、最終Lv22を基本的に徹底する。
  • 純戦はガルナの搭で既にHP上昇に不安があれば、Lv14~15程度まで上げてから間引く(最終Lv23意識)
  • 勇者はガルナの塔でLv19まで上げてから間引き、最終Lv25を基本的に徹底する。

魔戦と勇者に関しては、レベルに対する最大HPの期待値を見てみればその効果が目に見えてわかると思います。
特に魔戦は性格補正が0.1倍変わるごとにLv22時のHPが18程度変わります。
ただしタフガイは1/3で仲間作成に時間を取られる可能性があるため、鉄人orタフガイの2/3採用しました。
これなら吟味する必要もあまりなく、魔戦の最終HPが300前後にはなってくれるため、木の実を他に回せたりといろいろ恩恵があります。

  • 魔戦
Lv タフガイ 鉄人 頑張り屋(ヘビメタ進行)
21 300 282 264
22 316 298 278
  • 勇者(スタミナの種2個平均値を含む)
Lv 最大HP
24 198
25 208

勇者はガルナの塔でLv19を入れることによって、Lv19の成長値に怠け者の補正がかかる上に勇者Lv25の必要経験値が魔戦Lv22+1912Exp以下に調整できるようになります。
勇者Lv19まで入れて次のメタルエンカで間引くと魔法使いLv20がほとんどのケースで入り50%でヒャダルコを習得できるので、勇者がいないことによる雑魚処理の減速も抑えられるので個人的にはおすすめです。
ただし盗賊Lv20到達のために勇者を間引いてしまった場合は、必ずしもこの調整は意識しないことにしました。

純戦に関しては、特にHPが問題なければガルナはメタル1エンカ分だけ経験値を入れ、Lv13程度で間引きます。
これはボストロール~バラモス戦のHP確保のほか、後述するバラモスブロス戦純戦Lv22調整のためです。
HPに不安があり最終Lvを23まで上げる可能性を残す場合は、Lv15前後まで上げて間引きます。
これにより魔戦Lv22や勇者Lv25から0~1エンカ分程度の経験値で純戦Lv23を入れることが出来ます。

1.2. 対バラモスブロス

ゾーマばかりに気を取られがちですが、バラモスブロスも忘れてはいけません。
バラモスブロスによる死因は大体以下の3つです。

  • 石先行
  • 3回行動全体攻撃連発
  • 炎が絡む全体行動連発

石先行なんかはどうしようもないので除きますが、大体純戦から落ちるか賢者から落ちるかです。
賢者の炎耐性は水の羽衣以外に上げることができないので、純戦の耐性を強化するか回復ソースを増やすかしかありません。
ということで、考えられる対策は以下の3つ程度に絞られます。

  • 魔法の鎧や地獄の鎧で純戦の呪文耐性をさらに強化する。
  • マジカルスカートを装備した魔戦に賢者の杖を渡し、回復ソースを増やす。
  • HPを高くする

呪文耐性強化にはどうしてもその分の金策や、魔法の鎧の場合は購入時間、地獄の鎧の場合には反射ダメージが無い、ゾンビ戦の原則などによって1分程度のコストがかかってしまいます。
2つ目の対策は割とお手軽に出来ますが、アサシンカットの選択がほとんどなくなるほか、魔戦の行動順が安定せず確実に安定になるとは言えないのがネックです。
また、炎が多いブロスに対しては結局どうすることもできません。ドラゴンメイルを買えば純戦の被ダメは減らせますが、それよりは行動確率の多いイオナズンを対策するのがセオリーでしょう。

ということで、ブロス戦に関しても純戦Lv22をブロス前に確実に入れることで、最低限の安定を取る形に落ち着きました。
これによって勝率がどれだけ変わるかは微妙ですが、勇者Lv25調整のついでという感じです。

1.3. その他細かいところ

その他細かいところとしては、

  • バラモス戦魔戦Lv12の徹底(といってもネクロで1エンカ程度狩れば入るけど)
  • 祈りは2つ購入、アサシンカットは出来ればどんどんする(ただしバラモス撃破までに破損が出たら岩山で回収)

くらいでしょうか。
魔戦のLvはおろち戦でも影響が大きく出るほか、結局最終Lvのために経験値が必要になるので、ネクロでは無理して逃げ打つ必要はないと思います。



まとめると「なるべくLv高くしようぜ!」という簡単な結論ですが、それでも意識するのとしないのでは安定度は大きく異なってくると思います。
これくらいの経験値稼ぎなら基本的に出てきた敵をしっかり食っていれば入るので、無理してエンカウントを増やす必要とかは全くありません。
DQ3の逃走成功率の低さ、賢者の杖による戦闘中MP0回復の存在などもあって、一発勝負では無理に逃げても効果はあまり期待できないと思っています。

あとカギとなるのは、ニフラムで飛ばせる敵の対処でしょうか。
よくある例としてはバルログとソードイドの複合エンカの場合。賢者はバルログへの魔封じに回らなければいけないため、ニフラムを打つのであれば勇者になりますが、
基本的に賢者以外は後攻するため、勇者でニフラムするのと倒しに行くのでは時間差がほとんどなくなり、倒して経験値を入れるのが得策であるといえます。
(ただしもう1体アークマージがいると話がまた変わりますが...)

ちなみに並走などで競っている場合でも、この「出てきた敵は基本的に狩ってLv高くしよう、そのおかげでゾーマ加速したらラッキー」戦法は非常に優秀だと思っています。
タイム加速がゾーマ戦になるので、攻めるか守るかの判断を後に遅らせることが出来るほか、受けた運に対して自然にタイムが加速するなど安定を確保しつつタイム加速も狙えます。
エンカがデレたらデレたでその分のタイム加速をそのまま受ければいいので無茶する必要がないです。


ということでこんなことを考えていて走っていましたが、その結果予選15走中ゾーマ2乙、バラモスブロス0乙でした。
バラモスブロスに関しては単純に運がよかったのが大きいと思いますが、ゾーマに関しては高HPが活きた場面がかなりあったと思います。
(特に純戦Lv23調整をして助かった走りが2回ほどありました。)
後半も1:28前後で走れていたので、タイムも犠牲せずに済んだと思っています。

PS版DQ4 ネネ転売の仕様

PS版DQ4のネネ転売のアルゴリズムについて、調査してみた結果多分分かってきたのでメモも兼ねてアウトプット。
今まで通説で「2種類以上のアイテムを売ることはない」と言われていて、1種類のアイテムを複数売却するのがセオリーだったけど、カロメさんの調査結果により、どうもそうなるとは限らないみたいなので調べてみた。ch.nicovideo.jp



1. ネネに売却に出す際に、内部で売却アイテムの種類と各個数が保存される。
  このデータ(以降在庫データ)は売却に出した順番に保存されるが、同じ種類のアイテムはまとめられ、個数が加算される。

 ※具体例
  i. 正義のそろばん, 正義のそろばん, ホーリーランス の順で売却に出した場合
     在庫データ: 正義のそろばんx2, ホーリーランスx1
  ii. 正義のそろばん, ホーリーランス, 正義のそろばん の順で売却に出した場合
     在庫データ: 正義のそろばんx2, ホーリーランスx1
  iii. iiの後、正義のそろばん2個が売却され、その後正義のそろばんを3個売却に出した場合
     在庫データ: ホーリーランスx1, 正義のそろばんx3
  iv. iiの後、正義のそろばん1個が売却され、その後正義のそろばんを2個売却に出した場合
     在庫データ: 正義のそろばんx3, ホーリーランスx1
 ※この在庫データの格納の順番が重要なので注意


2. 日が変わり、最初にネネに話しかけて売却しようとするとき、売却判定が行われる。
  (「品物を仕入れてきてくれた?」のメッセージ後「はい」選択肢)

 2.1. 1種類目のアイテムの売却判定
  2.1.1. [0,3]の一様整数乱数を引き、0以外の場合は売却される
  2.1.2. 2.1.1で売却が決まった場合、[買値*1.5, 買値*2]の一様整数乱数を引き、その結果が売値として売却される。
2.1.3. アイテムが売却された場合は、在庫データから個数を1個減らす
  2.1.3. 現在売却判定を行っているアイテムの個数文だけ2.1.1~2.1.2を繰り返す。
  2.1.4. その種類のアイテムが全て売却された場合は、在庫データからそのアイテムの種類を削除し、以降の在庫データの場所をあいた分だけ前にずらす。
 2.2. 2種類目以降のアイテム売却判定
  2.2.1. この時点での在庫アイテム種類数が1以下の場合、売却判定を終了する。
  2.2.2. この時点での在庫アイテム種類数が2以上の場合、次の種類のアイテムの売却判定を2.1と同様の手順で行う。


以上の重要な点をまとめると、こんな感じになるだろうか。

  • 在庫アイテムが1種類のみの場合は、最後まで売却判定を行う。
  • 在庫アイテムが2種類以上の場合は、在庫アイテムが1種類になるまで売却判定を行う。
  • アイテム1個の売却率は3/4。
  • 売値は買値の1.5倍~2倍。


これを踏まえてRTAのネネ転売でどう立ち回るべきかを簡単に考えてみた。

おそらく複数種類のアイテムを売りたくなるのは、転売の序盤だろう。
所持金に対して算盤購入時の端数の割合が多くなるので、出来ればその端数も転売して早く所持金を増やすのが直感的に効率はいいと思う。
ただこの場合そろばんの所持数は少ないはずなので、在庫に出した分全部売却してくれる可能性は高い。
例えば算盤2ランス1を売却に出したとして、算盤2を売却してしまうとランスは売却判定してくれないのである。
この場合は最後にお弁当を挟むことで算盤2ランス1全て売却してくれる可能性が出てくるが、次の売却で在庫の一番最初にお弁当が来てしまうので困ったことになる。難しい。

終盤の所持金が大量にある場合は、端数のお金も相対的に影響が少なくなるはずなので従来通り算盤大量購入でよいだろうか。算盤の個数が多くなる分、全て売却することはないと見て他のアイテムを売却に出してもよいが、万が一全部売れちゃった場合はこれまた困る。やっぱり難しい。

SFC版DQ3 ゾーマ戦吹雪2連後の行動

某枠での議論。
僕はコメントだったこともあり、書ききれなかった点も含めてアウトプットしておく。

1. 前提

  • ゾーマ戦において、全員非防御状態から吹雪2連を食らい、賢者の石が後攻したあとの状況。
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
現在HP 200 200 180 130

この場合の行動として

キャラ 魔戦 純戦 勇者 賢者
現在HP 200 200→290 180 130
行動 防御 ? 杖→純

と勇者以外の行動はほとんど一意に決まると思うが、「勇者はどの行動を取るべきか」という話。
ルカニバイキルが入っていないなら「勇者防御を選択したい」というのが僕の意見。


2. 本題

この次のターンの行動別に、状況がどう変わるかを考えてみる。

2.1. 波動+何か(45.09%)

波動が1回でも来た場合は、基本的に次のターンの先行賢者の杖で3人以上のキャラがHPMAX付近まで回復することが出来る。
勇者の防御によって状況が変わるパターンはほとんどない。

2.1.1. 波動+打撃(20.09%)

打撃が賢者に刺さる(1.96%)以外は死者が出ることはない。
これを変えるための勇者の行動はホイミ→賢者が先行くらいである。(勇者のゾーマに対する先行率は約11%)
打撃が前3人に刺さった場合は、次ターンの賢者の杖で全員のHPがMAX付近まで回復できる。

2,1.2. 波動+吹雪(14.29%)
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
現在HP 250 290 210 140

この場合、次ターンの賢者杖→賢者or防御がほぼ確定し、魔戦以外のHPがMAX付近まで回復される。

2.1.3. 波動+マヒャド(7.14%)
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
現在HP 230 300 210 200

この場合は次ターンの賢者杖→魔戦でHP状況が立ち直る。

2.1.4. 波動2連(3.57%)

ありがとうございます。

2.2. 吹雪+打撃(20.09%)

ゾーマの行動組み合わせの中で最も高い確率である組み合わせのうちの1つ。
これが来た場合は次ターンで立て直すことが出来ない。

2.2.1. 吹雪+打撃→魔戦(8.16%)
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
現在HP 170 290 210 140

吹雪+打撃の中で一番ありがたい状況

2.2.2. 吹雪+打撃→純戦(6.04%)
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
防御 250 140 210 140
攻撃 250 140 210 140
ホイミ→賢 250 140 210 170

杖を純戦に振っても、打撃+全体攻撃で純戦が落ちかねない状況。
この場合は勇者予約葉や蘇生時のHP確保のために防御を取る必要が出てくる。
吹雪2連後の行動にホイミ→賢者をしておくと、この場合は強いだろうか。

2.2.3. 吹雪+打撃→勇者(3.92%)
キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
防御 250 290 170 140
攻撃 250 290 0 140
ホイミ→賢 250 290 0 140or170

勇者防御を取れば勇者が生き残るが、それ以外の場合は低乱数を引かない限り勇者が落ちる(下位30%くらいがライン)
ホイミは勇者がゾーマに先行すれば活きるが、そうでない場合はただの無駄行動になる。
ちなみに勇者が落ちた場合、この後魔戦で勇者を蘇生する必要が出てくるが、次ターン賢者は自身のHPをケアするために杖or防御を取る必要が出てくるので、魔戦は防御でHPが万全になるまで蘇生を待つか、デレ行動期待でHP250付近で葉を使用する必要が出てくる。
勇者防御が活きる行動その1。

2.2.4. 吹雪+打撃→賢者(1.96%)

もれなく賢者が落ちる。
この場合は勇者がHP200付近までHPが回復しているため、勇者の葉で賢者蘇生をすることになるであろう。
ホイミ→賢が先行しても結果はほとんど変わらない。(賢者の打撃+吹雪被ダメ最低乱数は172、厳しい)

2.3. マヒャド+打撃(10.04%)

勇者防御によって、打撃が勇者に刺さった場合(1.96%)がケアできる
それ以外の場合は勇者の選択肢によってほとんど変わらないだろうか。

2.4. 打撃2連(14.06%)

打撃を食らわなかったキャラはHPMAX付近まで回復される。
全部書くのはさすがにあれなので、特記すべきものだけ。

2.4.1. 打撃→どこか+打撃→賢者(2.62%)

ホイミ→賢が先行すると、賢者が生存できる。
勇者の先攻率は約11%、行動率と合わせると約0.288%となる。

2.4.2. 打撃→勇者+打撃→賢者(0.536%)

防御しない場合、勇者のHPが削られるため、蘇生を魔戦で行うことが確定になる。
防御した場合は勇者で蘇生することができる。
蘇生をどちらで行うかが変わるくらい。

2.4.3. 打撃→純戦+打撃→勇者(1.65%)

吹雪2連後に勇者が攻撃した場合は次ターン防御、防御した場合は次ターン攻撃となるので、結果として攻撃回数に変化が無くなる。

2.4.4. 打撃→勇者2連(0.536%)

防御していると勇者が耐え、していないと落ちる。
でもそんなのいつだって同じ。

2.5. 吹雪+マヒャド(7.14%)

キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
防御 220 220 210 110
攻撃 220 220 170 110
ホイミ→賢 220 220 170 140

勇者が防御するとHPMAX付近まで回復するが、そうでないと後列のHP状況が少し悪化する状態。
純戦のHPは立て直るが、次ターン吹雪マヒャドでも賢者が落ちる可能性が出てくるため、吹雪2連後に攻撃していると勇者は蘇生に備えて防御したり、予約葉を振っておいたりする必要が出てくる。
防御していた場合は勇者が動きやすくなる。賢者に予約葉やこのターンにホイミ→賢をする可能性も考えられるか。
ホイミ→賢の場合は吹雪マヒャドのラインに引っ掛からなくなるあたり優秀だろうか。このターンの勇者防御とも相性が良い。

2.6. 吹雪2連(3.57%)

キャラ 魔戦 純戦 勇者 賢者
最大HP 300 300 210 200
防御 200 200 210 0
攻撃 200 200 150 0
ホイミ→賢 200 200 150 0or90

ホイミ→賢が先行し、吹雪が低乱数でない限りもれなく賢者が落ちる。
勇者が防御した場合は勇者のHPがMAX付近まで回復するため、次の蘇生を比較的安全に行うことが出来るが、そうでない場合は蘇生しようにも魔戦でも勇者でも蘇生しにくい状況になってしまう。
勇者防御が活きる行動その2。

3. まとめ

2章の記述から、勇者の行動による違いをまとめてみる。

  • 勇者防御
    • 吹雪orマヒャド+打撃→勇(計5.88%)による勇者落ちをカバーできる
    • 吹雪2連後や打撃が後列2人に刺さった後の賢者蘇生を安全に行うことが出来る。
  • 勇者攻撃
    • 上記の全体+打撃→勇による勇者落ちをカバーできない。
    • 吹雪+打撃→勇だった場合は、次ターン安全に勇者の蘇生を行うことができない。
  • 勇者ホイミ→賢
    • 吹雪+打撃→純や吹雪+マヒャドの場合は、賢者のHPを多少リカバリー出来る。
    • それ以外は先行しない限り次ターンへの影響はほとんどない。

4. 僕の意見

僕が勇者防御を取りたい理由大まかには下の通り

  • 打撃が来た場合魔戦以外に刺さると立て直せない場合が多いため、受け皿を広げて勇者に来ても立て直るようにしたい。
  • 死者が出た場合に勇者で安全に蘇生を行いたい。

つまり状況が辛い中、勇者に打撃が来ることをデレ行動に含めてあげつつ、万が一の場合の勇者で蘇生がやりやすい状況を作りたいのが大体の理由。
葉っぱ2枚しっかり整っている中、一気に崩れるのはどうしても避けたい。
吹雪2連後でない状況の後に勇者が落ちても、魔戦で蘇生して終わり、だから吹雪2連後かそうでないかで異なるのはこのあたり。
葉が2枚あるなら先に使いたいのは勇者の葉だし、この辺にも理にかなっているのも大きい。勇者のみ葉持ち状態だと攻めれないしつらい。

この万が一誰か落ちたとき、次ターン蘇生して終わりで済むかどうかはかなり大きい問題で、僕が普段やってる中では他には以下のような状況もある。

キャラ 魔戦 純戦 勇者 賢者
現在HP 300 140 210 200

これでルカニバイキルが入っている状態。吹雪+打撃→純戦が入るとよくある。
この場合は純戦が全体攻撃含みで落ちる可能性があって、石の回復を得られないととってもピンチになる。かと言ってルカニバイキルがある中勇者は殴りたくなる。ということで、この場合はつい殴りたくなる魔戦で防御しておいて、万が一落ちた場合に蘇生に備えて少しでもHP状況を良くするっていうことはやってる。
純戦以外への打撃+吹雪や打撃2連によって落ちる場合は、基本的に次ターン安全に蘇生出来るから、葉は使わされようとも一気に崩れることが少ない。


それから吹雪2連後はHP状況を立て直すために波動を期待するわけだけど、ゾーマに約89%後攻する勇者が波動を期待しておきながら殴る意味があまり感じられない。バイキル解けることを期待しているわけだからね。

同様な考えが波動後全員HPMAX付近における行動選択にもあって、この時ルカニバイキルトを入れるということは、そのターン波動が来ないことを期待するわけだから、攻撃行動が2回来ることを受け入れていることになる。
僕はこの状況だったらよっぽどHPが良くない限りスクルトバイキルトを打って、猛攻が来た場合にも備えつつ、波動+全体or打撃→魔が来つつ魔戦のバイキルトが後攻した場合は、次ターン魔戦で防御入れつつルカニ入れる、みたいなことをやってる。
ルカニバイキルト打撃が入るために波動されたくないターン数はどちらも1ターンで変わらないから、ゾーマの行動によって柔軟に攻めれたり守れたり出来る優秀な行動選択だと思っている。


吹雪2連自体は3.57%で1戦闘に1回くらいある計算で、多く見積もって2回、それも波動が来ない場合は更にピンチが多くなるような状況で殴って勝率がどれくらい変わるかというと、僕はあまりそうは思えない。行動に一貫性もないと思うし。


これが僕が言いたかった勇者防御を取りたい理由。
ゾーマ戦に関しては最適行動決定に対する絶対的な指標が今までないから、あまりアウトプットもしてこなかったんだけど、せっかくの機会なので少しまとめておきました。
何かあったらコメントとかください。