JP6779941B2 - 格闘ゲームの学習装置および学習プログラム - Google Patents
格闘ゲームの学習装置および学習プログラム Download PDFInfo
- Publication number
- JP6779941B2 JP6779941B2 JP2018091401A JP2018091401A JP6779941B2 JP 6779941 B2 JP6779941 B2 JP 6779941B2 JP 2018091401 A JP2018091401 A JP 2018091401A JP 2018091401 A JP2018091401 A JP 2018091401A JP 6779941 B2 JP6779941 B2 JP 6779941B2
- Authority
- JP
- Japan
- Prior art keywords
- character
- learning
- data
- game
- screen state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 257
- 230000008569 process Effects 0.000 claims description 155
- 238000003860 storage Methods 0.000 claims description 134
- 238000012545 processing Methods 0.000 claims description 116
- 238000004364 calculation method Methods 0.000 claims description 91
- 230000033001 locomotion Effects 0.000 claims description 80
- 238000013135 deep learning Methods 0.000 claims description 45
- 238000013500 data storage Methods 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 31
- 230000000306 recurrent effect Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 12
- 239000011159 matrix material Substances 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 238000013517 stratification Methods 0.000 claims description 3
- 239000004575 stone Substances 0.000 claims 1
- 230000009471 action Effects 0.000 description 51
- 238000010168 coupling process Methods 0.000 description 26
- 238000005859 coupling reaction Methods 0.000 description 25
- 230000008878 coupling Effects 0.000 description 23
- 230000006399 behavior Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 20
- 238000003825 pressing Methods 0.000 description 16
- 239000004973 liquid crystal related substance Substances 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000010365 information processing Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 241000288105 Grus Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000004936 left thumb Anatomy 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 210000004935 right thumb Anatomy 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Electrically Operated Instructional Devices (AREA)
- User Interface Of Digital Computer (AREA)
Description
従来の対戦格闘ゲームにおいて、プレイヤと対戦するためのキャラクタの動作をコンピュータで決定する際、その決定のための一連の条件を、プログラムによって明示的に記述していた。この方法を使って、プレイヤの位置と行動から、対戦相手として適切な行動を決定し、プレイヤがより心地よくゲームを継続できるような対戦相手を実現していた。また、ネットワークを介した他のプレイヤとの対戦は、双方のプレイヤが同時期にネットワークに接続する必要があった。
特許文献1は、図17とその説明(段落番号[0143]〜[0156])及び段落番号[0017]に記載のように、事前にプログラムで認識するようにした操作の頻度を元にプレイデータを記録している。これを基に、図12に示すような基本思考パターンで行動種類を決定し、行動種類別の頻度に基づいて再現する行動を決定するものである。
しかし、HMMを用いた学習は、一般的に、少ないデータから学習できる利点のある反面、長期的な時系列のデータがあっても、事前に決定した長さのデータから次の行動を決定するという欠点がある。具体的には、学習を開始する前に状態数を決定しておく必要があり、この状態数は図2のようにゲーム内容から推定できる場合以外に、どのような状態にすれば良いのかを判断することが難しい。
特許文献2の技術は、事前にプログラムで検出しているパターンしか記録できないことに加えて、どのようなゲーム状況の下で特定の操作を行ったかを記録することができない。そのため、ゲーム状況(又は画面状況)に関連する行動の種類に応じたゲーム画面を再現できない問題点があった。
また、特許文献3のHMMを用いた学習は、一般的に、少ないデータから学習できる利点のある反面、長期的な時系列のデータがあっても、事前に決定した長さのデータから次の行動を決定するという欠点がある。具体的には、学習を開始する前に状態数を決定しておく必要があり、この状態数は図2のようにゲーム内容から推定できる場合以外に、一般的な決定方法がないという問題点があった。
入力操作部は、プレイヤ(遊技者)によって操作され、格闘ゲームに登場する第1のキャラクタと第2のキャラクタの少なくとも一方のキャラクタの動きを指示する方向指示部(方向スイッチ22,ジョイスティック24)と当該キャラクタの動作を指示する動作指示部(押ボタン23a〜23d)を含む。
ゲーム制御部は、ゲームプログラム記憶部に記憶されているプログラムを実行して格闘ゲームに登場する複数のキャラクタの動きを制御する。学習制御部は、学習プログラム記憶部に記憶されている学習プログラムを実行する。
また、ゲーム制御部(CPU13)は、入力操作部の操作状態に応じて、少なくとも一方のキャラクタの動きを変化させて格闘ゲームに登場する複数のキャラクタの動画を生成するとともに、格闘ゲームに関連する画像(例えば、背景画像,パワー,技に関する表示,得点,ライフ等の情報)を生成して表示用記憶部に更新的に書き込み、当該表示用記憶部の画像を読出して表示部に表示させる。
学習制御部は、所定タイミング毎に入力操作部の操作に応じてキャラクタの繰り出す技に関連する操作データと画面表示に関連する画面状態データを収集して学習データ記憶部に書き込み、学習データ記憶部に記憶されている一定数のタイミングの各操作データと画面状態データを、複数層からなるリカレント・ニューラル・ネットワークを用いて深層学習の計算処理を行うことによって学習結果の重みを最適化する。
さらに、ゲーム制御部(CPU13)は、第1のキャラクタおよび第2のキャラクタによる後続する対戦ゲームに際して、最適化された学習結果の重みを反映させて、入力操作部による入力に基づくことなく他方のキャラクタの動きを制御する。
第2の発明によれば、ゲーム制御部と学習制御部とが時分割的にそれぞれの処理を実行できる。
そして、ゲーム制御部は、入力操作部によって入力された操作データを第1のキャラクタの繰り出す技に関するキーデータとして、学習制御部へ送る。学習制御部は、深層学習の計算処理によって学習結果の重みを反映したキーデータを求め、後続する対戦ゲームに際して学習結果の重みを反映したキーデータを前記ゲーム制御部へ送る。ゲーム制御部は、後続する対戦ゲームに際して学習結果の重みを反映したキーデータに基づいて、ゲームプログラムを実行して他方のキャラクタの動きを制御する。
この第3の発明によれば、学習結果をゲームに反映することができ、他方のキャラクタを制御するためのプログラム開発を簡略化でき、プログラム開発時間の短縮化とプログラマの労力の軽減を図ることができる。
制御部は、収集した画面状態データを画面状態履歴データ記憶部に書き込むとともに、画面状態履歴データ記憶部に記憶されている各画面状態データと第1の層の入力として、複数の層においてそれぞれの入力と対応する重みを乗算して、層別の出力を計算し、次の層の入力とする処理を逐次的に行い、最終層の出力としてキーデータを算出し、画面状態履歴データ記憶部のキーデータとの差分を用いることにより層別の重みを最適化して層別の重み記憶部に記憶を更新させる学習制御部を含む。
この第4の発明によれば、層別の重みデータを算出することによって、より一層人間らしい行動をコンピュータ相手の対戦でも実現することができる。
推論処理部は、収集した画面状態データを画面状態履歴データ記憶部に書き込むとともに、画面状態履歴データ記憶部に記憶されている各画面状態データを第1層の入力として、それぞれの層において重みと乗算して、層別の出力を算出する。この出力を次の層の入力として、それぞれの層の出力を逐次的に出力し、最終層の出力が全体の出力であるキーデータとなる。
学習処理部は、推論処理部によって算出された層別のキーデータと、現在の画面状態の時点に対応するキーデータに基づいて深層学習の重みを最適化する。
この第5の発明によれば、推論処理部と学習処理部によって、操作データ(又はキーデータ)に基づいて深層学習の重みを最適化し、人間が画面状態に応じて入力したキーデータの性質を反映したキーデータを計算することができる。
全対全結合層による計算処理では、重み行列を入力のベクトルと乗算する処理を実行する。各ゲーテッド・リカレント・ユニット層による計算処理では、複数のゲーテッド・リカレント・ユニット層のそれぞれにおいて、重みを使って忘れる量を計算し、重みを使って反映量を計算し、出力候補を計算する処理を順次行うことを特徴とする。
第6の発明によれば、少なくとも1つの全対全結合層と複数のゲーテッド・リカレント・ユニット層による計算処理を実行することによって、出力候補を計算することにより、より人間らしい行動をコンピュータ相手の対戦でも実現することができる。
第7の発明によれば、選択的にドロップアウト処理をすることにより、より人間らしい行動をコンピュータ相手の対戦でも実現することができる。
第8の発明によれば、相手が早い動きを繰り返しているなら行動を変えるといった、時系列での状況変化に応じた意思決定を深層学習に反映することができる。
学習制御部は、ゲームプレイ中のキーデータと画面表示に関連する画面状態データを先入れ先出し態様で画面状態データ記憶部に記憶させるとともに、深層学習後の各層の重みを対応する層別の前記重み記憶部に記憶させる。
第9の発明によれば、相手の時系列での行動変化だけでなく、自分が同じ攻撃を繰り返したら、次は同じ攻撃を繰り返さないといった、自分の履歴に応じた意思決定を学習結果に反映することができる。
第10の発明によれば、少なくとも2つのキャラクタの位置データを含む画面状態データを用いて、深層学習の重みを反映したキーデータを計算することができる。
第11の発明によれば、画面状態データとして、少なくとも、2つのキャラクタの場所に関する場所データと、2つのキャラクタの表示に関するキャラクタ表示関連データとを用いて、深層学習の重みを反映したキーデータを計算することができる。
第12の発明によれば、画面状態データとして、少なくとも、2つのキャラクタの場所に関する場所データおよび2つのキャラクタの表示に関するキャラクタ表示関連データに加えて、さらに2つのキャラクタの動きに関する速度データを用いて、深層学習の重みを反映したキーデータを計算することができる。
すなわち、コンピュータを、ゲーム制御部と学習制御部として機能させる格闘ゲームの学習プログラムである。
ゲーム制御部は、入力操作部による操作と記憶部に記憶されているゲームプログラムに基づいて、格闘ゲームに登場する複数のキャラクタの動きを制御して複数のキャラクタの動画を生成するとともに、格闘ゲームに関連する画像(例えば、背景画像や、パワー,技に関する表示,得点,ライフ等の情報)を生成して、当該複数のキャラクタの動画と当該格闘ゲームに関連する画像を表示部に表示させる。
学習制御部は、プレイヤによって操作される所定タイミング毎の入力操作部の操作状態に応じてキャラクタの繰り出す技に関連する操作データと画面表示に関連する画面状態データを収集して、当該操作データと画面状態データに基づいて深層学習の計算処理を行うことによって学習結果に関する重みを最適化して記憶部に記憶させる。
また、ゲーム制御部は、第1のキャラクタおよび第2のキャラクタによる後続する対戦ゲームに際して、最適化した学習結果の重みを反映させて、入力操作部による入力に基づくことなく他方のキャラクタの動きを制御する。
第13の発明によれば、事前に学習させた結果を使用することによって、より人間らしい行動(すなわち、プレイヤの操作状態に似た動きをするキャラクタの行動)をコンピュータ相手の対戦でも実現することのできる、学習プログラムが得られる。
そして、コンピュータを、画面状態データ記憶部に記憶されている画面状態データを第1層の入力として、それぞれの層において入力と重みとを乗算して層別の出力を計算し、その出力を次の層の入力とする計算を逐次的に各層に対して行うことで、最終層の出力としてキーデータを算出し、そのキーデータと画面状態データ記憶部に記憶されているキーデータとの差分を用いて層別の重み記憶部に記憶を更新させる学習制御部として機能させる。
第14の発明によれば、請求項13と同様の効果が奏される。
記憶部が画面状態データの履歴を一時的に記憶する画面状態履歴データ記憶部と、深層学習の処理として最適化した複数の層別の重みを記憶する層別の重み記憶部とを含む。
そして、コンピュータを、画面状態履歴データ記憶部に記憶されている各画面状態データを第一層の入力として、複数の層においてそれぞれの入力に対応する重みを乗算して、層毎の出力を計算し、その出力を次の層の入力として計算する処理を逐次的に行い、最終層の出力として得たキーデータと実際に押されていたキーの差分を用いて、層別の重みを最適化して層別の重み記憶部に記憶させる学習制御部として機能させる。
この第15の発明によれば、層別の重みデータを算出することによって、より一層人間らしい行動をコンピュータ相手の対戦でも実現することができる、学習プログラムが得られる。
図1を参照して、この発明の一実施例の格闘ゲーム装置として用いられる情報処理装置の外観構成と、システム構成を説明する。
ゲーム機本体11には、入力操作部(家庭用テレビゲーム機の場合はコントローラ)20が接続されるとともに、家庭用テレビ受像機等の液晶表示器(表示部)12が接続される。
そして、中央処理ユニット(以下「CPU」と略称する)13には、データバス16a,16b,16c,16d,16eを介して、対応する液晶表示器12,メモリ30,入力操作部20の一例のコントローラ20A,ハードディスク14,通信制御部15が接続される。
コントローラ20Aは、ハウジング21を含む。ハウジング21は、上面が平坦な中央部21aの左右に、グリップ状の左把持部21bと右把持部21cを形成して構成される。
中央部21aと左把持部21bの連結部分には、4つの押点を有する十字型の方向スイッチ22が装着される。中央部21aと右把持部21cの連結部分には、4つの押ボタン23a〜23dが十字形(上下左右の4方向)に配置して装着される。
また、必要に応じて、中央部21aと左把持部21bの連結部分の基部(方向スイッチ22の斜め右下方)には、アナログジョイスティック(以下「ジョイスティック」と略称する)24が傾動自在に装着される。中央部21aと右把持部21cの連結部分の基部(押ボタン23c,23dの斜め左下方)には、ジョイスティック25が傾動自在に支持される。
なお、方向スイッチ22を用いて8方向を指示する場合は、上と右の押点を同時に押して「右斜め上」、右と下の押点を同時に押して「右斜め下」、下と左の押点を同時に押して「左斜め下」、左と上の押点を同時に押して「左斜め上」のそれぞれの入力(斜め4方向)を指示することもできる。
本願の格闘ゲームでは、方向スイッチ22又はジョイスティック24を何れかの同じ方向に連続して押し続けたときにキャラクタの移動方向を指示する。一方、方向スイッチ22又はジョイスティック24を複数の方向に素早く傾動させた(例えば、右横,右斜め下,下等を組み合わせて入力した)後で押ボタン23a〜23dの1つ又は複数を押したときは、技の種類を指定する入力を行うものである。
メモリ(記憶部)30は、ゲーム制御のプログラムおよびデータを記憶するゲーム制御プログラム用メモリ31と、学習・推論プログラム用メモリ32と、表示用データを記憶する表示用メモリ33を含む。
記憶領域31aは、ゲーム制御のためのプロクラムを記憶するゲーム制御プログラム記憶領域であって、図9のメインスレッドの制御を行うためのプログラムを記憶する。
記憶領域31bは、キャラクタ別コマンドテーブル(又はコマンド表)を記憶するものであり、例えば複数(又は多数)のキャラクタ別に、技(わざ)の種類と、各技の種類別のキーシーケンス(後述の図5参照)等を記憶する。
記憶領域31cは、キャラクタ毎に当該キャラクタを描画するためのデータを記憶するキャラクタ描画データ記憶領域である。また、記憶領域31cは、各技を表示するための複数の変化点における画像を表示するための骨格に対応する頂点座標等を記憶する。例えば、各キャラクタをポリゴンで表示する場合はポリゴンの動きを制御するプログラムと、各ポリゴンに張り付けるテクスチャデータを記憶する。また、キャラクタのビットマップ画像でもよい。
記憶領域31eは、画面状態データを記憶する画面状態データ記憶領域であり、対戦中の画面状態として、対戦する2つのキャラクタ(第1のキャラクタと第2のキャラクタ)別に、各キャラクタの場所に関するデータ(例えば、位置又は座標データ,向きデータ,残りライフデータ等)、各キャラクタの動画表示に関するデータ(例えば、アクション番号,アクションフレーム,キャラクタID等)、各キャラクタの動きに関するデータ(例えば、移動速度や移動加速度等)を記憶するとともに、その時点において操作されているキーデータを記憶する。この記憶領域31eは、比較的短い時間分の記憶容量(例えば1フレーム又は1画面分)を有していて、画面状態データ(図8の17項目の履歴データ)を記憶する。
記憶領域32aは、学習・推論の制御のためのプロクラムを記憶する学習・推論制御プログラム記憶領域であって、図9の学習・推論スレッドの制御を行うためのプログラムを記憶する。この記憶領域32aも、記憶媒体の種類としては記憶領域31aと同様のものが用いられる。
記憶領域32bは、画面状態履歴データを記憶する画面状態履歴バッファメモリ(又は記憶領域)であり、対戦中の2つのキャラクタ(第1のキャラクタと第2のキャラクタ)別の画面状態(例えば、キャラクタ別の場所に関するデータと、各キャラクタの動画表示に関するデータと、各キャラクタの動きに関するデータ等の図9の17項目)を記憶する。この記憶領域32bは、記憶するデータ項目が記憶領域31eと同様であるが、記憶容量が記憶領域31eよりも大きな一定の記憶容量を有する。この記憶領域32bは、1ラウンドの履歴データを記憶するのに十分な比較的長い時間(例えば90秒程度)分の記憶容量を有していて、先入れ先出し方式で画面状態データを記憶する。そのため、一定容量を超える画面状態履歴が蓄積されると、最も古い履歴データを消去して新しい履歴データを記憶することになる。
格闘ゲームの表示画面40は、画面の縦方向の中央から広範囲に亘る領域が対戦画像表示領域(又はステージ)41であり、対戦画像表示領域41の上部の帯状の領域がキャラクタ別情報表示領域42となる。対戦画像表示領域41には、プレイヤの操作する第1のキャラクタ(自キャラクタ;以下「キャラクタ1」ということもある)43と、対戦相手(2人プレイの場合は相手、1人プレイの場合はコンピュータ)の操作する第2のキャラクタ(敵キャラクタ;以下「キャラクタ2」ということもある)44とが向かい合った状態で大きく表示される。
キャラクタ別情報表示領域42は、左右に分割されて、左側がプレイヤの操作するキャラクタ(自キャラクタ)用、右側が対戦相手のプレイヤの操作するキャラクタ(敵キャラクタ)用となる。キャラクタ別情報表示領域42には、各キャラクタの顔画像が左右に表示されるとともに、各キャラクタの顔画像に対応して対戦時に参照する情報(例えば、キャラクタの名前又はキャラクタID,残りライフ)がそれぞれ表示される。
なお、キャラクタ1とキャラクタ2の対戦時の表示位置は、自キャラクタと敵キャラクタを左右で逆にして、右をキャラクタ1、左をキャラクタ2としてもよい。
例えば、自キャラクタ43は、ジョイスティック24(又は方向スイッチ22)が連続して右に傾動されると右へ移動し、ジョイスティック24(又は方向スイッチ22)が連続して左に傾動されると左へ移動し、ジョイスティック24(又は方向スイッチ22)が連続して上に傾動されるとジャンプし、ジョイスティック24(又は方向スイッチ22)が連続して下に傾動されるとしゃがみ込むような動き又は行動を行う。また、自キャラクタ43は、ジョイスティック24(又は方向スイッチ22)を下に傾動させた後、素早く上に傾動されると、ハイジャンプする。
このキャラクタ別の技の種類と操作方法は、キャラクタ毎のコマンドテーブルとして、記憶領域31bに記憶されている。
コマンドテーブルには、キャラクタ毎に、技区分、技名称、各技の操作方法のデータが予め登録されている。例えば、図5の例では、キャラクタの名前が「大門」といい、技区分(又は技の分類)として、「通常投げ」,「特殊技」,「必殺技」,「超必殺技」,「MAX超必殺技」を使うことができる。技区分に対応して、複数の技があり、それぞれの技に名称(例えば、「つかみ叩きつけ」,「頭上払い」,「天地返し」,「切り株返し」・・・等)が付けられている。
各技に対応して、操作方法として、キー入力の操作手順が登録されている。例えば、図5の操作方法の記載例では、「頭上払い」という技を出す場合は、方向スイッチ22又はジョイスティック24を瞬時に右斜め下に傾けた後、押ボタン23cを押圧する。
一方、ジョイスティック24のある1方向の傾き又は押ボタン23a〜23dの何れか1つの押圧によるキー操作は、1つのキーコードとして入力されることになる。
その他の技の種類の名称に対応する操作方法は、図5のコマンドテーブルに示すように、ジョイスティック24の傾き方向(矢印の記号の向き)と押ボタン23a〜23dの組み合わせ操作のとおりである。そして、コマンドテーブルは、図5の図示の例に限らず、他のキャラクタ別のテーブルを予め登録するものである。
図6は技の一例の「天地返し」の操作例とキャラクタの動きの表示例を示す図である。
技「天地返し」は、ジョイスティック24(又は方向スイッチ22)を瞬時に右に傾けて、下回り(時計方向)に半回転させた後で右に倒した後、押ボタン23a又は23cを押す操作によって、入力する。
この場合のキャラクタの動き又は行動の画像表現は、足を開きかつ両腕を構えて立ち、上半身を前に倒してから起き上がる際に、柔道の背負い投げのように投げた後に、立ったままで相手に向かい合って構えた態勢を取るような、一連の攻撃による演出表現である。
図6の技の例では、「天地返し」という技が5つのアクションフレーム1〜5で表現され、5段階のアクションフレームの全体で1つのアクションを特定するためのアクション番号が付される。
技「超受け身(強)」は、ジョイスティック24(又は方向スイッチ22)を瞬時に下に傾けて、時計方向に1/4回転させた後で右に倒した後、押ボタン23dを押す操作によって入力する。
この場合のキャラクタの動き又は行動の画像表現は、前後に足を開いて上半身を少し前に倒して、前下方向に倒れ込み、半回転して受け身の姿勢を取ってから起き上がって、立ったままで相手に向かい合って構えた態勢を取るような、一連の攻撃による演出表現である。
図7の技の例では、「超受け身(強)天地返し」という技が4つのアクションフレーム1〜4で表現され、4段階のアクションフレームの全体で1つのアクションを特定するためのアクション番号が付される。
履歴データは、自分(プレイヤ自身)の操作する第1のキャラクタの履歴データと、対戦相手である第2のキャラクタの履歴データに大別(大分類)される。
自分(プレイヤ自身)の履歴データ(小分類)としては、場所に関係するデータ、キャラクタの表示に関するデータ、キャラクタの動きに関するデータ、およびキー操作に関するデータがある。
「ステージ上の座標位置」と「キャラクタの向き」は、対戦相手との間合いと向きを知ることにより、技の有効性(効き具合い)を判断する情報として利用される。より具体的には、ステージ上での「位置」情報は、相手との間合いを認識し、距離によって当たる攻撃と当たらない攻撃があるのを判断するのに用いる。「向き」は、相手キャラクタが右側にいるか左側にいるかによって、近寄りたいときや遠ざかりたいときに押す方向のキーが逆になるため、判断の結果、意図通りにキャラクタを動かすために用いる。「残りライフ」は、次に攻撃を受けると負ける等の状況によって、自キャラクタの取るべき行動が変化するので、これを認識できるようにするために用いる。
「アクション番号」および「アクションフレーム」は、画面上でキャラクタがどのように表示されているかを認識するのに用いる。「キャラクタID」は、キャラクタ毎にコマンドが異なり、取れる行動も異なるので、自分・相手のキャラクタの組み合わせに対応した適切な行動を判断できるようにするために用いる。
キー操作に関するデータには、押し込まれているキーを表すキーデータがある。キーデータの詳細については、図11を参照して後述する。
この履歴データは、CPUの動作サイクルのうちの所定時間(例えば液晶表示器12の1フレーム期間に相当する60分の1秒)毎に取得されて、記憶領域(又は画面状態履歴バッファ)32bに先入れ先出し方式で書き込み及び読み出しが行われることになる。
この実施例の格闘ゲームの全体の制御としては、格闘ゲームをプレイするためのメイン(又はゲーム)スレッドと、深層学習するための学習・推論スレッドがある。
メインスレッドは、状態計算処理と描画処理(S6〜S9の処理)とに大別され、状態計算処理と描画処理を交互に実行するものである。状態計算処理は、キャラクタ1の状態計算処理(S1a〜S5a又はS1a,S11a,S12a,S3a〜S5aの処理)と、キャラクタ2の状態計算処理(S1b〜S5b又はS1b,S11b,S12b,S3b〜S5bの処理)とを含む。なお、キャラクタ1の状態計算処理とキャラクタ2の状態計算処理は、機能的に同じものであるので、同じステップ番号で示し、キャラクタ1用の処理とキャラクタ2用の処理を区別するために、ステップ番号の末尾にキャラクタ1用に「a」、キャラクタ2用に「b」を付けて示す。
また、メインスレッドでは、液晶表示器12の1フレーム期間に相当する1/60秒毎に、状態計算処理(キャラクタ1,2)と描画処理を順次実行する。
これらのキャラクタ1,2の状態計算処理と描画処理のプログラムが、CPU13をゲーム制御部として機能させる。換言すると、これらの状態計算処理と描画処理のプログラムとCPU13によって、ゲーム制御部が構成される。
この学習・推論スレッドの処理は、メインスレッドの状態計算処理と描画処理を行ってないときに、時分割的に実行される。この学習・推論スレッドのプログラムがCPU13を学習制御部として機能させる。換言すると、これらの学習・推論スレッドのプログラムとCPU13によって、学習制御部が構成される。
ここで、「学習」とは、プレイヤが実際に押したキーと現在の画面状態とを、深層学習の重みに反映する操作をいう。「推論」とは、現在の画面情報を、取得済みの重みと掛け合わせて、現時点の画面状態を見ているプレイヤ(人間)が押したであろうキーを導き出す操作をいう。
プレイヤの行動とキー入力を使って重みに学習を反映する場合は、図10に示すように、メインスレッドにおいてキーの操作状態を示すキーデータ(又はキーコード)の取得が行われ、画面状態の計算が行われた後、描画処理が行われる。このキーデータの取得と画面状態の計算処理と描画処理が、例えば1/60秒毎に行われる。そして、画面状態の計算が終了すると、実際に押されていたキーデータと現在の画面状態を表すデータ(例えば、自キャラクタ及び敵キャラクタ別の座標位置,残りライフ等)が履歴データとして学習スレッドへ送られる。これらの処理がキーデータの取得毎に順次行われる。
次に、図1〜図10を参照して、図9のメインスレッドの具体的な動作を説明する。
バトルの開始に先立って、何れかのプレイヤがコントローラ20Aを操作して、2人プレイモードを選択するとともに、バトル開始を指示する。これに応じて、CPU13は記憶領域31aに登録されているゲーム制御プログラムを実行して、メインスレッドの処理、すなわちキャラクタ1用及びキャラクタ2用の状態計算処理と、描画処理を開始する。
先ず、ステップ(フローチャートの図では、記号「S」で示す)1aにおいて、学習・推論に基づくキャラクタ1の再現動作中か否かが判断される。換言すると、推論・学習の結果を使ってキャラクタ1及び/又はキャラクタ2の動きを再現するモードであるか否かが判断される。この実施例では、2人プレイのときは、キャラクタ1とキャラクタ2の両方がプレイヤ(自分と相手)によって操作されるので、学習・推論処理に基づくキャラクタ1の再現動作中でないことが判断される。
続くステップ3aにおいて、そのときの画面状態データと、ステップ2aで取得されたキーデータが学習スレッド(S21a)へ送られる。この場合のデータの詳細については、図11を参照して後述する。
続くステップ5aにおいて、記憶領域31dに記憶されているキャラクタ1用のキー履歴データと記憶領域31bに記憶されているコマンド表を参照して、キャラクタ1の動作又は技を決定する処理が行われる。ただし、上述のステップ2aにおいて取得したキーデータは、1/60秒毎に取得する1つのキーデータのみであるが、このステップ5aにおいて技を決定するためには、自プレイヤがある期間内(例えば数フレーム〜数十フレームの期間内)に順次入力したキーデータの組み合わせ状態(図5の何れかの技に対応するキーシーケンス)である必要がある。そのため、技を特定できるだけの一連のキーデータが入力されるまではキャラクタの動作又は技を決定することなく、技を決定できるだけの複数のキーデータが入力されて蓄積されるのを待つことになる。
その後、キャラクタ2用の状態計算処理におけるステップ1bへ進む。
ステップ2aにおいて、その時点において操作されているキャラクタ2用のコントローラ20Aの方向スイッチ22,押ボタン23a〜23d又はジョイスティック24の何れかの操作状態を示すキーのキーデータが読み込まれて、取得される。このとき取得されたキーデータは、図8ではキャラクタ2にとっての自キャラクタのキーデータとなる。つまり、図8の履歴データは、キャラクタ1用とキャラクタ2用の2種類あることになる。
続くステップ3aにおいて、そのときの画面状態データと、ステップ2bで取得されたキーデータが学習スレッド(S21b)へ送られる(この場合のメインスレッドから学習・推論スレッドへ送られるデータについては後述の図11を参照)。
続くステップ5bにおいて、記憶領域31dに記憶されているキャラクタ2用のキー履歴データと記憶領域31bに記憶されているコマンド表を参照して、キャラクタ2の動作又は技を決定する処理が行われる。ただし、この場合も上述のステップ5aと同様に、技を特定できるだけのキーデータが入力されて蓄積されるまでは、キャラクタ2の動作又は技を決定することなく、技を決定できるだけの複数のキーデータが入力されて蓄積されるのを待つことになる。
その後、描画処理におけるステップ6へ進む。
ステップ7において、自キャラクタと敵キャラクタのライフの減分の計算又は両キャラクタのライフの残分の計算が行われる。このライフの減分の計算は、相手の繰り出した技のレベルに応じて、減分する値が異なるものである。
なお、各キャラクタの技の変化を滑らかに表示するために、各変化点の間の画像の補完処理が行われる。
これらのステップ6〜ステップ8の描画処理の動作は、従来の格闘ゲームのゲーム制御の動作と同様であるので、詳細な説明を省略する。
そして、勝敗が決定するまで、ステップ1a〜5a(キャラクタ1用の状態計算処理),ステップ1b〜5b(キャラクタ2用の状態計算処理)およびステップ6〜9(描画処理)の動作が繰り返される。
そして、ステップ9において勝敗の決定したことが判断されると、次のステップ10において、終了処理が行われる。例えば、自キャラクタと敵キャラクタのうちの勝利した方のキャラクタの勝利演出の表示が行われ、必要に応じて対戦結果が保存される。終了処理の後、2人プレイの対戦プレイが終了する。
バトルの開始に先立って、プレイヤ(自分)がキャラクタ1を操作してコンピュータ(キャラクタ2)と対戦する1人プレイを選択した後、スタートボタンを押圧する。応じて、キャラクタ1用の状態計算処理が実行される。
すなわち、ステップ1aにおいて、学習・推論処理に基づくキャラクタ1の再現動作中でないことが判断される。そのため、上述のステップ2a〜5aの動作が実行される。このステップ2a〜5aの処理は、2人プレイの場合の動作と同様であるので、省略する。
ステップ1bにおいて、キャラクタ2についてはコンピュータ(相手)によって操作されるので、学習・推論処理に基づくキャラクタ2の再現動作中であることが判断されて、ステップ11bへ進む。ステップ11bにおいて、後述するキャラクタ2用の学習・推論スレッドのステップ22bから送られてくる推論結果のキーデータを取得する。
ステップ4bにおいて、ステップ11bで取得したキャラクタ2のキーデータがキャラクタ2の履歴データに追加される。ステップ5bにおいて、記憶領域31dに記憶されているキャラクタ2用のキー履歴データと記憶領域31bに記憶されているコマンド表を参照して、キャラクタ2の動作又は技を決定する処理が行われる。
ところで、前述のステップ5a及び5bにおいては、数フレーム〜数十フレーム経過した後における技に対応する一連のキーデータが入力されて取得されたときに、図5に示す何れかの技を指定するキーシーケンスが入力されることになる。
その後、描画処理のステップ6へ進む。
そして、ステップ9において、勝敗の決定したことが判断されると、ステップ10において終了処理が行われた後、1人プレイによる対戦プレイが終了する。
その場合は、キャラクタ1側がコンピュータによって操作されるキャラクタとなり、キャラクタ2がプレイヤによって操作されることになる。
この場合の動作としては、キャラクタ1用の状態計算処理がステップ1a,11a,12a,4a,5aの流れで行われるとともに、キャラクタ2用の状態計算処理がステップ1b〜5bの流れで行われることになる。
ステップ1a,11a,12aの処理は、キーデータと画面状態データを送受する相手がキャラクタ1用の学習・推論スレッド(ステップ23a,21a)であることを除いて、キャラクタ2用の状態計算処理で説明したステップ11b,12bと同様であるので、その動作説明を省略する。
次に、図11を参照して、メインスレッドから学習スレッドへ送られるデータに着目して、画面状態データとキーデータを補足説明する。
前述の図9では、1/60秒毎に、ステップ3aにおいてキャラクタ1の画面状態データとキーデータを送信し、ステップ3bにおいてキャラクタ2の画面状態データとキーデータを送信しているが、その前にキャラクタ1(自分)又はキャラクタ2(相手又は敵)の何れもその時点における画面状態データが取得されて、記憶領域31eに記憶されることになる。このとき、キャラクタ1用の画面状態データに関連して、キャラクタ1用のキーデータがその時点の画面状態データに関連する履歴データの一部として記憶される。
ところで、図11における時刻のスケール(左列の1〜25で表す行)は、1行当たり1/60秒である。自プレイヤが押しているキャラクタ1を操作するためのキーは、図9のステップ2aで取得されるものであって、各時刻の横に矢印又はアルファベット記号で示す。格闘ゲームで各プレイヤによって押されるキーは、方向スイッチ22又はジョイスティック24によって指示される「左,右,上,下」と、押ボタン23a〜23dの「A,B,C,D」の8つある。なお、左斜め下は、下と左の両方が押されたことを表す。学習スレッドでは、各キーが押されているかどうかは、押されていないときを「0」、押されているときを「1」と定めて、8つのキーを8ビットの数字列(又はコード)で表す。8ビットの数字列は、「1」の立っているビット位置によって、方向の「左,右,上,下」及び/又は押ボタンの「A,B,C,D」を表す。
また、時刻6〜12の間に「左斜め下」が押されたときは、「1,0,0,1,0,0,0,0」(左に対応する1ビット目と下に対応する4ビット目が「1」)の数字列と、「しゃがみ後退」動作を指定するコマンドと判断される。このとき、学習スレッドに送るデータは、その時点の画面状態データと、キーの操作として「左斜め下」を表す数字列(「1,0,0,1,0,0,0,0」)である。
また、時刻13〜17の「左」が押されたときは、「1,0,0,0,0,0,0,0」(1ビット目のみ1)の数字列と、「後退」動作を指定するコマンドと判断される。このとき、学習スレッドに送るデータは、その時点の画面状態データと、キーの操作として「左」を表す数字列「1,0,0,0,0,0,0,0」(これをキーデータという)である。
さらに、時刻18〜25の「B」が押されたときは「0,0,0,0,0,1,0,0」(Bに対応する6ビット目のみ1)の数字列と、技「超受け身(弱)」のコマンドと判断される。このとき、学習スレッドに送るデータは、その時点の画面状態データと、キーの操作として「B」を表す「0,0,0,0,0,1,0,0」である。
しかし、キー「下」「左斜め下」「左」のそれぞれが押された時点では個々のコマンド入力と解されるが、その後にキー「B」が押されたことによって、キー「下,左斜め下,左」とキー「B」の組み合わせによって指定される技である「超受け身」(図7の技)が入力されたものと判断されて、決定される(図9のS5a又はS5bで判断される技又は動作)。
次に、図12を参照して、学習スレッドとデータの流れ(図9のS11a又はS11b、S12a又はS12b)を簡単に説明する。
前述のステップ12a及び/又は12bにおいて各時刻における学習スレッドに送るデータは、図8の各画面状態データである。前述のステップ11a及び/又は11bにおいて学習スレッドから受け取るキーデータ(図12の中央列の矢印又はアルファベット記号で示すデータ)は、方向スイッチ22又はジョイスティック24によって指示される「左,右,上,下」と、押ボタン23a〜23dの「A,B,C,D」の8つの何れかである。
この各画面状態データと学習スレッドから受け取るキーデータに基づいて、学習・推論スレッド側では推論処理、又は推論処理と学習処理が行われる。この学習処理の結果として、学習結果後のキーデータが状態計算処理へ送られることになる。
次に、図1〜図12を参照して、図9のフローチャートに沿って学習・推論スレッドの動作の概要を説明する。
学習・推論スレッドでは、メインスレッドのようにフレーム周期で(又は1/60秒毎に)動作するものではなく、メインスレッドのキャラクタ1用及びキャラクタ2用の状態計算処理部から画面状態データ及び/又はキーデータが送られてくる毎に、ステップ21a〜25a及びステップ21b〜25bの処理を順次実行するものである。なお、以下には、プレイヤがキャラクタ1を操作する場合であって、キャラクタ1用の学習・推論スレッドの動作を代表して説明するものとする。
前述のメインスレッドにおけるステップ3aにおいて画面状態データとキーデータが送られてくると、ステップ21aにおいて、画面状態データとキーデータが取得される。一方、ステップ12aにおいて画面状態データのみが送られると、ステップ21aにおいて、画面状態データが取得される。
なお、画面状態データは、これらの全てを用いる必要がなく、格闘ゲームにおいて重要な項目を適宜の1つ又は複数を選んでもよい。
ステップ23aにおいて、推論したキー(キーデータ)を決定して、キャラクタ1用の状態計算処理のステップ11aへ送信する。実際には、ステップ21a〜24aを繰り返すうちに、1/60秒毎に読み込まれるキーの組み合わせに基づいて、所定期間(数フレーム〜数十フレーム間)内に、操作されたキーの組み合わせによるキーシーケンス(技を特定するキーシーケンス)が決定されることになる。
ステップ24aにおいて、学習中か否かが判断され、学習中でなければステップ21aへ戻り、ステップ21a〜24aの処理が1ラウンド中繰り返される。
ステップ25aにおいて、重み更新の処理が行われる。この重み更新の処理は、ステップ22aにおいて推論した結果と対応する時点のキーデータを使って学習処理するものであり、図20に示す詳細フローを参照して後述する。
ところで、前述のステップ23aと11aにおいては、学習・推論スレッド側から推論した結果のキーをキャラクタ1用の状態計算処理(S11a)側へ送っても、プレイヤがキャラクタ1を操作してプレイしている限り、ステップ1aからステップ11a,12aを通らないため、推論又は学習の結果がキャラクタ1の動きに反映されることはない。
一方、推論又は学習の結果がキャラクタの動きに反映されるのは、2人プレイの期間において少なくとも1ラウンド分の履歴データが記憶領域32bに蓄積され、当該ラウンドにおける層別の重みデータが記憶領域32cに蓄積された後に、1人のプレイヤが別のラウンドとしてコンピュータ対戦する場合に相手の操作状態に基づく推論及び/又は学習結果を用いてプレイするときであって、相手のキャラクタに対応する状態計算処理においてステップ1b,11b,12b(又はその逆の場合のステップ1a,11a,12a)を通る際に、推論及び/又は学習結果を利用した対戦プレイが行われることになる。つまり、少なくとも、1ラウンド終わった後のコンピュータ対戦する場合に、推論及び/又は学習結果を利用した対戦が行われることになる。
すなわち、キャラクタ1の状態計算処理では、前述の「1人プレイの場合のメインスレッドの動作」と同様の処理(S1a〜S5a)が行われるが、キャラクタ2の状態計算処理では、ステップ1bにおいて、学習・推論処理に基づくキャラクタ2の再現動作中であることが判断されて、ステップ11bへ進む。ステップ11bにおいて、キャラクタ2用の学習・推論スレッドのステップ22bから送られてくる推論結果のキーデータを取得する。ステップ12aにおいて、キャラクタ2の今回のラウンドにおける画面状態データが学習スレッドへ送られる。
そして、描画処理におけるステップ6へ進み、前述と同様のステップ6〜9が実行される。そして、勝敗が決定するまで、ステップ1a〜5a,1b,11b,12b,4b,5b,6〜9の処理が繰り返される。このとき、学習結果に基づいてキャラクタ2の動作又は技が繰り出されるように、キャラクタ2の動きが制御されることになる。
また、コンピュータ対戦する場合のコンピュータ側のプログラムが、様々な状況を考慮して作成するために複雑となるところを、本願のように推論・学習システムを採用すれば、コンピュータ側のプログラムを簡略化でき、開発時間の短縮化を図ることができ、開発コストの低減を図れる利点がある。また、ゲーム画面を見ている人間であれば操作するであろうキーを使って、コンピュータ側のキャラクタの動きを制御できる利点がある。
図13の学習・推論制御部50は、キャラクタ1とキャラクタ2別に設けられ、キャラクタ別に学習・推論の処理を行うが、ここでは説明の簡略化のため、1つのキャラクタ(例えばキャラクタ2)の場合について説明する。
学習・推論制御部50は、推論処理部50aと学習処理部50bを含む。推論処理部50aは、ステップ22a又は22bの「各層の重みデータを使って出力を計算する処理」を行うものであって、複数層(例えば6層)のリカレント・ニューラル・ネットワーク(以下「RNN」と略称)で構成される。このRNNは、時系列のデータを深層学習するのに適している。また、推論処理部50aの他の例として、第1層の全対全結合層(入力側)と第2層〜第5層のゲーテッド・リカレント・ユニット(以下「GRU」と略称)層と第6層の全対全結合層(出力側)の6層で構成してもよい。
学習処理部50b、ステップ25a又は25bの「重み更新処理」を行うものであって、第1層の重み更新処理部ないし第6層の重み更新処理部を含む。
また、画面状態データの項目は、キャラクタ1とキャラクタ2の別に、例えば8項目(両方合わせて16項目)あるが、1項目でX座標とY座標の2つの数値データを必要とする項目(位置座標,移動速度,加速度)もあるので、22要素の入力となる。
RNNの第1層(又は入力側の全対全結合層)は、画面状態データに対応する22要素毎に、重み計算を行う。そして、前段の層の出力が次段の層で重み計算されて、次々段の層の入力となる。このようにして、最終段のRNN層(又は第6層の全対全結合層)から、複数の層での計算を反映した出力が、ステップ23b(又は23a)でいう「推論したキーを決定したキーデータ」として、ステップ11b(又は11a)へ送られることになる。また、推論したキーを決定するキーデータは、学習処理部50bの入力とされる。
この学習結果のキーデータは、ステップ21b〜25b(キャラクタ1の場合は21a〜25a)の処理を繰り返している間のステップ23b(又は23a)において、ステップ11b(又は11a)へ送られることにより、キャラクタ2(又は1)の学習・推論処理に基づくキャラクタ2(又は1)の再現動作中にコンピュータ対戦しているキャラクタ2の動きの制御に利用される。
図14は、学習・推論スレッド中の「各層の重みデータを使って出力を計算する処理(推論処理)」の一例であって、データの流れから見たブロック図である。
図14において、推論処理部50aは、例えば、第1層の全対全結合回路(入力側)51と、第2層〜第5層のGRU回路52〜55と、第6層の全対全結合回路(出力側)56の6層で構成される。
ここで、「全対全結合」とは、入力に対して、それぞれのセルで保持する、入力のそれぞれに対する重みを乗算することによって出力を得る層をいう。「GRU(Gated Recurrent Unit)」とは、LSTM(Long Short-Term Memoryの略)の性質を保ったまま単純化したセルをいう。
この全対全結合回路51は、行列とベクトルの積の計算、すなわち画面状態データと各入力に対する重みの乗算を行うものであって、具体的には図16に示すような64個のセルからなるが、図17に示すようなフローの処理で実行される。
全対全結合回路51は、入力として画面状態を表す数列(16項目で22要素)を受けて、例えば64要素の出力を第1段目のGRU回路52の入力として与える。
GRU回路(GRUの第1段)52ないしGRU回路(GRUの第4段)55は、RNNを構成する部品の一種のLSTMであり、キャラクタ毎の画面状態データの項目別に、前段からの出力を入力として受けて、各入力と入力別に異なる重みの数値を乗算してそれぞれの層の出力を求め、次段の層の入力とする。
すなわち、GRU回路52の出力が第2段目のGRU回路53の入力(64要素)となり、GRU回路53の出力が第3段目のGRU回路54の入力(64要素)となり、GRU回路54の出力が第4段目のGRU回路55の入力(64要素)となり、GRU回路55の出力が全対全結合回路(出力層)の入力(64要素)となる。
全対全結合回路(出力側・最終層)の出力は、現在の画面状態に対応した推定されるキーデータとなり、そのキーデータが例えば8つのキー(方向スイッチ22の4方向の押点又は押ボタン23a〜23d)に対応する。
これらの全対全結合回路(入力層)51,GRU回路52〜55および全対全結合回路(出力層)56は、図15の各ステップ221〜226と同様の計算を行うものである。
全対全結合回路56の処理は、入力(画面状態の各項目データ)に対し、それぞれのセルで保持する、入力それぞれに対する重みを乗算することによって、出力を得る層である。例えば、適切な学習の後には、自分と相手の間合いを計算したりする。また、それぞれのセルの中で、その層の入力それぞれをどれだけそのセルの出力に反映するかの重みを保持している。
これらのGRU回路52〜55の具体的な構成は、図18に示す。
図15では、2層(入力側と出力側)の全対全結合層と4層のGRU層からなる6層のニューラルネットによる重み計算の例を示す。
そして、全体として、それぞれの層がキャラクタ別に1回又は複数回の「画面状態に基づく項目別の入力×重みデータ=出力」の計算をすることによって、推論している。
本当に欲しい出力(人間プレイヤの操作/正解)が分かっているときは、この推論の結果が正解とは異なるので、逆に計算してやることによって重みを少しずつ調整して、欲しい出力が得られるようにしていく操作が学習である。
なお、層が複数に重なって、直前の層の出力がある層の入力に繋がっているので、重みの修正が必要な場合は出力側に一番近い層から行う必要がある。
学習スレッドでは、1/60秒毎に、メインスレッドから、そのときの画面状態データおよびその瞬間にプレイヤが押しているキーのキーデータを取得する(ステップ21参照)。それに応じて、ステップ221において、全対全結合の層(入力層)の出力計算が行われる。
全対全結合の層では、履歴データの項目別に、画面状態データからの入力と入力それぞれに対応する重みを掛け算した計算結果が出力となる。
この全対全結合の計算処理は、具体的には図16の回路又は図17に示すフローの処理によって行われるが、後述する。
これらのGRUの推論時の処理は、入力と3種類の重み(Z,R,W)と自身の出力を用いて計算する必要がある。GRUの重みに関する計算は、全対全結合の層の場合と同様の行列積である。
これらのGRU層の詳細は、図18のGRU回路又は図19のフローを参照して後述する。
その後、ステップ226において、全対全結合の層(出力層)の出力を計算する。この処理は全対全結合の層(入力層)と同じ処理であるが、入力層とは逆に出力の数が入力の数より少ない計算処理である。
そして、次のステップ23のキーを決定する処理へ進む。
例えば、学習を反映する前の重み情報を利用して、それぞれの時刻で取得した画面情報から、それぞれのボタンを押すかどうか、重み情報を用いてキャラクタを動かすときと同様の処理で計算する。この処理において、方向スイッチ22又はジョイスティック24の上下左右と押ボタン23a〜23dの8つについて、押す(1)か、押さない(0)かの間(0〜1)の数値として計算される。その結果により、キャラクタを動かす場合は、計算結果が0.5よりも大きければ「押す」、0.5よりも小さければ「押さない」と決めて、キーデータ(0.0〜1.0の間の実数)をメインスレッドに送る(ステップ23)。
一方、学習している場合は、これらの情報を用いて重み更新の処理(ステップ25)が行われる。
図16において、全対全結合回路51は、64個の全対全結合セル51−1〜51−64からなる。各全対全結合セル51−1〜51−64は、32個の乗算器51a〜51dと1つの加算器51eとから構成される。1つの全対全結合セル(例えば51−1)の乗算器51a〜51dには、1つの画面状態データの所定項目に対応する要素データが一方入力(各セルへの32ビットの入力、i1,i2,・・・i32)として与えられるとともに、各入力に対する重みが他方入力として与えられ、対応する一方入力と他方入力をそれぞれ乗算することによって行列計算を行う。
ここで、各入力に対する重みは、ランダムに初期化されるが、深層学習の学習を繰り返す毎に、次第に適切な重みに近づく。そして、学習結果として変化した重みの値が外部に保存されたり、外部から読み出されることになる。
各乗算器51a〜51dの乗算結果(すなわち行列計算の結果)が加算器51eによって加算されて、この層の1要素分の出力(o1)として出力される。
同様にして、他の全対全結合セル51−2〜51−64でも、乗算器51a〜51dによる行列計算の結果が加算器51eによって加算されて、この層の他の要素分(51−2〜51−64)の出力(o2〜o64)として出力される。
この全対全結合回路51の出力(o1〜o64)が第1段目のGRU回路52の入力(64要素)となる。
ステップ221aにおいて、キャラクタ別であって画面状態データの各項目別に、重み行列(入力サイズ×出力サイズ)を入力のベクトルと乗算することによって、全対全結合の計算処理が行われる。すなわち、ステップ221aの処理は、キャラクタ別の画面状態データの各項目に対応する64要素別に、重み行列を入力のベクトルと乗算する計算が行われる。
図18において、GRU回路52は、要素毎の積(行列・ベクトル積)を計算する乗算部52a〜52d,52g,52hと、要素毎の和を計算する加算部52e,52jと、減算部52fと、入力部521と、出力部522と、64要素のレジスタ(r,z,1−z)523,524,525と、重み部526,527,528と、ドロップアウト部52kとから構成される。
加算部52eと乗算部52hと加算部52jが直列的に接続されて、入力部521と出力部522の間に接続される。
また、出力部522の出力は、ドロップアウト部52kに与えられるとともに、乗算部52a〜52c及び52gに入力として与えられるように構成される。これによって、古い履歴データの各項目に対応する要素の重みを、新しい履歴データに基づく重み計算に反映(又はフィードバック)させている。ドロップアウト部52kは、要素毎に所定の確率で出力を0(ゼロ)に強制する。
これらの各乗算部52a〜52d,加算部52e,減算部52f,乗算部52g,52h及び加算部52jは、末尾の記号a〜jの順序で、それぞれの機能である乗算,加算又は減算の処理を行うものである。
これらの計算処理の詳細は、図19を参照して後述する。
なお、他のGRU回路53〜55も、GRU回路52と同様に構成される。
具体的には、乗算部52aは、出力部522の出力(現時点の1つ前の時点の画面状態データに基づく重み計算結果)と、重み部526から入力される重み1とを要素毎に乗算して、アップデート量(z)を計算し、その途中の計算結果をレジスタ524に一時ストアさせる。乗算部52bは、出力部522の出力と重み部527から入力される重み2とを要素毎に乗算して、リセット量(r)を計算し、その途中の計算結果をレジスタ523に一時ストアさせる。乗算部52cは、出力部522の出力とリセット量を要素毎に乗算する。
乗算部52dは、乗算部52cの出力と重み部528から入力される重み2とを要素毎に乗算する。
加算部52jは、乗算部52gの出力と乗算部52hの出力を要素毎に加算して、出力をアップデートする。この出力が、過去の状態を忘れさせるため、ドロップアウト部52kによって所定の確率でゼロに強制されて、ドロップアウト付きの出力として次段(層)のGRU回路53へ入力される。
このようにして、ゲームプレイしている人間の動き又はそれに近い動きとなるように、調整して出力(重み)を決める処理をしている。
各GRU層は、前段からの入力がある毎に、次のような処理を行う。ステップ222aにおいて、キャラクタ別の項目別に、現在の出力と重み1(Z)とを乗算することにより、アップデート量を計算する(図18の例との対応関係を示せば、計算途中の結果をレジスタ523に一時ストアさせること。以下、カッコ内の符号は図18の計算処理の対応部分を示す)。このアップデート量は、新しい入力を次の状態にどれだけ反映するかを決める量である。ステップ222bにおいて、現在の出力と重み2(R)とを乗算してリセット量を計算する(52b)。このリセット量は、古いことをどれだけ忘れるかを示す量である。ステップ222cにおいて、リセット量と現在の出力とを乗算する(52c)。これらのステップ222a〜222cの処理によって、重みを使い、忘れる量を計算している。
ステップ222dにおいて、重み3(W)とステップ222cで得た出力のベクトルを乗算する(52d)。これによって、重みを使い、反映量の計算を行うことにより、一つ前の出力をどれくらい今回の出力候補に反映するか計算している。
ステップ222jにおいて、ステップ222gの出力とステップ222hの出力を加算して、出力をアップデートする(52i)。これによって、ドロップアウト前の出力を計算している。
ステップ222kにおいて、出力の各要素をランダムに0(ゼロ)にして、次の層に渡す(52k)。これによって、ドロップアウト処理をして、出力を得る処理を行う。この処理は、出力毎にランダムに0にする処理である。具体的には、出力=要素毎に(ドロップアウト無し出力又はランダムで0にする)得られた出力の重みを学習の際に使うため、学習が必要な場合、記憶領域32の当該層に対応するエリアに時系列で記憶されて、蓄積される。
以上の処理を繰り返すことによって、GRU層は、過去の情報を加味する度合いを調整しつつ、新しい画面状態に対応するための適切なキーデータを計算している。
次に、図20を参照して、「重み更新処理」の詳細な動作を説明する。
ステップ251において、現在時刻(又は現時点)の画面状態データが記憶領域(画面状態履歴バッファ)32bに追加して書き込まれる。すなわち、重み更新の処理では、メインスレッドから受け取った「プレイヤが実際に押していたキー」と、上述の処理で計算された「現在の重みを使った場合の押したいキーの差分」を「誤差」として扱う。この「誤差」と「受け取っている画面状態」、「プレイヤが実際に押していたキー」の各データが、まとめて記憶領域32bに時系列で保存される。
一方、十分な(例えば5秒分の)履歴が十分に蓄積されていることが判断されると、ステップ253へ進む。
具体的には、全対全結合の層の出力(図15のS226、図15の出力に対応)は、第6層の入力と、「入力それぞれに対応する重み」を掛け算したものであるので、出力の誤差の責任が「重みにある」と仮定すれば、このときの入力に応じてそれぞれの重みをどのように変更すれば誤差を最小にできるかを、重みを変化させたときの誤差の勾配から計算して求めることができる。
この誤差を最小にする方向を、今思っている方向と合成して、新しい向きを決定する。次に、「入力に責任がある」として、今持っている重みのデータと出力を乗算することにより、この時刻での出力の誤差に対応する入力の誤差を計算することができる。これは、一段上の層で同様の処理を行うためである。
続くステップ256において、第4層のGRU層の各重みの更新の方向を調整して、誤差に繋がった入力の差が計算される。ステップ257において、第3層のGRU層の各重みの更新の方向を調整して、誤差に繋がった入力の差が計算される。ステップ258において、第2層のGRU層の各重みの更新の方向を調整して、誤差に繋がった入力の差が計算される。さらに、ステップ259において、第1層の全対全結合層の各重みの更新の方向を調整して、誤差に繋がった入力の差が計算される。
ステップ260において、現在時刻(t)の最新履歴のエリアに記憶されていた履歴データが記憶領域32bの先頭のエリアに達したことが判断されると、ステップ262へ進む。ステップ262において、各層の重みを「学習率×更新の方向」で更新して、キャラクタ毎であって層毎に最適化された重みが記憶領域32cの対応するエリアに記憶される。
このようにして、ゲームプレイの場で入力されたデータに基づいて格闘ゲーム装置10の中で学習する、いわゆるオンライン学習が行われることになる。
そして、他のプレイヤの格闘ゲーム装置10に学習データを取り込むことにより、それを使ってプレイするのに利用される。これによって、上手な人の操作方法を習ってゲームプレイすることができる。
また、他のプレイヤの重みのデータは、ネットワーク網17を介して転送される。
自分のプレイによる重みデータは、例えばスコアランキングに紐付けたり、あるいはネット対戦の際にバックグラウンドで対戦し又は観戦しているユーザと交換することにより、プレイヤからの操作がなくても交換することも可能となる。
従来、コンピュータが自動でキャラクタを操作するプログラムは、それぞれの技を出す条件や確率を、プログラマが一つずつ、「もし〜ならば〜」をプログラム中に記述することで作成していた。その場合のプログラマの作業量は、1対1の対戦ゲームにおいて、キャラクタの組み合わせが登場するキャラクタの数の2乗になるので、キャラクタの数の2乗倍に比例する複雑さのプログラムを作成する必要があった。
しかも、全てのキャラクタの組み合わせについて、矛盾なく自然に動くプログラムを作成するのには、注意と長時間の検証(デバッグ作業)を要していた。
本願の深層学習を用いれば、技を出す条件や確率等の条件を、プログラマが逐一明示(プログラミングで記述)することなく、実際の局面と行動の履歴から自動で抽出できる。この性質を利用して、ランダムな動きに準ずる行動履歴から始めて、互いに戦わせ、勝った方の行動履歴を学習させる、というステップを繰り返すことによって、自動的に強いキャラクタの操作方法を学習した重みデータを得ることができる(遺伝的アルゴリズム)。
そのため、本願の学習方法を用いれば、プログラマがコンピュータ対戦用のキャラクタの動きの条件や確率をプログラムで逐一記述する必要がなく、膨大なパターンでの対局で勝利することのできるような自動的にキャラクタを操作するプログラムを得ることができる。
上述の実施例では、深層学習するための画面状態データの一例として、図8に示す履歴データの16項目の全てを用いて学習処理する場合を説明したが、他の例として、一部のデータ、例えば少なくとも場所関係に含まれるステージ上での位置情報(X座標とY座標)をキャラクタ別に持たせることによっても、本願の技術思想を実現できることは言うまでもない。
また、画面状態データのさらに他の例として、図8に示す履歴データのうち、場所に関する項目(例えば位置)とキャラクタ表示に関する項目(例えばアクション番号)と動きに関する項目(例えば移動速度)だけを用いて、学習させてもよい。
画面状態を表す項目数が少ないと、人間らしい動きを再現する精度が多少損なわれて、動きが若干荒くなることもあり得るが、技術思想としては実現可能である。
11 ゲーム機本体
12 液晶表示器(表示部)
13 CPU(制御部)
14 ハードディスク(HDD)
20 入力操作部
20A コントローラ
21 ハウジング
22 方向スイッチ(方向指示部)
23a〜23d 押ボタン(動作指示部)
30 メモリ(記憶部)
31 ゲームプログラム用メモリ
31a ゲームプログラム記憶部
32 学習・推論プログラム用メモリ
32a 記憶領域(学習プログラム記憶部)
32b 記憶領域(画面状態履歴記憶部)
32c 記憶領域(層別の重み記憶部)
33 表示用メモリ(表示用記憶部)
41 対戦画像表示領域41
42 キャラクタ別情報表示領域42
43 自キャラクタ43
44 敵キャラクタ44
50 学習制御部
50a 推論処理部
50b 学習処理部
51,56 全対全結合回路
52〜55 GRU回路
Claims (15)
- ゲームに関連する画像を表示するための表示部に接続して使用され、第1のキャラクタと第2のキャラクタの2つのキャラクタによって対戦し、第1のキャラクタおよび第2のキャラクタの少なくとも一方がプレイヤによって操作される格闘ゲームにおいて、プレイヤによって操作されるキャラクタの操作状態を学習する格闘ゲームの学習装置であって、
プレイヤによって操作され、格闘ゲームに登場する前記第1のキャラクタおよび前記第2のキャラクタの少なくとも一方のキャラクタの動きを指示するための方向指示部と当該キャラクタの動作を指示するための動作指示部を含む入力操作部、
格闘ゲームに登場する複数のキャラクタの動きを制御するゲームプログラムを記憶するゲームプログラム記憶部、
プレイヤによって操作されるキャラクタの動きの履歴を取得するために、前記入力操作部の操作状態を深層学習し推論するための学習プログラムを記憶する学習プログラム記憶部、
学習のためのデータを記憶する学習データ記憶部、
前記表示部に表示させるためのゲーム画像データを更新的に記憶する表示用記憶部、
前記ゲームプログラム記憶部に記憶されているゲームプログラムを実行して格闘ゲームに登場する複数のキャラクタの動きを制御するゲーム制御部、ならびに
前記学習プログラム記憶部に記憶されている学習プログラムを実行する学習制御部を備え、
前記ゲーム制御部は、
前記入力操作部の操作状態に応じて少なくとも一方の前記キャラクタの動きを変化させ、格闘ゲームに登場する複数のキャラクタの動画を生成するとともに、格闘ゲームに関連する画像を生成して前記表示用記憶部に更新的に書き込み、当該表示用記憶部に記憶されている画像を読み出して前記表示部に表示させ、
前記学習制御部は、
所定タイミング毎に前記入力操作部の操作に応じてキャラクタの繰り出す技に関連する操作データと画面表示に関連する画面状態データを収集して前記学習データ記憶部に書き込み、
前記学習データ記憶部に記憶されている一定数のタイミングの各操作データと画面状態データを、複数層からなるリカレント・ニューラル・ネットワークを用いて深層学習の計算処理を行うことによって学習結果の重みを最適化し、
前記ゲーム制御部は、さらに、前記第1のキャラクタおよび前記第2のキャラクタによる後続する対戦ゲームに際して、前記最適化された学習結果の重みを反映させて、前記入力操作部による入力に基づくことなく他方のキャラクタの動きを制御することを特徴とする、格闘ゲームの学習装置。
- 前記ゲーム制御部と前記学習制御部は、時分割的にそれぞれの処理を実行し、
前記学習データ記憶部は、所定タイミング毎に送られてくる操作データと画面状態データを先入れ先出し態様で記憶する画面状態履歴記憶部を含み、
前記学習制御部は、前記ゲーム制御部がゲーム処理の実行期間中でないときに、前記画面状態履歴記憶部に記憶されている一定数のタイミングの各操作データと画面状態データを、先行する各タイミングにおける操作データと画面状態データの単位で深層学習の計算処理を順次実行する、請求項1に記載の格闘ゲームの学習装置。
- 前記格闘ゲームは、前記第1のキャラクタおよび前記第2のキャラクタの何れか一方のキャラクタがプレイヤによって操作され、他方のキャラクタがプレイヤによる前記入力操作部の操作とは独立して動作するものであり、
前記ゲーム制御部は、前記入力操作部によって入力された操作データを第1のキャラクタの繰り出す技に関するキーデータとして、前記学習制御部へ送り、
前記学習制御部は、深層学習の計算処理によって学習結果の重みを反映したキーデータを求め、後続する対戦ゲームに際して学習結果の重みを反映したキーデータを前記ゲーム制御部へ送り、
前記ゲーム制御部は、後続する対戦ゲームに際して学習結果の重みを反映したキーデータに基づいてゲームプログラムを実行して他方のキャラクタの動きを制御する、請求項1に記載の格闘ゲームの学習装置。
- 前記学習データ記憶部は、画面状態データの履歴を一時的に記憶する画面状態履歴データ記憶部と、前記深層学習の処理結果として複数の層別の重みの計算結果を記憶する層別の重み記憶部とを含み、
前記制御部は、収集した画面状態データを前記画面状態履歴データ記憶部に書き込むとともに、画面状態履歴データ記憶部に記憶されている各画面状態データを第一層の入力として、複数の層においてそれぞれの入力に対応する重みを乗算して、層毎の出力を計算し、その出力を次の層の入力として計算する処理を逐次的に行い、最終層の出力として得たキーデータと、実際に押されていたキーの差分を用いて、層別の重みを最適化して前記層別の重み記憶部に記憶させる学習制御部を含む、請求項1に記載の格闘ゲームの学習装置。 - 前記学習制御部は、現在の画面状態とその時点で最新の重みとを掛け合わせてプレイヤが押していたであろうキーを導き出すための推論処理部と、現在の画面状態とプレイヤが実際に押したキーを深層学習の重みに反映するための学習処理部を含み、
前記推論処理部は、収集した画面状態データを前記画面状態履歴データ記憶部に書き込むとともに、画面状態履歴データ記憶部に記憶されている各画面状態データを第一層の入力として、それぞれの層において重みを乗算して、層別の出力を算出し、その出力を次の層の入力として逐次的に計算することで、最終層の出力としてキーデータを得るものであり、
前記学習処理部は、前記推論処理部によって算出されたキーデータと、前記現在の画面状態の時点に対応するプレイヤの操作によるキーデータに基づいて深層学習の重みを最適化する、請求項4に記載の格闘ゲームの学習装置。 - 前記学習制御部は、深層学習の処理として、少なくとも1つの全対全結合層による計算処理と、複数のゲーテッド・リカレント・ユニット層による計算処理を実行するものであって、
前記全対全結合層による計算処理では、重み行列を入力のベクトルと乗算する処理を実行し、
前記各ゲーテッド・リカレント・ユニット層による計算処理では、複数のゲーテッド・リカレント・ユニット層のそれぞれにおいて、重みを使って忘れる量を計算し、重みを使って反映量を計算し、出力候補を計算する処理を順次行うことを特徴とする、請求項1ないし請求項5のいずれかに記載の格闘ゲームの学習装置。
- 前記学習制御部は、前記各ゲーテッド・リカレント・ユニット層による計算処理として、前記出力候補の計算後に、選択的にドロップアウト処理をして出力することを特徴とする、請求項6に記載の格闘ゲームの学習装置。
- 前記学習制御部は、前記ゲーム制御部によるゲームプログラムの実行に関連して、前記入力操作部の操作に応じた操作データを前記画面状態履歴記憶部に先入れ先出し態様で記憶させるとともに、前記学習結果に関する層別の重みを前記学習データ記憶部に記憶させる、請求項2に記載の格闘ゲームの学習装置。
- 前記学習データ記憶部は、操作データと画面表示に関連する画面状態データを記憶する画面状態データ記憶部と、前記深層学習後の各層の重みを記憶する複数層分の重みデータ記憶部とを含み、
前記学習制御部は、ゲームプレイ中の操作データと画面表示に関連する画面状態データを先入れ先出し態様で前記画面状態データ記憶部に記憶させるとともに、前記深層学習後の各層の重みデータを対応する層別の前記重みデータ記憶部に記憶させる、請求項2ないし請求項5のいずれかに記載の格闘ゲームの学習装置。 - 前記格闘ゲームは、第1のキャラクタと第2のキャラクタの2つのキャラクタによって対戦するものであって、第1のキャラクタおよび第2のキャラクタの少なくとも一方がプレイヤによって操作されるキャラクタであり、
前記画面状態データは、少なくとも2つのキャラクタの位置データを含む、請求項1ないし請求項9のいずれかに記載の格闘ゲームの学習装置。 - 前記格闘ゲームは、第1のキャラクタと第2のキャラクタの2つのキャラクタによって対戦するものであって、第1のキャラクタおよび第2のキャラクタの少なくとも一方がプレイヤによって操作されるキャラクタであり、
前記画面状態データは、少なくとも、2つのキャラクタの場所に関する場所データと、2つのキャラクタの表示に関するキャラクタ表示関連データを含む、請求項1ないし請求項9のいずれかに記載の格闘ゲームの学習装置。 - 前記画面状態データは、2つのキャラクタの動きに関する速度データをさらに含む、請求項11に記載の格闘ゲームの学習装置。
- ゲームに関連する画像を表示するための表示部に接続して使用され、第1のキャラクタと第2のキャラクタの2つのキャラクタによって対戦し、第1のキャラクタおよび第2のキャラクタの少なくとも一方がプレイヤによって操作される格闘ゲームにおいて、プレイヤによって操作されるキャラクタの操作状態を学習する格闘ゲームのプログラムであって、
プレイヤによって操作され、格闘ゲームに登場する前記第1のキャラクタおよび前記第2のキャラクタの少なくとも一方のキャラクタの動きを指示するための方向指示部および当該キャラクタの動作を指示するための動作指示部を含む入力操作部と、各種プログラムおよびデータを記憶するための記憶部と、コンピュータとを備えた格闘ゲーム装置において、前記コンピュータによって格闘ゲームを実行させるためのプログラムを含み、
前記コンピュータを、
前記入力操作部による操作と前記記憶部に記憶されているゲームプログラムに基づいて、格闘ゲームに登場する複数のキャラクタの動きを制御して複数のキャラクタの動画を生成するとともに、格闘ゲームに関連する画像を生成し、当該複数のキャラクタの動画と当該格闘ゲームに関連する画像を前記表示部に表示させるゲーム制御部と、
プレイヤによって操作される所定タイミング毎の前記入力操作部の操作状態に応じてキャラクタの繰り出す技に関連する操作データと画面表示に関連する画面状態データを収集して、当該操作データと画面状態データに基づいて深層学習の計算処理を行うことによって学習結果の重みを最適化して前記記憶部に記憶させる学習制御部として機能させ、
前記第1のキャラクタおよび前記第2のキャラクタによる後続する対戦ゲームに際して、前記最適化した学習結果の重みを反映させて、前記入力操作部による入力に基づくことなく他方のキャラクタの動きを制御するゲーム制御部として機能させる、格闘ゲームの学習プログラム。 - 前記記憶部は、画面状態データを一時的に記憶する画面状態データ記憶部と、前記深層学習の処理として最適化した複数の層別の重みを記憶する層別の重み記憶部とを含み、
前記コンピュータを、前記画面状態データ記憶部に記憶されている画面状態データと重みを乗算してキーデータを計算し、前記画面状態データ記憶部に記録された実際に押されていたキーとの差分を用いて重みを最適化して前記層別の重み記憶部を更新する学習制御部として機能させる、請求項13に記載の格闘ゲームの学習プログラム。 - 前記記憶部は、画面状態データの履歴を一時的に記憶する画面状態履歴データ記憶部と、前記深層学習の処理として最適化した複数の層別の重みを記憶する層別の重み記憶部とを含み、
前記コンピュータを、前記画面状態履歴データ記憶部に記憶されている各画面状態データを第一層の入力として、複数の層においてそれぞれの入力に対応する重みを乗算して、層毎の出力を計算し、その出力を次の層の入力として計算する処理を逐次的に行い、最終層の出力として得たキーデータと、実際に押されていたキーの差分を用いて、層別の重みを最適化して前記層別の重み記憶部に記憶させる学習制御部として機能させる、請求項13に記載の格闘ゲームの学習プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018091401A JP6779941B2 (ja) | 2018-05-10 | 2018-05-10 | 格闘ゲームの学習装置および学習プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018091401A JP6779941B2 (ja) | 2018-05-10 | 2018-05-10 | 格闘ゲームの学習装置および学習プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019195512A JP2019195512A (ja) | 2019-11-14 |
JP6779941B2 true JP6779941B2 (ja) | 2020-11-04 |
Family
ID=68538064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018091401A Active JP6779941B2 (ja) | 2018-05-10 | 2018-05-10 | 格闘ゲームの学習装置および学習プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6779941B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111282267B (zh) | 2020-02-11 | 2021-08-20 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、介质及电子设备 |
CN113457152B (zh) * | 2021-07-22 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 一种游戏阵容生成方法、装置、设备及存储介质 |
WO2023037507A1 (ja) * | 2021-09-10 | 2023-03-16 | 日本電気株式会社 | ゲームプレイ操作学習装置 |
JPWO2023037508A1 (ja) * | 2021-09-10 | 2023-03-16 | ||
JP7459328B1 (ja) | 2023-01-25 | 2024-04-01 | 株式会社バンダイナムコエンターテインメント | ゲームシステム、プログラム、学習装置及びゲーム提供方法 |
JP7459327B1 (ja) * | 2023-01-25 | 2024-04-01 | 株式会社バンダイナムコエンターテインメント | ゲームシステム、プログラム、学習装置及びゲーム提供方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG10201606360VA (en) * | 2015-08-03 | 2017-03-30 | Angel Playing Cards Co Ltd | Fraud detection system in casino |
JP6330008B2 (ja) * | 2016-10-13 | 2018-05-23 | 株式会社 ディー・エヌ・エー | Q学習を用いたニューラルネットワークの重み付け調整のためのプログラム、システム、及び方法 |
-
2018
- 2018-05-10 JP JP2018091401A patent/JP6779941B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019195512A (ja) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6779941B2 (ja) | 格闘ゲームの学習装置および学習プログラム | |
CN101155621B (zh) | 对战游戏系统及游戏装置 | |
US6679774B2 (en) | Training-style video game device, character training control method and readable storage medium storing character training control program | |
KR100292147B1 (ko) | 대전비디오게임장치,비디오게임방법및컴퓨터가읽을수있는기록매체 | |
JP4919210B2 (ja) | ビデオゲーム装置、ゲームの進行方法、並びにプログラム及び記録媒体 | |
JP7333204B2 (ja) | 情報処理装置、ロボット操作システム、及びロボット操作方法 | |
WO2005089895A1 (ja) | ゲーム装置、ゲームプログラム、ゲームプログラムを記憶した記憶媒体およびゲーム制御方法 | |
JP2001204963A (ja) | モーション表示方法、ゲーム装置及び記録媒体、 | |
KR101114997B1 (ko) | 게임 소프트웨어 및 게임장치 | |
JPH08196744A (ja) | 学習機能を有するコンピュータゲーム装置 | |
JP6032710B2 (ja) | シミュレーション装置及びプログラム | |
Oliveira et al. | A framework for metroidvania games | |
KR101131882B1 (ko) | 게임 장치, 게임 제어 방법, 게임 제어 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체 | |
JP6826171B1 (ja) | プログラム、端末、サーバ装置及びシステム | |
US9421469B2 (en) | Game machine, game system, game machine control method, and information storage medium | |
JP3041285B1 (ja) | ビデオゲーム装置、ビデオゲームのプレイ制御方法及びその方法が記録された可読記録媒体 | |
CN111773669A (zh) | 一种在虚拟环境中生成虚拟对象方法及装置 | |
JP4017114B2 (ja) | 対局ゲーム装置、及び対局ゲームプログラム | |
JP2003079952A (ja) | ビデオゲームのプログラムを記録したコンピュータ読み取り可能な記録媒体及びビデオゲームのプログラム及びビデオゲーム処理方法及びビデオゲーム処理装置 | |
CN114565818A (zh) | 一种基于mcu芯片的魔方转动状态智能监测方法方法与系统 | |
JP6735780B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP6783834B2 (ja) | ゲームプログラム、ゲームプログラムを実行する方法、および情報処理装置 | |
Pan et al. | InstantGaming: playing somatosensory games using smartwatches and portable devices | |
JP7479541B2 (ja) | ゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法 | |
JP7459327B1 (ja) | ゲームシステム、プログラム、学習装置及びゲーム提供方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180613 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180613 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200204 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20200401 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200527 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20201007 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201014 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6779941 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |