きほんはまる?

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

PS版DQ4 3章前掛け転売についてちょっと本気出して考えてみた

きっかけはこれharapan.exblog.jp

1年以上前、DQ3のReTAの調べものだかなんだかしてた時に偶然見つけた記事。
僕がPS4RTA始めたときには、前掛け転売のボーダーは1750Gみたいなのが通説になっていたけど、
この記事を見て「あ、実はボーダー下げて仕入れ増やしちゃってもいい感じなの?」と思ったのを覚えているが、それ以来しばらく詳しい調査はしていなかった。

1. じじいのあたまのめかにずむ

3章のボンモールにいる防具じじいの買い取り金額決定は以下のようになっている。

  1. [0,16)の一様整数乱数を引く。
  2. 乱数=0だったらボケ処理、それ以外だったら通常の処理になる。(つまりボケる確率は1/16)
  3. ボケ処理の場合はSR$0x80117e7c(買値*1.5, 買値*2)がcallされ、[買値*1.5, 買値*2]のほぼ一様な整数乱数が返ってくる。
  4. 通常処理の場合はSR$0x80117e7c(買値*0.75 買値*1.25)がcallされ、[買値*0.75, 買値*1.25]のほぼ一様な整数乱数が返ってくる。
  5. 返ってきた乱数を売却額とする。

2. しみゅれ~とけっか

仕組みが分かればシミュレータが組める。
早速実装して、試行回数5万回で調査

ボーダーを1500G~1800Gの50G刻み、必要収入金額(最初の前掛け9個売却スタートの時点の金額から稼がなければいけない金額)を15000G~17500Gの500G刻みでシミュレートし、最初の前掛け9個売却スタートから必要金額稼ぐまでにかかった平均時間を取った。
各パラメータはパンダさんの記事通り、以下のようにしている。

  • 売却キャンセル1回分の時間: 3.2s
  • 仕入れ1回分の時間: 49s

結果は以下の通りであった。

f:id:Maru0137:20150525211041p:plain

ボーダー[G]\必要収入[G] 15000 15500 16000 16500 17000 17500
1500 63.726652s 83.671864s 102.999864s 126.046892s 144.760364s 163.968864s
1550 63.516972s 80.639696s 99.095764s 122.060024s 142.025012s 160.519688s
1600 70.8178s 78.45748s 98.012348s 118.291296s 142.37878s 160.922388s
1650 83.6912s 84.438796s 100.29976s 115.452392s 143.56992s 165.102504s
1700 102.133312s 102.133312s 106.7654s 119.600952s 142.54478s 168.9146s
1750 131.272768s 131.272768s 131.284732s 139.797064s 150.668804s 174.821684s
1800 183.177472s 183.177472s 183.177472s 183.837488s 186.639508s 197.06948s

各必要収入額における平均時間の最小値を赤字にしてある。

3. まとめ

3章の前掛け転売では、必要収入が15000G,17000G,17500G付近のときはボーダー1550Gで、15500G,16000G付近の時はボーダー1600Gで、16500G付近のときはボーダー1650Gで売却するのが最適である。
めでたしめでたし。


そんなわけはない。

4. ばいきゃくじかんのぶんぷ

平均時間だけ見ていたのでは、平均こそ速いかもしれないがその実売却時間はブレブレで安定しないみたいなものが分からない。
また、3章は運要素の強い2章終了直後の章であるため、対戦などではタイム差などに応じて取るべき選択肢が変わってくる。
平均時間の最小だけを見てボーダーを選んだものの実はタイムがブレブレだったりする場合には、せっかく2章終了時でリードしていても「じじいツン引いたから遅れて後ろに追いつかれたじゃねえかよクソが」とか言って、挙句の果てにはコントローラーが投げつけれらたりROMが責任を押し付けられたりしてしまう。おおかわいそうに、コントローラーやROMはわるくないのだ・・・

ということで売却図の分布を見てみよう。
全ての分布図を全て載せるわけにもいかないので、抜粋してみてみることにする。

まずは必要金額17500G時の売却時間の確率密度と累積分布。
上の図が確率密度、下の図が累積分布になる。
f:id:Maru0137:20150525213648p:plain
f:id:Maru0137:20150525213652p:plain

確率密度を見ると「ある売却時間で終わる確率は何%か」が、累積分布をみると「ある売却時間以下で終わる確率は上位何%か」がわかる。

また、平均だけでなく標準偏差も出してみよう。
標準偏差の値が高いほど、売却時間がぶれやすいことを表す。

ボーダー[G] 標準偏差
1500 56.15782287
1550 55.21510188
1600 59.86279681
1650 70.60325696
1700 82.75208663
1750 88.75131105
1800 79.92613876

なんと必要収入17500Gの場合は、通説となっているボーダー1750Gが一番標準偏差が高く、売却時間がぶれやすいという驚きの結果が得られた。
実際確率密度の図を見てみると、分布がブレブレなのが良くわかる。
一番平均時間が小さいボーダー1550Gは標準偏差も最小となっている。
つまり仕入れを1回増やす覚悟でボーダー下げてどんどん売った方が速くなるということが分かったと思う。
ボーダー1600Gも売却時間150s以内の速い時間が出やすいうえ、極端に遅れることはなさそうなので選択肢に入れられそうだ。


続いて、必要金額16000Gの場合も見てみる。
鋼鎧がボケたりするとこの辺になってくるだろうか。

f:id:Maru0137:20150525215129p:plain
f:id:Maru0137:20150525215136p:plain

標準偏差は以下の通り。

ボーダー[G] 標準偏差
1500 54.23222707
1550 55.13257586
1600 54.12659886
1650 50.08340547
1700 39.0092605
1750 38.53368925
1800 56.27160925

平均時間が最小なのはボーダー1600Gであるが、ボーダー1500G~1650Gあたりではボーダー1700G以上に比べて標準偏差が高い。
これは分布図を見ればわかると思うが、仕入れが必要な可能性が増えるために、その場合のタイムロスが足を引っ張っているためだと思う。
ボーダーが1700Gでは平均時間がボーダー1600Gに比べて8sほど上がるが、標準偏差が一気に下がりタイムの安定性が期待できる。
また通説となっているボーダー1750Gは、標準偏差こそ最小値だが平均売却時間が非常に大きくなり、実際はボーダー1700Gに対してほぼ劣っていることが分かる。鋼鎧がボケたらまずボーダーは下げていいだろう。


載せられなかったデータは以下のURLにアップロードしておく。
PSDQ4_resale.xlsx(PSDQ4_resale.xlsx) ダウンロード | DQRTA | uploader.jp


5. はがねのよろいぼけのかそくど

もう一つ、2節の平均売却時間からわかることがある。
最小平均時間周辺のボーダー周辺においては、必要な収入金額が500G下がるごとに平均売却時間が約20sほど下がることが分かる。

3章の序盤に化けキツネからもらった鋼の鎧を転売するのだが、これがボケるかボケないかで約1725Gの収入差が出てくる。(実際にはボケない場合は金額を吟味しているのでもう少し下がるが)
そうすると、鋼の鎧が運よくスムーズにボケると(なんだこの表現)約1分ほどの加速になることがわかる。

またこれも平均値だけでの話になるが、鋼の鎧がボケるまでにかかる時間は約51.2sであるため、鋼の鎧はボケ待ちした方が期待値としてはタイムが速くなる可能性もある。
これについても詳しく調査したいが今回は面倒なのでしない。


6. こんくる~じょん

各必要金額に応じて売却時間の分布と標準偏差を求めた。
欲しいタイムに応じて、各プレイヤーが柔軟にボーダーラインを選択してあげるとよい。
また、鋼の鎧がボケると約1分の加速になることも分かった。



終わりたい。


7. にんげんはかしこい

今回の調査では売却金額に関わらずボーダーラインはずっと一定のままという条件で行っているが、
実際の場合には前半の売却金額を見て以降のボーダーラインを変動させられるはずである。
その場合、「仕入れ挟むつもりだったけど予想外にボケたからボーダー上げて仕入れせずに終わらそう」とか、「予想外にボケたからボーダー下げて早く終わらそう」とかいう知恵が活用できそうなことが予想される。人間は賢い。

さて、このような場合の最適な売り方を求めたいときにはどうするべきだろうか。

詳細はめんどくさいので省略するが、平均売却時間の最小化という観点で見れば、おそらくこれはDPで解けると思われる。というわけで求めてみたいが、やっぱりめんどくさいのと、そもそも求められたとして実際のRTAプレイ中に残りの必要金額と前掛け数に応じてボーダーを変えられそうかというと疑問な点ではある。人間は賢いのか賢くないのかよくわからない。


ということで、モチベーションがあったらやってみるかも。

PS2版DQ5 エンカウント判定周りメモ

ついにPS2にまで手を出してしまった...
取り急ぎ、メモみたいな形で。

 歩数が増えるごとに以下の式が評価され、結果が真であればエンカウントが発生する
   (乱数 mod A) < 閾値
 
   ※ A = 256 - (歩数 - エンカウント最低歩数) * [1,4]
     エンカウント最低歩数 = 10 - 閾値
    • 途中計算及び計算結果はIEEE754単精度浮動小数点演算に基づく
    • 歩数は戦闘終了時や一部のフロア切り替え時(詳細は後述)に0にリセットされる
    • 乱数の詳細な分布は未調査
  • 備考
    • フィールドではエンカウントテーブルごとに係数が異なる。現状分かっている範囲では
      • 妖精界北部: 1.5倍
      • 古代の洞窟周辺(幼年期): 1.25倍
      • ルラフェン西部: 1.5倍
    • ダンジョンでもエンカウントテーブルごとに閾値が変わる。大体1~4辺り
    • フロア切り替え時にエンカウントテーブルが変わる際に歩数リセットが行われる
      • エンカウントテーブルが変わらないフロア切り替えでは、歩数はリセットされない
      • フィールドでエンカウントテーブルが切り替わっても歩数はリセットされない
    • エンカウント判定無しのフロアに入った際にも歩数リセットが行われる
      • フィールドの出入りや、古代の洞窟の小部屋、迷いの森の小屋など


DQエンカウント判定は、大きく分けて

とあるが、PS2DQ5エンカウント判定は後者の確率エンカウント方式に該当する。
確率エンカウント方式では、直前のエンカ位置によって歩く場所を変えるなどの工夫が必要になるため、最適化が若干難しい。

とりあえずできることとしてはエンカリセ地点の把握と、エンカリセ入れの最適化か。
またフィールド内でのエンカ係数が異なる地域が確認されているので、境界付近では最適な歩き方が発見される可能性有り。

下みたいな表が完成して、乱数の分布が分かったらまた体系化してブロマガにまとめる予定。


f:id:Maru0137:20150216010948p:plain

ST大学祭観戦記&PS版DQ4呪文習得判定

こんばんは、研究の逃避気分転換として記事を書いてるMaruです。
今回の内容は以下の2点。


1つ目、ST大のむつめ祭に行ってきました。
目的はもちろんRTA研究会。
自分は2日目の実演会と、3日目のDQ7ReTAの最後の問題だけ観戦しました。
前回はDQ3でナナカさんと並走しましたが、今回はただの観客でした。

2日目は朝一で行って、FF5FF6ルイージマンションからずーっと見てました。
午後からはムウさんのPS2DQ5をまーくさんと一緒に煽ってました見てました。
夢幻斎さんの生DQ2も見れて満足です。やっぱり再現は大変ですね...

3日目は祝日にもかかわらず講義が入っていたので、元々行くつもりはなかったのですが、
その講義が4半期制で最初の回だったので、終わってから急遽駆けつけました。
着いたのが最後の4精霊問題が始まって少し経ったところで、最後だけ見てました。
ラスカルさんが全問クリア、かつ6問中5問で1位と凄まじい結果でした。どれくらい準備したんだろう...

実演中やその後の食事などでも色々な方と交流できてとても楽しかったです。
特にたーひゅさん、ありのさんなどのFF勢の方との交流は新鮮でした。
話を聞いて、エンカ内容とか歩数とかの仕組みとかどうなってるんだろうとか、
歩数調整もう少し簡単に調べられたらいいなーとか勝手に考えてました。


2つ目、PS版DQ4の呪文習得判定に関してブロマガに記事を書きました。

賢さの閾値が呪文ごとに設定されているとばっかり思っていましたが、定数だったのが驚きでした。
ラリホーはたまたまこの賢さ16に引っ掛かってただけだったんですね。
呪文の習得タイプもDQ3とほぼ同じで3種類あると食ってかかっていたんですが、実は2種類しかなかったです。

実はこのルーチンを調べていたのはメタルはぐれの乱数調整のためでした。
撃破後のレベルアップでもステータス成長値と呪文習得判定で乱数を消費するわけですが、呪文習得の方に関しては"50%で覚える"に行きつくまでの条件が分からないと乱数消費するかどうかが分からなかったので、今回これを調べていました。
後は成長値決定の仕組みと成長値の計算方法が分かれば、各キャラのレベル(経験値)と賢さの値と習得状況を入力にすれば、乱数特定を挟まずに連続でメタルはぐれを出現させることができます。

ということで、次は成長値計算について見ていこうと思っています。

ブログ開設&雑感&DQ3ステータス調査の紹介

どうもはじめまして、主にニコニコ生放送DQシリーズのRTAをしているMaruと申します。
既にニコニコのブロマガの方であれこれ書いてはいたんですが、色々思うところがあってこっちにもブログを作りました。
ブロマガの方には記録レポートや調査・解析についてのまとめ的な多くの人に分かりやすい記事を、こっちの方には調査・解析の詳細な話や、戦術戦略などのアイデア、雑感、その他マニアックな情報のアウトプットとして分離したいと思っています。

早速本題。
といってもほとんど雑感です。

1.今の状況について
大会などが落ち着いたり、卒論で研究が忙しかったりなどで最近放送はしていませんが、RTAについて思っていることは、各作品以下のような感じ。

SFCDQ1:鋼剣竪琴有り17竜王、岩山カット竪琴有り18竜王で記録更新したいな
SFCDQ2:やる気なし
     (タイム向上のビジョンが見えない
      練習積み重ねて敵対処が速く正確になって、少しずつ伸びていくんだろうなとは思ってる)
SFCDQ3:実は王者カット少し練習してたり
・ PS版DQ4:各種解析と乱数調整ありでの記録狙いしたいな
PS2DQ5:4が落ち着いたら解析含めてまた再度取り組んでみたいな
SFCDQ6:時間を取るのが厳しいのもあって、あまりやる気なし
・ PS版DQ7:新規作品として取り組んでみたかったり、時間的に厳しかったり

モチベがあるのは1と4。
特に4はいろいろやりたいこともあってかなり高いです。詳細は後述
1は岩山カット銅剣竪琴でLv18竜王でどこまでいけるか面白そう。
他にも取り組んでる人はいるので(最近はあまりやってないかな?)、楽しみですね。


2.PS版DQ4について
メタルスライムはぐれメタルの乱数調整についてはこちら

今のところ出来るのは以下のような感じ。
・種使って乱数特定する
・不思議な木の実を特定回数空使用して、乱数を進める
メタルスライム(はぐれメタル)を出現させる
 敵の行動・HPまで計算済み、よって確実に逃げない
・呪文習得判定と乱数消費の関係については未調査
・ある程度のLvUP時の消費乱数は分かるので、ホイミの回復乱数で再度特定
・2匹目以降を同様の手順で出す

2章エンドールメタルはセーブ・リセットからメタル出現まで、NPCがいるエリアを挟まないといけないので、今のところ1匹目は種7個くらい使って乱数特定。
2匹目はホイミ1回で乱数特定してるけど、精度の問題だったり、HPの伸び具合だったりあらかじめある程度のダメージもらってないといけなかったりで割と問題有り
あと解析範囲を広げれば、闘技場も乱数調整出来たりするかも?
やる気があればやる(やるとは言っていない)

5章ガーデンはぐれは夜ブランカNPCによる乱数消費がないので、乱数特定が非常に楽。
LvUPも多いし、ホイミ2回程度で2匹目以降も割と問題なく簡単に出せる。
こっちについては、むしろ問題はチャートの方。
安全だから装備も要らないし(諸刃、身かわし(ガーデン購入)+エンドールカット辺りかな)、
2章メンツ加入直後に狩りに行ってもいい。海鳴りとか事故率落ちる。
ただ間引きの問題がある。

あとははぐれの後も含めたチャートについて。
簡単に狩れるんだから3匹に留まらずそれ以上狩ってもいい訳だけど、どうするのがいいんでしょうかね。
マーニャ最初から間引いて、6匹~8匹くらい狩って、主アクブでレオバル行くのがいいのかなーとか思ってはいます。砂もなくなるだろうし、撃破時間も短縮するだろうし。
ここら辺については、王家の調整が出来るようになるかどうかもあるとは思うけど。
何か案あったらください。

後はツールを公開するとして、どんな感じのインターフェースが使いやすいのかなーとか。
自分のスキル的にJavaのSwingあたりに落ち着くのかなとか思ってたり。
Web系のスキルが欲しい(切実)。

最後にこれはかなり夢のような話になるけど、PSDQ4の場合人間が乱数を追いきれないのは現状NPCの移動くらいだから、最初から最後まで殆ど乱数調整出来るようになったりするんじゃないかという期待もあります。
ただ途方もない解析量が必要でしょうが...
戦闘中の乱数操作も調べていないので、どうなってるんでしょうね(作戦・入れ替えあたり)


3.DQ3ステータスについて
ネットを彷徨っていたらこんなものを発見しました。
RPubs - どらくえ
DQ3の戦士のステータスシミュレートをしてみたという記事。
僕のブロマガを参考にしていただいたみたいで、嬉しいとともに僕のあんな雑な記事でごめんなさいという感じです。
(続きを投稿していないことにも釘をさされていたり...ホントにゴメンナサイ)

実はその続きの記事が10万サンプルシミュレートで分布出した上で僕個人の採用基準やら育成法を簡単に示して終わろうかと思っていたんですが、面倒くさかったり他の事に手出してたりでやっていませんでした。
とか思っていたところに(実は忘れてたとかないよ?)他の方がシミュレートして下さっていてとても嬉しいです。
ぬりかべさん(でいいのかな?)、ありがとうございます。

【追記】
3のステータス回りについて、プレイ面で言いたかったのは
・んん、戦士はタフガイ以外ありえませんぞwwww
・魔法使いは素早さの最終ステはそんなに気にならないから出来れば鉄人、タフガイがいいね
 その場合はボストロ撃破後ヘビメタ外し
・盗賊は基本命知らずでいい
 ただ魔法使いが頑張りやで盗賊タフガイ引けたら、タフガイ進行でもいいかも?
 その場合はスー、エジンベアラダトームの素早さの種は絶対回収しておこう
くらいです。