バトルサブウェイ対戦相手決定方法

といってもまだだいたいだけ。
どこの乱数を使って出現ポケモンが決まるかが実機で確かめないと分からなかったり等。
徘徊ポケモンがいない前提であれば既に分かったものと見ていいかと。

下の方にいろいろ追記あり。

ツールできました。
http://blog.livedoor.jp/x_x_saki_x_x/archives/54407511.html


●出現トレーナーの種類
レポートを書いた後の乱数から7つ(7週目は6つ)、あるいは被ったらその分追加して決めているよう。
詳しくは検証していないが、バトルボックスがあるとレポート前にずれる可能性がある。
また、入口でなくホームから開始する場合、レポートの針による乱数消費がない。
中断してから再開しても既に決まっているので変わらない。
以下がスーパーシングルトレインでの出現トレーナーの表。
サブウェイマスターを除くと全部で300人、番号を0-299として書いている。

試合数出現トレーナー
1-6110-159
7160-179
8-13110-179 140-179
14180-199
15-20160-199
21200-219
22-27180-219
28220-299 220-239
29-48200-299
49サブウェイマスター
50-200-299

このうち出現トレーナーの種類が70になるものを除く20、40、50、100になるものについては、
 (乱数上位16bit) mod (出現トレーナーの種類) + (一番若い番号)
あるいは+1したもの、とすると今まで確認したもの全てで整合性がとれた。
+1の有無が何に由来するか、70の場合何故合わないのかについては不明。
+1の有無はずらしても同じ出現となっているのでそのシードに依存するよう。
+1の有無は下の追記で。

70の場合は一の位は合っているが十の位が合わなかったりする。
以下少ないが70の場合についてのもの。
下の追記にもあるが、140-179が正しい模様。

乱数上位16bit+1実機での値
F071010161553-63 (+110)
06FD2D301789-59 (+110)
F2C7C12F62151+162 (+110)
18980D566296-46 (+110)
EFB5AFF561365+136 (+110)
12876CF44743-53 (+110)
9B35DC9D39733+144 (+110)
111020D74368-38 (+110)
28B3740810419-49 (+110)
A577E00C42359+130 (+110)
E4F4D13458612+143 (+110)
566F68F922127-37 (+110)

シングル・ダブル・スーパーダブルも同様かと。
ノーマルシングルトレインについては追記に。


●出現ポケモン
こちらは対戦前に決まる模様。
中断レポートを書いた後に再開すると変わる。
分かっているのは出現ポケモンの種類まで。
性別や特性(あるいはそれを含む性格値)、あるか分からないがトレーナーID等がどこでどうやって決められているかは不明。
性別、特性については追記に。
最初の1人の出すポケモンは数回見た結果、7人の出現トレーナーを決めてから2つ消費した後の3つ+αで決めているよう。
出現ポケモンの種類あるいはアイテムが被った場合は破棄し次の乱数で決めているよう。

決定方法だが、まずポケモンの種類と型の組が988通り決められていて、各トレーナーごとにその988種類の中から出す番号が決められている。
その中から決めるのだがそれが先ほどのと酷似していて、
 (乱数上位16bit) mod (出現ポケモンの種類)
あるいは+1したものとして決められた番号目のポケモンが選ばれ、破棄された場合は次ので同様にしていると考えると整合性がとれる。
+1についてはトレーナーのと同様、追記参照。
決められた番号目についてだが、今まで出たものについては各トレーナーに決められた出現ポケモンの番号を昇順に並べたものについて考えて問題がなかった。

決められた最初の1匹(ダブルの場合は2匹)が最初に出されるポケモンで、残りのポケモンの出される順番はここで決められた順番に依存しない模様。
中断しない場合、次の出現ポケモンの決定までに消費される消費数は確認できた限りで12-14(ダブルの場合は16-17)。
この幅が何に依るのかは不明。
不定消費の原因は徘徊ポケモンだった模様。
追記で。
これが分からないことには中断なしでは一度実機で確認しないとどのポケモンが出るかの候補が絞れない。
逆に、この程度であろうと見当はつくので実機で確認すればどこの乱数を用いているかの見当はつく。

中断した場合どうなるかは詳しくは調べていない。
追記に書きました。


●例
ホワイト、スーパーシングルトレイン
入口駅員前にてレポート
ボルトロス徘徊中
5-6,8-週
出現するトレーナーは200-299の100種類
初期シード:DBA55DB70FA353E6
58まで消費後駅員に話しかける。
バトルボックスなし。
84-87のところは今の情報ではどちらか特定できないのでどちらも表記した。

シード番号性格値乱数列上位16bit補正出現備考
59FB5542B1--7レポートの針
60EE38D4D760984+185OLのウネメ(285)
6142DED41917118+119バトルガールのスーカンツ(219)
62DC7CA25956444+145ウエーターのコンニョン(245)
630F210ED13873-73サイクリングのダンテ(273)
64C4D78E2C50391+192ポケモンブリーダーのショウ(292)
65BCC3A23548323+124ポケモンレンジャーのバウ(224)
66B8612C4247201-1ビジネスマンのファウスト(201)
69BE2C8B4348684+15287種類、ダイノーズ(698) ♀がんじょう(1)
7018F2B49D6386-3587種類、メガヤンマ(681) ♂いろめがね(2)
71C8B8451E51384+15587種類、ツンベアー(701) ♀ゆきがくれ(-)
84 or
85
04E77E59 or
A644D228 
1255 or
42564
- or
+1 
4045種類、ジバコイル(883) がんじょう(2)
85 or
87
A644D228 or
2DDB0ED4 
42564 or
11739
- or
3945種類、ボスゴドラ(878) ♂がんじょう(1)
869F5526E340789-1945種類、トリデプス(811) ♂がんじょう(-)
10179032BC330979-787種類、ヘラクロス(478) ♀こんじょう(2)
1028A73B2B935443+13587種類、メガヤンマ(506) ♀いろめがね(2)
103ACACAB9544204+1987種類、ヘルガー(480) ♀もらいび(2)
1175AF82CA823288-5688種類、ガルーラ(614) ♀きもったま(2)
118DF3DBFFC57149+13888種類、ケンホロウ(596) ♀きょううん(2)
119D385DEFE54149+13088種類、ライチュウ(588) ♂せいでんき(-)
133E789ECBF59273+12787種類、グライオン(848) ♂すながくれ(2)
1342D57658111607-3687種類、サーナイト(857) ♀トレース(2)
135C32260DD49954+11787種類、カイリキー(838) ♂こんじょう(1)
14835D32D9E13779-5188種類、ゴルーグ (609) てつのこぶし(1)
149C5FAB15D50682+18388種類、アギルダー(641) ♀ねんちゃく(2)
150DB5348D356147+1488種類、バクフーン(562) ♂もうか(-)
163807B299632891-6788種類、チルタリス(800) ♀しぜんかいふく(-)
164561306C022035-3588種類、スカタンク(768) ♂あくしゅう(1)
16551680BE120840-7288種類、ユキノオー(805) ♀ゆきふらし(-)

112連勝後の不定消費のないホームにてレポートの針で確認したところ、消費は178までだった模様。

上記の場合のサンプルPTを載せておく。
以下の3匹で行けば相手が交代をしない前提で、どう行動されても必ず負け筋を消せる行動が存在する(はず)。
考えるのも面白いと思うのであえて白字で書いてみる。
暇ならどう行動すればよいのか考えてみるのもいいかもね。

・ガブリアス(さめはだ)@ドラゴンジュエル
 ようきASぶっぱ
 じしん ドラゴンクロー ステルスロック
・ゴウカザル(もうか)@いのちのたま
 むじゃきA140C172S196
 インファイト かえんほうしゃ じしん ステルスロック
・ムクホーク(すてみ)@こだわりスカーフ
 ようきASぶっぱ
 ブレイブバード
全て6V前提。


実演放送はこちら。→http://twitcasting.tv/water_blow/movie/8591781
多少上記と調整の異なるポケモン使っているが影響ない程度なので大丈夫かと。


再現自体は大分前からやっていたが、この時に何が新しいのかといえば検索した時にポケモンを見れば型がすぐに判別できるトレーナーだけを出現させるようにしたこと。
これにより再現する際に型判別の必要がなくなり(特性はあるが)PTを決める前に確認する作業を減らせる。


もう少し色々分かればA連打で勝てるようにすることも楽にできそう。
今のままでもある程度は出来るのかもしれないがまだ試していないので何とも。
A連打でいいポケモンの選定と、それで確実に倒せるポケモンのリストアップはなかなかに大変そうだが。


~追記~

●+1について
コメント>>1の仮定において簡単に閾値と上限付近での挙動を調べてみた。

乱数上位16bit上位16bit+下位16bit+1実機での値
0DB3F24D35070x10000+18 (+200)
6ADA9525273540xFFFF-54 (+200)
FFFF213B655350x1231A+10 (+200)

以上により閾値は0x10000以上or0xFFFF以下で分かれること、+1により上位16bitが0xFFFFを超えた場合は0に戻ることが分かる。
というか第4世代のバトルタワーに関する記述を見直して思ったが、そこにあった(乱数) / 0xFFFF & 0xFFFFに似てますね。
FFFFFFFFの時は0でしたとさ。


●スーパーシングルトレインの8-13人目について
+1を上記の通りと仮定とした場合に上位16bit(+1)が0となる乱数値においてつりびとのダンカン(140)が出てきた。
したがって、smogonを参照して得られた110-179ではなく140-179のmod 40が正しそう。
これで例に挙げた全てに矛盾しない。


●出現ポケモンの性格値
コメントの>>2の通りで確認した限り矛盾がないので、これで正しそう。
ただし、特性は第4世代方式で最下位bitで判別する。


●ノーマルの場合
以下の通りだと考えて矛盾がなかった。

試合数出現トレーナー
1-60-49
750-69
8-1330-69
1470-89
15-2050-109
21サブウェイマスター


●サブウェイマスター関連
7人目決定において乱数消費せずに決められているだろうことは5-6、8-週目と同じシードを用いることから推測できていた。
出現ポケモンの順番や性格値についてだが、上記のノーマルの場合について検証した時に見てみたところ、他のトレーナーと同様の方法で決定していると考えて性別特性の合うシードが見つかった。
そのため他のトレーナーと同様である可能性がある。
過去に記録していたスーパーシングルでの結果でも性別が合っていた。


●不定消費について
ここまでメインの日本ホワイトで検証していたが、コメントを見てまさかなーと思い日本ブラックの方でやってみたところ、5周したが出現ポケモン決定間の消費数は全て11で、7人目決めた後の消費もなかった。
また、ホワイトの方でBV記録時の針位置を見たところ、その針位置から1-3消費した後に次の出現ポケモンが決定されていた。
ブラックの方では針位置のすぐ後から出現ポケモンが決定されていたので、消費数を見てもこの1-3消費が不定消費の原因であると考えられる。
その後海外ホワイトで試したら不定消費がなかった。
さて何が原因なんだろう…。


●スーパーシングルトレインの28人目について
8068で220+8のトレーナーが出たので220-239のmod 20っぽい。


●不定消費について2
次の追記、中断から再開した場合について調べるためにまずオフセットがどう計算されるのか調べた。
この通り実装してみた。→http://www.hosome.sakura.ne.jp/iroiro/offsetKeisan.cpp
すると、数回確認した限り不定消費のあったメインの日本ホワイトでは計算されたオフセット+(1or2)消費されていた。
一方不定消費のなかった日本ブラックでは計算されたオフセット分だけちょうど消費されていた。
これが件の不定消費と関係があるのかは分からないが原因は気になるところ。


●中断から再開した場合
上の追記の通りオフセットがちょうど求められる、不定消費のない日本ブラックにて検証。
スーパーシングルトレイン4周目、2-7人目全てについて中断して全て別の初期シードでやったが、全てオフセット分消費したすぐ次のシードから出現ポケモンの種類3匹分以下を計算している模様。
尚、不定消費のあった日本ホワイトでは同一シードで3回やって間の消費が3、4、4だった。
起動時に余計に消費された1or2に出現ポケモン決定前の1-3を合わせるといい感じの数字になるのでおそらくその2つによるものだと思うがはてさて。


●不定消費について3
オフセットがずれる→徘徊?というわけで不定消費のなかったブラックにおいてトルネロスを徘徊させたら(スープおいしい)ホワイトと同じくオフセットずれ・不定消費が発生。
再び倒したら元通り。
で、ホワイトで確認したところボルトロスが徘徊していたので、倒したらオフセットが計算通り、不定消費もなくなった。
完全に息の根を止めたつもりでいたのに。
という訳で原因は徘徊ポケモンでしたとさ。
おそらくだが、徘徊位置決定が対戦ごとに行われていた模様。
その徘徊位置がどう決まっているかは分からないが。


●ダブルバトルについて
不定消費要因が取り除けたという訳でダブルバトルだと消費がどうなっているか調べた。
 4匹決定→2つ消費→性格値4匹分→8つ消費
で良さそう。

年末

今年もまた年末ですね。
という更新数稼ぎ。
第4世代の物拾い乱数とか第5世代のサブウェイ乱数(再現でない)とか一時期ちょいと調べて放置してたっけ。
多少は需要あると思うんで誰かやって来年気が向いたらやります。タブンネ。
前者は実際にやって記事書いた人がいるんでうまく調整できるようにすればいける、はず、だと思いたい。
でも分かっていない要素が多かったりで途中からそのまま放置してる。
後者は欲しい情報が全然見つからなかった記憶が…。情報くれ。
それで進展しなさそうだなと思ってから絶賛放置中。

乱数できる範囲も大分広がった気がするけど、まだ乱数ネタ自体はいろいろあるはずなんで暇な人は探してみて下さいな。
とりあえず、来年もよろしくお願いします。

BW2孵化乱数複数Timer0検索考察

シードどれくらい見つかるのか気になったので考察してみようかなと。
ツールの対応はあってもまだしばらく先になりそう。
擬似乱数であることを忘れて確率で考えてるけどまあ参考にするだけだからいいよね。

以下起動時刻キー入力固定時について考えてみようかと。
とりあえず、とりうる起動時刻キー入力の組み合わせは概算で
 100*365*24*60*60*9*2^8(年、日、時、分、秒、カーソル、ボタン8つ)
で、2^42~2^43程度であることは念頭においておく。


●性格値乱数
こっちのが単純なんで先に。
通常の色孵化、性別指定なし、NPC消費抑制ありを仮定する。
初期シード、消費数、表裏IDを固定した場合合致する確率は
 1/2^13 * 1/4^2 = 1/2^17
計算楽にしたいんで幅32消費とると、その中に合致するものがある確率は
 1 - (1 - 1/2^17)^32
近似すると
 1 - (1 - 32 * 1/2^17) = 1/2^12
さて、複数Timer0で条件を満たすものだとどうなるか考える訳だが、タイマーn個のうちm個合致するのは
 nCm * (1/2^12)^m = nCm / 2^12m
mが3までなら1/2^42より十分大きいので(計算時間度外視で)見つかりそう。
幅128にするとnCm/2^10mなのでmは4までなら見つかるかもしれない。
ID調整を前提にするならこのmはもう1つばかり増やせるだろうが、間違いなく探すのに時間がかかる。


●個体乱数
とりあえず単純な場合で6Vメタモンと適当個体+変わらずを親に6V孵化特性一致を狙う場合を考える。
初期シード消費数固定の場合合致する確率は、特性遺伝親*3非遺伝個体値*3について制限がかかるので
 1/2 * 1/2^3 * (1/2^5)^3 = 1/2^19
BW2ではCギアオンオフで個体値乱数列消費が楽にできるが、大量消費には向かないので適当に幅8とったとしても、近似して1/2^16程度。
さっきと同じように考えると、2個までのは見つかるだろうが3個のは厳しそう。
他の場合は面倒だから各自考えて。


で、要するに何が言いたいかってTimer0を3、4種類まで許容できるものでも調整が容易なものを見つけるのは困難だということ。
1つから2つまで許容できるようになるだけで試行時間半分程度になるから実装する意味はあるだろうけど。
計算時間は間違いなくかなり長くなるけどね。

暇な人はBWの場合どうなるか考えてみるといいかも。

BW2孵化乱数用ツール更新(Ver1.3)

最新版(Ver1.4)はこちら。
http://blog.livedoor.jp/x_x_saki_x_x/archives/54383566.html



更新。
http://www1.axfc.net/uploader/so/2653922&key=bw2fuka

Microsoft .NET Framework 4をインストールする必要あり。
使い方とかはこちら。

●更新内容
・特性に関するバグを修正。
 重要
 必ず最新版を使って下さい。
・連続色検索時の消費数の表示を修正。
・性格値乱数時のNPC消費抑制シード検索に対応。
 連続色検索せずとも消費数-6まで小屋で消費して、外に出てすぐに受け取れば高確率で狙った性格値が出せるようになります。
 詳しくはツールの説明のところで。

かわらずのいしを使用したエメループ色孵化

しばらく前にやったものだけど、一応記事に残しておいた方がいいのかな、と。
ここを見てやった。初のエメ色孵化がかわらずのいし使用で良かったのかどうか。
http://www.smogon.com/forums/showpost.php?p=3793043&postcount=779

かわらずのいしの効果があるのが♀親かメタモン側だけなので、親個体の準備が少し大変。
その代わり短いフレーム数・差分でできるシード候補が増える。

あとはリンク先見て自分でやって、というと記事書いた意味がないので適当にだがまとめてみる。


●かわらずのいしなし
比較用。
1.生成判定
 255歩目で (S(n-1)>>16 * 0x64) / 0xFFFF がある閾値より低かったらタマゴができる。
2.性格値固定
 S(n)>>16 + 0x1 で下位16bitを決める。
 上位16bitはその時の経過フレーム数fを初期シードとした次の乱数の上位16bitになる。
 このfとnとの差がいわゆる差分。

●かわらずのいしあり
1.生成判定
 変わらずなしの時と同様。
2.性格遺伝判定
 S(n)の最上位bitが0なら遺伝成功。
3.性格値固定
 遺伝失敗ならS(n)がS(n+1)になる以外は変わらずなしの時と同様。
 遺伝成功なら、fを初期シードとした乱数をT_f(n) (T_f(0)=f) とおいたとき、
 dを1から順に増やしていって性格値を
  上位16bit:T_f(d)>>16
  下位16bit:S(n+d)>>16
 としていき、その性格値が遺伝した性格になったらそれに決定される。
 変わらずなしの時と違い+1はない。

nとfのとり方がこうなってるのは差分を強調するためなのでそのつもりで。


とりあえず、ルビー(ID37373-SID32391)に送る前提で3種類ほどPID固定成功したので大丈夫かと。
ついでにバトルビデオによるシード保存を使った個体値乱数も成功したので報告までに。
バトルビデオによるシード保存についてはこちら。
http://www.smogon.com/forums/showpost.php?p=4323513&postcount=941

あ、対応しているツールが出てるかは知らないので悪しからず。

プロフィール
さき

ポケモンの乱数調整とかツールとか。サンムーン乱数調整できました。
Twitter→@water_blow

広告
最新コメント
記事検索