Enjoy Engineer Life

C#,Unity,C++,UE4などの技術ブログや雑記を徒然なるままに書いていきます。

【読書メモ】ゲームAIを学ぶ〜 1.3 Selling the Illusion 前編〜

 

最初に

本記事は以下の本から得た知見を自分用のメモも兼ねて要約したり、まとめた記事となります。ただし本の内容をそのまま書き写ししたり翻訳しているわけではなく、自身で調べたものや感想が大幅に混じっています。あと英語力が足りないため意味合いも違うかもしれません。参考程度に見てもらえればと思います。あと間違ってたら教えてもらえると嬉しいです。

f:id:rossamu:20190103020035p:plain

https://www.amazon.co.jp/Game-AI-Pro-Collected-Professionals/dp/1498742580

 

1.3 Selling the Illusion

1.2で錯覚がどのように働き、強められるのかを学習しました。次は錯覚をより促進させるために、「期待値」と「パフォーマンス」について解説されるようです。

 

1.3.1 Promoting the Quality of the AI

 

期待値を管理する方法の一つとして、プレイヤーにAIの強みを教える手法があります。何年間もいくつかのゲームがプレスリリースやインタビューなどで自分たちのゲームAIのクオリティをアピールしてきました。その中には成功例もありますが、もちろんうまくいかなかった例も存在します。ここでは一旦省略します(本自体には具体例が書いてあります)。

 

期待値をうまく管理するために、ロード画面にゲームヒントという形でAIの側面を強調するという方法があります。これはつまり、プレイヤーに対して、AIがどのような考えで特定の行動を行うのかを、ヒントとして教えるという事です。これによってAIとゲームの両方をより興味深いと感じてもらえるかもしれません。

 

もしクリエイターの方がゲーム内で注目してほしいポイントがあれば、それをプレイヤーに明示的に知らせることは有効かもしれません。ただし、その場合はそのポイントに対して自信を持つ必要があります。

 

 

1.3.2 Perform with Animation and Dialog

AIの印象付けを行うためには、短い間に何かしらのパフォーマンスを見せる必要があります。これは、精緻なアニメーションと、会話を行わせる事で達成可能です。ただし、AIプログラマーが直接これらを作成することはありません。AIプログラマーができる最善の手は、経営陣に対してそれらのアセット作成は必要であると、説得力のある主張を行うことです。これ自体はとても重要であるため、最優先事項となる必要があります。

この重要さを理解するために、ごく短い思考実験を行ってみましょう。プレイヤーがAIキャラクターのことを理解するまでの過程全てを想像してみましょう。

例えばキャラクターが笑ったり、倒れたり、攻撃しているといった動きを通じて、プレイヤーはキャラクターを理解しようとします。これをAIのボキャブラリーと呼びます。AIのボキャブラリーは、全ての会話クリップや、声、全アニメーション、全インタラクションで構成されています。

 

もし、あるAIキャラクターのサウンドクリップが「唸り声」と、「死亡時の叫び声」の2つと、アニメーションがIdle、Walk、Attack、Dieの4つだけだったとしたら、このAIのボキャブラリーは酷く矮小なものとなります。この場合は、皮肉にも、キャラクターが死ぬ瞬間が、最もプレイヤーの興味を引く時となります。

 

このレベルの限られたボキャブラリーだと、高い知性を持つAIであるとプレイヤーに伝えることは事実上不可能です。幸いにも、プログラム的な方法でAIボキャブラリーに、頭部の見かけ部分を追加することが可能です。AIキャラクターの頭と視線を直接コントロールできれば、AIキャラクターがステージ内のオブジェクトを認識したり、オブジェクト同士を比較したり、アクションを予測したりなど、本当に環境を認識しているかのように見せることができます。

 

 では簡単な例で確認してみましょう。AIキャラクターの左右に敵が二人いたとします。複雑な評価処理を実行した後に、AIは左の敵と戦うのがベストだと判断します。ここでの問題は、この精緻な判断が目に見えない形で即時に行われていることです。もちろんこのフローによってAIが瞬間的に賢い選択を行っていて、右の敵は今は考えなくていいとプレイヤーに伝えることができます。

しかし、もしAIが左の敵を攻撃する前に、敵それぞれを見て大きさを測ったように見えたり、左の敵と戦ってる最中も時折右の敵を振り返って監視していたらプレイヤーはどう感じるでしょう。意識があって親近感が持てるAIキャラクターだと感じさせることは、プレイヤーを楽しませる良い演出となります。

 

プログラマーが制御可能なもう1つのアニメーション要素は速度です。動きを速くすることで、動揺や興奮、錯乱、神経質な様子を伝えることが出来ます。一方、ゆっくりとした動きではリラックスしてたり落ち着いていたり、状況把握している様子を伝えられます。

 

ゲームAIに知性を感じさせるための手法として、適切な状況で曖昧なリアクションをさせるというものもあります。プレイヤーが自由入力でAIと対話を行った際に、プレイヤーの発言をAIが理解できなかったり、不適切な発言をしていた場合は曖昧なリアクションをさせるのです。このリアクションの解釈はプレイヤーに任されます。(シーマンとかで活用してそうな気もします)

 

他にも、AIキャラクター同士で対話させることで知性を強調させることもできます。AIモジュール(レベルAI、キャラクターAI等)は現在の状況をモニタし、適切なタイミングで対話イベントを呼びだします。

 

 

最後に

次回は後半でもう三つの部分を書いていこうと思います。

翻訳やっと再開し始めました…遅い…。