(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024174947
(43)【公開日】2024-12-17
(54)【発明の名称】人工知能を対象とする効率的なゲームプレイ訓練
(51)【国際特許分類】
A63F 13/60 20140101AFI20241210BHJP
A63F 13/35 20140101ALI20241210BHJP
【FI】
A63F13/60
A63F13/35
【審査請求】未請求
【請求項の数】27
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024153048
(22)【出願日】2024-09-05
(62)【分割の表示】P 2023520250の分割
【原出願日】2022-04-11
(31)【優先権主張番号】63/193,244
(32)【優先日】2021-05-26
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
2.Blu-ray
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】マルツ,ネイサン・サン
(72)【発明者】
【氏名】モラルド,オラシオ・エルナン
(72)【発明者】
【氏名】マイルズ,スチュアート
(72)【発明者】
【氏名】ハーラー,レオポルト
(72)【発明者】
【氏名】坂▲崎▼ 日和子
(57)【要約】 (修正有)
【課題】ゲームのテスト方法を改善する。
【解決手段】ゲームアプリケーションのゲームプレイデータモデルは、リモート学習サービスを実行する1つ以上のサーバーコンピューティングシステムからクライアントコンピューティングデバイスに提供される。提供されたゲームプレイデータモデルを用いてアクターコンポーネントが生成した推論に少なくとも一部基づいて、ローカルアクターコンポーネントが実行した人工ゲームプレイアクションのゲーム内結果に基づいて、ローカルアクターコンポーネントによって観測データが生成される。受信した観測データに基づいて、リモート学習サービスは、ゲームプレイデータモデルを修正し、修正後のゲームプレイデータモデルをローカルアクターコンポーネントに提供して将来の人工ゲームプレイアクションを改善する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
サーバー方法であって、
プログラマティックインタフェースを介して1つ以上のサーバーコンピューティングシステムからリモートクライアントコンピューティングデバイスに、前記リモートクライアントコンピューティングデバイス上で実行されているゲームアプリケーションのゲームプレイデータモデルを提供することと、
提供された前記ゲームプレイデータモデルを用いて前記リモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントが生成した推論に少なくとも一部基づいて、前記ゲームアプリケーション内で前記アクターコンポーネントが実行した人工ゲームプレイアクションから生成された観測データを、前記プログラマティックインタフェースを介して前記リモートクライアントコンピューティングデバイスから受信することと、
前記1つ以上のサーバーコンピューティングシステムが、受信した前記観測データに基づいて前記ゲームプレイデータモデルを修正することと、
前記プログラマティックインタフェースを介して前記リモートクライアントコンピューティングデバイスに修正後の前記ゲームプレイデータモデルを提供することとを含む、方法。
【請求項2】
前記1つ以上のサーバーコンピューティングシステムが、前記リモートクライアントコンピューティングデバイス上で実行されている前記アクターコンポーネントの入力変数に前記ゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報を、前記プログラマティックインタフェースを介して受信することをさらに含む、請求項1に記載の方法。
【請求項3】
前記ゲームアプリケーションの前記1つ以上の出力状態は、前記ゲームアプリケーションの仮想環境内のプレーヤー基準位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体の位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体に関連する動きベクトル、前記ゲームアプリケーションの前記仮想環境の1つ以上の態様に関するジオメトリ情報、および/または前記ゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含む、請求項2に記載の方法。
【請求項4】
前記1つ以上のサーバーコンピューティングシステムが、前記ゲームアプリケーションの人間のユーザが利用可能なアクションに前記アクターコンポーネントの1つ以上の出力変数の各々を対応付けたコントロール情報を受信することをさらに含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記ゲームプレイデータモデルを修正することは、前記ゲームアプリケーションの人間のユーザが前記ゲームアプリケーション内で実行したゲームプレイアクションに基づいて生成された追加の観測データにさらに基づく、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記追加の観測データに基づいて前記ゲームプレイデータモデルを修正することは、深層学習人工知能を用いて前記ゲームプレイデータモデルを修正することを含む、請求項5に記載の方法。
【請求項7】
前記人工ゲームプレイアクションに基づいて前記ゲームアプリケーションのテストデータを生成することをさらに含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
少なくとも1つの予め定義された基準を満たす観測データの集約を受信したことに応答して、受信した前記観測データに基づいて前記ゲームプレイデータモデルを修正することをさらに含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記少なくとも1つの基準は、所定期間、所定量の観測データ、および前記リモートクライアントコンピューティングデバイスにおいて受信した明確なリクエストのうち、少なくとも1つを含む、請求項8に記載の方法。
【請求項10】
請求項1~9のいずれか1項に記載の方法を実行するためのコンピュータシステム。
【請求項11】
実行可能な命令を格納した非一時的なコンピュータ読み取り可能な媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサを、請求項1~9のいずれか1項に記載の方法を実行するように操作する、非一時的なコンピュータ読み取り可能な媒体。
【請求項12】
サーバーであって、
ネットワークインタフェースと、
1つ以上のプロセッサと、
実行可能な命令のセットを格納したメモリとを備え、前記実行可能な命令のセットは、前記1つ以上のプロセッサを操作して、
入力変数にゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報に少なくとも一部基づいて、前記ゲームアプリケーションのゲームプレイデータモデルを生成させ、
生成した前記ゲームプレイデータモデルをリモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントにプログラマティックインタフェースを介して提供させ、
生成した前記ゲームプレイデータモデルを用いて前記アクターコンポーネントが生成した推論に基づいて、前記ゲームアプリケーション内で前記アクターコンポーネントが実行した人工ゲームプレイアクションから生成された観測データを、前記プログラマティックインタフェースを介して前記アクターコンポーネントから受信させ、
受信した前記観測データに基づいて、生成した前記ゲームプレイデータモデルを修正させ、
前記ゲームアプリケーション内で追加の人工ゲームプレイアクションを実行する際に前記アクターコンポーネントが使用するために、前記プログラマティックインタフェースを介して前記アクターコンポーネントに修正後の前記ゲームプレイデータモデルを提供させる、サーバー。
【請求項13】
前記リモートクライアントコンピューティングデバイスは、前記ゲームアプリケーションのインスタンスを実行し、前記観測データは、前記リモートクライアントコンピューティングデバイスが実行した前記ゲームアプリケーションの前記インスタンス内で前記アクターコンポーネントが実行した人工ゲームプレイアクションから生成される、請求項12に記載のサーバー。
【請求項14】
前記実行可能な命令のセットは、前記1つ以上のプロセッサをさらに操作して、前記リモートクライアントコンピューティングデバイス上で実行されている前記アクターコンポーネントの入力変数に前記ゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報を、前記プログラマティックインタフェースを介して受信させる、請求項12または13に記載のサーバー。
【請求項15】
前記ゲームアプリケーションの前記1つ以上の出力状態は、前記ゲームアプリケーショ
ンの仮想環境内のプレーヤー基準位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体の位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体に関連する動きベクトル、前記ゲームアプリケーションの前記仮想環境の1つ以上の態様に関するジオメトリ情報、および/または前記ゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含む、請求項14に記載のサーバー。
【請求項16】
前記実行可能な命令のセットは、前記1つ以上のプロセッサをさらに操作して、前記ゲームアプリケーションの人間のユーザが利用可能なアクションに前記アクターコンポーネントの1つ以上の出力変数の各々を対応付けたコントロール情報を、前記プログラマティックインタフェースを介して受信させる、請求項12~15のいずれか1項に記載のサーバー。
【請求項17】
前記実行可能な命令のセットは、前記1つ以上のプロセッサをさらに操作して、前記ゲームアプリケーションの人間のユーザが前記ゲームアプリケーション内で実行したゲームプレイアクションから生成された追加の観測データを、前記プログラマティックインタフェースを介して受信させ、前記ゲームプレイデータモデルを修正させることは、受信した前記追加の観測データにさらに基づく、請求項12~16のいずれか1項に記載のサーバー。
【請求項18】
受信した前記追加の観測データに基づいて前記ゲームプレイデータモデルを修正させることは、深層学習人工知能を用いて前記ゲームプレイデータモデルを修正させることを含む、請求項17に記載のサーバー。
【請求項19】
1つ以上のプロセッサが実行するアクターコンポーネントが、プログラマティックインタフェースを介して、1つ以上のリモートサーバーコンピューティングシステム上で実行されている機械学習コンポーネントからゲームアプリケーションのゲームプレイデータモデルを受信することと、
前記1つ以上のプロセッサが、前記ゲームアプリケーションのインスタンスを実行することと、
前記ゲームプレイデータモデルを用いて前記アクターコンポーネントが生成した推論に少なくとも一部基づいて、前記ゲームアプリケーションの前記実行インスタンス内で前記アクターコンポーネントが実行した人工ゲームプレイアクションから生成された観測データを、前記プログラマティックインタフェースを介して前記機械学習コンポーネントに提供することと、
提供した前記観測データに少なくとも一部基づいた修正後のゲームプレイデータモデルを、前記1つ以上のリモートサーバーコンピューティングシステム上で実行されている前記機械学習コンポーネントから前記プログラマティックインタフェースを介して受信することとを含む、方法。
【請求項20】
修正後の前記ゲームプレイデータモデルを用いて前記アクターコンポーネントが生成した追加の推論に少なくとも一部基づいて1つ以上の追加の人工ゲームプレイアクションを実行することをさらに含む、請求項19に記載の方法。
【請求項21】
前記人工ゲームプレイアクションに基づいて前記ゲームアプリケーションのテストデータを生成することをさらに含む、請求項19または20に記載の方法。
【請求項22】
前記ゲームプレイデータモデルは、前記アクターコンポーネントの入力変数に前記ゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報に少なくとも一部基づく、請求項19~21のいずれか1項に記載の方法。
【請求項23】
前記ゲームアプリケーションの前記1つ以上の出力状態は、前記ゲームアプリケーションの仮想環境内のプレーヤー基準位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体の位置、前記ゲームアプリケーションの前記仮想環境内の前記プレーヤー基準位置に対する物体に関連する動きベクトル、前記ゲームアプリケーションの前記仮想環境の1つ以上の態様に関するジオメトリ情報、および/または前記ゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含む、請求項22に記載の方法。
【請求項24】
前記ゲームプレイデータモデルは、前記ゲームアプリケーションの人間のユーザが利用可能なアクションに前記アクターコンポーネントの1つ以上の出力変数の各々を対応付けたコントロール情報に少なくとも一部基づく、請求項19~23のいずれか1項に記載の方法。
【請求項25】
修正後の前記ゲームプレイデータモデルが追加の観測データにさらに基づくよう、前記ゲームアプリケーションの人間のユーザが前記ゲームアプリケーション内で実行したゲームプレイアクションから生成された前記追加の観測データを生成することをさらに含む、請求項19~24のいずれか1項に記載の方法。
【請求項26】
請求項19~25のいずれか1項に記載の方法を実行するためのコンピュータシステム。
【請求項27】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサを操作して請求項19~25のいずれか1項に記載の方法を実行させる実行可能な命令を格納した、非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【背景技術】
【0001】
背景
消費者向けのGPU(Graphics Processing Unit)と、一般に普及しているブロードバンド可用性と、市場の動きとが組み合わさって、相当なスコープおよび複雑性を有するゲームが作られてきた。最近のゲームは、これまでのゲームよりも複雑であるだけでなく、ゲームを設計およびプレイする方法の根本的な変化も反映している。単純な直線的な屋内階層は、巨大で写真とほとんど変わらない屋外空間に置き換わり、脚本が書かれた一続きの場面は、動的シミュレーションに置き換わり、手続主義は、種類の豊富さがほぼ無限である世界を可能にした。
【発明の概要】
【発明が解決しようとする課題】
【0002】
ゲームをプレイする方法がこのように劇的にシフトしたにも関わらず、テスト方法はほとんど変わっていない。ゲームは、本質的に、高次元状態空間内部でのシステム間の複雑かつ突発的なインタラクションを有するシミュレーションである。これは、単体テストのようなコード重視の方法の有用性を限定してしまう。その結果、ゲームのテストは、圧倒的に、手作業の処理であり、ゲームを繰り返しプレイして欠陥を探す人間に大きく依存している。残念ながら、これらのチームの規模は、もはや最近のゲームの複雑さに合わせることができず、発売の遅延および製品の品質低下につながっている。
【課題を解決するための手段】
【0003】
実施の形態の概要
本明細書では、ローカルで実行されたアクターコンポーネントが、リモート学習サービスが生成する1つ以上のゲームプレイデータモデルに基づいて、ゲームアプリケーションにおいてリアルタイムのゲームプレイアクションを実行するように訓練される実施の形態について説明する。ゲームアプリケーションのゲームプレイデータモデルは、リモート学習サービスを実行する1つ以上のサーバーコンピューティングシステムからクライアントコンピューティングデバイスに提供される。提供されたゲームプレイデータモデルを用いてアクターコンポーネントが生成した推論に少なくとも一部基づいて、ローカルアクターコンポーネントが実行した人工ゲームプレイアクションのゲーム内結果に基づいて、ローカルアクターコンポーネントによって観測データが生成される。受信した観測データに基づいて、リモート学習サービスは、ゲームプレイデータモデルを修正し、修正後のゲームプレイデータモデルをローカルアクターコンポーネントに提供して将来の人工ゲームプレイアクションを改善する。観測データに基づいてゲームプレイデータモデルを修正することは、特に、リモートクライアントコンピューティングデバイスがローカルで生成した、リモートクライアントコンピューティングデバイスから受信した観測データを用いてゲームプレイデータモデルを(たとえば、リアルタイムで)更新することを含み得る。
【0004】
特定の実施形態では、方法は、プログラマティックインタフェースを介して1つ以上のサーバーコンピューティングシステムからリモートクライアントコンピューティングデバイスに、リモートクライアントコンピューティングデバイス上で実行されているゲームアプリケーションのゲームプレイデータモデルを提供することと、提供されたゲームプレイデータモデルを用いてリモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントが生成した推論に少なくとも一部基づいて、ゲームアプリケーション内でアクターコンポーネントが実行した人工ゲームプレイアクションから生成された観測データを、プログラマティックインタフェースを介してリモートクライアントコンピューティングデバイスから受信することと、1つ以上のサーバーコンピューティング
システムが、受信した観測データに基づいてゲームプレイデータモデルを修正することと、プログラマティックインタフェースを介してリモートクライアントコンピューティングデバイスに修正後のゲームプレイデータモデルを提供することとを含んでもよい。
【0005】
この方法は、1つ以上のサーバーコンピューティングシステムが、リモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントの入力変数にゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報を、プログラマティックインタフェースを介して受信することをさらに含んでもよい。ゲームアプリケーションの1つ以上の出力状態は、ゲームアプリケーションの仮想環境内のプレーヤー基準位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体の位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体に関連する動きベクトル、ゲームアプリケーションの仮想環境の1つ以上の態様に関するジオメトリ情報、および/またはゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含んでもよい。
【0006】
方法は、1つ以上のサーバーコンピューティングシステムが、ゲームアプリケーションの人間のユーザが利用可能なアクションにアクターコンポーネントの1つ以上の入力変数の各々を対応付けたコントロール情報をプログラマティックインタフェースを介して受信することをさらに含んでもよい。
【0007】
ゲームプレイデータモデルを修正することは、ゲームアプリケーションの人間のユーザがゲームアプリケーション内で実行したゲームプレイアクションに基づいて生成された追加の観測データにさらに基づいてもよい。
【0008】
受信した追加の観測データに基づいてゲームプレイデータモデルを修正することは、深層学習人工知能を用いてゲームプレイデータモデルを修正することを含む。方法は、人工ゲームプレイアクションに基づいてゲームアプリケーションのテストデータを生成することをさらに含んでもよい。
【0009】
方法は、観測データをたとえば観測データのバッチの形式で1つ以上のサーバーコンピューティングシステムに送信する前に、リモートクライアントコンピューティングデバイスにおいて集約することをさらに含んでもよい。これにより、1つ以上のサーバーコンピューティングシステムとリモートクライアントコンピューティングデバイスとの間の通信におけるデータトラフィックが低減されるであろう。受信した観測データに基づいてゲームプレイデータモデルを修正することは、その後、観測データの集約が少なくとも1つの予め定義された基準を満たしたことに応じて実行されてもよい。少なくとも1つの基準は、たとえば、所定期間、所定量の観測データ(たとえば、バイト単位またはその他の数量単位で測定される)、および、リモートクライアントコンピューティングデバイスにおいて受信した、たとえば1つ以上のサーバーコンピューティングシステムからの明確なリクエストのうち、少なくとも1つを含んでもよい。
【0010】
特定の実施形態では、サーバーは、ネットワークインタフェースと、1つ以上のプロセッサと、実行可能な命令のセットを格納したメモリとを備えてもよい。実行可能な命令のセットは、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサを操作して、入力変数にゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報に少なくとも一部基づいて、ゲームアプリケーションのゲームプレイデータモデルを生成させ、生成したゲームプレイデータモデルをリモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントにプログラマティックインタフェースを介して提供させ、生成したゲームプレイデータモデルを用いてアクターコンポーネントが生成した推論に基づいて、ゲームアプリケーション内でアクターコンポーネ
ントが実行した人工ゲームプレイアクションから生成された観測データを、プログラマティックインタフェースを介してアクターコンポーネントから受信させ、受信した観測データに基づいて、生成したゲームプレイデータモデルを修正させ、ゲームアプリケーション内で追加の人工ゲームプレイアクションを実行する際にアクターコンポーネントが使用するために、プログラマティックインタフェースを介してアクターコンポーネントに修正後のゲームプレイデータモデルを提供させてもよい。
【0011】
リモートクライアントコンピューティングデバイスは、リモートクライアントコンピューティングデバイスは、ゲームアプリケーションのインスタンスを実行してもよく、観測データは、リモートクライアントコンピューティングデバイスが実行したゲームアプリケーションのインスタンス内でアクターコンポーネントが実行した人工ゲームプレイアクションから生成される。
【0012】
実行可能な命令のセットは、1つ以上のプロセッサをさらに操作して、リモートクライアントコンピューティングデバイス上で実行されているアクターコンポーネントの入力変数にゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報を、プログラマティックインタフェースを介して受信させてもよい。ゲームアプリケーションの1つ以上の出力状態は、ゲームアプリケーションの仮想環境内のプレーヤー基準位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体の位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体に関連する動きベクトル、ゲームアプリケーションの仮想環境の1つ以上の態様に関するジオメトリ情報、および/またはゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含んでもよい。
【0013】
実行可能な命令のセットは、1つ以上のプロセッサをさらに操作して、ゲームアプリケーションの人間のユーザが利用可能なアクションにアクターコンポーネントの1つ以上の入力変数の各々を対応付けたコントロール情報を、プログラマティックインタフェースを介して受信させてもよい。
【0014】
実行可能な命令のセットは、1つ以上のプロセッサをさらに操作して、ゲームアプリケーションの人間のユーザがゲームアプリケーション内で実行したゲームプレイアクションから生成された追加の観測データを、プログラマティックインタフェースを介して受信させてもよく、ゲームプレイデータモデルを修正させることは、受信した追加の観測データにさらに基づく。
【0015】
受信した追加の観測データに基づいてゲームプレイデータモデルを修正させることは、深層学習人工知能を用いてゲームプレイデータモデルを修正させることを含んでもよい。
【0016】
特定の実施形態では、クライアント方法は、1つ以上のプロセッサが実行するアクターコンポーネントが、プログラマティックインタフェースを介して、1つ以上のリモートサーバーコンピューティングシステム上で実行されている機械学習コンポーネントからゲームアプリケーションのゲームプレイデータモデルを受信することと、1つ以上のプロセッサが、ゲームアプリケーションのインスタンスを実行することと、ゲームプレイデータモデルを用いてアクターコンポーネントが生成した推論に少なくとも一部基づいて、ゲームアプリケーションの実行インスタンス内でアクターコンポーネントが実行した人工ゲームプレイアクションから生成された観測データを、プログラマティックインタフェースを介して機械学習コンポーネントに提供することと、提供した観測データに少なくとも一部基づいた修正後のゲームプレイデータモデルを、1つ以上のリモートサーバーコンピューティングシステム上で実行されている機械学習コンポーネントからプログラマティックインタフェースを介して受信することとを含んでもよい。
【0017】
このクライアント方法は、修正後のゲームプレイデータモデルを用いてアクターコンポーネントが生成した追加の推論に少なくとも一部基づいて1つ以上の追加の人工ゲームプレイアクションを実行することをさらに含んでもよい。
【0018】
クライアント方法は、人工ゲームプレイアクションに基づいてゲームアプリケーションのテストデータを生成することをさらに含んでもよい。
【0019】
ゲームプレイデータモデルは、アクターコンポーネントの入力変数にゲームアプリケーションの1つ以上の出力状態の各々を対応付けたコントロール情報に少なくとも一部基づいてもよい。ゲームアプリケーションの1つ以上の出力状態は、ゲームアプリケーションの仮想環境内のプレーヤー基準位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体の位置、ゲームアプリケーションの仮想環境内のプレーヤー基準位置に対する物体に関連する動きベクトル、ゲームアプリケーションの仮想環境の1つ以上の態様に関するジオメトリ情報、および/またはゲームアプリケーションのゲームプレイに関連する1つ以上のゲーム内報酬インジケーターを含む群の1つ以上を含んでもよい。
【0020】
ゲームプレイデータモデルは、ゲームアプリケーションの人間のユーザが利用可能なアクションにアクターコンポーネントの1つ以上の出力変数の各々を対応付けたコントロール情報に少なくとも一部基づいてもよい。
【0021】
クライアント方法は、修正後のゲームプレイデータモデルが追加の観測データにさらに基づくよう、ゲームアプリケーションの人間のユーザがゲームアプリケーション内で実行したゲームプレイアクションから生成された追加の観測データを生成することをさらに含んでもよい。
【0022】
本開示は、添付の図面を参照することによって当業者に理解され、その数多くの特徴および利点が当業者に明らかになるであろう。異なる図面における同一の参照符号の使用は、同様または同一の項目を示す。
【図面の簡単な説明】
【0023】
【
図1】いくつかの実施の形態に係る、例示的なネットワーク化されたゲーム訓練システムを示す。
【
図2】いくつかの実施の形態に係る、別の例示的なネットワーク化されたゲーム訓練システムを示す。
【
図3】1つ以上の実施の形態に従って実装されたGT(Gameplay Trainer)システムの概略ブロック図を示す。
【
図4】1つ以上の実施の形態に係る、GTシステムの動作ルーチンの概要を説明するブロックフロー図である。
【発明を実施するための形態】
【0024】
詳細な説明
本明細書において説明する技術の実施の形態によって、ゲームアプリケーションの開発者(「ゲーム開発者」とも呼ばれる)は、AI(人工知能)を利用して、1つ以上のゲームアプリケーション(たとえば、ビデオゲームまたはその他のシミュレーション)をプレイおよびテストできる実行可能なアクターコンポーネントを訓練できるようになる。このような技術、それらの様々な実施の形態は、参照の便宜上、本明細書においてGT(Gameplay Trainer)システムと称される場合があり、ゲーム開発者がゲームアプリケーションにリンクし得るSDK(ソフトウェア開発キット)、および、当該SDKが特定のゲームアプリケーションに関連するゲームプレイモデルを訓練するために用い
るリモート学習サービスの両方を利用し得る。よって、上位レベルでは、ゲームとGTシステムとのインタラクションは、ゲームと人間のプレーヤーとのインタラクションに類似するであろう。ゲームは、GTシステムに送られる出力を生成する。GTシステムは、その出力に対する応答方法を評価し、GTシステムが実行したい人工ゲームプレイアクションを返す。その後、ゲームは、これらのアクションを適用し、新しい出力を生成する。このサイクルが繰り返される。
【0025】
特定の実施形態では、Gameplay Trainerは、ゲームプレイデータモデル用いて1つ以上のゲームアプリケーションの各々をプレイおよびテストするための、ローカルで実行中のAI(人工知能)アクターコンポーネントと連動するリモート学習サービスをゲーム開発者に提供する。少なくともいくつかの実施の形態では、ローカルで実行中のアクターコンポーネントが用いるゲームプレイデータモデルは、アクターコンポーネントがゲームアプリケーション内で実行する人工ゲームプレイアクションから収集された観測データに基づいて、(GT学習サービスを介して)GTシステムによって生成される。よって、GTシステムは、コスト感応度、予測可能性、および統合の容易さを含む、ゲーム開発の様々な目的に合わせたソリューションを提供する。GTシステムの特定の実施の形態は、それによって、ゲーム開発者がゲームアプリケーションにGTシステムを素早く統合して有用なゲームプレイデータモデルを生成できるようにするソリューションを提供する。
【0026】
特定の実施形態では、普及しているフレームワークのサポートおよび/または一般的な参照用語の利用などのために、GTシステムは、1つ以上のアプリケーションプログラミングインタフェース(API、本明細書において使用する場合、アプリケーションプログラミングインタフェースまたはその他の適したプログラマティックインタフェースを示し得る)を提供してもよい。様々な実施の形態では、ゲームアプリケーション開発者がプラットフォーム固有のSDK(ソフトウェア開発キット)の使用をゲームアプリケーションに組み込むために、このようなAPIが提供されてもよい。
【0027】
Gameplay Trainerシステムは、有用、フレキシブル、訓練可能、かつゲームアプリケーションにおいて単純に「勝つ」ことよりも目的に向かって前進できるソリューションをゲーム開発者に提供する。一非限定例として、ゲームアプリケーションのゲームプレイデータモデルは、ゲームアプリケーションの人間のプレーヤーがゲーム世界において前進できない可能性が高い、すなわち、人間のプレーヤーが「立ち往生」する可能性の高いゲーム世界の1つ以上のエリアをGTシステムのアクターコンポーネントが判断できるようにし得る。別の非限定例として、ゲームプレイデータモデルは、ゲーム世界において1つ以上のゲーム世界の敵がその地位にしては不適切に力が与えられていること、たとえば、ロールプレイングゲームにおいて下位レベルまたは中間レベルのキャラクターと遭遇に値するよりも敵が強いか弱いかのどちらかであるとGTシステムのアクターコンポーネントが判断できるようにし得る。よって、特定の実施形態では、GTは、ゲーム世界における1つ以上の異なる目的に各々が関連する、ゲームアプリケーションの複数のゲームプレイデータモデルを高速で開発することを強調してもよい。これに代えて、GTシステムは、GTシステムに提供される1つ以上のユーザ指定パラメータを介して識別される目的および/またはGTシステム自体が識別する目的など、複数の目的を含む1つのゲームプレイデータモデル、そうでない場合、複数の目的に向かって前進する1つのゲームプレイデータモデルを開発してもよい。
【0028】
本明細書ではゲームアプリケーションに関する技術および実施の形態について説明するが、様々なシミュレーションシナリオと連動して別の実施の形態を利用し、その他の状況における挙動データモデルおよび/または自動エージェント(たとえば、自動運転車、自律型ロボディクスなど)が生成されてもよいことが分かるであろう。同様に、本明細書で
はゲームアプリケーションテストに関する技術および実施の形態について説明するが、その他の状況におけるこのような挙動データモデルおよび/または自動エージェントが生成および/または利用されてもよい(たとえば、自動プレイエージェントまたは「ボット」開発、ゲーム内自律型仲間キャラクター、人間のプレーヤーとプレイするための生成自動エージェントの開発など)。
【0029】
GTシステムの実施の形態は、各ゲームアプリケーションの1つ以上の態様をテストしたい1人以上の開発者にとっての様々な利点を提供するであろう。一例として、開発者にとって、動作しているゲームを遠隔テストできることは利点であろう。特定の実施形態では、GTアクターコンポーネントは、GTシステムがテストしているゲームアプリケーションの実行インスタンスに関してローカルで動作する。しかしながら、GTシステムは、帯域幅とレイテンシとの制限を暗に示す公共インターネットを横断するゲームへの接続を経由したこのようなテストを可能にする。
【0030】
別の例として、GTシステムは、このようなテストに利用されるコンピューティングリソース(ゲーム開発者にとっては、通常、大変な犠牲である)を減らし得る。本明細書に記載の技術は、ゲームアプリケーションの大量の個々のインスタンスに合わせてスケーリングされたテストを可能にするが、このような技術は、GTシステムが有用なAIを1つのインスタンスから効果的に訓練することも可能にする。
【0031】
別の例として、GTシステムは、1つ以上の関連するゲームエンジン(通常、ゲーム物理およびグラフィカルレンダリングなどの一般的な下位サービスを提供する大きなコードベース)のネイティブサポートを介した1つ以上のゲームアプリケーションのテストを可能にし得る。様々な実施の形態では、様々なこのようなゲームエンジン(たとえば、Unity、Unreal、およびpure C++)および共用論理のコンパイル済みライブラリの各々についての、GTシステムに関連する1つ以上のSDKが提供され得る。
【0032】
特定の実施形態では、GTシステムは、ゲームアプリケーションの最初のゲームプレイモデルを、そのゲームアプリケーションに関して定義された1つ以上のパラメータに基づいて生成し得る。一般に、定義されたパラメータは、通常、観測(プレーヤーが普段体験するゲーム状態)、アクション(ゲームにおいてプレーヤーが行い得る論理的やり取り)、および報酬(GTアクターコンポーネントがどれだけ上手くまたは下手にやっているかを示すもの)という3つのタイプの情報を、GTアクターコンポーネントに提供する。
【0033】
図1は、ネットワーク化されたゲーム訓練システム100の例示的な実施の形態を示す。ネットワーク化されたゲーム訓練システムは、ローカルコンピューティングシステム110上で実行されているGTアクターコンポーネント105のインスタンスを含む。ローカルコンピューティングシステム110は、GTアクターコンポーネントからゲームプレイアクション128を受信するゲームアプリケーション115も実行している。GTアクターコンポーネント105は、インターネットまたはその他の介在ネットワークなど、1つ以上のコンピュータネットワーク101を経由して、1つ以上のリモートサーバー125上で実行されているGT学習サービス120に通信可能に連結される。図示した実施の形態では、GTアクターコンポーネント105は、人工ゲームプレイアクション128を生成してゲームアプリケーション115に提供し、ゲームアプリケーションから観測データおよびゲーム内報酬インジケーター112を受信し、この情報の一部またはすべてを観測体験データ130としてGT学習サービス120に提供する。そして、GT学習サービス120は、受信した観測体験データ115を用いて、GTアクターコンポーネントがゲームアプリケーションに提供する全体のゲームプレイおよび個々の人工ゲームプレイアクションの両方を改善するための、ゲームアプリケーション115に関連する1つ以上のゲームプレイモデル135を生成、改良、および/またはGTアクターコンポーネント10
5に提供する。
【0034】
この過程の様々なポイントにおいて、GTシステム100は、(GT学習サービス120および/またはGTアクターコンポーネント105によって)ゲームアプリケーション115に関連するテスト用データを生成し得る。特定の実施形態では、ゲームアプリケーション115に関連するゲーム開発者は、(GT学習サービス120および/またはGTアクターコンポーネント105のプログラマティックインタフェースを介するなどして)このようなテスト用データの1つ以上のタイプおよび振る舞いを指定し得る。これに加えて、特定の実施形態では、GTシステムは、GTシステムが格納する定義された基準に基づくなどして、生成するテスト用データの1つ以上の態様を決定し得る。このような実施の形態では、定義された基準は、ゲームアプリケーション115が条件を満たしていると判断された1つ以上のタイプのゲームアプリケーションに関連し得る。たとえば、GTシステムが生成するテスト用データの定義された基準の第1セットは、2次元のプラットフォームゲームタイプに関連し、第2セットは3次元のプラットフォームゲームタイプに関連し、第3セットはレーシングゲームタイプに関連し、第4セットは、オープンワールドのロールプレイングゲームに関連する、などであり得る。
【0035】
上述したように、特定のシナリオでは、GTアクターコンポーネント105による人工ゲームプレイアクションは、ゲームアプリケーション115に関して定義された1つ以上のパラメータに基づいてGTシステム100が生成した1つ以上のゲームプレイデータモデル135に少なくとも一部基づき得る。このようなパラメータは、(非限定例として)ゲームアプリケーション115の開発者によって、GTシステム100のプログラマティックインタフェースを介して提供され得る。たとえば、最初のゲームプレイモデルは、ゲームアプリケーション115の1つ以上の出力状態の各々をGTアクターコンポーネント105の入力変数に対応付けたコントロール情報、および/またはゲームアプリケーションの1つ以上の入力状態の各々をGTアクターコンポーネント105の出力変数に対応付けたコントロール情報に基づき得る。特定の実施形態では、このようなコントロール情報は、GTアクターコンポーネント105のこれらの入力変数および/または出力変数のうち1つ以上の各々を、ゲームアプリケーションの人間のユーザが利用可能な観測またはアクションと対応付け得る。たとえば、GTアクターコンポーネント105の出力変数は、ゲームアプリケーションにおける仮想キャラクターの動きを表し得、この出力変数は、人間のユーザがゲームプレイ中に利用する物理的入力装置によるその仮想キャラクターの動きに対応する。GTアクターコンポーネント105のこのような出力変数は、このようなゲームプレイ中に人間のユーザが利用可能なアクションまたは観測に対応し得る。特定の実施形態では、GT APIは、ゲームアプリケーション開発者が上位プリミティブ(たとえば、「ジョイスティック」、「エンティティ」など)を用いて入力および出力を記述できるようにする。GT SDKは、その後、上位プリミティブをGTコントロール情報にマッピングして、ゲームアプリケーション開発者が機械学習における専門知識を行使することを必要としないでAPIが利用できるようにする。
【0036】
特定の実施形態では、コントロール情報は、GTアクターコンポーネント105が入力変数として使用するためのゲームアプリケーション115の1つ以上の出力状態を含み得る。非限定例として、このような出力状態は、ゲームアプリケーション115の仮想環境内のプレーヤー基準位置、ゲームアプリケーション115の仮想環境内のプレーヤー基準位置に対する物体の位置、ゲームアプリケーション115の仮想環境内のプレーヤー基準位置に対する物体に関連する動きベクトル、ゲームアプリケーション115の仮想環境の1つ以上の態様に関するジオメトリ情報、および/またはゲームアプリケーション115内のゲームプレイに関連するスコアまたはその他のゲーム内報酬インジケーターを含み得る。一般に、コントロール情報は、人間のプレーヤーが観測可能なゲームアプリケーションの任意の態様をGTアクターコンポーネント105の入力変数に対応付け得る。
【0037】
また、いくつかの実施の形態では、GTアクターコンポーネント105の人工ゲームプレイアクションに起因する観測体験データ130を受信するときに用いられる方法と同様の方法でゲームアプリケーション115に関連する1つ以上のゲームプレイモデルを生成または修正するなどするために、GTシステム100は、1人以上の人間のプレーヤーがそのゲームアプリケーション115に提供したゲームプレイアクションに起因する観測体験データを受信し得る。一例として、GTアクターコンポーネント105が所定期間または所定回数試行しても乗り越えることが長い間できなかったゲームアプリケーション115における障害に遭遇した場合、GTシステム100がコミュニケーションを開始して、1人以上の人間のプレーヤーにその障害を乗り越えることを示す1つ以上のゲームプレイアクションを提供するよう促し得るなど、GTアクターコンポーネント105の出力変数によって、GTアクターコンポーネント105は、ゲームアプリケーション115内でのアシスタンス状態を示すことができるようになり得る。これらの人が提供したゲームプレイアクションに起因する観測体験データがGT学習サービス120に提供される。その後、GT学習サービス120は、GTアクターコンポーネント105が次に遭遇したときにその障害および/またはその他の障害を乗り越えられるようにゲームプレイモデル135を修正する。
【0038】
ゲームをプレイできるAIを訓練するための1つの手法として、RL(強化学習)がある。RLでは、開発者は、勝利すると報酬を与え、敗北するとペナルティを与え、AIがますます最適な戦略を自律的に学習するために後で使用する信号を提供する。残念ながら、RLでは非常に素晴らしい結果がデモンストレーションされているが、RLのアルゴリズムには、通常、プレーヤーを訓練するために何百万個または何十億個ものフレームのデータなど大量のデータ消費(サンプル非効率)、時間およびコンピューティングリソースの観点において開発者にとって、通常、影響が著しいコストが伴う。また、これらのアルゴリズムの結果は非常にばらつく傾向があり、許容可能な結果を実現するために、その分野でのかなりの知識、および超パラメータの調整が利用される。
【0039】
そのため、特定の実施の形態は、IL(模倣学習)機械学習技術を利用する。IL機械学習技術は、1人以上の人間のプレーヤーがゲームをプレイするのを観察することに基づいてAIを訓練する。エージェントが最適なポリシーを自身で見つける必要があるRLとは異なり、ILでは、人間の熟練者の挙動が効果的に再現される。生成ILのポリシーは、人間のデモンストレーションにおいて捕らえたシナリオと類似するが同一でないシナリオにおいて上手く機能する。この問題は、特に、少ない数の共通テーマ(メカニクス)の上で多数のバリエーション(レベル)として一般に構築されるゲームでは切実である。特定のバリエーションのみを学習できるが基礎となるテーマを学習できないAIは、非常に効果的なツールとはならない。
【0040】
GTシステム100は、効果的に一般化する観測を用いる。たとえば、3D情報が絶対座標ではなくGTアクターコンポーネント105の視点を基準として表現されている自己中心的な観測は、GT学習サービス120に、訓練環境とは無関係の動きや目標ポリシーを含んだゲームプレイデータモデル135を生成させてしまう。
【0041】
よって、様々な実施の形態では、GTシステム100は、1つ以上の追加の基準、すなわち、困難な障害に向き合うこと以外の基準に基づいて関連性のあるゲームプレイモデル135を改良するために、人が提供したゲームプレイアクションに起因する観測体験データ130を受信すると決定してもよい。非限定例として、GTシステム100は、このようなデータを提供することを選択した1つ以上の識別された人間のプレーヤーに関連するすべてのセッションまたはセッションのサブセットについてのこのようなデータ、;ゲームアプリケーション115の1つ以上の識別された部分に関連するゲームプレイアクショ
ンについてのこのようなデータなどを、一定間隔、そうでない場合、予定されている間隔の間受信し得る。
【0042】
いくつかの実施の形態では、開発者は、ゲームアプリケーション115をリアルタイムで単にプレイすることによってGT学習サービスに訓練データを提供し得、GT学習サービス120は、これに応じて1つ以上のゲームプレイモデル135を修正し、GTアクターコンポーネント105を更新する。このように、GTシステム100は、GT学習サービス120の品質に関するインタラクティブなフィードバックを開発者に提供し、GTシステム100が問題に遭遇した場合または遭遇したときに開発者がジャストインタイム方式で訂正できるようにする。いくつかの実施の形態では、開発者は、GTアクターコンポーネント105の同時インスタンスを必要に応じた数作成し、これらのインスタンスにゲームアプリケーションを大規模にプレイおよびテストさせてもよい。また、特定の実施形態では、GTシステム100は、様々な報酬基準に基づいて複数のゲームプレイデータモデル135を評価し、いずれの1つまたは複数のゲームプレイデータモデル135がゲーム内のこれらの報酬基準に関してより優れて機能するかを判断するなどしてもよい。そのため、GTシステム100は、最も優れて機能したゲームプレイデータモデル135を、今後の推論のために利用するゲームプレイデータモデルとして選択してもよい。このような自動的評価は、GTシステム100が訓練済みゲームプレイデータモデルを「磨き上げる」ことを可能にする。
【0043】
図2は、別のネットワーク化されたGTシステム200の例示的な実施の形態を示す。
図1のネットワーク化されたシステム100と同様に、ネットワーク化されたシステム200は、ローカルコンピューティングシステム110上で実行されているGTアクターコンポーネント105のインスタンスを含む。ローカルコンピューティングシステム110は、ゲームアプリケーション115も実行している。GTアクターコンポーネント105(コンピュータネットワーク(複数可)101を経由してGT学習サービス120に通信可能に連結されている)は、人工ゲームプレイアクション128をゲームアプリケーション115に提供し、ゲームアプリケーション115から観測データ112を受信し、結果として得られる観測体験データ130をGT学習サービス120に提供する。しかしながら、ここでは、ゲームアプリケーション115は、GTアクターコンポーネント105の人工ゲームプレイアクション128を受信し得、様々な時点で様々な基準に従って、通常のゲーミングセッションのやり方でゲームアプリケーション115が生成した表示情報255(通常、音声情報、視覚情報、触覚情報、および/またはその他の感覚によって検知される情報を含む)を認識する1人以上の人間のプレーヤー250のその他のゲームプレイアクション260も受信してもよい。ゲームアプリケーション115がゲームプレイアクションをGTアクターコンポーネント105から受信する、人間のプレーヤー(複数可)250から受信する、またはその両方でるかを問わず、GTアクターコンポーネント105は、ゲームアプリケーション115から観測データ112を受信し、結果として得られる観測体験データ130をGT学習サービス120に提供する。
【0044】
上述したように、特定の実施形態および実施態様では、GTアクターコンポーネント105は、Gameplay Trainer SDKを含み得る。Gameplay Trainer SDKは、開発者が(ゲームアプリケーションのプログラムコードにSDKを組み込むことなどによって)ゲームアプリケーション115に通信可能に接続する(または「リンクする」)実行可能な命令およびコンパイル済みライブラリと、GTシステム200の1つ以上の構成要素とのプログラマティックインタラクションを可能にするために開発者が使用し得るAPIとを含む。特定の実施形態では、GTシステム200は、様々なSDKを備えて、(たとえば、プロプライエタリエンジンのための)Unity、Unreal、およびC++などのいくつかの普及しているゲーム開発フレームワークの各々をサポートしてもよい。これらのSDKの各々は、同じ機能(観測/アクションの収
集/送信、およびオンデバイス推論など)を提供し得るが、多くの場合、言語固有のバインディングおよびエンジン固有のバインディングを用いて慣用的な方法で同じ機能を提供し得る。
【0045】
図3は、1つ以上の実施の形態に従って実装されたGTシステム300の概略ブロック図を示す。図示した実施の形態では、1つ以上のリモートGTサーバー325は、GT API399と、ストレージ設備312と、GT学習サービス360の実行インスタンスとを備える。クライアントコンピューティングシステム310が、ゲームアプリケーション315のインスタンスおよびGTアクターコンポーネント305のインスタンスを実行している。GTサーバー(複数可)325およびクライアントコンピューティングシステム310の各々は、固定されていてもよく、移動可能であってもよく、デスクトップまたはその他のコンピュータ(たとえば、タブレット端末、スレートなど)、データベースサーバー、ネットワーク記憶装置およびその他のネットワーク機器、スマートフォンおよびその他の携帯電話、家庭用電化製品、ゲーム機システム、デジタル音楽プレーヤー装置、携帯可能なゲーム機、PDA、ポケットベル、電子手帳、インターネット家電、(たとえば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダーを用いた)テレビベースのシステム、ならびに適切な通信機能を備える様々なその他の消費者製品など、様々なコンピューティングデバイスのインスタンスを含んでもよいが、これらに限定されない。
【0046】
本明細書において記述されているように、GT学習サービス360は、GTアクターコンポーネント305と様々な情報(たとえば、認証情報、ゲームプレイデータモデル、観測データ)をやり取りする。図示した実施の形態では、GT学習サービス360の実施の形態は、説明した技術のうち少なくとも一部を実行するために、1つ以上のハードウェアプロセッサ(複数可)を用いて、これらの説明した技術を実現する自動動作を実行するようリモートGTサーバー(複数可)325を構成する方法でGT学習サービス360のソフトウェア命令を実行するなどによってリモートGTサーバー(複数可)325のメモリ(図示せず)内で動作する。このような自動動作の一部として、GT学習サービス360は、ストレージ設備312のデータ構造を含め、様々な種類のデータを格納および/または取り出し得る。
【0047】
ストレージ設備312は、1つ以上のクライアントコンピューティングシステム(たとえば、クライアントコンピューティングシステム310)に提供することの一部としてゲームプレイデータモデル334を生成および格納するためにGTシステム300(特に、GT学習サービス360)が使用する様々な情報を格納する。ストレージ設備312によって格納されているその他の情報は、開発者情報338(1人以上のゲームアプリケーション開発者に関するアクセス情報およびプロジェクト情報を含み得る)と、ゲームアプリケーション情報340(コントロール情報341、ゲームプレイ観測データ、そのゲームプレイ観測データの解析および/または評価、ならびに1つ以上の特定のゲームアプリケーションに関する過去情報を含み得る)と、ゲームセッション情報342と、訓練データ336(1つ以上のゲームプレイデータモデル334を生成することの一部として、およびその他の動作のためにGT学習サービス360によって利用および格納され得る)とを含む。特定の実施態様では、ストレージ設備312は、GTシステム300内に組み込まれてもよく、そうでない場合、GTシステム300によって直接操作されてもよい。その他の実施態様では、ストレージ設備312が提供する機能の一部またはすべては、1つ以上のサードパーティのネットワーク経由でアクセス可能なストレージサービスプロバイダによって提供されてもよい。また、特定の実施形態では、GT学習サービス360は、開発者情報338の態様を利用および修正するなどによって開発者を認証して開発者のプロジェクトについてのメタデータを追跡するための論理を含む。
【0048】
GT学習サービス360とのインタラクション(たとえば、ゲームアプリケーション開発者によるインタラクションおよび/またはクライアントコンピューティングシステム310によるインタラクション)は、GT API399を介して行われる。図示した実施の形態では、GT API399は、アクセス制御設備380と、リモートGTサーバー345とクライアントコンピューティングシステム310との間でゲームプレイデータモデル382および観測データ384を渡すためのプログラマティックインタフェースとを提供する。特定の実施形態では、GTシステム300の使用は、1つ以上の取り消し可能なAPIキー381によって制限されてもよく、識別された開発者に関連する1つ以上のプロジェクトに関する様々なその他の情報とともに、開発者情報338の一部として格納されるなどしてもよい。これらのキーは、たとえば、観測および(人工または人間のプレーヤーが生成した)ゲームプレイアクションを含む、開発者が送信したすべてのデータに索引を付けるために用いられてもよい。このような実施の形態では、開発者は、自身が送信したデータにのみアクセスでき、そのデータの様々な態様(たとえば、転送および/または削除)をさらに制御してもよい。よって、特定の実施形態では、APIリクエストは、認証に使われ、GT学習サービスとのインタラクションのすべてを通して用いられ得るサーバーが提供した有効なAPIキーを提供するよう、開発者に要求し得る。このように、GTシステム300は、API呼び出しおよび収集したデータが呼び出し元の開発者と対応付けられることを徹底する。
【0049】
開発者に面したGT API399の背後において、GT学習サービス360は、GTアクターコンポーネント305がゲームアプリケーション315に関連する1つ以上のゲームプレイデータモデルを生成および更新/修正することによってGT学習サービス360についてのゲームプレイ観測を収集および生成してゲームプレイアクションに変換するアクター(Actor)/ラーナー(Learner)パターンを実装する。図示した実施の形態では、GTアクターコンポーネント305およびそのMLP(機械学習プラットフォーム)302は、ゲームアプリケーション315との様々なインタラクションを実行して、GT API399を介してGT学習サービス360から受信した1つ以上のローカルゲームプレイデータモデル306に基づいてゲームアプリケーションの人間のプレーヤーのアクションをシミュレーションし得る。たとえば、ローカルゲームプレイデータモデル306に基づくゲームプレイアクションがアクション適用部316を経由してゲームアプリケーション315に供給される。アクション適用部316は、コントローラモジュール318を操作して、通常であれば人間のプレーヤー250によって操作されるゲームコントローラの機能によってこれらのゲームプレイアクションの実行をシミュレーションする。これらのゲームプレイアクションは、アクション報告部319を介してMLP302に報告される。ゲームプレイアクション自体によって、GTアクターコンポーネント305の出力変数(図示せず)を介して、シミュレーション320が変更され、ローカル観測データ304を生成するための根拠として追加の環境観測322が収集される。
【0050】
様々な実施の形態では、GTアクターコンポーネント305は、GT SDK(開発者が自身のゲームアプリケーションにリンクして、GT API399を介してやり取りするために利用する、図示されていないコードおよびコンパイル済みライブラリ)に含まれ得る、および/またはGT SDKを用いて生成されてもよく、オンデバイス推論(たとえば、ゲームプレイデータモデルを用いて、ゲーム内挙動および結果の1つ以上の予測を推論303として生成する)を実行してローカル観測データを収集および生成してもよい。GT学習サービス360は、SDKからデータを取り込み、ストレージ設備312を介して格納し、新しいゲームプレイデータモデル334を訓練し、これらのゲームプレイデータモデルをGT API399を介してGTアクターコンポーネント305に返すために必要なインフラストラクチャを提供する。このように、GT SDKは、観測/アクションの収集およびオンデバイス推論を提供し、開発者に面したAPIとGT学習サービス360とのアダプタとしても機能する。GT学習サービス360は、リモートGTサーバ
ー(複数可)325によって実行され、様々なアルゴリズムを用いてゲームプレイデータモデルを訓練する。特定の実施形態では、モデル訓練アルゴリズムのうち1つ以上は、TensorFlowまたはその他の機械学習プラットフォームなど、MLP(機械学習プラットフォーム)332の動作に基づいてもよい。同様に、オンデバイス推論は、MLP302(ここでも、TensorFlowまたはその他の機械学習プラットフォームを含み得る)を用いて実行されてもよい。ローカルゲームプレイデータモデル306は、GT学習サービス360から取り出され、特定の実施形態では、ゲームプレイデータモデルの入力および出力変数に観測およびアクションをどのようにマッピングするかについて記述したコントロール情報を含み得る。
【0051】
GT API399は、ゲームアプリケーションの論理入力および論理出力、ならびにAIがその時にどれだけ上手くやっているかについてのフィードバックを記述したパラメータをゲームアプリケーション開発者が定義することを可能にする。具体的には、GTシステムは、1つ以上のゲームアプリケーション(たとえば、ゲームアプリケーション315)の各々についての1つ以上の観測パラメータ、1つ以上のアクションパラメータ、および1つ以上の報酬パラメータを開発者が定義できるようにする。観測パラメータ(観測データの生成をもたらす)には、プレーヤーが普段体験するゲーム状態が記述されており、ファーストパーソンシューティングゲームにおいて見えている敵の位置、またはレーシングゲームにおけるプレーヤーの車から走路の壁までの距離などの情報を含み得る。アクションパラメータは、プラットフォームゲームにおいてジャンプすること、またはレーシングゲームにおけるハンドルの位置など、プレーヤーがゲームにおいて実行する論理的なゲームプレイアクションについて記述している。報酬パラメータは、GTアクターコンポーネント305がどれだけ上手く動作しているかについてのフィードバック、したがって、ゲームプレイアクションに応じたゲームアプリケーションの出力状態を提供するための1つ以上のメトリックを設定する。特定のシナリオおよび実施の形態では、このようなパラメータは、プレーヤーがゲームアプリケーションにおいてポイントをどのように獲得し得るかに類似した数値を含み得るが、その他のパラメータも含み得る。たとえば、報酬パラメータは、所定期間、または特定のゲームセッションの間に、プレーヤーが遭遇時に与え得る平均量または最大量のダメージ、およびゲームセッション終了時点での単純な勝利/敗北信号を含み得る。
【0052】
この手法によって、すべての関連性のある出力を数百キロビット/秒(4K映像の場合は、数十メガビット/秒)で送信できるようになり、GTアクターコンポーネント305は、複雑なコンピュータビジョン問題を同時に解決することなく、ゲームアプリケーション315のプレイ方法を学習することに集中できるようになる。この過程では、ゲームアプリケーション開発者には、GT学習サービス360と共有するデータに対するさらなるコントロールが与えられる。また、この手法は、スタンドアロンゲームクライアントおよびサーバーベースのゲームアプリケーションにも同様に機能する。これに加えて、GTシステム300は、ゲームが観測を送信してからアクションを受けるまでの避けることのできない数十ミリ秒(またはそれ以上)のレイテンシによる重大なマイナスの影響を受けることなく動作する。ゲームアプリケーションが一般に1秒当たり30フレームよりも多いフレーム(フレーム当たり33.3ミリ秒未満)で動作する(これは、サーバーとクライアントコンピューティングシステムとの間の往復にかかる時間よりも優に少ない)ことを考えると、このようなレイテンシは、ゲームプレイアクションについてのサーバー入力に左右される別のソリューションにとっては特に問題になり得る。
【0053】
特定の実施形態では、GTシステム300は、リモートGTサーバー325とクライアントコンピューティングシステム310との間で非同期に動作してもよく、たとえば、1つのフレームに基づいて観測データを生成し、シミュレーションを進め、その後、いくつかのフレームの後に1つ以上のゲームプレイアクションを適用する。このような非同期動
作は、GTアクター305がゲームプレイデータモデルを用いてゲームプレイ観測をゲームプレイアクションに素早く変換するGTシステムのアクター/ラーナーアーキテクチャ、アクターコンポーネントが生成した観測データ、アクション、および報酬、ならびにゲームアプリケーション315とのインタラクションに基づいてGT学習サービス360が新しいゲームプレイデータモデルを作製するGTシステムのアクター/ラーナーアーキテクチャによって活用される。AIの動作をこれらの2つのコンポーネントに分けることによって、GT学習サービス360がセキュアな機械学習アルゴリズムおよびかなりの量のコンピューティングリソースを活用しているのも関わらず、推論を実行するためにかかる時間よりも長いレイテンシを引き起こすことなくアクターコンポーネントがゲームプレイ観測をゲームプレイアクションに変換できるようになる。
【0054】
このアーキテクチャには、公共インターネットを横断することに伴うレイテンシを回避すること以上にいくつもの利点がある。このアーキテクチャは、訓練(非常に多くの演算を必要とする)と推論(単一のCPUの一部分で実行され得る)との間の非対称性に自然に合致する。GTアクターコンポーネント305において体験をバッチ化および圧縮することによって、GTシステム300は、関連する1秒当たりのクエリ数(QPS:queries per second)を30分の1まで低減し得るとともに、帯域幅を10分の1まで低減し得る。
【0055】
ゲームは、本質的にインタラクティブなメディアである。残念ながら、従来のMLワークフローは、決してインタラクティブではなく、データの送信とそのデータに基づいたモデルの生成との間に数分または数時間の間が空いている。GTシステム300は、ゲームプレイデータモデルをリアルタイムで訓練することによってこの問題に対処する。特定の実施形態では、GT学習サービス360が観測データ(既存のゲームプレイデータモデルを用いてGTアクターコンポーネント305が実行したアクションに基づく観測データであれ、1人以上の人間のプレーヤーが実行したアクションに基づく観測データであれ)を受信するとすぐに、GT学習サービス360がそのデータについてモデルの訓練を開始し、多くの場合、前回のデモンストレーションおよび/またはゲームプレイデータモデルから結果を作り上げる。観測およびアクションがコンパクトに表現されているおかげで、新しいゲームプレイデータモデルを数秒で生成できる。これらのゲームプレイデータモデルは、人間のプレーヤーが送信したデモンストレーションに照らして常に評価され得、GTアクターコンポーネントが使用中の現在のゲームプレイデータモデルを上回るパフォーマンスをした場合にのみ、GTアクターコンポーネント305に提供される。
【0056】
よって、上述したように、GTシステム300は、ゲームアプリケーション開発者に、完全にリアルタイムかつインタラクティブな訓練体験を提供する。ゲームアプリケーション開発者は、ゲームアプリケーションの1つ以上の出力状態の各々をクライアントコンピューティングデバイス上で実行されているアクターコンポーネントの入力変数に対応付けたコントロール情報を定義および提供できるようになっているが、AIを訓練するためには、ゲームアプリケーション開発者は、単純にゲームコントローラを手に取ってゲームをプレイすることによってAIを訓練すればよい。ゲームを数ラウンドプレイした後、ゲームアプリケーション開発者は、コントローラを置いてAIがゲームをプレイするのを見ていてもよい。AIが問題のある状態に遭遇した場合、ゲームアプリケーション開発者は、単純にコントローラを手に取って、正しい挙動をデモンストレーションし、その後、AIに再び操作させる。その結果、体験に大きく基づいた、制御可能なサービスが得られる。
【0057】
GT学習サービス360がゲームプレイデータモデルを生成するために、GTアクターコンポーネント305は、GT学習サービスにローカル観測データ304(ゲームプレイの観測、アクション、および報酬を含む)を定期的に送信する。人間のゲームプレイのデモンストレーションから(人間のプレーヤー250を介するなどして)学習する際、この
観測データは、人間がゲームをプレイ中にとるアクションから導出される。特定の実施形態では、この体験データは、ゲーム開発会社の従業員によって生成されてもよく、利用者プレーヤーによって生成されてもよく、またはそれらの組合せによって生成されてもよい。
【0058】
観測データの新しいバッチを受信した後、GT API399は、新しい課題344を生成する。課題344の各々は、新しいゲームプレイデータモデルを生成する要求を表す。課題は、課題キュー346を経由してGT学習サービス360に提供される。GT学習サービス360は、課題に含まれているゲームプレイのアクションと、観測データと、報酬と、特定のパラメータとを組み合わせて、MLP332が理解できるフォーマットに変換し、新しいゲームプレイデータモデルを生成/評価するために必要な論理を含む。このようなゲームプレイデータモデルは、使い捨てできるように設計されており、特定の実施形態では、ゲームプレイデータモデルの状態を再開可能なMLチェックポイントとして表現してもよい。
【0059】
GT学習サービス360が課題に対する作業を完了すると、それに応じて生成されたゲームプレイデータモデルがゲームプレイデータモデル334の一部として格納される。その後、GT学習サービス360は、更新後のゲームプレイデータモデルを、クライアントコンピューティングシステム310内のオンデバイス推論に使用するためにGTアクターコンポーネント305に提供する。
【0060】
少なくともいくつかの実施の形態では、開発者のゲームとのリアルタイムなインタラクションをサポートするなどのために、GTアクターコンポーネント305は、推論をミリ秒程度で実行できる。サーバー側では、GT学習サービス360が、特定の実施形態において、追加の観測データを新しいゲームプレイデータモデルに数十秒程度の期間(30秒未満などで)で変換してもよい。
【0061】
本明細書において示す個々の構成要素およびモジュールは、構成要素レベルの構造および特定のデータフロー動作を説明する便宜上の例として提供しているが、様々な実施の形態において、特定のコンポーネントおよびモジュールをその他の配置にすることによっても本明細書において提示した技術を実現できることが分かるであろう。
【0062】
図4は、GT学習サーバー401における動作およびクライアントコンピューティングシステム402における動作の両方を含む、GTシステムの動作ルーチン400の概要を説明するブロックフロー図である。クライアントコンピューティングシステム402は、1つ以上の実施の形態に従ってゲームアプリケーションおよびGTアクターコンポーネント(
図1および
図2のGTアクターコンポーネント105または
図3のGTアクターコンポーネント305など)を実行している。
【0063】
ルーチンは、ブロック405から開始する。ブロック405では、GT学習サーバー401がクライアントコンピューティングシステム402にゲームプレイデータモデル410を提供する。クライアントコンピューティングシステム402は、ブロック415において、GT API499を経由してゲームプレイデータモデルを受信する。本明細書においてさらに詳細を説明しているが、特定の実施形態では、GT学習サーバー401が最初に提供したゲームプレイデータモデル410は、そのゲームアプリケーションに関して定義された1つ以上のパラメータに基づき得、ゲーム観測パラメータと、ゲームアクションパラメータ(コントロール情報など)と、ゲーム報酬パラメータとの組合せを含み得る。これに加えて、最初のゲームプレイデータモデル410(および後続のゲームプレイデータモデル)は、1人以上の人間のプレーヤーから生成された観測データに少なくとも一部基づき得る。
【0064】
ブロック415でゲームプレイデータモデル410が受信された後、ルーチンは、ブロック420に進む。ブロック420では、クライアントコンピューティングシステム402が、ゲームプレイデータモデルを用いたゲームプレイに関する観測データを生成する。ブロック425では、クライアントコンピューティングシステム402は、API499を介してGT学習サーバー401に生成した観測データ430を提供する。
【0065】
特定の実施形態では、観測データおよびゲームプレイアクションは、1つ以上の基準に応答してGT学習サービス360に提供されるまで、クライアントコンピューティングシステム402上に集約されてもよい(GTアクターコンポーネント、たとえば、
図3のGTアクターコンポーネント305によってなど)。たとえば、
図3を参照すると、ローカル観測データ304(ゲームプレイアクション情報を含む)の提供は、明確なリクエストに応じて、所定期間の後、所定量の観測データが生成された後などに開始されてもよい。
【0066】
ブロック435では、GT学習サーバー401は、ゲームプレイデータモデル410を用いてクライアントコンピューティングシステム402が生成した観測データを受信し、ルーチンは、ブロック440に進む。ブロック440では、GT学習サーバー410は、新しく受信した観測データ430に基づいて、ゲームプレイデータモデル410を修正する。
【0067】
ブロック445では、GT学習サーバー401は、API499を介してクライアントコンピューティングシステム402に修正後のゲームプレイデータモデル450を提供する。ブロック455では、クライアントコンピューティングシステム402は、修正後のゲームプレイデータモデル450を受信し、修正後のゲームプレイデータモデルを用いたゲームプレイアクションに基づいて追加の観測データを収集および生成するために、ブロック420に戻る。同様に、ブロック445において修正後のゲームプレイデータモデル450を提供した後、GT学習サーバー401は、ブロック435に戻り、クライアントコンピューティングシステム402から更新後の観測データを受信する。
【0068】
いくつかの実施形態において、上述した技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ読取可能な記憶媒体に格納される、そうでない場合、有形に含まれる実行可能な命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに上述した技術の1つ以上の態様を実行させるこれらの命令および特定のデータを含み得る。非一時的なコンピュータ読取可能な記憶媒体は、たとえば、磁気または光ディスク記憶装置、フラッシュメモリ、キャッシュ、RAM(Random Access Memory)、またはその他の1つまたは複数の非一時的なメモリ素子など、固体記憶装置を含み得る。非一時的なコンピュータ読取可能な記憶媒体に格納された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈されるまたは実行可能なその他の命令形式で格納されてもよい。
【0069】
コンピュータ読み取り可能な記憶媒体は、使用中、命令および/もしくはデータをコンピュータシステムに提供するためにコンピュータシステムによってアクセス可能な任意の1つの記憶媒体または複数の記憶媒体の組合せを含んでもよい。このような記憶媒体は、光学媒体(たとえば、CD(Compact Disc)、DVD(デジタル多用途ディスク)、Blu-Rayディスク)、磁気媒体(たとえば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえば、RAM(Random Access Memory)またはキャッシュ)、不揮発性メモリ(たとえば、ROM(Read-Only Memory)またはフラッシュメモリ)、または
MEMS(Microelectromechanical System)ベースの記憶媒体を含み得るが、これらに限定されない。コンピュータ読み取り可能な記憶媒体は、コンピューティングシステムに埋め込まれてもよく(たとえば、システムRAMまたはROM)、コンピューティングシステムに固定して取り付けられてもよく(たとえば、磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられてもよく(たとえば、光ディスクまたはUSB(Universal Serial Bus)ベースのフラッシュメモリ)、有線またはワイヤレスネットワークを介してコンピュータシステムに連結されてもよい(たとえば、NAS(Network Accessible
Storage))。
【0070】
なお、全体的な説明において上述した動作または要素のすべてが必要であるわけではない。特定の動作または装置の一部を必要としなくてもよい。説明した動作や要素に加えて、1つ以上の追加の動作が実行されてもよく、1つ以上の追加の構成要素が含まれてもよい。さらに、動作が挙げられている順番は、必ずしもそれらが実行される順番ではない。また、具体的な実施の形態を例に概念を説明した。しかしながら、当業者であれば、添付のクレームに記載の本開示の範囲から逸脱することなく、様々な変形および変更を行うことが可能であることが分かる。したがって、明細書および図面は、厳密ではなく、例示であるとみなされるべきであり、すべてのこのような変形は、本開示の範囲に含まれるものとする。
【0071】
メリット、その他の利点、および問題の解決策を、具体的な実施の形態を例に説明した。しかしながら、メリット、利点、問題の解決策、およびメリット、利点、もしくは解決策を生じさせ得るまたはより顕著にさせ得るいかなる特徴(複数可)も、いずれかのクレームまたはすべてのクレームの重大な特徴、必要な特徴、または必須の特徴として解釈されないものとする。また、本明細書における教示のメリットを有する当業者にとって明らかである差異はあるが同等の方法で、開示した発明の主題を変更および実施してもよいため、本明細書に開示した特定の実施の形態は、例示に過ぎない。添付のクレームに記載されている以外の、本明細書において示されている構造または設計の詳細は、限定されない。そのため、本明細書に開示した特定の実施の形態を変更したり、改良したりしてもよく、このような変形例のすべては、開示した発明の主題の範囲に含まれるとみなされることは明らかである。したがって、本明細書において要求する保護は、添付のクレームに記載する通りである。
【外国語明細書】