PR
連載: 

AI最前線の現場から【スクウェア・エニックス】 キャラクターの身体を作る

2016年8月17日(水)
Fabien Gravot (ファビアン グラヴォ)Hendrik Skubch(ヘンドリック スクバ)Ingimar Gudmundsson(インギマル グードムンソン )今村 紀之三宅 陽一郎

はじめに

前回までの解説で、ゲームの中のキャラクターの人工知能を「キャラクターAI」と呼び、第1回ではその基本となるエージェント・アーキテクチャを、第2回では特にエージェント・アーキテクチャの中から「認識」と「意思決定」モジュールについて解説しました。今回は前回に引き続きエージェント・アーキテクチャの「運動生成」モジュールについて解説します。

身体と知能の問題

キャラクターAIの特徴は「身体の運動と共に知能を考えなければならない」というところです。これはとても当たり前のことのように思えますが、世間で言う「人工知能」のほとんどは「問題を解くための人工知能」であり、「自分の身体」というものを持っていません。ところが、キャラクターAIとロボットだけは身体と共に知能を考えなければなりません。

しかし、キャラクターAIとロボットの身体運動の技術はかなり異なります。キャラクターAIの運動はモーション・キャプチャなどで準備したアニメーションデータを再生することで実現しますが、ロボットは各関節のモーターなどを制御して実現します。また、ゲームではキャラクターの運動は環境とインタラクティブに動作しなければなりません(図1)。つまりデジタルゲームにおけるキャラクターの身体運動と知能の問題は、新しい固有の分野なのです。今回はこのデジタルゲームにおける「身体と知能」の問題を見ていきましょう。

図1:広々とした空間で思うままに身体を動かすモンスターたち(奥)

身体とアニメーション

キャラクターの身体とアニメーションは運動生成モジュールから作り出します。キャラクターAIはその際に身体と知能と環境世界が調和するように運動を作らねばなりません。

まず基本として、「キャラクターのアニメーション」はアニメーションデータを再生することで「歩く」「走る」「剣を振る」などを実現します。それぞれの行動ごとにアニメーションを準備し、そのデータを再生するのです。しかし、梯子を登っている時は歩けませんし、剣を振っている時にジャンプはできません。このように身体の状態を把握しておかなければ、身体に正確な命令を出すことはできません。

ここで人間の身体運動を考えてみましょう。人間の知能も身体のすべてを把握しているわけではありません。意識が身体に命令を投げると「どうやって実際の筋肉や骨を動かすのか」を担当する無意識の知能が働いて命令が運動の詳細に分解され、現在の姿勢や環境に合わせた運動が実現されます。例えば、意識が「腕を上げろ」と思えば腕は上がりますが、我々は「どうやって腕を上げるか」を理解しているわけでも、直接的に筋肉や骨を動かせるわけでもありません。そこには「腕を上げる」命令を実際の運動に展開する見えない知能があるわけです。

キャラクターを制御する3つの層

キャラクターの人工知能も同様です。意思決定モジュールは行動を決めますが、実際に身体運動を作り出すのは運動生成モジュールです。キャラクターには意思決定とは独立して身体は身体として解かなければならない問題が多くあり、それをこのモジュールが役割分担します。「FINAL FANTASY XV」のキャラクター制御では、知能から身体を含むシステムを「3つの層」に分けて制御を行っています(図2)。

図2:知能と身体を含むキャラクター全体の制御図

最上層にあるのが「意思決定」です。意思決定の機能は、そこから決定された行動を出力することです。「ステート・マシン」でも「ビヘイビア・ツリー」でも、そのハイブリッド型の「AI グラフ」でも同様です(これらの詳細については第2回を参照)。意思決定モジュール自体もAIグラフ内で階層的な構造になっていることを解説しましたが、ここで言う階層構造は、その階層構造とは異なります。知能と身体を含めた、より大きなキャラクター全体の設計における階層構造です。

中間にあるのが、「身体層」(ボディ・レイヤー)です。ここでは身体の状態を大まかに定義しています。「走っている」のか、「ジャンプしている」のか、「梯子を登っている」のか、などを状態(ステート)で管理しています。状態ごとに行える行動を制限するほか、反射的に行った行動(ダメージリアクションなど)による身体の状態変化を知能に知らせる、といった役割を持ちます。

最下層にあるのが「アニメーション層」です。ここではアニメーション同士の遷移やアニメーション遷移が滑らかに行われるように制御します(「ブレンディング」と呼ぶ)。

キャラクターの行動を制御するには、意思決定から身体へ「走る」「剣を振る」「歩く」「座る」といったアニメーションをさせるように命令を出す必要があります。中間層を通して、こららの行動に対応するアニメーションを再生します。このアニメーションを制御するのが「AnimGraph」です。AnimGraphはステート・マシン構造になっており、再生するアニメーションデータに対応するノード間を遷移します(図3)。

図3:アニメーションを制御するAnimGraph

しかし、あるアニメーションからあるアニメーションへ遷移する場合には、連続して移行する仕組みが必要になります。そこで、前のアニメーションと次のアニメーションの遷移時間に2つのアニメーションを重ね合わせて滑らかに移行するように見せる「アニメーション・ブレンディング」が行われます。AnimGraphでは、それぞれのアニメーション同士のブレンド時間やブレンド方法が決められており、いつでも自然に移行するようにアーティストが調整します。

また、身体は環境の制限や外からの作用を受けながらアニメーションを変形します。例えば、地面を蹴ったり、物をつかんだり、視線が固定される場合には身体のあるポイントが拘束状態になるようにアニメーションが微調整されます(「インバース・キネマティクス」と呼ぶ)。さらに、突発的な大きなアニメーションの変化には「プロシージャル・アニメーション」が対応します。これは、その場、その状況に合わせて既存のアニメーションから新しいアニメーションを生成する技術です。

シミュレーションによる攻撃領域の学習

自分自身が作り出したものなら、なんでも知っている。単純なものの場合は、その通りかもしれません。しかし、ゲーム・キャラクターのように複数のエンジニアとアーティストが関わる場合にはそうはいきません。モーション、AI、身体層、複数の要素が絡み合っているからです。

ここで1つ大きなテーゼがあります。動物が環境に合わせて自分の身体を動かすためには、まず自分の身体能力を知る必要がある、ということです。これはとても当たり前のことのように思えます。人間は自分がどれぐらい早く走れるかを知っています。もし何か敵対する動物などに追いかけられた際に、そのまま走って逃げきれるのか、木に登った方がいいのか、あるいは崖を飛び越える(この場合も自分の速度と跳び越えられる距離の関連を知らねばなりません)方がいいのかを知っておく必要があります。

そこでFINAL FANTASY XVでは、開発中に実際にキャラクターを何度も動かして、キャラクターの運動能力を抽出します。そして、その情報をキャラクターが環境内で行動を決定するために使用します。例を示しながら解説しましょう。

モンスターは自分の周りのどれぐらいの領域を攻撃できるでしょうか。モンスターは手を払ったり、体当たりしたりして敵を攻撃します。「どのようなモーションならば周囲の領域に攻撃を当てられるのか」という攻撃領域をシミュレーション(実際に動かして)で解析します。具体的には、まずモンスターの周りの空間に小さな球を配置し、モンスターを動かして衝突した球をマーキングします。マーキングした球をシンプルな基本立体図形に近似して攻撃領域として記憶する、という流れです。

例えば、ベヒモスの右手の払いがどれぐらいの領域にヒットするかをシミュレーションします(図4)。そして、ゲーム内では「この領域に敵が来れば攻撃をヒットできる」ことがわかるので、攻撃が行動の候補に上がる、という仕組みです。

図4:ベヒモスのモーション・シミュレーション

シミュレーションによる移動の学習

次に、キャラクターの移動モーションを解析してみましょう。移動で問題となるのが「指定したポイントにきちんと止まれるか」です。よく似た問題に「どれぐらいの角度で曲がれるか」という問題もあります。キャラクターはすぐに止まれたり、直角に曲がれたりするわけではありません。止まるためには徐々にスピードを落とす必要がありますし、曲がるためにはそれぞれの身体運動に合わせた曲がり方があります。

また、ある速度で走っているキャラクターが「どれぐらい前からスピードを落とせば目標地点で止まれるのか」「どれぐらいの旋回半径(どれぐらいの半径の円軌道)ならば直角に曲がれるのか」は、キャラクターそれぞれが持つモーションによります。その具体的な数値を知るには、速度を変化させながら、実際にモーションを動かしてみるしかありません。

例えば、ある速度で走っているキャラクターが止まるためにどれぐらいの距離が必要かをシミュレーションする場合を考えてみます。実際にゲームと同じ条件のテスト環境マップで走らせておき、停止命令を出して立ち止まるモーションへと遷移させ、その時に距離を測定します。これで速度に依存した停止距離がわかります。

旋回半径も同様です。ある速度で走っているキャラクターにコーナーを曲がる動作を行わせて、その速度でどれぐらいの旋回半径の軌道を描くかを測定します。それを複数の速度でテストすると図5のようなグラフになります。このデータをそれぞれのキャラクターに記憶させて利用することで正確な位置で止まったり、曲がったりができるようになります。

図5:シミュレーションで計測されたキャラクターの速度と旋回半径のグラフ

第3回まとめ

さて、第3回では、以下のようなことを見てきました。

  • 意思決定に従って環境に合わせた身体運動を構築する
  • 身体運動は身体構造と周囲の環境との物理的な関係を考えて生成しなければならない
  • キャラクターの身体を環境に「馴染ませる」ためにはシミュレーションによる学習を行う必要がある

今回は運動生成モジュールについて思考から身体の問題まで踏み込んで解説しました。これでキャラクターAIについての解説は完結です。

次回は最終回となります。キャラクターAIから離れて「メタAI」と「ナビゲーションAI」について解説します。この2つが「何だっけ?」という方は、第1回の内容を見直しておきましょう。お楽しみに!

【第3回参考文献】
白神 陽嗣、横山 貴規、並木 幸介、三宅陽一郎
FINAL FANTASY XV -EPISODE DUSCAE-におけるキャラクターAIの意思決定システム
(CEDEC 2015、SQUARE ENIX PUBLICATIONS) http://www.jp.square-enix.com/tech/publications.html

今村 紀之、川地 克明
FINAL FANTASY XV -EPISODE DUSCAE- のアニメーション ~接地感向上のためのとりくみ~
(CEDEC 2015、SQUARE ENIX PUBLICATIONS) http://www.jp.square-enix.com/tech/publications.html

著者
Fabien Gravot (ファビアン グラヴォ)
株式会社スクウェア・エニックス
2011年よりテクノロジー推進部AIリサーチャーとして入社。FINAL FANTASY XIVとFINAL FANTASY XVでナビゲーション・メッシュを担当する。前職ではロボットの人工知能や自動走行の業務に携わる。「実際の重たい制御よりもリスクの少ないゲームのほうがより自由にプログラミングできる」と考えゲーム産業へ。 2004年にフランスのPaul Sabatier大学からコンピュータ・サイエンスの博士号を取得。
著者
Hendrik Skubch(ヘンドリック スクバ)
株式会社スクウェア・エニックス
2013年よりテクノロジー推進部 AIリサーチャーとして入社。ゲームAIに関して全般的に新しいテクノロジーを開発している。2014年よりシニアAIエンジニアとしてFINAL FANTASY XVの開発に参加。ゲーム産業に入る前はロボットにおける協調システムを開発し、ロボカップサッカー・チームのリーダーとして活躍した。2012年にドイツのKassel大学よりロボットチームの仕事で博士号を取得。
著者
Ingimar Gudmundsson(インギマル グードムンソン )
株式会社スクウェア・エニックス
2013年よりテクノロジー推進部AIエンジニアとして入社。キャラクターモーション、シミュレ―ション、ワークフローツールを専門としてきた。現在はFINAL FANTASY XVの開発に従事。ゲーム産業における経験も長く、バトルAIプログラマとして参加したリアルタイム・バトルストラテジーゲーム「Total War: Shogun 2」(2011、Creative Assembly)はBAFTA賞を受賞した。「Empire: Total War」 (2009) でゲーム産業でデビューし、「Napoleon: Total War」 (2010)の開発にも参加している。アイスランド大学から物理学士号、Exeter大学から応用人工知能の修士号を取得。
株式会社スクウェア・エニックス
第2ビジネス・ディビジョン プログラマ。東京大学大学院修了。弾性体シミュレーションおよびレイトレーシングに関するデータ構造の研究を行う。2010年株式会社スクウェア・エニックス入社後、Luminous Studioの開発に従事。アニメーション関係のツール・ワークフロー設計を中心に業務を行う。現在はFINAL FANTASY XVチームにおいてアニメーション関連の技術相談および仕様実装を担当している。
株式会社スクウェア・エニックス

テクノロジー推進部 リードAIリサーチャー。京都大学卒。「FINAL FANTASY XV」リードAIアーキテクト。2004年よりデジタルゲームにおける人工知能の開発・研究に従事。国際ゲーム開発者協会日本ゲームAI専門部会チェア、日本デジタルゲーム学会理事、芸術科学会理事、人工知能学会編集委員、CEDEC委員会委員。

連載記事一覧

Think IT会員サービスのご案内

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスのご案内

関連記事