ふたくちおとこ

クチート大好きな私が、主にポケモンやボドゲに関して書くブログ

クチートの性格の選び方について

みなさんこんにちは。さっちんです。

今回はクチート努力値配分について書いていきたいと思います。

昔とある記事で、「いじっぱり」のS振りと「ようき」のA振りでは、ステータスの実数値に差が出ると見たことがありました。 それまでは「いじっぱり」のクチートばかり育成していたのですが、場合によっては「ようき」もありなんじゃ?と考えるようになり、もやもやするようになりました。

そこで今回は、網羅的にステータスを計算することで、性格を選択する指針にしたいなと考えています。

前提

細かい話になりますが、前提を書いていきます。

  • シングル向け
  • 個体値は6V
  • H252, C0は固定*1
  • 性格は、いじっぱり、ようき、わんぱく、しんちょうの4つ
  • ステータス実数値はメガクチートもの
  • 努力値の一覧は前回の記事で生成したものを利用

sacchin13.hatenablog.com

ステータスの計算結果はGoogleSpreadsheetsにまとめました。 https://docs.google.com/spreadsheets/d/1TX2p3nLwo3bei823fiM3xuiDtgRsu8yAMHPFiIUojVI/edit?usp=sharing

ここからデータを抜粋しつつ、S調整・耐久調整の2つの観点で見ていきます。

Sを調整する場合の性格の選び方

「いじっぱり」と「ようき」をどう選択すればいいか、「S考察」シートから1行を抜き出して見ていきます。

仮想敵実数値 クチートS実数値 S努力値 A努力値 A実数値 実数値合計 S努力値 A努力値 A実数値 実数値合計
77 78 60 196 165 243 4 252 157 235

表の詳しい見方は下記に記載します。*2

すばやさの実数値を78にしたい場合、6列目と10列目の差が「いじっぱり」と「ようき」のステータスの差(243-235=8)になります。 つまり、すばやさの実数値を78にしたい場合は「いじっぱり」を選択したほうが、全体のステータスが高くなるということになります。

それでは「S考察」シートに戻り全体を見ていきます。 結論としては、すばやさ実数値103以上を求める場合は「ようき」が必須となり、それ以外は「いじっぱり」を選択した方が良いということになりました。 80族無振り~84振りに先手を取りたい場合にのみ、「ようき」を選択するようにしましょう。

物理耐久を調整する場合の性格の選び方

「いじっぱり」と「わんぱく」をどう選択すればいいか、「B考察」シートから1行を抜き出して見ていきます。

クチートB実数値 B努力値 A努力値 A実数値 実数値合計 B努力値 A努力値 A実数値 実数値合計
160 116 140 157 317 4 252 157 317

表の見方はすばやさと同じく下記に記載します。*3

ぼうぎょの実数値を160にしたい場合、5列目と9列目の差が「いじっぱり」と「わんぱく」のステータスの差(317-317=0)になります。 この場合は「いじっぱり」と「わんぱく」のどちらを選んでも一緒のステータスになるということになります。

それでは「B考察」シートに戻り全体を見ていきます。 結論としては、B実数値178以上を得るためには「わんぱく」が必須となります。 B実数値165-177では、「わんぱく」のほうが僅かにステータスの合計が高くなります。 B実数値159以下は「いじっぱり」が推奨です。

特殊耐久を調整する場合の性格の選び方

「いじっぱり」と「しんちょう」をどう選択すればいいか、「D考察」シートから1行を抜き出して見ていきます。

クチートD実数値 D努力値 A努力値 A実数値 実数値合計 D努力値 A努力値 A実数値 実数値合計
147 252 4 138 285 148 108 139 286

表の見方は、物理耐久とまったく同じです。

とくしゅぼうぎょの実数値を147にしたい場合、5列目と9列目の差が「いじっぱり」と「しんちょう」のステータスの差(138-139=-1)になります。 この場合は「しんちょう」を選択したほうが、全体のステータスが高くなるということになります。 (※たった1だけですが…)

それでは「D考察」シートに戻り全体を見ていきます。 結論としては、D実数値148以上を得るためには「しんちょう」が必須となります。 D実数値145-148では、「しんちょう」のほうが1だけステータスの合計が高くなります。 D実数値141以下は「いじっぱり」が推奨です。

まとめ

今回は性格の違いでどれだけステータスに差が出るかを検証しました。 検証の結果、「ようき」や「わんぱく」「しんちょう」を選択する基準が明確になりました。 カプ・テテフやカプ・コケコと対面した時の選択肢を増やすため、 最近は耐久に振ることが多いと思いますので、ご参考になれば幸いです。

p.s. かわいさを求めて性格を選ぶときは、「きまぐれ」がいいと思います!

*1:第6世代の構築記事では、ほとんどがHA全振りという状況でした。そのため、H252を基本にS振りや耐久調整などを考えていきます。

*2:仮想敵のすばやさ実数値77(1列目)に対して、クチートが先手を取るためのすばやさ実数値78(2列目)があり、性格が「いじっぱり」の場合に必要な努力値60(3列目)を記載しています。 余った努力値196(4列目)をこうげきに振った場合のこうげき実数値165(5列目)があり、すばやさ実数値とこうげき実数値の合計243(6列目)を記載しています。 続いて、性格が「ようき」の場合の必要な努力値4(7列目)、こうげきに振る努力値252(8列目)、こうげき実数値157(9列目)、すばやさ実数値とこうげき実数値の合計235(10列目)を記載しています。

*3:ぼうぎょ実数値160(1列目)、性格が「いじっぱり」の場合に必要な努力値116(2列目)、こうげきに振る努力値140(3列目)、こうげき実数値157(4列目)、ぼうぎょ実数値とこうげき実数値の合計317(5列目)、性格が「わんぱく」の場合の必要な努力値4(6列目)、こうげきに振る努力値252(7列目)、こうげき実数値157(8列目)、ぼうぎょ実数値とこうげき実数値の合計317(9列目)を記載しています。

努力値の組み合わせを1行コードで生成する

みなさまこんにちは。さっちんです。

最近ハイラルを散策するのに夢中になりすぎて、ポケモンから離れてしまいました。 しかし、2月末にはクチートのメガストーンをちゃんと手に入れ、 さらにシーズン3になったので、ポケモン熱が再び増してきました。

そこで久々にクチートを育成しようと色々調べていたら、こんな記事が。

http://okido117117.hatenadiary.com/entry/2017/03/22/085740okido117117.hatenadiary.com

ふむふむ。と読ませて頂くなかで、こんな言葉を思い出しました。

努力値効率」

例えば「いじっぱり」のAS252振りと「ようき」のAS252振りでは実数値が変わるんだよなぁと、今更ながら考えてしまいました。 しかし、努力値効率についてあまり考えたことがない私にはハードルが高く、 この振り方がベストであると確信が持てませんでした。

そこで、ふと

「確信が持てないなら、努力値の組み合わせ全部でステータスを計算してみればいいじゃないか。」

と思いつきました。

そこで今回は、努力値の組み合わせを生成してみたいと思います。

努力値の仕様

ご存知の方が多いと思いますが、ポケモンのステータスは、 種族値個体値努力値によって決まります。(ポケモン3値とも呼ばれます)。 この中の努力値(Effort Value, 略してev)は以下のような仕様になっています。

  • 仕様
    • HP、攻撃、防御、特殊攻撃、特殊防御、素早さの6種類のステータスに自由に割り振れる
    • 4を振るとステータスが1上がり、以後8振るたびにステータスが1上がる
      • よく、ev = 4 + 8nとなるように振るのが良いと表現される
    • 1つのステータスに割り振れる最大値は252
      • 先程の数式で表現すると、252 = 4 + 8 * 31
    • 全体の最大値は510
      • 先程の数式で表現すると、510 = 4 + 8 * 63 + 2
      • このように必ず2が余るため、最大値は508といっても差し支えない
  • よい例
    • HP=252、攻撃=252、防御=0、特殊攻撃=0、特殊防御=0、素早さ=6
  • 無駄がある例
    • HP=85、攻撃=85、防御=85、特殊攻撃=85、特殊防御=85、素早さ=85

だいたいこんな感じです。

努力値の組み合わせ

上述した数式のnの値を変化させると、あるステータスに振ることができる値が求まります。

n = 0 のとき、 ev = 4 + 8 * 0 = 4
n = 1 のとき、 ev = 4 + 8 * 1 = 12
n = 2 のとき、 ev = 4 + 8 * 2 = 20
…

n = 31 のとき、 ev = 4 + 8 * 31 = 252

全く振らない0を合わせると、あるステータスに振ることができる努力値は以下の33個になります。

0,4,12,20,28,36,44,52,60,68,76,84,92,100,
108,116,124,132,140,148,156,164,172,180,188,
196,204,212,220,228,236,244,252

つまり以下のような組み合わせを生成できるといいのです。

HP 攻撃 防御 特殊攻撃 特殊防御 素早さ 合計
0 0 0 4 252 252 508
0 0 0 12 244 252 508
84 84 84 84 84 92 508
84 84 84 84 92 84 508
252 244 12 0 0 0 508
252 252 4 0 0 0 508

ということで、Kotlinでやってみました。

val ev = mutableListOf<Array<Int>>().also{ result -> (4..252 step 8).toMutableList().apply { add(0) }.let{list -> list.forEach { h -> list.forEach { a -> list.forEach { b -> list.forEach { c -> list.forEach { d -> list.forEach { list.mapTo(result) { arrayOf(h, a, b, c, d, it) } } } } } } } } }

3月1日にリリースされたKotlin 1.1.0に含まれる、alsoを利用しているところがポイントです!

まとめ

今回は、努力値の組み合わせをたったの一行で表現する手法についてまとめました。 全く需要はないと思いますが、著作権はありませんのでご自由にご利用下さい。

p.s. 次回はクチートのステータスを計算するぞー。

【ポケモンSM】ドヒドイデ 定数ダメージ型【シーズン1】

みなさんこんにちは。

ポケモンバンクが解禁されましたね。 メガストーンがないもののクチートも使えるようになったので、メガストーンなしで今どんな感じなのか使ってみたいと思います。

さて、今回はシーズン1において私が使っていたドヒドイデの育成論について紹介したいと思います。

やればできる子 ドヒドイデ

紹介

  • 特性:さいせいりょく
  • 性格:ずぶとい
  • 持ち物:たべのこし
  • 努力値:H252 B252 D4
  • 実数値:157-x-204-x-163-x
  • 技構成:どくどく/まとわりつく/トーチカ/ワイドガード

有利な相手に繰り出し、「まとわりつく」と「どくどく」で相手のパーティーの体力を削る型です。 後ろに控えている抜き性能の高いポケモンをより有利に立ち回れるようにします。

立ち回り

  • 有利な相手にドヒドイデを受け出しする
  • こちらは「まとわりつく」を選択する
  • 相手が居座った場合、交代できない相手を定数ダメージで倒し切る
  • 相手が交代した場合
    • はがねタイプ、どくタイプやタイプ一致で弱点をついてくる相手の場合、素直に他のポケモンに交代する
    • 相手が「どくどく」の通る「じしん」持ちのポケモンの場合、「どくどく」を入れる
      • 攻撃特化のいじっぱりガブリアスの「じしん」であっても耐える(ドヒドイデちゃんさすが!)
        • 次のターン「トーチカ」で様子を見る
          • 相手が「じしん」を連打しているなら「ワイドガード」を選択する
          • 「じしん」以外の技で押してくる場合、素直に交代する
  • 「さいせいりょく」を最大限に活かして、相手のパーティのHPを削っていく

定数ダメージの目安

以下が定数ダメージの目安となります。 最もターン数を稼いだ場合に相手のポケモンを倒すことができます。 また「まとわりつく」自体のダメージも加わります。

ターン しめつける状態 どく状態 累計
1 まとわりつくを使ったターン 1/8 0 1/8
2 どくどくを使ったターン 1/8 1/16 5/16
3 トーチカを使ったターン 1/8 2/16 9/16
4 ワイドガードを使ったターン 1/8 3/16 14/16
5 ドヒドイデを戻したターン 0 4/16 18/16

シーズン1においての使用感

  • 相手のパーティに「テッカグヤ」「ギルガルド」「カプ・コケコ」がいるとほぼ必ず選出されました
    • こちら側はそれらに強いポケモンを選出することで対応しています
  • 対戦中ドヒドイデに対して、上記のポケモンに加えて「ガブリアス」「メガギャラドス」「マンムー」がよく交代出しされました
    • 上述の「じしん」を連打して来ることが多いため、ワイドガードを用いて対応します
  • 「くろいヘドロ」ではなく「たべのこし」を採用した理由
    • ナマコブシと対面して「みずびたし」をされたトラウマによるものです。ご自身のパーティと相談して下さい
  • 「じしん」連打と同様に積みの起点にされることも多いです
    • こればっかりは宿命ですね。「トーチカ」のタイミングをうまく見極めることで対応していました。
  • ドヒドイデちゃんかわいい!

まとめ

シーズン1はドヒドイデを主軸にパーティを組もう!と考えて育てた型です。 ただ、使用率の高いポケモンが軒並みドヒドイデが刺さらないポケモンだったので、はっきりいってシーズン1では辛かったです。 私のレートが低いため活躍しましたが、高レベルになると厳しいかもしれません。

一方で、シーズン1を戦っていく中でドヒドイデをかなり好きになりました。 そのためシーズン2以降も積極的に使っていきたいと考えています。

以上、ドヒドイデ 定数ダメージ型の紹介でした。

p.s. ひとでなし型もがんばります!

ハワイ語で見るポケモンサンムーン

みなさま、Hau'oli Makahiki Hou !

いきなり意味不明な挨拶で初めてしまいましたが、ハワイ語で「明けましておめでとうございます。」の意です。 2017年の初ブログは、ハワイ語について書きたいと思います。

ハワイ語ポケモンサンムーン

みなさんご存知の通り、ポケモンサンムーンの舞台であるアローラ地方ハワイ諸島がモチーフになっています。 またハワイ諸島ではハワイ語が存在し、英語とともにハワイ州公用語に指定されているそうです。

私もハワイ語については最近知りました。それに伴い、サンムーンにどれだけハワイ語が使われているのか気になりましたので調べてみました。 それでは一気に見ていきます。

メレメレ島

【melemele】(メレメレ)   
黄色い

花園の色とも一致していますね。

ハウオリシティ

【hauoli(hau'oli)】(ハウオリ)   
幸福、幸せ、喜び
【Hau`oli la hanau】(ハウオリ ラーハナウ)   
お誕生日おめでとう

マハロ山道

【mahalo】(マハロ)   
ありがとう、感謝
【Mahalo nui loa】(マハロ ヌイ ロア)   
大変ありがとうございます

カーラエ湾

【kalae(kāla'e)】(カーラエ)   
澄みきった、穏やかな

アーカラ島

【akala('ākala)】(アカラ)   
ピンク色

こちらも花園の名前と一致しています。

オハナタウン

【ohana】(オハナ)   
家族、仲間

オハナ牧場もあり、イメージに合いますね。

コニコシティ

【konikoni】(コニコニ)   
koniの重複形、胸のドキドキ

関連があるような無いような…。

ハノハノリゾート・ハノハノビーチ

【hanohano】(ハノハノ)   
栄光

さすが最新のリゾート!

ウラウラ島

【ulaula('ula'ula)】(ウラウラ)   
'ulaの重複形、赤色

ここで島の名前は全て色だと確信しました。

マリエシティ

【malie(mālie)】(マリエ)   
穏やかな、静かな

ホクラニ

【hoku(hōkū)】(ホク)   
星
【lani】(ラニ)   
空、天、天国

きれいな単語の組み合わせです。

カプの村

【kapu】(カプ)   
タブー、禁止

これは触らぬ神に祟りなし的なイメージですね。

ハイナ砂漠

【haina(ha'ina)】(ハイナ)   
言う(言った)こと、声明、折り返し句
【haina】(ハイナ)   
(神への)奉納、いけにえを捧げること

後者がより合致している感じがします。

ポニ島

【poni】(ポニ)   
頭に油を注いで神聖にする儀式/紫色の

ポータウン

【po(pō)】(ポ)   
夜、暗やみ

ククイ

【kukui】(ククイ)   
ククイの木。ハワイ州の州木/灯り

ハウ

【hau】(ハウ)   
雪、氷、冷たい/(ハイビスカスなどの)低地特有の木

当てはまりましたが、関連ない気がしています…。

ハラ

【hala】(ハラ)   
罪、失敗/時が経過する、過ぎ去る/パンダナスまたはタコの木

ここまで来て、人名には木に関する単語が使われているのか?!と思ってしまいました。

イリマ

【ilima('ilima)】(イリマ)   
花の名前、イリマ

マオ

【mao(ma'o)】(マオ)   
緑色

カヒリ

【kahili(kāhili)】(カヒリ)   
王室を象徴する、棒の先に鳥の羽をつけたもの

圧倒的なCV(早見沙織)感を醸し出しているキャラだと個人的に思っています。かわいい。

まとめ

地名と人名だけを調べましたが、その他でもまだまだハワイ語が使われていそうです。 独特の発音であったり雰囲気があるので、ハワイ語がけっこう気に入っています。 ちなみに冒頭の挨拶は「ハウオリ マカヒキ ホウ」と読みます。

今回はハワイ語について見ていきました。 仕事が始まってしまったので新年初めてのブログが遅くなってしまいました。 今年もチョコチョコと更新していきたいと思いますので、よろしくお願いします!

p.s. 参考にさせて頂きました。ありがとうございます! kuuipo.org

【ボドゲ】 OReCLEで遊んだ感想

みなさんこんにちは。 先日、ゲームマーケット2016が開催されました。 私も久しぶりに参戦し、新作として発売されていた「OReCLE」というゲームを買ってきました。 そこで、遊んだ感想を書いていきたいと思います。

gamemarket.jp

ゲームの概要説明

  • 実際にかかった時間
    • 3人(全員初見)プレイで、大体40分
    • 2回目以降は20~30分になりました
  • ざっとルール
    • 3種類(4人プレイなら4種類)の鉱石から、より価値の高い鉱石を集めるゲームでした
    • 前半のドラフトフェーズでお金と鉱石を集め、後半のオークションフェーズで鉱石と宝石を買っていきます
      • 前半のドラフトでは、各プレイヤーがそれぞれ1種類の鉱石だけ価値がわかる状態で、お金と鉱石をピックしていきます
        • プレイヤーAは鉱石Xの価値だけ分かり、プレイヤーBは鉱石Yの価値だけ分かり、プレイヤーCは鉱石Zの価値だけ分かる感じです
      • ドラフトフェーズが終わった段階で、3種類すべての鉱石の価値が全員に公開されます
      • 後半のオークションでは、ドラフトで集めたお金で鉱石と宝石を買っていきます
    • また、フェーズを問わずゲーム中に一定の条件を満たしたプレイヤーは称号を得ることができます
    • オークション終了時、お金と鉱石、宝石、称号の勝利点を計算し、一番点数が高い人が勝者となります

面白かった点

ドラフトでの戦略

まず、「鉱石」の価値(=勝利点)が1種類しか分からないトコロがいいですね。 勝利点が判明していない「鉱石」をピックするよりは、オークションで有利になり、勝利点も判明している「お金」を集めたくなります。 しかし「お金」ばかり取りすぎると、「鉱石」が手元に集まらず、「称号」の獲得が難しくなります。 ここがトレードオフになりますね。

一方、「鉱石」を集めていくとドラフトフェーズの段階で「称号」を獲得することができます。 「称号」の勝利点は高いので、そちらを狙う戦略もあります。

各自がピックした札は常に公開されているので、ドラフト初心者でも誰が何を集めているのかを把握しやすいのも良かったです。

オークションでの戦略

山札からカードをめくり、そのカードに入札して購入するフェーズです。 プレイヤー間でやり取りはしないため、全員の所持金が減っていきます。

めくった「鉱石」または「宝石」の勝利点は確定しているので、 どのくらいの「お金」で落札するかは明白でした。 そのため、素直に勝利点の高いカードを落札するか、相手プレイヤーを邪魔するために割高のカードを落札するかが問われます。

ここでも各自の所持金が公開情報になっているので、見落とすことは少ないです。

どの称号を狙うか?

「称号」は勝利点が高く、条件を満たせばすぐに手に入りるため、 プレイヤーは「称号」を狙うことになります。 しかし「称号」を獲得する条件がそれぞれ大きく異なるため、 ある程度狙う「称号」を決める必要がありました。

ドラフトフェーズで一気に条件をクリアするのか?オークションフェーズで落札してクリアするのか? この戦略を考えるのが面白かったです。

まとめ

以上、OReCLEで遊んだ感想でした。 3回プレイしましたが、かなり面白かったです。

持ち運びやすいので、今度から身内で遊ぶ時には携帯するようにします。

【ポケモンSM】クチートと相性が良さそうなポケモン【シーズン1】

みなさんこんにちは。 早いもので、ポケモンサンムーンの発売から3週間が経過しました。 色々な対戦動画も投稿され、本格的にレーティングバトルが始まったように感じます。

しかし、クチート愛好家の皆様におかれましては、アローラ図鑑にクチートがいないと絶望したことでしょう。 私も悲しくなりました。 そこで今回は、ポケモンバンクの解禁に向けてクチートと相性が良さそうなポケモンを考えて気を紛らわせたいと思います。

クチートと相性の良さそうなポケモンを妄想する

やはり気になるのは、7世代におけるクチートの相棒です。 ということで、私が気になったポケモンを列挙していきます。

ペリッパー

まず気になったのは、今回多くの点で強化された「ペリッパー」です。 「クチート」の弱点である「ほのおタイプ」「じめんタイプ」を「ペリッパー」は半減以下にでき、 「ペリッパー」の弱点である「いわタイプ」「フリーズドライ」を「クチート」は半減以下にできます。

また「あめふらし」があるため、「ペリッパー」が倒れたとしても 「クチート」の弱点である「ほのおタイプ」を軽減できます。

タイプ相性的には非常に良いと思ってます。

カプ・ブルル

次に気になったのは、守り神の「カプ・ブルル」です。 「クチート」の弱点である「じめんタイプ」を「カプ・ブルル」は半減(じしんなら1/4)にでき、 「カプ・ブルル」の弱点である「どくタイプ」「こおりタイプ」を「クチート」は半減以下にできます。

「ほのおタイプ」の一貫性が残るので、そこは残りのポケモンで補う感じでしょう。

オニシズクモ

効果がてんこ盛りな特性「すいほう」で話題になった「オニシズクモ」も気になりました。 「クチート」の弱点である「ほのおタイプ」「じめんタイプ」を「オニシズクモ」は半減にでき、 「オニシズクモ」の弱点である「いわタイプ」「ひこうタイプ」を「クチート」は半減にできます。

火力の高い「でんきタイプ」のポケモンが厳しいので、パーティーで補いましょう。

タイプ:ヌル

前作でも組み合わせとして存在した「クチート」「ポリゴン2」を「タイプ:ヌル」に置き換えたものですね。 「ポリゴン2」と「タイプ:ヌル」は特徴が異なるため、 その違いがいい方向に働くのか、あるいは悪い方向に働くのかは未知数です。

ドヒドイデ

サンムーンで新規に登場したポケモンの中で、私の好みにどストライクだった「ドヒドイデ」。 「クチート」と合わせると、可愛い×可愛いで最強なんじゃないかと思っています。

「じめんタイプ」の一貫性は気になるものの、「クチート」の弱点である「ほのおタイプ」に「ドヒドイデ」は強そうですし、 「ドヒドイデ」が苦手な「カプ・テテフ」や「ギルガルド」を「クチート」で倒すことで案外行ける組み合わせになr…厳しいか…?

まとめ

今回は7世代におけるクチートの相棒として、個人的に気になったポケモンを紹介しました。 しかし、タイプ相性に重きをおいて選出したので、実際はいい組み合わせでないかもしれません。

未解禁のポケモンに思いを馳せるのは楽しいものです。みなさんも自身の一番好きなポケモンで妄想を楽しみましょう。

p.s. 「カプ・テテフ」もかなり好みなので、ちゃんと育てたいと思います。

奥が深いポケモンのダメージ計算

みなさんアローラ!今回は、以下の企画に参加する形で書いていきたいと思います。

www.adventar.org

テーマは「ゲーム版ポケモンにおけるダメージ計算」についてです。

すでに多くの計算ツールが世に出回っていますが、本当に信頼できるのか?と疑ってしまう方もいると思います。 私も疑り深い性格のため、レーティングに向けてダメージ計算ツールを自身で作成することがあります。 その実装の際に興味深いことが多くあったので、今回は記事としてまとめてみたいと思います。

ダメージ計算式について

知ってる方も多いと思いますが、以下がよく見る計算式となります。 (※ 乗算を「*」、除算を「/」で表現しています。)

[{ ( 2 * 攻撃側のレベル ) / 5 + 2 } * 技の威力 * 攻撃力 / 防御力 / 50 + 2] * (0.85 ~ 1.00)

これだけを見ると、「各ステータスの値を正確に入力すれば、正確にダメージが計算できそうだ。」と思われる方が大半だと思います。 手によって計算する場合はその通りです。しかし、プログラムを作成すると計算結果が大きく変わる罠が含まれています。 これから、その罠について紹介していきます。

ダメージ計算式の罠

その1 数字の表現方法

ポケモンの戦闘では、「いのちのたま」や「ヤチェのみ」といった道具によってダメージが増減します。 また、「フェアリースキン」や「もふもふ」といった特性によってもダメージが増減します。 一般的には、これらのダメージ増減を「1.5倍」であったり「0.5倍」と表現します。 しかし、ゲームの計算では以下のように表現されています。

  • 2倍
    • ( * 8192 / 4096 )
  • 1.5倍
    • ( * 6144 / 4096 )
  • 1.2倍
    • ( * 4915 / 4096 )
  • 0.5倍
    • ( * 2048 / 4096 )

2倍を例にすると、元々の数値に8192を乗算し、その結果を4096で除算するということになります。 注目して頂きたいのが、1.2倍の表現です。 「4915 / 4096」を計算すると「1.199951171875」となります。つまり1.2の近似値です。 このようにゲーム内では特定の数値を近似値で表現しているため、1.2という数字のまま計算したケースと比べると結果が異なる可能性があります。 ダメージ計算ツールを作成する場合は気をつけなければなりません。 (※ビット演算で調べると、なぜこのような方法で計算しているのか分かりますよ!)

その2 小数点以下の扱い

ポケモンに出てくるステータスは全て整数です。そのため、計算した結果に小数点以下の値が含まれると都合が悪くなります。 そのため端数を処理する必要があるのですが、ポケモンでは以下の3つの方法が取られます。

  • 切り捨て
    • 整数部分をそのまま残し、小数点以下を0とする
  • 四捨五入
    • 端数が0.5未満なら切り捨て、0.5以上なら切り上げる
  • 五捨五超入
    • 端数が0.5以下なら切り捨て、0.5を超えていたなら切り上げる

この3つの端数処理を適切な場所で行う必要があります。 しかし、プログラムの世界では何も考えずに作成すると端数は全て切り捨てられます。 そのため、ここも重要なポイントとなります。

さらに、端数処理が行われるタイミングも重要です。 冒頭に紹介したダメージ計算式では、以下のタイミングで端数処理が行われます。

{ ( 2 * 攻撃側のレベル ) / 5 + 2 } = A (切り捨て)

( A * 技の威力 * 攻撃力 / 防御力 ) = B (切り捨て)

B / 50 + 2 = C (切り捨て)

なんと3回も切り捨て処理が行われます。これを見ると結果が大きく変わりそうだと実感できると思います。

その3 道具や特性の適切な計算位置

ゲームのメニュー画面を見ると、ダメージを増減する道具や特性がどこに影響するのかは説明されています。 しかし、その説明文が非常に紛らわしい場合があります。

例えば「あついしぼう」の場合、「ほのおタイプ、こおりタイプの技の威力が半減する」という説明文になります。 素直に読み解くと、威力40の「ひのこ」が威力20になって計算されると理解できます。 しかし実際には、攻撃側のポケモンの「とくこう」に「2048 / 4096」を乗算して、四捨五入を行います。 以下で具体例を見てみましょう。

攻撃側のレベルが50、「とくこう」が91であり、防御側の「とくぼう」が50の場合

○「ひのこ」の威力を20とするパターン
{ ( 2 * 50 ) / 5 + 2 } = 22
( 22 * 20 * 91 / 50 ) = 800.8 (切り捨て) = 800
800 / 50 + 2 = 18

○とくこうを半減するパターン
とくこう = 91 * 2048 / 4096 = 45.5 (四捨五入) = 46
{ ( 2 * 50 ) / 5 + 2 } = 22
( 22 * 40 * 46 / 50 ) = 809.6 (切り捨て) = 809
809 / 50 + 2 = 18.18 (切り捨て) = 18

最終的なダメージは同じとなりますが、計算の途中で最大9の差が生まれています。 今回は非常に簡単なケースのため最終結果が同じになりましたが、 その他の要素が絡むと容易に最終結果が変わります。 全ての特性・道具の計算を適切な位置で行うことも重要です。

ちなみに、似た特性である「たいねつ」は「相手のポケモンのほのおタイプの技の威力を半減する。」と記載されています。 「あついしぼう」と同じ位置で計算すればいいと思いがちですが、こちらは技の威力に「2048 / 4096」を乗算して、四捨五入を行います。 (なんということでしょう…)

まとめ

今回は、ポケモンのダメージ計算式の罠についてまとめました。 普段意識することなくダメージを計算しているみなさまが、少しでも興味を持って頂ければ幸いです。 また、数少ないポケモンツール開発者のみなさまにおかれましては、非常に気をつけて頂きたいポイントです。 釈迦に説法のような気がしますが…。

p.s.

今回の計算式は以下を参考にさせて頂きました。ありがとうございます。 XY世代専用 ダメージ計算式調査スレッド