2013年3月14日木曜日

BW2孵化厳選の原理

みなさん、こんばんわきげ(^^)~~~
がりゅうです。
今回はですね いわば寄稿みたいな感じで
BW2孵化を考察してみました。今回は原理だけですがそのうち実践編も書くとおもいます。
一部の人にはまあ需要があるんじゃないでしょうか
ちなみにこれ
こちらを参考にして書きました。
さすがにぼくが全部解析したわけじゃないです。
解説を書いた感じですね
それではどうぞ。急に口調が変わります


タマゴのステータス決定

BW2では、タマゴを受け取りor拒否 した瞬間に次のタマゴの一部のステータスが決まります。
その後、そのタマゴができた瞬間に、残りのステータスが決定されます。

後の説明のためにもう少し詳しく書きましょう。
タマゴを受け取りor拒否した瞬間に『孵化乱数列』と呼ばれるランダムな乱数列が生成されます。この孵化乱数列からは次に渡されるタマゴの性格・特性・個体値が決定されます。そしてタマゴができた時、『性格値乱数列』と呼ばれる同じくランダムな乱数列が生成され、これによってタマゴの(生まれてくるポケモンの)個性と性別が決定されます。

孵化乱数列、性格値乱数列は共にランダムに生成され、タマゴを受け取る度に異なるものとなります。これら乱数列そのものは1つの項に1つの値だけをもつ単なる数列で、他に何の意味も持ちません。各ステータスを決定するために、この乱数列の値がそれぞれ異なる方法で適当に変換されて使用されます。
乱数列自体が性格・特性・個体値などの情報を含んでいるわけではないということに注意してください。

2つのうち、性格値乱数については個体値厳選においてあまり理解する必要がないので省略します。以下では孵化乱数列について、個体値決定に関わる部分を解説していきます。

先親・後親の概念

孵化乱数列の説明に入る前に、先親・後親について一応説明を入れておきます。
個体値の遺伝先は片方の親ともう片方の親の2つあり、区別されています。
通常は♂・♀という形で区別しますが、親を入れ替えて片方が無性別になった場合や、片親メタモンである場合を考えるとその定義では不十分であることが分かります。
そこで、親の2匹を先親・後親という風に区別する呼び方が度々使われています。組み合わせによって、どちらかが先親になりまたどちらかが後親になるのです。
以下のように定義されています。

・♂・♀の組み合わせでは、♂が先親、♀が後親です。
・♂・メタモンの組み合わせでは、♂が先親、メタモンが後親です。
・メタモン・♀の組み合わせでは、メタモンが先親、♀が後親です。
・無性別・メタモンの組み合わせでは、無性別が先親、メタモンが後親です。
以下では遺伝先をこの先親・後親で区別します。


孵化乱数列と個体値決定

孵化乱数列の先頭部分は性格・特性などの決定に使われ、その次の項からが個体値決定に関わってきます。個体値決定に関わる最初の項が孵化乱数列の第n番目だったとして、これをr[n]と書くことにしましょう。次の第n+1番目はr[n+1], さらにその次の第n+2番目はr[n+2]と書きます。

さて、孵化乱数列からタマゴの個体値が決まられる仕組みを追っていきましょう。

遺伝箇所の決定-基本

基本的には以下の流れとなります。
1. r[n]1つ目の遺伝箇所(HABCDSのどこか)を決めます。
2. r[n+1]でその箇所をどちらの親から遺伝するかを決めます。
3. r[n+2]2つ目の遺伝箇所を決めます。
4. r[n+3]でどちらの親から遺伝するかを決めます。
5. r[n+4]3つ目の遺伝箇所を決めます。
6. r[n+5]でどちらの親から遺伝するかを決めます。

分かりやすいように表で例示してみるとこうなります。
孵化乱数列
遺伝箇所
遺伝先
r[n]
H
r[n+1]
A
r[n+2]
S
r[n+3]
D
r[n+4]
B
r[n+5]
C
→遺伝箇所は、H()B()S()

※この場合、例えばr[n]は遺伝箇所を決めることにしか使われません。しかし、先に説明したように、その値を適切に変換すれば、r[n]から遺伝先を得ることもできるはずです。後の説明のためですが、以降でもこのように、実際には使用されることのない情報も表に付け加えて書いておきます。赤文字で書かれている部分が実際に使用される情報です。

遺伝箇所の決定-例外処理1

2つ目、3つ目の遺伝箇所を決める際に、既に決まっている遺伝箇所と重複が発生してしまうことがあります。そのときは、その項を飛ばして2つ後ろの項へスキップします。これを繰り返して、重複なく遺伝箇所3つが決まるようにします。
孵化乱数列
遺伝箇所
遺伝先
r[n]
H
r[n+1]
A
r[n+2]
H
r[n+3]
B
r[n+4]
S
r[n+5]
D
r[n+6]
B
r[n+7]
C
r[n+2]で遺伝箇所Hとなったが、Hは一番目で既に遺伝箇所となっている。)
→遺伝箇所は、H()B()S()

遺伝箇所の決定-例外処理2

パワー系アイテムを持たせたときは、その箇所の遺伝は予め内定します。孵化乱数列からは残りの2箇所の遺伝が重複のないように決められることになります。

親にパワーリスト(A固定)を持たせた)
孵化乱数列
遺伝箇所
遺伝先
r[n]
H
r[n+1]
A
r[n+2]
H
r[n+3]
B
r[n+4]
S
r[n+5]
D
r[n+6]
B
r[n+7]
C
→遺伝箇所は、H()A()S()


非遺伝箇所の決定

非遺伝箇所とは、遺伝を受けず個体値がランダムで決まる3箇所です。
孵化乱数列による説明を読む前にまず理解すべきことは、非遺伝箇所の個体値は遺伝箇所とは独立に決まっていること、そして3つの数値とその順番だけが決定されているということです。

例えば、先-23--8-12-後 というタマゴがあるとしましょう。
非遺伝箇所の個体値とはA23C8D123つですが、これは例えば「Aという箇所に23という個体値・Cという箇所に8という個体値・Dという箇所に12という個体値」という決められ方をしているわけではありません。
本稿では説明しませんが、このタマゴの遺伝箇所だけを取り替えることができて、それによって遺伝箇所がH()B()C()となった場合、
-23---8-12
というタマゴになることがあるのです。8,12という2つの個体値が後ろにスライドしていることが分かるでしょう。
この場合は、23,8,12という3つの個体値が順序を含めて定められており、前者は非遺伝箇所であるA,C,Dに、後者はA,D,Sに、順序通りに3つの個体値が与えられているのです。

それでは、孵化乱数列からの決定方法に戻りましょう。
遺伝箇所の決定に用いられた最終項の次から数えた3項を用いて、非遺伝箇所の個体値3つが決定されます。この3つの個体値はより前の項にあるものから順番に、非遺伝箇所にHABCDS順で与えられます。

(遺伝箇所の決定に用いられた最終項をr[m-1]とする。)
孵化乱数列
非遺伝箇所の個体値
r[m]
22
r[m+1]
14
r[m+2]
7
→非遺伝箇所の個体値は22,14,7

遺伝箇所の決定と合わせて、今までの仕組みを1つの孵化乱数列でまとめて例示してみます。
親にパワーバンド(D固定)をもたせた)
孵化乱数列
遺伝箇所
遺伝先
非遺伝箇所の個体値
r[n]
S
11
r[n+1]
A
22
r[n+2]
C
31
r[n+3]
H
5
r[n+4]
C
30
r[n+5]
H
21
r[n+6]
B
6
r[n+7]
C
13
r[n+8]
B
27
r[n+9]
D
8
r[n+10]
A
3
→個体値は、30-21-6---

親をメタモンにした場合

孵化乱数列による個体値決定全体に対しての例外処理的な性質があります。それは、メタモンを親にしたとき、個体値決定以降に使用する孵化乱数列が丸ごと1つ下にずれるということです。つまり、1つ前の例で片方の親をメタモンに変えた場合は、r[n+1]以降の項が使用されることになり、例示すると

親にパワーバンド(D固定)をもたせた)
孵化乱数列
遺伝箇所
遺伝先
個体値
r[n]
S
11
r[n+1]
A
22
r[n+2]
C
31
r[n+3]
H
5
r[n+4]
C
30
r[n+5]
H
21
r[n+6]
B
6
r[n+7]
C
13
r[n+8]
B
27
r[n+9]
D
8
r[n+10]
A
3
→個体値は、先--21-6--13
となります。




さて
どうだったでしょうか
今回はBW2の孵化における原理のみを説明しました。次回以降では、この原理を応用した新たな厳選法を紹介する予定です。
今割と急いで書いてるんで後で色々レイアウト修正すると思います。


参考URL

0 件のコメント:

コメントを投稿