ロゴジャック広告

【ポケモン】『ポケットモンスター』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC2026】

【ポケモン】『ポケットモンスター』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC2026】
 2026年7月22日から7月24日にかけての3日間で行われた、“CEDEC2026(Computer Entertainment Developers Conference 2026)”。本イベントは、CESA(コンピュータエンターテインメント協会)が主催する、日本最大のゲーム開発者向けカンファレンスだ。
広告
 本稿では、その中で行われた“ポケモン勝負の進化を支える、バトルシステムの基盤設計と運用事例”の講演内容をまとめてお届けする。講演を行ったのは、ゲームフリーク所属の宗像快氏と小幡敏宏氏。

 シリーズを重ねるごとにポケモンや技、特性などが増え、複雑化していくバトル。その処理を担うバトルシステムを構造化し、柔軟な拡張性を持たせることで新たな仕様にも対応できるロジックを実現。その設計論が語られた。

 従来のターン制バトルではなくアクションバトルとなった『
Pokémon LEGENDS Z-A』(以下、『ポケモンレジェンズ Z-A』)でもターン制と同じゲームロジックを使用している、という驚きのエピソードもあるので、ぜひ最後まで目を通してほしい。

複雑化するバトルを再構築したポケモンバトルシステムチーム

 『ポケットモンスター 赤・緑』から始まった『ポケットモンスター』シリーズには、いまや1000種以上のポケモンが登場し、技の数は900以上、各ポケモンが持つ特性ですら300種以上、道具についても200以上が存在する。

 バトル内で自動的に効果を発揮する、いわゆるパッシブスキル的な要素である特性は、相手ポケモンの能力を下げるもの、あるいは技を撃つ際に自身のタイプを変化させるものなど、その効果も多彩。上に挙げた各要素はそれぞれ単純に数も多いが、何より互いに影響し合うため、組み合わせの膨大さを考えればバトル品質の維持が容易でないことは明白だ。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 そんなバトルの設計を、シリーズごとに開発しては品質を担保するのは難しい。そこで結成されたのが、ポケモンバトルシステムチームだ。本チームはポケモンの全プロジェクトに参加し、バトルなどの品質を高めるべく力を尽くしているという。今回講演を行った宗像氏、小幡氏も同チームに所属している。

 本講演の肝であるバトルシステムとは、バトルにおいて発生する事象を計算するシステム。“誰が何をするか”という入力を受け、その結果“何が起きるか”を出力する仕組みを指す。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 講演内では、リザードンがピカチュウにほのおのパンチを撃つ場面が例に挙げられた。ほのおのパンチの効果だけを見れば、相手にダメージとやけどの状態異常を与える、比較的シンプルな内容だ。

 しかしここに、天気(あるいは天候)や特性、持ち物が加わると、同じ技でも展開は大きく変化。天気が晴れならほのおタイプの技は威力が上昇し、技を受けるピカチュウが“せいでんき”の特性を持っていれば、攻撃したリザードンにまひが付与される。

 さらにリザードンが“クラボのみ”を持っていた場合、自動でまひを回復する処理も行われる。このように、技の効果自体がシンプルでも周辺の要素によっていくらでも処理は複雑になっていく。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 『
ポケットモンスター サン・ムーン』以降、従来の枠組みでは対応しきれない多様なバトルルールが登場したこともあり、プログラムはより複雑化。ファイルの肥大化や関数の巨大化なども進み、新しい仕様を安全に追加するのが困難になっていったという。

 そんな状況を受け、『ポケットモンスター サン・ムーン』の開発終了後、バトルをより明快で柔軟な構造に作り替えるべくポケモンバトルシステムチームが結成。システムの再構築に踏み切ったわけだ。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

システムの構造化と拡張性

 バトルシステムを再構築するうえで、重視されたのは“構造化”と“拡張性”、“柔軟性”、そして“保守性”の4点。今回の講演では、とくに構造化と拡張性にフォーカスした解説が行われた。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 まず着手したのは構造化だ。構造化において大事なのは、複数人による作業を想定し、誰が何回設計しても同じ構造になるようにすること。前述のように、『ポケットモンスター』のバトルでは非常に多くの要素が影響し合うため、技ごと、特性ごとの処理をそのまま組み込んでいくとシステムが複雑化してしまう。

 そこで処理の種類に着目し、攻撃力の決定やダメージの算出など、“何をどの順番で処理するか”という枠組みの部分をゲームロジック、技・道具・特性などによって発生する個別の処理を個別仕様に分類。さらに、ゲームロジックの最小単位をセクションと名付け、各セクションの役割とルールを明確にした。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 技が発動した際の“ダメージ付与”の処理には“ダメージ計算”と“HP減少”の処理が含まれ、ダメージ計算には“攻撃力決定”・“防御力決定”・“ダメージ算出”の処理が含まれている、といった具合に、ロジックがまさに構造化され、どの段階で何をどう処理しているかが明快になっている。

 ゲームロジックの本質を理解しやすい形に整理したことで、セクションの複雑化や、異なる作業者による実装方法のブレを防ぐことができたという。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

イベントハンドラーの活用で柔軟な拡張・オミットが可能に

 続いて解説されたのが、拡張性について。既存コードを変更することなく技や特性を追加し、不要な仕様を削除できるようにするためのポイントだ。シリーズごとに増えていく特性や道具の効果をそのままバトルのロジックに組み込めば、複雑化していくのは明白。そこで、“イベント”および”イベントハンドラー”が登場する。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 イベントはロジック内のセクションから発火される(呼び出される)もので、ロジックから切り離された個別仕様が介入するためのポイントとなる。このイベントにイベントハンドラーが反応し、天気や特性といった要素がセクションに効果を与えることができる、という仕組みだ。

 講演の冒頭で挙げられたリザードンのほのおのパンチを例にすれば、攻撃力決定のセクションで攻撃力補正のイベントが発火され、それに応じて晴れや特性、道具などのイベントハンドラーが必要に応じて反応し、最終的な攻撃力が決定される。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】
 こういった処理がゲームロジックから切り離されていることの利点として、複数の効果を持つ要素の処理も綺麗に行えることが挙げられる。

 たとえば天気の晴れは炎タイプの技のダメージを高める効果とともに、水タイプの技で受けるダメージを半減する効果も持っている。ロジック内で処理しようとすると、晴れに関する処理が攻撃力決定、防御力決定のセクションで別々に実装されることになってしまう。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 個別仕様をロジックから切り離したことで、処理を整理しやすくなるほか、ロジックを変更することなく個別仕様を追加できるようになったのもポイント。逆に、技や特性が登場しなくなり不要になった処理については、イベントハンドラーを登録しないことでゲームから簡単に除外できるようになったという。

 メガシンカやテラスタルなどタイトル固有の仕様についても、イベントハンドラーを活用することでメインのバトルロジックから分離できており、仕様の複雑化を防ぐことにつながっている。

構造化と拡張性によって、割り込みと連鎖の複雑な処理も簡潔に

 上記の構造化と拡張性が処理をスムーズにした例として挙げられたのが、バトル中に発生する割り込みと連鎖の要素。せいでんきの特性を持つピカチュウがダメージを受けた後にまひを付与する処理が割り込み、まひの発生に反応してクラボのみの効果が発生するのが連鎖だ。

 これらについても、そのまま実装しようとすると、ほのおのパンチによる状態異常付与の後に、再びせいでんきによる状態異常付与のセクションを追加する形になる。こうなるとゲームロジック事体の拡張が必要となり、ロジックの複雑化にもつながってしまう。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 そこで、イベントハンドラーに任意のセクションを呼び出せる機能が追加された。技効果の最終処理として“技効果後処理”のセクションが追加され、そこからリアクションイベントが発火、これにせいでんきのイベントハンドラーが反応し、新たに状態異常付与のセクションを呼び出すことで割り込みが処理される。

 さらに、せいでんきによる状態異常付与のセクションが状態異常のイベントを発火し、今度はここでクラボのみのイベントハンドラーが呼び出される。連鎖反応はこのように処理されている。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 イベントハンドラーが再帰的にセクションを呼び出せるようにしたことで、複雑な処理も整理された形で実現されている。これならばメインのロジックを変更する必要がなく、かつカスタマイズ性、拡張性も担保される形だ。

 このように、ゲームロジックの構造化によって処理の見通しがよくなり、個別仕様をメインのロジックから切り離したことで、より柔軟な仕様の追加や変更、オミットが可能となった。

 『ポケットモンスター』のように長期的に発展していくシリーズはもちろん、個別のタイトルを開発するうえでも、処理のフローそのものを構成する要素と、処理結果に影響を与える個別の要素とを切り分ける考えかたは役立ちそうだ。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

バトルがアクションになった『ポケモンレジェンズ Z-A』でも同じロジックを使用!?

 講演の後半では、『ポケモンレジェンズ Z-A』のバトルを例に、バトルシステムの運用事例が紹介された。本作は従来のターン制バトルとは異なり、バトル中自由に動き回ることができ、技によって届く距離や範囲が異なるリアルタイム制のアクションバトルとなっている。しかし、そのバトルにおいてもターン制バトルと同じロジックが使用されているというから驚きだ。

 ここでも、システムの構造化が役に立ったという。ターン制バトルにおいては、1ターンのあいだに何が起きるかを出力する“行動実行”の処理があり、その内部に“技効果”、さらにその内部に“発動判定”や“命中判定”、“ダメージ付与”といったセクションが含まれている。

 もちろん、これらがすべてそのままリアルタイム制にも用いられたわけではない。時間とともに状況が変化するため、行動実行と技効果に関しては処理の粒度が大きくなるので不要となり、また命中判定に関しては命中率や回避率ではなく、コリジョンを使った判定に変わるため不要となった。ただし、状態異常により技を発動できない、などの処理に使う発動判定、およびダメージ付与のセクションに関しては、そのまま使用しているという。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 『ポケモンレジェンズ Z-A』では技のボタンを押すことで発動判定のセクションが発生し、そこからコリジョン同士の接触による命中判定が行われ、命中後にはダメージ付与のセクションが発生、といった流れで処理が進む。このように、仕様に合わせてセクションを取捨選択し、その呼び出し順や中身の処理を変えられたのは、構造化のおかげというわけだ。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 拡張性に関しては、ターン制バトルでのターン処理を前提とした技効果の変更が例として挙げられた。

 技の“まもる”は、ターン制バトルにおいては使用ターン中はまもる状態になり、受ける技を無効化するものだった。処理的には、まもるのイベントハンドラーが発動判定のセクションに作用し、技の発動そのものを失敗させるという仕組みだ。

 一方でリアルタイム制のバトルでは、一定時間まもる状態になれる技に変化。処理においても、発動判定のセクションではなく、ダメージ付与のセクションに作用するイベントハンドラーに変更され、技を失敗させるのではなくダメージをゼロにする仕様になっている。
『ポケモン』複雑化するバトルを支えるシステム設計と運用事例。カギとなるのは構造化と拡張性【CEDEC 2026】

 この変更にロジック事体の調整は必要なく、発動判定用のイベントハンドラーを登録せず、代わりにダメージ付与用のイベントハンドラーとして登録するだけで対応できる。一度作ったイベントハンドラーを後から再利用できるのも、この仕組みの利点だという。

 ターン制バトルのロジックをリアルタイム制バトルにも流用できたというこの事例は、バトルシステム再構築において重要な点として挙げられていた“柔軟性”をこれ以上なく発揮したものと言えるだろう。こうなると、今後さらに予想外なジャンルや展開もあり得るのでは、と期待が高まってくる。

ロジックの構造化、メインフローと個別処理の分離は思考面でも役立つかも?

 バトルシステムの基盤を構造化し、拡張性を持たせたことによってターン制とリアルタイム制、まったく異なるバトル形式に対応できるシステムを作り上げたポケモンバトルシステムチーム。講演内では、複雑性が高いシステムほど、構造の再利用性を高めることで保守性と安定性の向上、ひいては開発効率や品質の安定化にもつながると、システム基盤作りの重要性を説いていた。

 最後のまとめで挙げられたポイントは、ゲームロジックを“再利用可能な単位”で分割しすること、個別仕様を“メインロジックから分離”することの2点。これらの考えは『ポケットモンスター』に限らず、複雑化し続けるゲームロジック全般において利用できるものだ。

 全体を細かく分割し、ひとつひとつの役割を明確にする、全体的な流れと個別の事象とを分けるという考えかたは、ゲーム処理だけでなく、思考法的な意味のロジックにおいても役立つだろう。勉強や作業などで行き詰ったときには、『ポケットモンスター』のロジック作りを振り返ると何かヒントが得られるかもしれない。
※画像は講演の配信をキャプチャーしたものです。
この記事を共有

本記事はアフィリエイトプログラムによる収益を得ている場合があります

週刊ファミ通最新刊
週刊ファミ通表紙
購入する
ebtenamazon
電子版を購入
bookWalker