Hyper-研究所@宴

春風の 花を散らすと見る夢は 覚めても胸の さわぐなりけり

耐久力最大化考察

2009年11月08日 21時04分15秒 | Weblog
ポケモンの耐久力を最大化する方法について

概要


ポケモンの実戦的能力のひとつに、耐久力がある。
これが高ければ、相手の攻撃をより耐え、「強いポケモン」と言うことが出来る。
しかし、それを定量的に評価することは容易ではない、なぜならば、HP、防御、特防、それ以外にも弱点・抵抗など、多くの要素が関係してくるからだ。
ここでは、このうち最初の2項目、すなわち、HPと防御に論点を絞り、ポケモンの耐久力の定量化および耐久力の最大化について考察する。

仮定


本考察では、次のことを仮定している。
  • 全て物理攻撃(HPと防御のみを考慮する)
  • 全てLv50
  • 弱点・抵抗はない、いわゆる等倍


耐久力の定式化


まず、ポケモンが受けるダメージは、次式に比例して定まる。
(攻撃側の攻撃)×(攻撃側の技の威力)÷(防御側の防御)+α 参照
ここで、α=約4.5である。
実戦では、受けるダメージよりも、そのダメージが防御側の最大HPのどの程度であるか、という指標がきわめて重要であり(いわゆる「○確/乱」)、このことも思慮に入れると、結局、耐久力の定量化は、
ある一定能力値を持つポケモンからある一定威力の技を受けたとき、その攻撃を何回受けきることが出来るか
となる。
本考察では、以降、この「何回受けきれるか」という概念を耐久と言う。
無論、実戦においては攻撃側が一定ではないので、耐久は整数精度で比較せず、小数以下も含めて評価するものである。

さて、耐久を最大化するには、αの値が他の項よりも十分小さいので、定義より、次式を最大化すれば良いことは自明である。
(防御側のHP)×(防御側の防御)
そこで、この式により表現される数値を耐久力と定義する。

耐久力の最大化


ではこの耐久力を努力値振りによって最大化しよう。
耐久力に振る努力値を252とする。
計算の簡便化のため、次の値を定義する。
H=(HP種族値)×2 + (HP個体値)
B=(防御種族値)×2 + (防御個体値)
参照より、努力値は最低4単位でしかステータスに反映されないので、Hbを使って、
(HPに振る努力値)=Hb×4
(防御に振る努力値)=(63 - Hb)×4
とする。
さて、Lv50時点でのHPと防御を計算すると、
HP = (H+Hb)/2 + 60
防御 = (B-Hb)/2 + 36.5
この積を計算し、平方完成すれば、
(耐久力)=-1/4 * { (Hb + (H-B+47)/2 }^2 - (Hb+120) * (B+73) - (H-B+47)^2 / 4 }
つまり、
Hb = - (H-B+47)/2
の時耐久力最大であり、つまり、努力値配分は、
HPにround(Hb) × 4振り、防御に(63-round(Hb))×4振り
すれば良い。
ただし、round()は実数を受け取って整数を返す無記憶関数(例:四捨五入、切り捨て、切り上げ)

課題


本考察では、物理攻撃しか考慮しておらず、特殊攻撃も同時に考慮する場合、式を二本立てで考えなければならない。
また、特性「いかく」を持つポケモンは、相手の攻撃が3/4になるから、実質的に受けるダメージも3/4となり、式を修正して使わなければならない。
同様に、性格補正も考慮に入っていない。
更に、細かいことではあるが、本考察では計算途中に出てきた小数点以下は全て切り捨てられるという法則を無視しているため、数値に誤差が出てくる場合がある。



最後に、ポケモンって面倒だけど面白いぜ!

最新の画像もっと見る

コメントを投稿