ポケモン対戦シミュレーター、重い上に判定が変? 変幻自在から入力ミスまで調べた

作品:『ポケットモンスター』

実装を読むと、技と自分のタイプが同じなら威力を上げる仕組みはある。一方、現在タイプと「もう特性を使ったか」を保存する欄が見当たらず、計算に渡すタイプは元の個体データのままだった。攻撃側と防御側が別々の世界線にいる。 これは設計上の欠落として確認できた。

読書機能の使い方

聴く:本文を読み上げます。速読:語句を順に表示し、速さを調整できます。語学練習:別の言語版と対訳を読み比べます。保存:このブラウザーにブックマークし、プレイヤーの保存済み一覧から開けます。

この記事をシェア
広告
広告

1. 「氷技を使ったら氷タイプ」は、攻撃力だけの話じゃない

ゲッコウガの「へんげんじざい」、エースバーンの「リベロ」。選んだ技に合わせて自分のタイプが変わる特性だ。「氷技だから威力アップ!」で計算を終えたら大事故。氷タイプになったなら、次に受ける相手の技との相性も変わる。電気技への弱点も、エスパー技を無効にできるかも、さっきまでとは違う。しかもタイプ変更は場に出ている間に一度だけ。使う技ごとに毎回タイプが変わるわけではない。交代して入り直したときの扱いも必要だ。

実装を読むと、技と自分のタイプが同じなら威力を上げる仕組みはある。一方、現在タイプと「もう特性を使ったか」を保存する欄が見当たらず、計算に渡すタイプは元の個体データのままだった。攻撃側と防御側が別々の世界線にいる。これは設計上の欠落として確認できた。

2. 実際のコードで見つかった、踏みたくない落とし穴

個体の入れ替え: 選出枠のポケモンを別の個体に変える処理で、枠に残っていたHP・状態異常・道具を引き継ぎ、ひんしだけ解除する。前の個体がHP25でやけどなら、新しい個体までHP25でやけどになり得る。HP0なのに生存扱いというホラーも作れる。

どくびし: 設置済み判定が、先に「まきびし」という文字を探してしまう。英語表記のToxic SpikesはSpikesを含むため、どくびしの2層とまきびしの3層が混線する。名前が似ている技を部分一致で判定した罠だ。

からをやぶる: 攻撃・特攻・素早さの上昇は登録されているが、防御・特防の低下がその定義にない。強化したつもりで防御も無傷、という夢の生き物が生まれる。

HP表示: 計算役の文字列読み取りに「0%を数値に直したら、0なので100%に置き換える」という式がある。通常の対戦でその入力が届くかは別途確認が必要だが、入力の0と入力失敗を一緒にするのは危ない。

3. まだある。「固定値」と「今の状態」の取り違え

メガストーン所持を理由に未進化の個体を進化後の能力で扱う経路、明示的な「持ち物なし」を元のテンプレ道具へ戻す経路、天候が「なし」でも現在の対面の特性から天候を推定し直す経路がある。設置技のねばねばネットを、場にいるだけで常に素早さが下がる仕組みとして扱うのも危険。実際は交代して場に出る時の効果なので、あとでネットを消しても既に受けた能力低下まで消えない。

ばけのかわの「もう破れた?」をHP満タンかどうかだけでは判断できない。ひんし、交代、道具の消費、姿の変化、能力の上下、技の使用制限は、それぞれ違う寿命で残る。ポケモン図鑑の初期情報だけで、今の戦場を代表させてはいけない。

4. 入力欄を増やす前に、記録の持ち方を変える

必要なのは「元のタイプ/現在のタイプ」「元の特性/現在の特性/止まっているか」「場に出てから特性を使ったか」「進化前/進化後」「道具の不明/なし/所持/使用済み」「現在の能力段階」「天候や場の残りターン」を別々に持つことだ。やけどとみがわりのように同時に起こる状態は、一つの選択欄では足りない。

操作画面まで巨大な操縦席にする必要はない。通常表示はHP・状態・技・道具程度にし、細かな条件は開閉できる詳細設定に置く。計算するときは候補行動ごとに元の戦況を複製する。そうしないと「氷技で変わったタイプ」を、次に試す炎技の候補まで引きずってしまう。候補同士の世界線は混ぜない。

5. 重さの主犯候補は、派手な画像より何度も繰り返す計算

画面のおすすめを一回出す裏で、同じ対面の各技のダメージ、倒せる確率、相手の反撃、行動順を何度も求める。生成した構築候補を共有の一覧へ追加し、計算の再利用用データを作り直す処理もある。対戦の大量比較では選出候補60×60×各50試合なら、構築同士の一組だけで最大18万試合になり得る。これは設定上の上限で、普段の画面で常に実行される数字ではない。

対策は、同じ盤面・同じ技の結果を一度だけ計算して全表示で共有し、入力が変わった箇所だけ更新すること。重い大量対戦は画面入力と切り離し、試行上限・中断・時間制限を設ける。検索結果の全件描画、保存の連打、古い計算の結果が後から画面を上書きする問題も計測対象。実機での速度測定はまだ行っていないため、ここは原因候補と修正方針だ。

6. 「勝率70%」は、何に勝った70%なのか

対戦を動かす計算役は、補助技を確率で選び、攻撃技を候補から選ぶ仕組み。相手の最善手を毎回読んで戦う名人ではない。さらに、途中で終わらなかった対戦まで勝者なしとして引き分けに加える経路がある。「計算したAI同士の勝率」「特定条件でのダメージ」「人が実戦で勝てる見込み」は別物だ。

連続技にも落とし穴。表示では一発ごとのダメージのばらつきを独立に計算している一方、おすすめ側には同じ番号のばらつきを足して判断する経路がある。最大・最小のダメージが合っても、倒せる確率はずれる。数字が小数点まで細かいことと、数字が正しいことは別。

7. 特性・技・道具の「登録済み」を「対応済み」にしない

確認すべき組み合わせは、タイプ変更と受ける技、特性の交換と無効化、かたやぶり、相手の能力上昇を無視する効果、先制技の優先度、天候で変わる技、重さや素早さで威力が変わる技、連続攻撃、みがわり、タスキ、道具消費、場への入場時だけ起こる効果、交代後の復元。対戦のルールによって使えない要素は「未対応」ではなく「現在のルールでは対象外」と分けて表示する。

テストは「初期状態→操作→期待する現在状態→技のダメージ→交代後」を一続きで確認する。例えば、変幻自在で氷に変わった個体に電気技、別の技、交代、再登場を順に試す。HP0、空欄、負の数、存在しない技、同じ道具2つ、連打中の再計算も忘れない。

8. 修正の順番と結論

第一に「個体を交換しただけでHPややけどが移る」を修正。第二にタイプ・特性・メガ・道具・能力変化を現在状態として保存する。第三にどくびし、からをやぶる、技の順番、連続技の確率を修正。第四に同じ計算の再利用と、実機の動作時間を測定する。最後に公式ルールと対照できる対戦データで差を確認する。

記事で扱ったのは2026年10月9日時点で確認できたソースコードの問題点と検証候補で、製品の全操作を実際にテストして断定した一覧ではない。また、本ツールが設定する対戦方式と本家Pokémon Championsの全仕様が一致するとは限らない。強そうなおすすめの前に、まず計算が一つの世界線で動くこと。 そこを直さないと、どれほど強いパーティーも数字の中で迷子になる。

資料

このシリーズ 『ポケットモンスター』の記事をまとめて読む(3件の記事)

PRこの記事に関連する本・場所・もの

  • 『ポケットモンスター』

    この記事で扱った『ポケットモンスター』の検索結果です。 該当する商品・巻は未特定です。

  • 『ポケットモンスター』のグッズ

    この記事で扱った『ポケットモンスター』のグッズの検索結果です。

この記事には広告(アフィリエイトリンク)が含まれます。 広告について Amazonのアソシエイトとして、mendoi-appsは適格販売により収入を得ています。

この記事が役に立ったら、応援できます。 応援する

広告

もう1個、なんか面白いのない?

読み終わったついでに。近い話と、ぜんぜん違うけど面白い話を少しずつ。

  1. 近い話2,000円で現実世界をAPI化する物干し竿の購入や資源ごみの処分を2,000円で依頼した 自分でやるのではなく、他人に全部任せた
  2. 100円の判断に30分使うな「思いついたら即やる人」の正体は、衝動性よりリスク圧縮と行動摩擦の設計だった
  3. ぜんぜん違うけど四日市とんてき、米を外したら「わんこキャベツ」が始まったキャベツを「めっちゃ」注文し、皿が見えなくなる タレを吸ったキャベツで汁がすべてなくなる
  4. 「全て全力でやる!」が比喩じゃない人に会った――俺より生き急いでる人、久しぶりに見た大学時代は寝転んでスマホを触ってダラダラしていた それが今では「全て全力でやる!」の生き方へ
  5. 「孫を見せられなくてすまん」って本当に必要?――親は成人した子が帰ってきて飯を食うだけでも普通にうれしい説高齢の母親が成人した子と外食している 周囲の三世代テーブルを見て「すまん」と自分を責める
  6. 無料10分ゲームが「名刺」になる時代短編ADV×AI×バズ×実績

今日これ読んで

この記事を読んだ人の次の疑問に、それぞれ答える記事です。

『ポケットモンスター』の記事をすべて見る(3件の記事)すべての記事から探す「家庭用・スマホゲーム」の記事をもっと見る

他の記事を探す

すべての記事

めんどいちゃん

このサイトの運営者

めんどいちゃん

仕事や日常の「めんどい」を構造化して、次に動きやすくする記事を書いています。