一撃誌






Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


web拍手 by FC2 tweet

乱数調整の仕組み【BW】(仮)

BWの乱数調整が広まってきましたね。
発売から二週間も経たないうちに調整法が確立されてきて、とても早いと感じました。

さて。
DS版のポケモン、ブラック・ホワイトでは
どのような仕組みになったのか、わかる範囲で説明してみます。
長文注意です。



まず、DPtHGSSまでの乱数調整がよくわかっていないという人は、
乱数調整の仕組み【DPtHGSS】をご覧下さい。




<初期seed決定方法>
BWの場合、2通りあります。
Cギアを起動しなかった場合と、起動した場合です。

最初にCギア無しの初期seedが決定されますが、
Cギアを起動する事で新しい初期seedに再設定されます。
主に乱数調整に利用されるのは、後者のCギア起動後の初期seedです。


(1)Cギアを起動しなかった場合
初期seedはDS画面でゲームを選択し、
起動した瞬間の時間(年月日時分秒)に依存して決まります。

ポケモンを最初から始める場合、
同じ時間に時計を合わせてゲームを起動すると、
同じIDばかり出る・・・といった現象が確認されています。
ただし、従来とは計算方法が変わり複雑になったので、
この方法で決まった初期seedを利用して乱数調整をするのは難しくなっています。


(2)Cギアを起動した場合
Cギアを起動する事により、初期seedが再設定されます。

Cギアを起動するタイミングは2種類あります。
「つづきからはじめる」を選択後にそのまま起動するパターンと、
「つづきからはじめる」を選択後にCギアを起動せず、
ゲーム内で下画面をタッチし、Cギアの電源を入れるパターンです。
前者の場合はズレが発生しやすいので、
後者がよく利用されています。



<初期seed計算方法>
Cギア起動時に再設定される初期seedの場合、
基本的な部分はDPtHGSSと共通です。

初期seedは
Cギアを起動した瞬間の年月日時分秒と、
ゲーム起動からCギア起動までにかかった時間(フレーム)によって決まります。
このフレームは1ずつ進みます。

初期seed決定後の乱数は時間経過ではなく、
プレイ中に様々な条件で乱数を使うことによって進んでいきます。


初期seedの計算方法は以下のようになっています。

8バイトの16進数で、仮に0xABCDEFGHという値があるとします。
ここに

AB:((月×日)+ (分+秒))& 0xFF
CD:時(24時間表記)
EFGH:年-2000+経過時間(フレーム)

をそれぞれ計算して代入します。
計算結果は16進数に直すのを忘れずに。
最後に、自分のDS本体に割り当てられているMACアドレスの値(下6桁)を足します。
これで初期seed決定です。

年月日時分秒はゲーム内でCギアを起動した時間
経過時間はゲーム起動(DS下画面でソフトを選択し、画面が黒くなった時)から
Cギア起動までにかかった時間(フレーム)です。
DPtHGSSでは「つづきからはじめる」を押した瞬間に初期seedが決まっていましたが、
BWではCギアを起動した瞬間に変わったので、その分必要な時間が長くなります。
DS下画面でソフトを選択後、実際にゲームが開始されるまで
DPtは約4秒、HGSSは約6秒の空白時間(ホワイトアウト)が存在しましたが、
BWの場合は約40F程度で、非常に短い時間になっています。

MACアドレスはネットワーク機器に1つずつ割り当てられている6バイトのIDです(16進数表記)。
同じMACアドレスを持つ機器は2つ以上存在せず、基本的に変更はできません。
つまり、自分と同じMACアドレスのDS本体を持つ人はいない、という事です。
DS本体のMACアドレスは、ゲーム起動後のWi-Fi設定→オプション→本体情報から見ることができます。

例1:10-0A-20-0B-30-0C

このような形で、数字の組み合わせが6つ並んでいるのが分かると思います。
BWで初期seedに使われるのは、後半の下位3バイトの部分です。
例1の場合、 0B-30-0C を利用します。

自分のDS本体のMACアドレスを初期seed決定時に利用する為、
他の人と同じ初期seedを狙う事ができなくなっています。
また、その後の計算にもMACアドレスが関わるので、
他の人と同じリストを用いて厳選する事もできません。

初期seedの確認はポケモンを捕獲して個体値を調べる事で特定します。
それ以外の方法は今のところありません。



<乱数の進み方>
初期seed決定後、2種類の擬似乱数が作られます。
個体値を決める乱数と、性格値を決める乱数です。
これらは同じ初期seedから独立して進んでいきます。

・個体値乱数
BWで個体値を決める乱数はMT(メルセンヌ・ツイスタ)という擬似乱数生成アルゴリズムを利用しています。
これはDPtHGSSで孵化乱数を作るために使われていたものですが、
今回はこの方式を利用して個体値が作られていきます。
理想個体を出すためにはこの擬似乱数を計算する必要がありますが、
従来より計算量が多いため、どうしてもツールの計算時間が長くなってしまいます。

消費方法:
なつき度判定(128歩歩くごとに、手持ちポケモンの数だけ消費)
孵化(タマゴを受け取る時に7消費)

また、以下の動作では消費しません。
エンカウント判定(ポケモンが出現する場所でスプレーを撒いて動く)
NPCの動き
気泡、砂ぼこり

これを利用すると、固定シンボル、野生ポケモンの個体値を厳選する事ができます。
孵化については親から遺伝する個体値の法則が今のところ不明なので、
自分で実験して確かめる必要があります。


・性格値乱数
仕組みや法則性に関しては、まだ良くわかっていません。
狙いの性格を持ったポケモンを出すためには、
シンクロやかわらずのいしを利用して合わせる必要があります。
それでも合わない場合は、ペラップを利用して乱数を進めていきます。
つまり運任せ。

消費方法:
ペラップのおしゃべり
(録音した後、ステータス画面を開いて鳴かせる度に1消費)



<まとめ>
乱数調整ではseedを調べて合わせ、乱数を消費し、
狙いの個体を出す事を目的としている。

DS版ポケモン(ブラック・ホワイト)において
高個体値のポケモンを乱数調整で捕まえるために必要な事は2つある。
初期seedの一致と、乱数消費数の一致である。


1)初期seedの一致
DSの時計を調整し、
Cギアを起動した瞬間の年月日時分秒と、
ゲーム起動(ソフトを選んで画面が黒くなった時)から
Cギア起動までにかかった時間(フレーム)の
2つを合わせる事によって目的の初期seedを出す。

2)乱数消費数の一致
初期seedが一致した上で、狙いの個体が出るまで乱数を進める。
乱数の進め方は目的に応じて変わる。


以上です。



計算ツールを使いたい場合、
ここに書いていない情報で知りたい事がある場合は
各自で適当に検索して探してください><

また、文章中に間違いを発見した方は指摘してくださると助かります。


(最終更新 2010/10/1)

web拍手 by FC2 tweet

*Comment

 

固定シンボルの乱数調整で消費があるときは、Cギアで初期seedを合わせる→歩数で消費であってますか?
  • posted by w 
  • URL 
  • 2010.09/30 23:16分 
  • [Edit]

 

ヨウコさんの文は非常にわかりやすくて、GOODです!

とりあえずウルガモスからチャレンジしてみます。ありがとうございます!
  • posted by しゃわ 
  • URL 
  • 2010.10/01 05:36分 
  • [Edit]

 

>wさん
初期seed決定後に乱数消費で目的の個体を出すので、
それで合っています。

>しゃわさん
お褒めの言葉、ありがとうございます!
厳選がんばってください。
  • posted by ヨウコ 
  • URL 
  • 2010.10/01 21:57分 
  • [Edit]

No Title 

はじめまして。
固定シンボルの場合、エンカウントで消費しますか?
  • posted by ubb 
  • URL 
  • 2010.10/02 06:20分 
  • [Edit]

No Title 

砂埃で4消費されるようです;;
  • posted by 薙坊 
  • URL 
  • 2010.10/02 17:54分 
  • [Edit]

No Title 

>ubbさん
固定シンボルのポケモンにエンカウントする時は消費は起きないため、消費0の個体が出てくるようです。

>薙坊さん
砂ぼこりが発生してもエンカウントしなければ消費されない、という話も聞いているのですが・・・どっちなんでしょう。
ゴージャスボール等でなつき度消費が狂っていたりしませんか?
  • posted by ヨウコ 
  • URL 
  • 2010.10/02 21:23分 
  • [Edit]

Re: 

初めまして

初期SEEDにMACアドレスを足すとありますが、どのように足すかよく分からないのですが…
例等あればありがたいです
  • posted by STAR 
  • URL 
  • 2010.10/03 01:03分 
  • [Edit]

No Title 

>STARさん
2つの数値を足しあわせて初期seedが作られます。
raw初期seed(8桁、0xABCDEFGH)+MACアドレス(6桁)=初期seed(8桁)
raw初期seedはMACアドレスを足す前の初期seedです。
16進数表記ですが、計算自体は普通の足し算と変わりません。
  • posted by ヨウコ 
  • URL 
  • 2010.10/03 22:52分 
  • [Edit]

Re: 

あ、分かりました
ありがとうございますm(_ _)m

AB,CD,EFGHがそれぞれ独立して作られたraw初期SEEDを1つの16進数とみなせばいいんですね
  • posted by STAR 
  • URL 
  • 2010.10/04 00:13分 
  • [Edit]

No Title 

>STARさん
どういたしまして。

そうですね。
ここではわかりやすさ重視の為に少し省略して説明しましたが、
実際には
raw初期seed
=AB&0xFF×0x1000000+CD×0x10000+EFGH
というような計算が行われています。
掛け算が入るため、最終的には一つの16進数になります。
  • posted by ヨウコ 
  • URL 
  • 2010.10/04 20:41分 
  • [Edit]

No Title 

内容がすごく丁寧でわかりやすかったんですが初期Seedの年数の計算の仕方がいまいちわかりません。
0x43110798の場合、0798→1944となってあとはどうすればよいのでしょうか?
  • posted by ratta 
  • URL 
  • 2010.10/18 16:16分 
  • [Edit]

No Title 

>rattaさん
EFGH:年-2000+経過時間(フレーム)の部分ですね。
例えば2010年に起動すると年の部分が2010になるため、
EFGH=2010-2000+経過時間(フレーム)
=10+経過時間(フレーム)になります。

2010年設定でEFGHの結果を1944にしたいなら、
経過時間(フレーム)を1934にすればOKです。
年数を増やせば、その分経過時間(フレーム)を減らす事ができます。
  • posted by ヨウコ 
  • URL 
  • 2010.10/18 22:25分 
  • [Edit]

No Title 

詳しくおしえていただきありがとです。
2005年でやるならこれであってるのでしょうか?
初期Seed:0x43110798
2005年10月2日17時4分10秒 選択
2005年10月2日17時4分43秒Cギアオン

  • posted by ratta 
  • URL 
  • 2010.10/20 00:21分 
  • [Edit]

No Title 

>rattaさん
実際にやってみて、誤差が出るかどうかご自分で確かめてみて下さい。
上手く行かなかったらその分年数や時間をずらして調整してみましょう。
  • posted by ヨウコ 
  • URL 
  • 2010.10/20 21:52分 
  • [Edit]

 

初めまして。リョウタです。とてもわかりやすく説明して下さってありがとうございました。 タイミングが二重層で今回は難しいですね。ボルトロスも嫌になって、殿堂入り乱数に後回しにしてしまいました。(泣 爺前乱数もなくなり、厳しくなりました。まだ初心者の自分にはかなりキツイです。成功の秘訣とかってありますか?お願いします。
  • posted by リョウタ 
  • URL 
  • 2010.11/12 21:14分 
  • [Edit]

 

>リョウタさん
初めまして。
BWから難易度は上がりましたよね。
ボルトロスは一度倒してしまうと、
殿堂入り後に調整するのはほぼ不可能になってしまいます。
成功の秘訣は・・・タイミングが中々合わなくても諦めない事です。頑張ってください。
  • posted by ヨウコ 
  • URL 
  • 2010.11/12 22:45分 
  • [Edit]

Comment_form

管理者のみ表示。 | 非公開コメント投稿可能です。

左サイドMenu

プロフィール

ヨウコ/yoko

Author:ヨウコ/yoko
海外アジアで働く日本人ポケモントレーナー。台湾で3年働いて、次はシンガポール!
世界中のポケモントレーナーと交流したり、各国のオフ会に参加したりしています。

FC2 Prof

最近の記事

月別アーカイブ

カウンター

FLAG Counter

Free counters!

since 2012.12.22

右サイドメニュー

ブログ内検索

ストップウォッチ

1/100秒まで測れます。

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。