[1.ゲームシステムの全体構成]
図1は、本発明の実施形態に係るゲームシステムのハードウェア構成を示す図である。図1に示すように、ゲームシステムSは、ゲームサーバ1と、複数のゲーム装置10と、を含む。ゲームシステムSを構成する各装置は、ネットワークNを介して互いにデータ通信可能となっている。
なお、ゲームシステムSに含まれるゲームサーバ1は複数であってもよい。また、ゲーム装置10を2つとして説明するが、ゲーム装置10は、1つであってもよいし、3つ以上であってもよい。以降、2つのゲーム装置10のうち一方を操作するユーザを第1のユーザと記載し、他方を操作するユーザを第2のユーザと記載する。また、第1のユーザと第2のユーザとをまとめて単にユーザとも記載する。
ゲームサーバ1は、公知のサーバコンピュータである。ゲームサーバ1は、制御部2、記憶部3、及び通信部4を含む。制御部2は、例えば、CPU等を含み、オペレーティングシステムやその他のプログラムに従って情報処理を実行する。記憶部3は、主記憶部(例えば、RAM)と補助記憶部(例えば、ハードディスク)を含む。通信部4は、ネットワークNを介して他の装置(例えば、ゲーム装置10)とデータを授受するためのものである。
図2は、本発明の実施形態に係るゲーム装置のハードウェア構成を示す図である。本発明の実施形態に係るゲーム装置10は、例えば、家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機(スマートフォン)、携帯情報端末又はパーソナルコンピュータ等によって実現される。ここでは、実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
ゲーム装置10は、家庭用ゲーム機11、表示部32、音声出力部34、及び光ディスク36(情報記憶媒体)を含む。
表示部32及び音声出力部34は、家庭用ゲーム機11に接続される。表示部32は、例えば、家庭用テレビ受像機又は液晶ディスプレイなどである。音声出力部34は、例えば、家庭用テレビ受像機に内蔵されたスピーカ又はヘッドホンなどである。
家庭用ゲーム機11は、公知のコンピュータゲームシステムである。家庭用ゲーム機11は、バス12、制御部14、主記憶16、画像処理部18、入出力処理部20、音声処理部22、光ディスク再生部24、ハードディスク26、通信インタフェース28、及びコントローラ30を含む。
制御部14は、一又は複数の制御部(例えば、CPU等)を含む。制御部14は、図示しないROMに格納されるオペレーティングシステムや、光ディスク36から読み出されるプログラムに基づいて、家庭用ゲーム機11の各部を制御する処理や情報処理を実行する。
主記憶16は、例えば、RAMを含む。光ディスク36から読み出されたプログラム及びデータは、主記憶16に書き込まれる。主記憶16は、制御部14の作業用メモリとしても用いられる。バス12は、アドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。
画像処理部18は、VRAMを含む。画像処理部18は、制御部14から供給される画像データに基づいてVRAM上にゲーム画面を描画する。VRAM上に描画されたゲーム画面は、ビデオ信号に変換されて所定のタイミングで表示部32に出力される。
入出力処理部20は、制御部14が、音声処理部22、光ディスク再生部24、ハードディスク26、通信インタフェース28、及びコントローラ30にアクセスするためのインタフェースである。
音声処理部22は、サウンドバッファを含む。音声処理部22は、光ディスク36からサウンドバッファに読み出された音声データを、音声出力部34から出力する。
通信インタフェース28は、インターネットなどの通信ネットワークに、家庭用ゲーム機11を有線又は無線接続するためのインタフェースである。
光ディスク再生部24は、光ディスク36に記録されたプログラムやデータを読み取る。本実施形態においては、プログラムやデータを家庭用ゲーム機11に供給するために、光ディスク36が用られる場合を説明するが、メモリカード等の他の情報記憶媒体が用いられて、プログラムやデータが家庭用ゲーム機11に対して供給されるようにしてもよい。他にも例えば、通信ネットワークを介して遠隔地からプログラムやデータが家庭用ゲーム機11に供給されるようにしてもよい。
ハードディスク26は、一般的なハードディスク装置(補助記憶装置)である。なお、本実施形態において光ディスク36に記憶されるものとして説明するプログラムやデータは、ハードディスク26に記憶されていてもよい。
コントローラ30は、ユーザによる各種ゲーム操作を受け付けるための汎用操作手段である。家庭用ゲーム機11には、一又は複数のコントローラ30が有線又は無線接続される。入出力処理部20は、一定周期毎(例えば、1/60秒毎)にコントローラ30の各操作部材の状態をスキャンする。このスキャン結果を表す操作信号は、バス12を介して制御部14にされる。制御部14は、操作信号に基づいてユーザのゲーム操作を判定する。
本実施形態では、ゲームサーバ1は、一のゲームに参加する複数のユーザ同士をマッチングする。当該マッチングされた複数のユーザの各々のゲーム装置10において、ゲームが実行される。ここでは、これら複数のゲーム装置10のうちの何れかが、ゲームを統括的に制御するサーバとしての役割を果たし、他のゲーム装置10は、クライアントとしての役割を果たす。
例えば、サーバとしての役割を果たすゲーム装置10は、クライアントとしての役割を果たすゲーム装置10からユーザの指示内容を示すデータを受信し、各ユーザの指示に基づいて、現在のゲームの状況を示すゲーム状況データを更新する。さらに、サーバとしての役割を果たすゲーム装置10は、最新のゲーム状況データを、クライアントとしての役割を果たすゲーム装置10に送信する。
一方、クライアントとしての役割を果たすゲーム装置10は、最新のゲーム状況データを受信して記憶する。各ゲーム装置10では、当該ゲーム装置10に記憶されるゲーム状況データに基づいてゲーム画面が表示される。このようにして、ゲームシステムSでは、ゲーム状況データが各ゲーム装置10間で共有される。
[2.ゲームシステムにおいて実行されるゲーム]
本実施形態では、ユーザの指示に基づいて指示対象(例えば、キャラクタ)が動作するゲームが実行される。ここでは、複数のキャラクタの少なくとも一つの動作をユーザが指示するサッカーゲームが実行される場合を例に挙げて説明する。このサッカーゲームには、一又は複数のユーザが参加する。
このサッカーゲームにおいては、ユーザが操作するチーム(以降、「ユーザチーム」という。)と、対戦相手(他のユーザ又はコンピュータ)が操作するチーム(以降、「対戦相手チーム」という。)と、の間でサッカーの試合が行われる。サッカーゲームが開始されると、例えば、ゲーム空間が主記憶16に構築される。
図3は、ゲーム空間の一例を示す図である。図3に示すゲーム空間40は、互いに直交する三つの座標軸(Xw軸、Yw軸、及びZw軸)が設定された仮想的な3次元空間である。図3に示すように、ゲーム空間40には、サッカーフィールドを表すオブジェクトであるフィールド42が配置される。
フィールド42上には、2本のゴールライン44a,44b、2本のタッチライン46a,46b、及びセンターライン48が表されている。2本のゴールライン44a,44b及び2本のタッチライン46a,46bによって囲まれたピッチ50及び当該ピッチ50の周囲(ゴールライン44a,44b又はタッチライン46a,46bに接するピッチ50外の所定領域)において、試合が行われる。
フィールド42上には、サッカーのゴールを表すオブジェクトであるゴール52と、ユーザチームに所属するサッカー選手を表すオブジェクトである選手キャラクタ54と、対戦相手チームに所属するサッカー選手を表すオブジェクトである選手キャラクタ56と、サッカーボール(移動物体)を表すオブジェクトであるボール58と、が配置される。各オブジェクトの位置は、例えば、ワールド座標系(Xw−Yw−Zw座標系)の3次元座標で特定される。
なお、図2では省略されているが、フィールド42上には、ユーザチームに所属する11体の選手キャラクタ54と、対戦相手チームに所属する11体の選手キャラクタ56と、が配置される。
また、ゲーム空間40には、仮想カメラ60(視点)が設定される。ゲーム空間40を仮想カメラ60から見た様子を表すゲーム画面が、表示部32に表示される。ゲーム画面は、ゲーム空間40に配置された各オブジェクトの頂点座標が、所定の座標変換演算を用いてワールド座標系からスクリーン座標系に座標変換されることによって生成される。
本実施形態では、ユーザチームに所属する選手キャラクタ54のうちの何れかが、ユーザの指示対象に設定される。指示対象とは、指示に応じて動作する仮想世界の物体である。ここでは、ユーザチームに所属する選手キャラクタ54が、指示対象に相当する。ユーザの指示対象に設定された選手キャラクタ54は、ユーザの指示に基づいて行動する。ユーザがコントローラ30を用いて方向指示を行うと、指示対象である選手キャラクタ54は、方向指示が示す方向に移動する。
第1のユーザと第2のユーザとが協力してサッカーゲームをプレイする場合、ユーザチームに所属する選手キャラクタ54の何れかが第1のユーザの指示対象に設定され、他の選手キャラクタ54の何れかが第2のユーザの指示対象に設定される。これら指示対象は、試合中に切り替わってもよいし、試合終了まで固定されているようにしてもよい。
ゲーム空間40に配置される各選手キャラクタ54(56)のうちでユーザの指示対象とならないものは、所定の行動アルゴリズム(即ち、ゲーム制作者が定めた動作パターン)に従って自律的に行動する。当該行動アルゴリズムは、ゲームプログラムに記述されている。即ち、ユーザの指示対象の選手キャラクタ54以外の選手キャラクタ54(56)は、コンピュータの指示に基づいて行動する。
本実施形態では、第1のユーザは、第2のユーザと一緒にサッカーゲームをプレイした後に、一人でサッカーゲームをプレイする。この場合、第1のユーザが第2のユーザと一緒にプレイしたときの第2のユーザの指示対象の動きに基づいて、第1のユーザの指示対象以外の選手キャラクタ54(56)を行動させる。即ち、ゲームシステムSでは、第1のユーザが一人でサッカーゲームを遊んでいても、第2のユーザと一緒に遊んでいるような感覚を体験させる構成になっている。以降、本技術について詳細に説明する。
[3.ゲームシステムによって実現される機能]
図4は、ゲームシステムSの機能ブロック図である。図4に示すように、ゲームシステムSにおいては、ゲーム装置10がゲームプログラムを実行することによって、ゲームデータ記憶部70、第1ゲーム制御部72、及び、第2ゲーム制御部78が実現される。ここでは、ゲームデータ記憶部70は、各ゲーム装置10の主記憶16、ハードディスク26、及び光ディスク36を主として実現され、他の各機能は、各ゲーム装置10の制御部14を主として実現される。
[3−1.ゲームデータ記憶部]
ゲームデータ記憶部70は、ゲームを実現するために必要なデータを記憶する。例えば、ゲームデータ記憶部70は、サッカーゲームの現在の状況を示すゲーム状況データを記憶する。
ここでは、下記に示すようなデータが、ゲーム状況データに含まれる。ゲーム状況データは、ゲームの進行に応じて適宜更新される。
(1)各選手キャラクタ54(56)及びボール58の現在の状態(位置、移動方向、及び移動速度等)を示すデータ
(2)ユーザの指示対象に設定されている選手キャラクタ54を示すデータ
(3)ゲームに参加しているユーザを示すデータ
(4)ボール58を保持している選手キャラクタ54(56)を示すデータ
(5)仮想カメラ60の現在の状態(位置及び視線方向等)を示すデータ
(6)その他、試合の状況(例えば、両チームの得点や経過時間)を示すデータ
また、ゲームデータ記憶部70は、ゲームシステムSを利用する各ユーザに関するユーザデータを記憶する。例えば、ユーザデータは、ゲーム装置10を操作するユーザを識別する情報(例えば、ユーザを一意に識別するIDやユーザの個人情報等)と、当該ユーザが一緒にプレイした他のユーザ(例えば、ユーザが現在参加しているゲームに参加している他のユーザ、又は、ユーザが過去に参加したゲームに参加していた他のユーザ)を識別する情報と、を含む。
また、ゲームデータ記憶部70は、複数種類の動作パターンに関する動作パターンデータを記憶する。図5は、動作パターンデータのデータ格納例である。図5に示すように、ここでは、動作パターンデータには、ゲームの基準状況と、当該状況の場合に選手キャラクタ54がとりうる複数種類の動作パターンと、各動作パターンに属する行動をとった選手キャラクタ54を指示していたユーザを識別する情報と、が関連付けられて格納される。
動作パターンデータに格納される基準状況は、ゲームの所定状況であり、例えば、ゲームが所定の場面になること、ゲームの戦況が所定の戦況であること、ゲーム空間40の状態(各オブジェクトの配置状況)が所定の状態であること、選手キャラクタ54(56)が所定の動作を行ったこと、が基準状況になることに相当する。
動作パターンデータに格納される動作パターンは、選手キャラクタ54の行動の類型(行動内容)を示し、予め、複数種類に分類されたパターンが定義されている。例えば、ゲームにおいて選手キャラクタ54が行うことができる複数種類の動作(ユーザが指示可能な選手キャラクタ54の行動)のうちの何れかが、動作パターンとして格納される。ここでは、基準状況における選手キャラクタ54の特徴的な動きが、動作パターンとして格納される。
動作パターンデータに格納されるユーザを識別する情報は、現在又は過去にゲームを一緒にプレイした(ゲームに一緒に参加した)他のユーザを識別する情報が格納される。動作パターンデータに他のユーザを識別する情報が格納されていることは、当該他のユーザの指示対象が、動作パターンに属する動作をしたことを意味する。
なお、制御部14は、ゲームデータ記憶部70に記憶されたデータを取得する手段として機能する。また、制御部14は、ゲームデータ記憶部70に記憶されたデータを更新する手段として機能する。なお、ゲームデータ記憶部70に記憶されるデータは、上記の例に限られない。他にも例えば、選手キャラクタ54(56)に関する各種パラメータ(例えば、各選手キャラクタ54(56)のポジション)等が格納されていてもよい。
[3−2.第1ゲーム制御部]
第1ゲーム制御部72は、第1のユーザと第2のユーザとを含む複数のユーザが参加する第1のゲームを制御する。複数のユーザが一のゲームをプレイすること、複数のユーザがゲームにおいて協力又は対戦すること、が「複数のユーザがゲームに参加する」ことに相当する。本実施形態では、第1のユーザの指示対象と第2のユーザの指示対象とが協力するゲームが、第1のゲームである場合を説明する。
サーバの役割を果たすゲーム装置10の第1ゲーム制御部72は、第1のゲームに参加している各ユーザの操作内容を取得する。そして、第1ゲーム制御部72は、当該取得された各ユーザの操作内容に基づいてゲーム状況データを更新する。更に、第1ゲーム制御部72は、当該更新されたゲーム状況データを、他のゲーム装置10に送信する。
一方、クライアントの役割を果たすゲーム装置10の第1ゲーム制御部72は、サーバの役割を果たすゲーム装置10にユーザの操作内容を送信する。そして、第1ゲーム制御部72は、サーバの役割を果たすゲーム装置10から取得した最新のゲーム状況データに基づいて、ゲームデータ記憶部70の内容を更新する。
[第1動作制御部]
第1ゲーム制御部72は、第1動作制御部74を含む。第1動作制御部74は、第1のユーザと第2のユーザとを含む複数のユーザが参加する第1のゲームにおいて、複数のユーザの各々の指示に基づいて、当該ユーザの指示対象を動作させる。
第1動作制御部74は、選手キャラクタ54(56)のうちで、各ユーザの指示対象となる選手キャラクタ54(56)を設定する。第1動作制御部74は、ゲームの状況に基づいて、各ユーザの指示対象を設定する(切り替える)ようにしてもよいし、各ユーザの操作に基づいて指示対象を設定する(即ち、選手キャラクタ54(56)のうちでユーザが選択したものを指示対象として設定する)ようにしてもよい。
そして、第1動作制御部74は、各ユーザの指示対象を、各ユーザの指示内容に基づいて動作させる。ここでは、ユーザの指示内容(即ち、コントローラ30からの操作内容)と、選手キャラクタ54(56)の動作内容と、が関連付けられてゲームデータ記憶部70に記憶されているものとする。第1動作制御部74は、各ユーザが行った指示内容に関連付けられた動作を、各ユーザの指示対象にさせる。
[パターン記録部]
本実施形態では、第1ゲーム制御部72は、パターン記録部76を含む。パターン記録部76は、第1のゲームにおける第2のユーザの指示対象の動作に関する情報を、ゲームデータ記憶部70に記録する。ここでは、パターン記録部76は、第1のゲームにおける第2のユーザの指示対象の動作結果に基づいて、動作パターンデータを更新する。
本実施形態では、パターン記録部76は、ゲーム状況データに基づいて、実行中の第1のゲームが基準状況になったか否かを判定する。基準状況になったと判定された場合、パターン記録部76は、複数の動作パターンの各々と、第2のユーザの指示対象がとった動作と、を比較して、第2のユーザの指示対象の動作が複数の動作パターンの何れかに属するかを判定する。
パターン記録部76は、複数の動作パターンの何れかに属すると判定された場合、第2のユーザを識別する情報を、動作パターンデータに格納する。即ち、パターン記録部76は、第2のユーザの指示対象がとった動作が属する動作パターンに関連付けて、第2のユーザを識別する情報を格納することによって、動作パターンデータを更新する。
[3−3.第2ゲーム制御部]
第2ゲーム制御部78は、第1のユーザが参加する第2のゲームを統括的に制御する。ここでは、第1のユーザが一人でプレイするゲームが、第2のゲームに相当する場合を説明するが、第2のゲームには、他のユーザが参加していてもよい。
第2ゲーム制御部78は、第2のゲームを開始すると、ゲーム状況データを新たに生成してゲームデータ記憶部70に格納し、第1のユーザの操作内容に基づいて、当該ゲーム状況データを更新する。また、第2ゲーム制御部78は、ゲーム状況データを参照して、実行中の第2のゲームが基準状況になったか否かを判定する。
[特定部]
第2ゲーム制御部78は、特定部80を含む。特定部80は、複数種類の動作パターンのうちで、第1のゲームにおいて第2のユーザの指示対象が行った動作が属する動作パターンを特定する。ここでは、特定部80は、動作パターンデータを参照することによって、第2のユーザの指示対象が行った動作パターンを特定する。
また、特定部80は、第1のゲームが基準状況になった場合における、第2のユーザの指示対象が行った動作が属する動作パターンを特定する。第1のゲームが基準状況になった場合、特定部80は、当該基準状況に対応するレコードに他のユーザ(第2のユーザ)を識別する情報が格納されているか否かを判定する。特定部80は、他のユーザの情報が格納されているレコードの動作パターンを、第2のユーザの指示対象が行った動作が属する動作パターンとして特定する。
[第2動作制御部]
本実施形態では、第2ゲーム制御部78は、第2動作制御部82を含む。第2動作制御部82は、第1のユーザが参加する第2のゲームにおいて、特定部80により特定された動作パターンに基づいて、第1のユーザの指示対象ではないコンピュータの指示対象を動作させる。第2動作制御部82は、動作パターンが示す動作を、ユーザの指示対象以外(即ち、ユーザの指示対象以外の選手キャラクタ54(56))にさせる。
本実施形態では、第2動作制御部82は、第2のゲームが基準状況になった場合に、特定部80により特定された動作パターンに基づいてコンピュータの指示対象を動作させる。即ち、第2動作制御部82は、第2のゲームが基準状況でない場合には、所与の行動アルゴリズムに基づいて、コンピュータの指示対象を動作させる。
[4.ゲームシステムにおいて実行される処理]
図6及び図7は、ゲームシステムSにおいて実行される処理の一例を示すフロー図である。図6及び図7の処理は、制御部2が記憶部3から読み出されたプログラムに従って動作し、かつ、制御部14が、光ディスク36から読み出されたプログラムに従って動作することにより実行される。
図6に示すように、まず、制御部14は、ユーザが他のユーザと参加する第1のゲームを実行するか、ユーザが一人で参加する第2のゲームを実行するか、を判定する(S1)。例えば、ゲームをプレイするにあたり、ユーザは、コントローラ30を操作して、他のユーザと一緒にプレイするか、自分一人でプレイするかを選択する。S1においては、制御部14は、ユーザの操作内容に基づいて、第1のゲームを実行するか第2のゲームを実行するかを判定する。
第1のゲームを実行する場合(S1;第1のゲーム)、制御部14は、ゲームサーバ1に対して、他のユーザとゲームをプレイするためのプレイ要求を送信する(S2)。S2においては、制御部14は、ゲーム装置10のユーザを識別する情報を、プレイ要求とともに送信する。これにより、ゲームサーバ1は、どのユーザが他のユーザとプレイしたがっているかを特定する。
ゲームサーバ1においては、プレイ要求を受け付けると、制御部2は、ユーザ同士のマッチング処理を行う(S3)。S3においては、制御部2は、各ユーザからのプレイ要求を受け付けるたびに、当該プレイ要求をしたユーザを識別する情報を記憶部3に記録する。そして、制御部2は、プレイ要求をした複数のユーザのうちから、所与の方法に基づいて選出される複数のユーザ同士をマッチングさせる。
制御部2は、S3におけるマッチング結果に基づいて、サーバの役割を果たすゲーム装置10を決定する(S4)。S4においては、S3でマッチングしたユーザのうちから、所与の方法により定まるユーザのゲーム装置10を、サーバの役割を果たすゲーム装置10として決定し、他のユーザのゲーム装置10を、クライアントの役割を果たすゲーム装置10として決定する。
制御部2は、各ゲーム装置10に第1のゲームの開始指示を送信する(S5)。S5においては、制御部2は、S3でマッチングした各ユーザのゲーム装置10に対して、一緒にゲームに参加する他のユーザを識別する情報、当該他のユーザのゲーム装置10を識別する情報、各ゲーム装置10が果たす役割(サーバの役割又はクライアントの役割)等を送信する。
ゲーム装置10においては、第1のゲームの開始指示を受信すると、制御部14は、複数のユーザが参加する第1のゲームを開始する(S6)。S6においては、サーバの役割を果たすゲーム装置10において、制御部14は、ゲーム状況データを生成して主記憶16に格納するとともに、クライアントの役割を果たすゲーム装置10に送信する。クライアントの役割を果たすゲーム装置10は、ゲーム状況データを受信すると、主記憶16に格納する。
制御部14は、第1のゲームを進行し、各ユーザの指示内容に基づいて各ユーザの指示対象を動作させる(S7)。
S7においては、サーバの役割を果たすゲーム装置10では、制御部14は、コントローラ30からの操作内容と、他のゲーム装置10から操作内容と、を取得して、各ユーザの指示対象を動作させる。また、制御部14は、各ユーザの指示対象以外の選手キャラクタ54(56)を、所定のアルゴリズムに基づいて選手キャラクタ54(56)を動作させる。制御部14は、各選手キャラクタ54(56)の動作内容に基づいて、ゲーム状況データを更新する。そして、制御部14は、当該更新したゲーム状況データを、他のゲーム装置10に送信する。
一方、クライアントの役割を果たすゲーム装置10においては、サーバの役割を果たすゲーム装置10にユーザの操作内容を送信する。そして、制御部14は、配信されたゲーム状況データを取得して主記憶16に格納する。即ち、制御部14は、当該取得された最新のゲーム状況データに更新することになる。また、各ゲーム装置10においては、上記のように更新されたゲーム状況データに基づいて、ゲーム画面の表示制御が行われる。
制御部14は、実行中のゲームの状況が基準状況になったか否かを判定する(S8)。S8においては、制御部14は、ゲーム状況データが示す状況が基準状況であるか否かを判定する。例えば、制御部14は、各選手キャラクタ54(56)の位置関係(例えば、第1のユーザの指示対象と第2のユーザの指示対象との位置関係)が所与の位置関係になったか否かを判定する。
基準状況になったと判定された場合(S8;Y)、制御部14は、ゲーム装置10を操作するユーザではない他のユーザ(即ち、第2のユーザ)の指示対象の動作が、S9で参照された複数の動作パターンの何れかに属するか否かを判定する(S9)。S9においては、制御部14は、動作パターンデータに格納された複数の動作パターンのうち、上記基準状況に関連付けられた動作パターンを参照する。そして、制御部14は、ゲーム状況データに基づいて特定される他のユーザの指示対象が行った動作(即ち、実行中の第1のゲームが基準状況になった場合に他のユーザの指示対象が行った動作)と、動作パターンデータに格納された動作パターンと、を比較する。
複数の動作パターンの何れかに属すると判定された場合(S9;Y)、制御部14は、当該動作パターンと他のユーザとを関連付けて動作パターンデータに格納する(S10)。S11においては、制御部14は、動作パターンデータに格納された各レコードのうち、他のユーザの指示対象の動作が属する動作パターンのレコードに、当該他のユーザを識別する情報(例えば、ユーザのIDやユーザ名等)を格納する。
制御部14は、終了条件を満たすか否かを判定する(S11)。終了条件は、予め定められた条件であればよい。例えば、終了条件は、試合の終了時間が訪れたか否か、又は、ユーザによりゲームの終了指示が行われたか否か等である。
終了条件を満たすと判定された場合(S11;Y)、処理は終了する。終了条件を満たさないと判定された場合(S11;N)、S7の処理に戻り、制御部14は、ゲームを進行する。
一方、第2のゲームが実行される場合(S1;第2のゲーム)、図7に移り、制御部14は、第2のゲームを開始する(S12)。S12においては、制御部14は、ゲーム状況データを生成して主記憶16に格納する。
制御部14は、ユーザの指示内容に基づいて、ユーザの指示対象を動作させる(S13)。S13においては、制御部14は、ゲーム装置10のユーザの指示対象に、当該ユーザの指示内容に関連付けられた動作を行わせる。また、制御部14は、他の選手キャラクタ54(56)を、所与の行動アルゴリズムに基づいて動作させる。
制御部14は、実行中のゲームの状況が基準状況になったか否かを判定する(S14)。基準状況になったと判定された場合(S14;Y)、制御部14は、動作パターンデータのうち、当該基準状況に関連付けられたレコードに、他のユーザを識別する情報が格納されているか否かを判定する(S15)。S15においては、制御部14は、第1のゲームが基準状況になった場合に、第2のユーザの指示対象が動作パターンに属する動作をしたか否かを判定することになる。
他のユーザを識別する情報が格納されていると判定された場合(S15;Y)、制御部14は、第1のゲームで当該他のユーザの指示対象が行った動作パターンを特定する(S16)。S16においては、制御部14は、動作パターンデータに格納された複数の動作パターンのうちで、他のユーザを識別する情報が格納されているレコードの動作パターンを特定することになる。
制御部14は、S16において特定された動作パターンに基づいて、コンピュータの指示対象(即ち、ユーザの指示対象以外の選手キャラクタ54)を動作させる(S17)。S17においては、制御部14は、コンピュータの指示対象の少なくとも一つに、第1のゲームにおいて第2のユーザの指示対象が行った動作と同じ動作をさせることになる。
制御部14は、終了条件を満たすか否かを判定する(S18)。終了条件を満たすと判定された場合(S18;Y)、処理は終了する。終了条件を満たさないと判定された場合(S18;N)、S13の処理に戻り、制御部14は、第2のゲームを進行する。
以上説明したゲームシステムSによれば、第1のゲームにおいて第1のユーザが一緒にプレイした第2のユーザの指示対象の動作パターンに基づいて、第1のユーザが一人でプレイする場合の選手キャラクタ54を動作させるので、第1のユーザは、一人でサッカーゲームをプレイしていても、第2のユーザと一緒にプレイしているような感覚を体験することができる。
また、実行中のゲームの状況が基準状況になった場合の動作パターンに基づいて選手キャラクタ54を動作させることによって、特定の状況における第2のユーザのゲームプレイを仮想的に第2のゲームで再現することができるので、第1のユーザは、第2のユーザと一緒にプレイしているような感覚を、より効果的に体験することができる。
[5.変形例]
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
図8は、変形例の機能ブロック図である。図8に示すように、変形例のゲームシステムSでは、実施形態の機能に加えて、報酬付与部84と、表示制御部86と、を実現する。報酬付与部84は、制御部14を主として実現され、表示制御部86は、制御部14及び画像処理部18を主として実現される。
(1)例えば、実施形態においては、第2のユーザの指示対象の動作パターンに基づいて第1のユーザの指示対象以外の選手キャラクタ54の何れかが動作する場合を説明したが、第2のユーザの指示対象のポジションと同じポジションの選手キャラクタ54を動作させるようにしてもよい。
各指示対象(ここでは、選手キャラクタ54)には、複数種類の役割(役目又は任務)の少なくとも一つが与えられる。役割とは、ゲームにおいて果たすべき役割であり、選手キャラクタ54(56)の担当ともいえる。ここでは、各選手キャラクタ54(56)のポジションが、役割に相当する。例えば、各選手キャラクタ54(56)には、フォワード、ミッドフィールダー、ディフェンダー、ゴールキーパーの4種類のポジションの何れかが与えられる。
図9は、変形例(1)の動作パターンデータの一例である。図9に示すように、ここでは、第2のユーザの指示対象が担う可能性のある複数のポジションの各々について、複数の動作パターンが用意されている。即ち、動作パターンデータに格納される複数の動作パターンは、各ポジションの選手キャラクタ54がすべき動作パターンともいえる。
第2のユーザの指示対象の動作が複数の動作パターンの何れかに属する場合、パターン記録部76は、第2のユーザの指示対象のポジションと、当該第2のユーザを識別する情報と、を関連付けて動作パターンデータに格納する。ここでは、パターン記録部76は、動作パターンデータに格納された動作パターンのうち、第2の指示対象のポジションに関連付けられた動作パターンを、第2の指示対象の動作との比較対象とする。そして、パターン記録部76は、第2の指示対象の動作が属する動作パターンに関連付けて第2のユーザを識別する情報を格納することになる。
変形例(1)の第2動作制御部82は、特定部80により特定された動作パターンと、第1のゲームにおける第2のユーザの指示対象の役割と、第2のゲームにおけるコンピュータの指示対象の役割と、に基づいて、コンピュータの指示対象を動作させる。第2動作制御部82は、コンピュータの指示対象のうちで、第2のユーザの指示対象のポジションと同じポジションが割り当てられたものを、動作パターンに基づいて動作させる。
変形例(1)によれば、第2のユーザの指示対象のポジションと同じポジションの選手キャラクタ54を、第2のユーザの指示対象の動作パターンに基づいて制御するので、第1のユーザは、第2のユーザと一緒にプレイしているような感覚を、より効果的に体験することができる。
(2)また例えば、第1のゲームにおいて第1のユーザの指示対象が担っていたポジションと、第2のゲームにおいて第1のユーザの指示対象が担っているポジションと、が同じ場合に、第2のユーザの指示対象の動作パターンに基づいて、選手キャラクタ54を動作させるようにしてもよい。
図10は、変形例(2)の動作パターンデータの一例である。図10に示すように、ここでは、第1のユーザの指示対象が担う可能性のある複数のポジションの各々に、複数の動作パターンが用意されている。
第2のユーザの指示対象の行動が複数の動作パターンに属する場合、パターン記録部76は、第1のユーザの指示対象のポジションと、当該第2のユーザを識別する情報と、を関連付けて動作パターンデータに格納する。ここでは、パターン記録部76は、動作パターンデータに格納された動作パターンのうち、第1の指示対象のポジションに関連付けられた動作パターンを、第2の指示対象の動作との比較対象とする。そして、パターン記録部76は、第2の指示対象の動作が属する動作パターンに関連付けて第2のユーザを識別する情報を格納することになる。
変形例(2)の第2動作制御部82は、特定部80により特定された動作パターンと、第1のゲームにおける第1のユーザの指示対象の役割と、第2のゲームにおける第1のユーザの指示対象の役割と、に基づいて、コンピュータの指示対象を動作させる。第2動作制御部82は、第1のユーザの現在の指示対象のポジションと同じポジションが割り当てられた動作パターンに基づいて、コンピュータの指示対象を動作させる。
変形例(2)によれば、第1のゲームと第2のゲームとの第1のユーザの指示対象のポジションが同じ場合に、第2のユーザの指示対象の動作パターンで選手キャラクタ54を動作させることができる。
(3)また例えば、第2のゲームにおいて、第2のユーザの指示対象の動作パターンに基づいた動作制御が実行された場合、第2のユーザに報酬が付与されるようにしてもよい。なお、ここでの報酬を付与するとは、第2のユーザがプレイするゲームを有利にすることであり、第2のユーザに係るパラメータを変化させることである。例えば、第2のユーザにアイテムを付与すること、第2のユーザが保有するゲーム内通貨(ポイント)を増加させること、第2のユーザが保有するキャラクタの能力やレベル等に関するパラメータを変化させることが、報酬を付与することに相当する。
変形例(3)のゲームシステムSは、報酬付与部84を含む。報酬付与部84は、特定部80により特定された動作パターンに基づいた動作制御が実行された場合、第2のユーザに報酬を付与する。報酬付与部84は、第2のゲームのゲーム状況データに基づいて、第2のゲームにおいて動作制御部が動作制御をしたか否かを判定する。第2のゲームにおいて動作制御部が動作制御をしたと判定された場合、報酬付与部84は、第2のユーザに報酬を付与して、第2のユーザがプレイするゲームを有利にする。
変形例(3)によれば、第2のユーザの指示対象の動作パターンに基づいた動作制御が実行された場合に、第2のユーザに報酬を付与することができる。
(4)また例えば、第2のゲームにおいて、ユーザチームに所属する選手キャラクタ54のうちで第2のユーザの指示対象の動作パターンに基づいて動作している選手キャラクタ54を第1のユーザに提示するようにしてもよい。
変形例(4)のゲームシステムSは、表示制御部86を含む。表示制御部86は、第2動作制御部82が動作制御を実行する場合、ゲーム画面において、第2動作制御部82が動作制御をするコンピュータの指示対象に関連付けて、第2のユーザを示す画像を表示させる。
図11は、表示部32に表示されるゲーム画面の一例を示す図である。図11に示すように、ゲーム空間40を仮想カメラ60から見た様子を示すゲーム画面90が表示部32に表示される。ここでは、第2のユーザの指示対象の動作パターンに基づいて制御されている選手キャラクタ54に関連付けて、第2のユーザの名称を示す画像92が表示される。
なお、選手キャラクタ54に関連付けて画像92を表示させるとは、選手キャラクタ54の付近(所定距離以内)に画像を表示させることである。第2のユーザを示す画像92は、第2のユーザを識別する画像であり、例えば、第2のユーザの名前、ID、アバター画像等である。
変形例(4)によれば、第2のゲームにおいて、どの選手キャラクタ54が第2のユーザのプレイを表現しているかが分かるようになる。
(5)また例えば、第1のユーザと第2のユーザとが何度も一緒にプレイする場合、第2のユーザのゲームプレイの傾向が変わることがある。このため、第1のユーザと第2のユーザとが何度も一緒にゲームをプレイした場合、最近の第2のユーザの傾向を再現するようにしてもよい。
ここでは、第1のゲームは、繰り返し実行可能である。即ち、第1のユーザは、第2のユーザと繰り返しゲームをプレイすることができる。ここでは、ゲームサーバ1がユーザ同士のマッチングをするので、第1のユーザと第2のユーザとの両方がプレイ要求をゲームサーバ1に対して行っていれば、第1のユーザと第2のユーザとは繰り返し一緒にゲームをプレイすることができる。
変形例(5)の特定部80は、繰り返される第1のゲームの各々において第2のユーザの指示対象が行った動作が属する動作パターンを特定する。即ち、特定部80は、第1のユーザと第2のユーザとが繰り返し一緒にゲームに参加した場合、各ゲームにおいて第2のユーザの指示対象が行った動作が属する動作パターンを特定することになる。ここでは、第1のユーザが第2のユーザとゲームに参加するたびに、動作パターンデータに第2のユーザの指示対象の動作パターンが格納されるので、特定部80は、動作パターンデータを参照することによって、第2のユーザの指示対象の動作パターンを特定する。
第2動作制御部82は、繰り返される第1のゲームの各々が実行されたタイミングと、上記特定された動作パターンと、に基づいて、コンピュータの指示対象を動作させる。第2動作制御部82は、現時点と第1のゲームの実行タイミングとの時間間隔と、当該第1のゲームでの動作パターンと、に基づいて、選手キャラクタ54を動作させる。例えば、第2動作制御部82は、現時点に最も近くに実行された第1のゲーム(直近の第1のゲーム)における第2のユーザの指示対象の動作パターンに基づいて、第1のユーザの指示対象以外の選手キャラクタ54を動作させる。
変形例(5)によれば、第1のユーザと第2のユーザとが何度も一緒にプレイした場合、最近の第2のユーザの傾向を再現することができる。
(6)また例えば、実施形態においては、各ユーザが協力するゲームを例に挙げて説明した。即ち、特定部80が、第1のゲームにおいて第2のユーザの指示対象が第1のユーザの指示対象に協力した場合の動作が属する動作パターンを特定し、第2動作制御部82が、第2のゲームにおいて、第1のユーザの指示対象と協力するコンピュータの指示対象を、特定部80により特定された行動パターンに基づいて動作させる場合を説明した。なお、「一の指示対象が他の指示対象に協力する」ことは、一の指示対象が他の指示対象を支援する動作をすることであり、ここでは、同じチームに属することである。
ゲームシステムSにおいて実行されるゲームは、各ユーザが対戦するゲームであってもよい。即ち、第1のゲームは、複数のユーザの各々の指示対象が協力又は対戦するゲームであればよい。
変形例(6)の特定部80は、第1のゲームにおいて第2のユーザの指示対象が第1のユーザの指示対象と対戦した場合の動作が属する動作パターンを特定し、第2動作制御部82は、第2のゲームにおいて、第1のユーザの指示対象と対戦するコンピュータの指示対象を、特定部80により特定された動作パターンに基づいて動作させる。なお、「一の指示対象が他の指示対象と対戦する」ことは、一の指示対象が他の指示対象と対峙すること(一の指示対象が他の指示対象を妨害すること)であり、ここでは、異なるチームに属することである。
変形例(6)によれば、第2のユーザと対戦したときの第2のユーザの指示対象の動きを、第2のゲームにおける対戦相手チームの選手キャラクタ56の動作で仮想的に再現することができる。なお、特定部80は、第1のユーザの指示対象と第2のユーザの指示対象とが協力又は対戦する場合の少なくとも一方について、第2のユーザの指示対象の動作パターンを特定すればよい。同様に、第2動作制御部82は、第1のユーザの指示対象とコンピュータの指示対象とが協力又は対戦する場合の少なくとも一方において、コンピュータの指示対象の動作制御をするようにすればよい。
(7)また例えば、実施形態においては、第2のゲームに、第1のユーザ以外のユーザが参加しない場合(即ち、第1のユーザが一人でゲームに参加する場合)を例に挙げて説明したが、第2のゲームは、他のユーザが参加しているようにしてもよい。例えば、第2のゲームは、第1のユーザが参加し、第2のユーザが参加しないゲームであり、他のユーザが参加するゲームであってもよい。
第2動作制御部82は、第2のゲームに、第1のユーザと、第2のユーザ以外のユーザと、を含む複数のユーザが参加する場合、特定部80により特定された動作パターンに基づいて、各ユーザの指示対象ではないコンピュータの指示対象を動作させる。
変形例(7)によれば、複数のユーザが参加しているゲームにおいて、第2のユーザのゲームプレイを仮想的に再現することができる。
(8)また例えば、上記実施形態及び変形例の2つ以上を組み合わせてもよい。
また例えば、上記においては、予め複数種類の動作パターンを用意しておき、第1のゲームにおける第2のユーザの指示対象の動作パターンが、これら用意された動作パターンの何れに属するかが判定される場合を説明したが、動作パターンは予め用意しておかなくてもよい。例えば、第1のゲームの実行中において、第2のユーザの指示対象が特徴的な動作を行ったか否かを、第1のユーザ又は第2のユーザにより選択させて、第2のユーザの指示対象が行った動作パターンを新たに追加するようにしてもよい。
図12は、第1のゲームの実行中に表示部32に表示されるゲーム画面の一例を示す図である。図12に示すように、例えば、第1のゲームが基準状況になった場合に、第2のユーザの指示対象が特徴的な動作をしたか否かを質問するためのメッセージ102がゲーム画面100に表示される。第1のユーザ又は第2のユーザは、メッセージ102に対する回答ボタン104,106の何れかを選択する。例えば、第2のユーザの指示対象が特徴的な動作をした場合に、第1のユーザ又は第2のユーザは、回答ボタン104を選択する。
回答ボタン104が選択された場合、パターン記録部76は、第2のユーザの指示対象が行った動作を示すデータを、第2のユーザの指示対象の動作パターンとしてゲームデータ記憶部70に記録する。この場合、パターン記録部76は、ゲーム状況データを参照することにより、第1のゲームが基準状況になった場合に第2のユーザの指示対象が行った動作を特定し、第2のユーザの指示対象の動作パターンとして新たにゲームデータ記憶部70に記録する。なお、回答ボタン106が選択された場合、第2のユーザの指示対象が特徴的な動作をしなかったとして、動作パターンが記録されないことになる。
上記のように、第2のユーザの指示対象の特徴的な動作を特定するために、予め動作パターンを用意せずに、第2のユーザの指示対象が特徴的な動作をしたか否かを第1のユーザ又は第2のユーザに選択させて、新たな動作パターンとして追加するようにしてもよい。
また例えば、実施形態においては、第1のゲームが基準状況になった場合の第2のユーザの指示対象の動作が属する動作パターンを記憶しておき、第2のゲームが当該基準状況になった場合に、当該動作パターンに基づいて第2のユーザのゲームプレイを仮想的に再現する場合を説明したが、必ずしも、ゲームの実行中に基準状況になったか否かが判定されなくてもよい。例えば、第2のユーザの指示対象の動作が複数種類の動作パターンの何れかに属するか否かが、第1のゲーム全体を通じて判定されるようにしてもよい。この場合、例えば、第1のゲームにおける第2のユーザの指示対象の動作パターンに基づいて、第2のゲーム全体を通じて、第2のユーザのゲームプレイを仮想的に再現するようにしてもよい。
また例えば、実施形態においては、第1のゲームが、第1のユーザと第2のユーザとが参加するゲームである場合を説明したが、他のユーザが参加していてもよい。即ち、第1のゲームは3人以上のユーザが参加しているようにしてもよい。
また例えば、上記においては、第1のゲームの実行中に、動作パターンデータが更新されることによって、第2のユーザの指示対象の特徴的な動きが記録される場合を説明したが、当該動きは、第1のゲームの実行結果(即ち、第2のユーザの指示対象の動作結果)に基づいて特定されるようにすればよい。他にも例えば、第1のゲームにおける各ユーザの指示対象の動作を記録しておき、第2のゲームの開始前又は実行中において、当該記録された内容に基づいて、第2のユーザの指示対象の動作がどの動作パターンに属するかが特定されるようにしてもよい。
また、機能ブロックに示した各機能が、ゲームシステムSに含まれる各装置で分担されるようにしてもよい。即ち、各機能が、ゲームサーバ1とゲーム装置10との何れかで実現されるようにしてもよい。
また、実施形態においては、ゲームシステムSに含まれるゲーム装置10のうちの何れかがサーバの役割を果たす場合を説明したが、ゲームサーバ1がゲームを統括的に実行するようにしてもよい。この場合、各ユーザが操作するゲーム装置10は、ゲームサーバに対して操作内容を送信する。各ゲーム装置10から操作内容を取得するゲームサーバは、実施形態におけるゲーム装置10と同様の動作を行う。
また、実施形態においては、ゲームシステムSに複数のゲーム装置10が含まれる場合を説明したが、ゲームシステムSは、1台のゲーム装置10であってもよい。この場合、第1のユーザと第2のユーザは、同じゲーム装置10に含まれるコントローラ30を用いて対戦する。例えば、第1のユーザと第2のユーザとが同じゲーム装置10を用いて一緒にプレイした場合の第2のユーザの指示対象の動作パターンを記憶しておき、第1のユーザが当該ゲーム装置10を用いて一人でプレイする場合に、当該動作パターンに基づいて、第2のユーザのゲームプレイが再現される。即ち、オンライン型のゲーム以外にも、スタンドアロン型のゲームに、本発明を適用してもよい。
また、ゲームシステムSにおいてサッカーゲームが実行される場合を説明したが、複数のユーザが参加するゲームが実行されるようにすればよい。他にも例えば、バスケットボールゲーム、アイスホッケーゲーム等が実行されるようにしてもよい。また、移動物体を用いたスポーツゲームが実行される場合には、移動物体はボールに限られず、パック等であってもよい。また、スポーツゲーム以外にも、シミュレーションゲーム等が実行されるようにしてもよい。