ポケモンダメージ計算式の仕組みを徹底解明!乱数幅と補正順の真相

今注目を集めている ポケモンダメージ計算式の仕組みを徹底解明!乱数幅と補正順の真相について、多角的な視点をご紹介しています。

ダメージ計算において、対戦プレイヤーを最も悩ませるのが「乱数幅」と「端数処理」の存在です。同じ技を同じ条件で当てても、相手のHPが倒れる時と残る時があるのは、この内部仕様によるものです。

最終ダメージの算出直前、計算結果に対して0.85から1.00までの16段階の乱数(85/100〜100/100)が掛けられます。具体的には「85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100」のいずれかの整数を掛けた後、100で割る処理が行われます。

このため、どんな攻撃であっても最大ダメージ(乱数1.00)と最低ダメージ(乱数0.85)の間には約15%もの開きが生じます。この16通りのうち、何通りの乱数を引けば相手を倒せるかを示したものが「乱数1発(◯%)」という指標です。

さらにゲーム内部の演算精度を左右するのが、「五捨五超行(ごしゃごちょうこう)」と呼ばれる独自の端数処理です。一般的な四捨五入(0.5以上繰り上げ)とは異なり、ポケモンの内部数値(4096分率補正など)では「ちょうど0.5以下の端数は切り捨て、0.5を超えた端数のみ切り上げる」という特殊な丸め込みが行われます。また、計算ステップの各段階で発生する小数は基本的にその都度「切り捨て」処理されます。

この数回の切り捨てと五捨五超行の累積によって、手計算の概算値とゲーム内の実数値に1〜2ポイントのズレが生じる現象が発生します。競技シーンにおけるミリ耐えの真相は、まさにこの端数処理の隙間に存在しているのです。

山田 真由

山田 真由

自動車・モビリティライター

暮らしを豊かにする便利アイテムや時短アイデアを中心に、実用的な情報をお届けします。