SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ゲームAI連続セミナー「ゲームAIを読み解く」レポート

ゲームAI連続セミナー「ゲームAIを読み解く」 第4回 レポート

第4回「Halo2 におけるHFSM(階層型有限状態マシン)」レポート


  • X ポスト
  • このエントリーをはてなブックマークに追加

Halo2におけるHFSM

 Halo2では汎用的なAIシステムを構築し、登場するキャラクタAIごとに、キャラクタの特性に合わせてAIシステムを部分的に使うことで、前作より高度なゲームAIを目指しています。この方法なら、AIシステムの切り取り方の数だけ異なるキャラクタAIを作成できます。キャラクタ毎ではなく単一のシステムを構築することで、開発リソースを集中させ、より高度なゲームAIを間単にたくさん作ろうというわけです。どこまで高度にするかについては「生きているように見える」から一歩踏み込んで、「環境を解釈しているように見える」ことを目指しています。

 Halo2では、階層化したFSMの概念が用いられています。UMLのステートチャートは階層を表現することができ、先に示したステートチャートでは既に階層構造が描かれていますので、これを例にしてみましょう。

ステートチャート
ステートチャート

 最初は「追跡」状態から見ていきます。この状態は外部から見ると、追跡し攻撃する行動を実行する1つの状態です。しかし、その内部では「対象の近くへ移動」してから「攻撃」するという状態遷移の詳細化を見ることができ、さらに「攻撃」状態の内部には、攻撃する「手段の選択」を行い、攻撃を「実行」するという、より詳細な状態遷移を見ることができます。こうした階層化によって、抽象度の高い遷移を考える階層とキャラクタの身体動作の連鎖を考える具体性の強い階層を分けて扱えるようになります。抽象的な遷移の設計から、段階的に詳細化を行ったり、逆に、階層化されていない状態遷移から、状態のグループ化によって抽象的な状態を導き出し、抽象的な状態遷移を得ることができます。

 また、イベントの競合を調停する仕組みをシステムに持つことで、FSMをデザインする手間を軽減しています。通常、FSMでは「1つの状態から、1つのイベントで起こる遷移は1つ」です。しかし、本来はキャラクタごとに異なる遷移ルールを、1つのシステムに統合しているため、状況によって選べる遷移が複数存在してしまうことがあります。そこで、優先順位付けしたり、ランダムに選んだり、決められた順序で逐次実行したり、といった解決策を選べる仕組みが用意されています。

 Helo2のFSMの構築においても、汎用的な大規模AIシステムを構築する作業こそ技術者が担いますが、そのシステムの切り取り方を決めてキャラクタAIを作るのは、デザイナの仕事です。この枠組みでは、FSMの構築が大規模なFSMの基本モデルから何を削り落とすかという作業に帰着するので、削り落とす対象をチェックさせるインターフェイスを持つツールで作業が可能になります。非常に簡単なツールで、さまざまなキャラクタAIが作れることになります。

グループワーク

 グループワークでは、メタルギアソリッドに登場する警備兵を題材に、FSMを用いて個性的な警備兵を実現する演習を行いました。

 演習の設定を説明し、例となるFSMを示した後、8つのグループに分かれて作業を行いました。作ろうとするキャラクター像の設定、キャラクターにとらせたい振る舞い、振る舞いを集めてFSMを構築、という作業を順番に行いました。

 ここまでも述べてきたとおり、FSMは技術者以外にも理解しやすい概念です。このため、演習の目的を共有しやすかったようで、過去のグループワークに比較しても、非常にスムーズに進みました。

 本気でスネークを追い詰める警備兵を目指したグループもあれば、上司の目を盗んでサボる警備兵を考えたグループもあり、望んだ振る舞いをとるキャラクタAIをFSMで表現することが可能であることを実感していただけたことと思います。

FSMでうれしいこと

 グループワークまでを行い、FSMに対する理解が深まったところで、筆者が「FSMでうれしいこと」という簡単なプレゼンを行いました。

 FSMでキャラクタAIを実現するに止まらず、ゲームの仕様記述にステートチャートを用いれば、日本語で箇条書きされた仕様書や、都合の良い限定的な記述がされがちなフローチャートによる仕様書よりも、分かりやすくて厳密な、企画職も技術職もうれしい仕様書が作れるだろうと話しました。実際に取り入れている現場もあるものの、まだまだ少数に止まっているのが現状です。

 また、UMLのように標準化され、形式手法の道具となっているものを使うことで、今後現れてくるであろうモデルを検証するツールの恩恵にも浴することが可能だと話しました。

 ゲーム業界で技術というと、大抵の場合、製品に組み込まれるアルゴリズムやアークテクチャなどの実装技術をイメージしてしまうのですが、それだけではなく開発手法に応用することも考えられます。

 実は、前日に、講演者の三宅さんと打ち合わせた際、FSMでキャラクタAIを構築して、企画職がうれしいことは何だろうという話が出ました。この時に、AIとかいうと大抵は技術職の領分で語られるけれども、FSMを使うことでキャラクタAIの構築が企画職に開放されるという話をしたのです。FSMのおかげで、企画職がコンテンツを作る開発パイプラインが構築できるのです。企画職がうれしいのは、技術職がいないと手が出せなかった領域が、自分たちでコントロールできるようになることじゃないかと考えたのです。

今後の展開

 講演に関する資料は、IGDA日本のサイトで配布が予定されています。

 本セミナーの第5回は2007年初秋を予定しています。詳細な日時、場所などは、まだ確定していません。内容は「NEROにおける学習と進化」と題して、大学発のFPSである「NERO」を題材に、学術的なAIで主題となる「学習と進化」はゲームに応用可能なのかを考えます。8月にIGDA日本のサイトにて参加申し込みを受け付ける予定ですので、興味を持たれた方はぜひご参加ください。

 また、本セミナーを手伝って下さるボランティアも募集しています。会場の設営や懇親会の準備など、ちょっとした事でも手伝っていただけると助かります。参加者全員で作っていくセミナーを目指して、5回目以降の準備も進めていきます。皆さんのお力添えを宜しくお願い致します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ゲームAI連続セミナー「ゲームAIを読み解く」レポート連載記事一覧

もっと読む

この記事の著者

長久 勝(ナガク マサル)

1972年1月10日生まれ。京都府出身。1994年龍谷大学理工学部数理情報学科卒業。ゲーム会社に入社。「ワンダースワンゲームプログラミング」「Javaゲームプログラミング」等を執筆。早稲田大学MNC非常勤講師。神楽坂酔っ払い研究所所長。ホームページはhttp://www6.plala.or.jp/mnagaku/。blog「mnagakuのx86_64地獄」も毎日更新中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1515 2008/09/04 12:41

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング