最終更新日:
VR元年と呼ばれた2016年から2019年にかけて、さまざまなVRが普及しています。
特にゲーム用途では、家庭用ゲーム機器としてPlayStation VRが発売されるなど注目を集め、今後もVRに関するコンテンツやプラットフォームの拡大が予想されます。
そして、ドラゴンクエストやファイナルファンタジーなどを手がけるスクウェア・エニックスも、「結婚指輪物語VR」や「ドラゴンクエストVR」を提供しています。
今回はスクウェアエニックスの本社にお邪魔して、開発中のVRゲームを体験させていただきました。
声で操作できるVRゲーム?
2018年12月4日~7日まで行われた「SIGGRAPH Asia 2018」のプログラム「REAL TIME LIVE!」でスクウェア・エニックスは以下のような発表をしました。
ゲームの内容は、プレイヤーがキャラクターに指示を出しながら、壊れた宇宙船を修理していくというものです。
従来のVRゲームでは不可能だった、音声での指示や指差しによる物の指定など、より自然に近い操作を行えるのが特徴です。
実際に私たちAINOW編集部もゲームを体験させていただきました。
体験した感想としては、まず最初に驚いた点として、音声認識にウェイクワードが無いことです。ウェイクワードというのは、「OK Google」や「Hey Siri」といった言葉で人間が話す言葉を認識する状態にするためのワードです。
体験する前は、名前を呼ばないと、反応してくれない、聞いてくれないと思っていましたが、可愛らしいキャラクターに「こんにちは!」と話しかけてみると、宙を舞って喜んでくれました。
そして、キャラクターに指示を出していくのですが、さまざまな方法で指示をすることができました。
例えば、「タンクを取って、パイプに取り付けて」といった自然な会話での指示や、コントローラーを使って「(タンクを指差しながら)あれを拾って、(パイプを指さす)あれに付けて」のような指示を出すこともできるのです。
驚くべきは、音声で指示をするときのオブジェクトの名称が決まっていないことです。
つまり、「赤いやつ」や「プラグ」、「クリップ」など、特定のワードでなくても推測し、どのオブジェクトを指しているのかを理解してくれます。
また、通常のVRゲームの操作は慣れるまで時間がかかってしまうのですが、指差しや話しかけるだけなのですぐに操作に慣れることができ、楽しむことができました。
ゲームAIを開発するにあたって
このVRを開発した3人に伺うと、このゲームAIの開発プロジェクトには以下の2つのモチベーションがあったと言います。
- 音声認識システムによるインタラクション
- 独立性の高いキャラクターAIの開発
ドリアンクール氏:1つ目のモチベーションについては、VRは従来のモニター越しにゲーム画面を見るのではなく、ゲームの世界に自分が入り込んでいるような感覚を感じることができます。没入感の高いVRゲームでは、ゲーム内のキャラクターとの距離を自然に感じられ、より自然なインターフェースでの操作がしたくなるはずです。
2つ目に、技術の進歩に伴ってグラフィックスが向上し、今後はアニメーションやゲームAIの部分にも注力されていくだろうと考えていますが、従来のAIよりもっと独立性の高く柔軟なAIが必要だと考えています。
また、今回のゲームAIの開発について三宅氏は以下のような思いがあると言います。
三宅氏:これからの世の中にはもっと柔軟なAIが必要になります。VRやキャラクターインタラクションを楽しむゲームAIには、従来の会話システムで用いられているような硬いAIではなく、柔らかい意思決定を持つAIを作る必要がありました。
今回のようになるべく柔軟なAIを作って、ユーザーに楽しんで貰いたいです。
音声認識技術と言葉の理解
今回、日本語ユーザーの言葉を認識する音声認識エンジンには、京都大学と名古屋大学で開発されているオープンソース「Julius」を使用しているそうです。
言葉にタイムスタンプがあるJuliusは、リアルタイムで音声認識をすることができます。
たとえばユーザーの喋った言葉の中に指示語があったとき、タイムスタンプによって一番近い言葉を見つけてきて認識します。
ここから先は、ユーザ(人間)の言葉をどのようにAIが理解するかの説明していきます。
まず、認識した言葉をAIが認識できる形式に変換するために、グラマーパーサー(Grammar Parser)によって言葉を分解していきます。
例
Pick up an enormous apple → [Verb: Pick up] [Predicate: enormous] [Object: apple]
ここで、同じ言葉の中でも、複数の意味がある言葉の存在に注意しなければなりません。
例えば、
- 「雲(くも)」と「蜘蛛(くも)」
- 「〇〇を取ってください」と「〇〇を撮ってください」
などがありますね。
AIは基本的に1つの形式として認識をする必要があるため、言葉をそのまま記憶するのではなく、「言葉を抽象化した意味」を記憶するようにしています。言葉の中にある意味を見つけるために、WordNetと呼ばれる言葉の概念データベースシステムを利用しています。
WordNetを用いて言葉の概念を抽出することによって、AIは自らの内部にある行動やオブジェクトの中で関係性が最も高いスコアのものと結びつけ、記憶します。
以上のように、AIがユーザーのさまざま言葉に対応できる秘密は「言葉のタイムスタンプ」と「言葉の中にある意味を特定・認識」することによって実現しています。
AIの持つ感情機能
独立性が高く、柔軟なゲームAIは感情機能によって実現しています。
このVR内のAIの感情機能は、以下の三つのモジュールによって構成されています。
AIの感情機能は「パーソナリティモジュール」によって「エモーションモジュール」と「ムードモジュール」によって構成されます。
エモーションモジュールは、OCCモデルを基に実装されているそうです。感情の種類は、行動の結果に対する「喜び」や「不快」、オブジェクトに対して「好き」や「嫌い」を生成し、全部で12種類あるとのことです。
ムードモジュールは、PADモデルに基づいて実装されているそうです。PADモデルでは、感情の強さを細かく表現することができます。
では、感情機能がAIの行動にどのような影響を与えるのでしょうか。
例えば、ユーザーが電気を帯びたバッテリーをとって欲しいとAIに指示するとします。
指示に従ったエージェントは電気を帯びているバッテリーを持ってしまい、感電してしまいます。
この時、AIはオブジェクトに対して「嫌い」といった感情を生成し、「バッテリー + 電気」のオブジェクトが危険だと記憶するのです。
そして、電気を帯びているバッテリーに触れると感電してしまうことを記憶している状態で、再び指示を出すとAIは「嫌だ」として行動しませんでした。
今回の例では、オブジェクトに対して「嫌い」といった感情を生成しましたが、自らの行動がうまくいった場合には喜んだり、ユーザーに嫌なことをされたりすると怒るような行動も見せてれます。
このように感情機能によって、細かい感情表現を可能にし、そこからAIの行動が変化することも可能になりました。
柔軟な行動を実現するユーティリティシステム
このゲームAIの意思決定は、ユーティリティベースによって構築されているそうです。
ユーティリティベースのAIは、自分自身の効用(満足度)が最も高くなる行動を選択します。
これにより既存のAIに比べシンプルで柔軟なモデルであるため、さまざまな行動をとることが可能になっています。
例えば、このゲームAIの中にあるパーソナリティモジュールには、レジネス(怠惰)というパラメータがあります。レジネスの値が高いAIと低いAIで行動も異なるものになります。
以下の例では、レジネス(laziness=怠惰)の度合いに応じて行動ルールが変化する例を示しています。
ユーザは「赤いリンゴを取ってきて」とAIに指示を出したとしましょう。
レジネスの低いAIは、赤いリンゴは遠くにあるのですが、「距離の近いリンゴでいいや」と判断し、緑色のリンゴを取ってきてしまうのです。
では、逆にレジネスが高かった場合では、どうなるでしょうか。AIは緑色のリンゴではなく、ちゃんと赤色のリンゴを取ってくるでしょう。
レジネスの値が最高の場合では、赤色のリンゴがどんなに遠くても、頑張って取ってきてくれるのです。
このようにレジネスという一つのパラメータを変えるだけで、AIの行動が変化します。ユーティリティベースで実装されたこのゲームAIは、従来のAIには見られなかったさまざまな行動を見せてくれるのではないでしょうか。
さいごに
VRゲームの没入感を高める仕組みとして、グラフィックスの向上や触覚デバイスなどが盛んに開発されています。より現実に近くなったゲームでは、より自然な操作性が重要になってくるでしょう。
自然な操作性を実現したゲーム内におけるAIも同時に、多様な入力に対応する必要があります。今回の開発されたAIのように、柔軟に行動することができるゲームAIが今後、重要になってくるのではないでしょうか。
また、今回は単一のAIのみでしたが、異なるAIが複数いる状況で、AI同士で協力したり争ったりと、多様に影響しあうことが出来ればさらに面白くなるのではないかと感じました。