PAPER-DIGEST · 2026-06-27
Jara Gonzalez & Guzdial: 敵の「形」を、動きで倒せる関門として自動生成する — Fukai が読む
敵モーフォロジー生成 / PCG
一段落要約
ゲームの自動生成(PCG、Procedural Content Generation。レベルやアイテムを人手ではなくアルゴリズムで作る技術)は、これまで地形・アイテム、敵の「行動」や「数値」をよく扱ってきた。しかし敵の「形」——プレイヤーと当たり判定がどう接するかを決める body plan(体の骨組み)——を生成する研究はほとんどなかった。この論文は、簡素な2Dプラットフォーマー上で敵を4×4マスの当たり判定として表し、「特定の動き(メカニクス)を持つときだけ倒せる敵」を自動生成する三つの方法を比べた。
中心の発見はこうだ。「倒せる敵を作る」こと自体は易しいが、「ある動きでだけ倒せ、その動きが無いと倒せない(=ゲート)」という条件を満たすのが難しい。素朴に「強化されたプレイヤーが倒せること」だけを目指す進化計算は、結局は誰でも倒せる敵を作ってしまった。一方、A*探索で各マスの到達可能性を調べ単純な書き換えルールを当てる方法は、約3秒の計算で、ゲート性能・多様性ともに最良だった。本記事は、この論文を開かなくても要点が掴めるよう解説する。
はじめに
著者は Johor Jara Gonzalez と Matthew Guzdial の二名。所属はカナダ・アルバータ大学の計算機科学科と、機械学習研究所 Amii(Alberta Machine Intelligence Institute)である。Guzdial は機械学習でコンテンツを生成する PCGML 分野でよく知られた研究者だ。本稿は arXiv に 2026年6月1日に投稿されたプレプリント(arXiv:2606.02832。査読前の段階で、まだ peer-review を通った確証はない)であり、被引用もまだほとんど無い、できたての一本である。
私がこれを今日選んだ理由は単純だ。「敵を作る」と聞くと、多くの人は強さの数値や攻撃パターン、見た目を思い浮かべる。だが本稿が扱うのは、もっと手前にある「形」——プレイヤーがどこに当たれば倒せ、どこに触れると死ぬか、という当たり判定そのものの配置だ。これはゲームを作る人にとって地味だが本質的な設計変数で、しかも自動生成の対象として驚くほど手つかずだった。実装に近く、ゲーム設計の語彙に翻訳しやすい。だから取り上げる。著者は実装も公開している。
背景
PCG の教科書や総説は、レベル・ルール・アイテム・物語・クエストを中心に語ってきた。敵は「NPCの難易度調整」や「遭遇デザイン」の一部として周辺的に触れられる程度だ。実際、これまでの敵生成研究は三つの別々の筋に分かれている。行動(どう動き適応するか。強化学習や、最近では大規模言語モデルで制御する)、数値特徴(体力・攻撃力・速度などを進化計算で調整しバランスを取る)、そしてメカニクス(敵が使える新しいルールや能力をプログラム合成で作る)である。
しかし、と著者は指摘する。これらはどれも、敵の「当たり判定を持つ形」そのものは設計者が手で固定したものとして前提にしている。スプライトを差し替える研究(A Rogue Dream)でさえ、見た目を変えるだけで当たり判定は変えない。つまり、形そのものを生成する研究がぽっかり空いていた——これが本稿の出発点だ。
ロボティクスや人工生物の分野には「形態生成(morphology generation。体の骨組みを自動でつくる研究)」の蓄積がある。ただしそこでは、体を動かす本人(エージェント)の移動速度や安定性を最大化するために形を進化させる。ゲームの敵は逆だ。敵は、自分が強くなるためでなく、別のプレイヤーがどう動かねばならないかを形づくるために存在する。著者の言葉を借りれば、敵が自分自身を倒しやすく(あるいは倒しにくく)するよう体を最適化することは、ロボティクスでは普通やらない。この目的のズレゆえに、ロボティクスの手法をそのまま持ち込めない。
アプローチ / 方法
舞台は、当たり判定の収集に特化した簡素な2D Unity プラットフォーマーだ。複雑な地形や複数の敵といった交絡要因を避けるための割り切りである。敵は4×4の16マスで表され、各マスは三種類のいずれか——弱点(weak。触れると敵を倒せる)、致死(lethal。触れるとプレイヤーが死ぬ)、空(empty。当たり判定なし)——を持つ。プレイヤーの基本動作は左・右・ジャンプの三つだけだ。
ここに「追加メカニクス」を一つ足した強化プレイヤーを考える。追加メカニクスは、別の自動メカニクス生成研究から借りた四種——垂直テレポート、水平テレポート、スピードブースト(横移動速度を一定倍にする)、二段ジャンプ——だ。設計目標は明快で、「基本動作だけのプレイヤーには倒せないが、追加メカニクスを持つと倒せる」敵を、メカニクスごとに生成すること。これを著者は「ゲート(gating。特定の能力でだけ通れる関門)」と呼ぶ。
仕組みは反復ループだ。10個のランダムな初期形から始め、基本プレイヤーと強化プレイヤーをその敵にぶつけて、「どのマスに、どう当たり、倒せたか死んだか」の記録(interaction trace、相互作用の軌跡)を集める。その記録をもとに形を一段書き換え、また当てる——これを決まった回数くり返す。プレイヤー側の制御は二通り。強化学習(reinforcement learning。試行錯誤で報酬の高い行動を学ぶ枠組み。ここでは Unity ML-Agents の PPO を使う)か、A*探索(最短経路を確実に見つける古典的な探索アルゴリズム)である。
形を書き換える「生成器」は三種類だ。一つ目は NeEF(Neural Enemy Field)。各マスの特徴(現在の種類・座標・どれだけ当たられ倒せたか)を小さなニューラルネットに入れ、次に各マスが何になるべきかを予測させる学習型である。二つ目は A*ベースの生成則。学習を一切せず、A*で調べた到達可能性に「基本プレイヤーが届くマスは致死に、強化時だけ届くマスは弱点に、どちらも届かないマスは空に」という決定論的なルールを当てるだけだ。三つ目は同じルールを、A*ではなく強化学習エージェントが実際に踏んだ軌跡から推定して当てる版で、人間に近い「届きにくさ」を反映できる。比較相手として、ロボティクスにならった進化計算(遺伝的アルゴリズム)の基準線を二種類置いた。
発見
評価は五つの指標で行われた。SRAA(強化プレイヤーが倒せた割合。高いほど良い)、SRBA(基本プレイヤーが倒せた割合。ゲートとしては低いほど良い)、SD(出力された形の多様性。高いほど良い)、DO(初期形からどれだけ変化したか)、CT(計算時間。短いほど良い)。四つのメカニクス(二段ジャンプ・スピード・水平/垂直テレポート)をまたいだ平均が報告されている。
結果の核心は、進化計算の基準線 GA-A が示した「罠」だ。GA-A は「強化プレイヤーが倒せること」だけを評価したところ、SRAA は 1.00(常に倒せる)に達したが、SRBA も 0.83 まで上がってしまった。つまり基本プレイヤーでも83%倒せてしまい、ゲートとしては機能しない。著者の設計目標に照らせば、「倒せる敵」を作るのは易しく、「特定の動きでだけ倒せる敵」を作るほうがずっと難しい、と読める。
対照的に、最も素朴に見える A*ベースの生成則が、ゲート性能では際立った。SRBA は 0.00(基本プレイヤーは一度も倒せない=完全なゲート)、強化時の SRAA は 0.62、形の多様性 SD は 0.42 と全手法中で最高、しかも計算時間はわずか約2.38秒だった。学習型の NeEF は SRAA 0.72 と倒しやすさでは上だが、SRBA が 0.35 とゲートはやや緩く、計算には約11時間(原文では 36062 秒)かかった。強化学習版の生成則は SRBA 0.10 と良好なゲートを示した。総じて、相互作用に基づく三手法はいずれも進化計算の基準線と同等以上で、しかも GA は同じ計算予算でも最も時間がかかった、というのが著者の報告である。
使いどころ
ゲームやパズルを作る人にとって、この研究は「敵の形を、プレイヤーの動きに対する関門としてデザインする」という発想を具体化してくれる。第一に、メトロイドヴァニア型の進行ゲート。著者自身の動機づけ例がこれだ。二段ジャンプやダッシュを覚えた直後に、「その動きを使わないと倒せない見張り」を置けば、メカニクスの練習と新エリアの解放を同時に設計できる。手で何百通りも試す代わりに、生成器に「メカニクスAで倒せ、Bでは倒せない」候補を出させ、叩き台にできる。
第二に、当たり判定パズルやボスの弱点配置。弱点・致死・空の3値グリッドは、そのままボスの「ここだけ殴れる」配置や、トゲと足場のレイアウト設計に対応づけられる。もし自分が2Dアクションの中ボスを作っているなら、A*の到達可能性チェックを「この弱点は二段ジャンプ無しでは届かないか」を自動で検算する道具として使える。約3秒で回るので、レベルエディタに組み込んでリアルタイムに警告を出すことも現実的だ。
第三に、ソフトロックや「抜け道」の検出。A*が「理論上は届くが、人間には不可能なほど精密な操作が要る経路」まで見つけてしまう性質は、裏を返せば「設計者が意図しない抜け道」をあぶり出す検査に使える。もしハイパーカジュアルや手続き生成のステージを量産しているなら、生成した各面に対し基本能力エージェントと強化能力エージェントを走らせ、「強化前に解けてしまう=ゲートが壊れている」面を自動で弾くフィルタにできる。設計の語彙で言えば、これは「制約(AでだけBではダメ)を満たす候補生成」と「制約違反の自動検出」の二役だと整理できる。
限界
まず著者自身が認めている範囲から。A*は最短経路を必ず見つける一方で、「人間に期待するのは無理なほど精密で長い操作列」を要する経路まで「到達可能」と数えてしまう、と本文は明言している。強化学習版はその点で「届きにくさ」を人間寄りに近似できるが、逆に長く特定の操作列が要るマスには届かないことがある。両者は「同じ形について別の問い」に答えており、どちらが正しいという話ではない、と著者は整理する。また、スピードブーストは「典型的でないゲートの難しさ」を持つ特異例として扱われている。
設計上の割り切りも多い。環境は複雑な地形や複数の敵を避けた簡素な2Dで、敵は4×4・単体。メカニクスは生成器に明示的な入力として与えず、環境ごと・メカニクスごとに別の生成器を用意している(=新しいメカニクスへの一般化はこの実験の枠外だ)。評価は最終的に生成された敵に対してエージェントを再実行して測っており、人間のプレイテストではない。
ここから先は、Fukai がここで指摘するのは、私が読んで気づいた点だ。4×4の当たり判定単体は、実際のゲームの敵が持つ見た目・アニメーション・攻撃判定のタイミング・複数体の連携からは遠い。「強化エージェントが倒せる」ことは「人間にとって面白く学べる」こととは別物で、本稿はそこを測っていない。学習型(NeEF・RL版)が約11時間かかるのに対し A*版が約3秒という差も、実務では無視できない。被引用がまだほぼ無いプレプリントである点も含め、結論は「小さなテストベッドで筋の良い方向が示された」段階として読むのが妥当だと私は考える。
Fukai の読み
ここからは私の解釈だと断った上で書く。私はこの研究を、PCG が長く「何を置くか(レベル・敵・アイテム)」を生成してきた流れの中で、「プレイヤーに何を要求するか」を生成する側へ一歩踏み出した試みだと位置づけたい。設計批評の語彙で言えば、これは「ロック&キー」構造——能力という鍵でだけ開く錠前——の、錠前側を当たり判定の幾何として自動設計する話に近い。そして最も印象的なのは、最先端の学習器ではなく、約3秒で回る素朴な到達可能性ルール(A*)が完全なゲートと最高の多様性を出した点だ。これは「賢いモデルを足す前に、問題を正しく定式化せよ」という PCG 設計の古い教訓を改めて思い出させてくれる、と私は読む。
おわりに
もっと深く知りたい人へ。本稿の背骨にあるのは「メカニクスを自動生成し評価する」系譜で、著者らの Mechanic Maker 2.0(Gonzalez et al., 2023)や、Zook & Riedl のメカニクス生成、Butler らのプログラム合成による生成を合わせて読むと地図が見えてくる。形態生成のルーツを辿るなら、Karl Sims の「進化する仮想生物」や Lehman & Stanley の新奇性探索が原点だ。ゲーム側の敵・難易度の文脈は、Guzdial らの PCGML 総説(2025)が見通しを与えてくれる。
敵を「強さ」ではなく「形」として、しかもプレイヤーの動きに対する関門として捉え直す——この小さな視点の転換が、レベル設計とメカニクス設計の間に新しい設計変数を一つ加えた。テストベッドは小さいが、問いの立て方は大きい。次にこの方向がどんな実ゲームに接地していくのか、私はホットの濃いめのコーヒーと色ペンを片手に追いかけたい。
参考文献
本記事で参照した論文と関連資料:
・著者公開の実装(GitHub: Harcurio/Enemy-Morphology-Generation)
・関連研究: Mechanic Maker 2.0: Reinforcement Learning for Evaluating Generated Rules (Gonzalez et al., 2023)
・背景: Procedural Content Generation via Machine Learning: An Overview (Guzdial et al., 2025)
リアクション(ログイン不要)
匿名で残せます • 同じリアクションは1日1回まで
関連シリーズ
論文ダイジェスト第13回 / 全91回
