(57)【要約】【課題】複数のプレイヤが１つの仮想空間を共有するゲームにおいて、送受信されるデータ量を削減すること。【解決手段】複数のプレイヤが１つの仮想空間内でキャラクタを操作するゲームにおいて、プレイヤが利用する端末を、仮想空間に含まれる複数のオブジェクトのうち、所定のオブジェクトに仮想的な力が加えられたことを検出する検出手段と、所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとに基づいて、所定のオブジェクトの移動と、所定のオブジェクトが衝突することで生じる所定のオブジェクト以外のオブジェクトの移動とをシミュレーションする演算手段と、所定のオブジェクトを識別する識別子と、所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとを示す演算指示メッセージを、当該端末を操作するプレイヤとは異なる他のプレイヤが利用する他の端末に送信する送信手段と、して機能させるゲーム処理プログラムを提供する。【選択図】図３
2020048832.tif 000002
【特許請求の範囲】
【請求項１】
複数のプレイヤが１つの仮想空間内でキャラクタを操作するゲームにおいて、前記プレイヤが利用する端末を、
前記仮想空間に含まれる複数のオブジェクトのうち、所定のオブジェクトに仮想的な力が加えられたことを検出する検出手段と、
前記所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとに基づいて、前記所定のオブジェクトの移動と、前記所定のオブジェクトが衝突することで生じる前記所定のオブジェクト以外のオブジェクトの移動とをシミュレーションする演算手段と、
前記所定のオブジェクトを識別する識別子と、前記所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとを示す演算指示メッセージを、当該端末を操作するプレイヤとは異なる他のプレイヤが利用する他の端末に送信する送信手段と、
して機能させるゲーム処理プログラム。
【請求項２】
前記演算手段は、前記他の端末から受信した演算指示メッセージで示されるオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとに基づいて、該演算指示メッセージで示されるオブジェクトの移動と、該演算指示メッセージで示されるオブジェクトが衝突することで生じる該演算指示メッセージで示されるオブジェクト以外のオブジェクトの移動とをシミュレーションする、
請求項１に記載のゲーム処理プログラム。
【請求項３】
前記送信手段は、当該端末を利用するプレイヤが操作するキャラクタが行う所定の動作により前記所定のオブジェクトに仮想的な力が加わった場合、前記演算指示メッセージを前記他の端末に送信する処理を行う、
請求項１又は２に記載のゲーム処理プログラム。
【請求項４】
前記所定の動作は、キャラクタが物体を発射する動作である、
請求項３に記載のゲーム処理プログラム。
【請求項５】
前記送信手段は、当該端末を利用するプレイヤが操作するキャラクタが物体を発射する動作を行った場合、発射された物体の位置と移動速度と移動方向とを示す通知メッセージを、前記他の端末に送信する、
請求項４に記載のゲーム処理プログラム。
【請求項６】
前記仮想空間に含まれる複数のオブジェクトのうち、同期を行う条件を満たすオブジェクトが存在する場合、該オブジェクトに関する同期情報を前記他の端末に送信する同期手段、を更に有する、
請求項１乃至５のいずれか一項に記載のゲーム処理プログラム。
【請求項７】
前記同期を行う条件は、オブジェクトの位置がゲーム開始直後の位置から所定の距離移動した場合であり、
前記同期情報は、オブジェクトの現在位置を示す情報である、
請求項６に記載のゲーム処理プログラム。
【請求項８】
前記同期を行う条件は、前記演算手段がオブジェクトを消去すると判定した場合であり、
前記同期情報は、前記演算手段により消去すると判定されたオブジェクトを示す情報である、
請求項６又は７に記載のゲーム処理プログラム。
【請求項９】
前記オブジェクトの形状は、直方体である、
請求項１乃至８のいずれか一項に記載のゲーム処理プログラム。
【請求項１０】
複数のプレイヤが１つの仮想空間内でキャラクタを操作するゲームにおいて、前記プレイヤが利用する端末であって、
前記仮想空間に含まれる複数のオブジェクトのうち、所定のオブジェクトに仮想的な力が加えられたことを検出する検出部と、
前記所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとに基づいて、前記所定のオブジェクトの移動と、前記所定のオブジェクトが衝突することで生じる前記所定のオブジェクト以外のオブジェクトの移動とをシミュレーションする演算部と、
前記所定のオブジェクトを識別する識別子と、前記所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとを示す演算指示メッセージを、当該端末を操作するプレイヤとは異なる他のプレイヤが利用する他の端末に送信する送信部と、
を有する端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム処理プログラム、ゲーム処理方法及び端末に関する。
【背景技術】
【０００２】
現在、複数のプレイヤが１つの仮想空間の中でキャラクタを操作することで対戦するゲームが知られている。例えば特許文献１には、仮想空間の中でプレイヤが敵と味方に分かれて対戦する対戦ゲームであって、戦況が拮抗状態である場合に、戦況の優越を変動させる攻撃を行ったキャラクタを操作するプレイヤに所定の特典を付与することで、興趣性の高い対戦ゲームを提供する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１５０１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のプレイヤが１つの仮想空間を共有するゲームでは、あるプレイヤの行為等によって仮想空間内で生じた状態の変化を、端末間で同期させる必要がある。例えば、あるプレイヤが仮想空間内の建物を破壊した場合、建物が破壊される様子は、他のプレイヤの端末にも同様に表示させる必要がある。
【０００５】
ここで、複数のプレイヤが１つの仮想空間を共有するゲームでは、基本的には、仮想空間を構成する各要素の位置等を示す同期用のデータを端末間で送受信することになる。従って、例えば、仮想空間が多数のオブジェクトにより構成されている場合に、仮想空間に存在する全てのオブジェクトについて位置情報を同期させようとすると、端末間で送受信されるデータ量が膨大になってしまう可能性がある。
【０００６】
そこで、本発明は、複数のプレイヤが１つの仮想空間を共有するゲームにおいて、送受信されるデータ量を削減することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様に係るゲーム処理プログラムは、複数のプレイヤが１つの仮想空間内でキャラクタを操作するゲームにおいて、プレイヤが利用する端末を、仮想空間に含まれる複数のオブジェクトのうち、所定のオブジェクトに仮想的な力が加えられたことを検出する検出手段と、所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとに基づいて、所定のオブジェクトの移動と、所定のオブジェクトが衝突することで生じる所定のオブジェクト以外のオブジェクトの移動とをシミュレーションする演算手段と、所定のオブジェクトを識別する識別子と、所定のオブジェクトに加えられた仮想的な力の方向と仮想的な力の大きさとを示す演算指示メッセージを、当該端末を操作するプレイヤとは異なる他のプレイヤが利用する他の端末に送信する送信手段と、して機能させる。
【発明の効果】
【０００８】
本発明によれば、複数のプレイヤが１つの仮想空間を共有するゲームにおいて、送受信されるデータ量を削減することが可能な技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係るゲームシステムのシステム構成例を示す図である。
【図２】端末のハードウェア構成例を示す図である。
【図３】端末の機能ブロック構成例を示す図である。
【図４】仮想空間情報の一例を示す図である。
【図５】ゲームにおける仮想空間の一例を示す図である。
【図６】本実施形態に係るゲームシステムが行う処理手順の一例を示すシーケンス図である。
【図７】仮想空間の一部を拡大した図である。
【図８】複数のオブジェクトが崩れ落ちる様子の例を示す図である。
【図９】本実施形態に係るゲームシステムが行う同期処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【００１１】
＜システム概要＞
図１は、本実施形態に係るゲームシステム１のシステム構成例を示す図である。図１に示すゲームシステム１は、複数の端末（１０−１〜１０−Ｎ）とサーバ２０とを有する。以下の説明において、複数の端末（１０−１〜１０−Ｎ）を区別しない場合は、端末１０と記載する。また、ゲームシステム１において端末１０の台数に制限はない。
【００１２】
端末１０とサーバ２０は、インターネット、イントラネット、無線ＬＡＮ、移動通信等である通信ネットワークＮを介して相互に通信することができる。また、端末１０は、サーバ２０を介して相互に通信してもよいし、Ｐ２Ｐ（Peer to Peer）通信を利用して直接他の端末１０と通信するようにしてもよい。
【００１３】
端末１０は、プレイヤ（ゲームを行うユーザ）が操作する端末である。プレイヤは、端末１０を操作することで、ゲームシステム１により提供されるゲームをプレイすることができる。端末１０は、例えば、携帯電話（スマートフォンを含む）、タブレット、パーソナルコンピュータ、アーケードゲーム装置、又は、コンシューマゲーム装置等のコンピュータである。
【００１４】
サーバ２０は、ゲームシステム１でゲームを提供するために必要な各種の処理を行う機能、ゲームの進行に必要な各種の情報を管理する機能、及び端末１０間で送受信されるデータを中継する機能等を備える。
【００１５】
ゲームシステム１は、複数のプレイヤの各々が、１つの仮想空間の中でキャラクタを操作することが可能なゲームを提供する。仮想空間の中では、建築物や地面等を含む様々な構造物が複数のオブジェクトの集合により構成されている。プレイヤは、キャラクタを操作することで、仮想空間内に存在する様々な構造物を破壊したり任意に移動させたりすることができる。
【００１６】
各オブジェクトの形状は任意であり、例えば、立方体、直方体、多面体及び球体等のあらゆる形状が含まれていてもよい。また、一般的にブロックと呼ばれる略直方体等もオブジェクトに含まれる。また、各オブジェクトの大きさも任意であってもよい。
【００１７】
ゲームシステム１が提供するゲームの仮想空間は、３次元の仮想空間であることを想定しているが、これに限定されるものではない。２次元の仮想空間であってもよいし、４次元以上の多次元の仮想空間であってもよい。
【００１８】
＜ハードウェア構成＞
図２は、端末１０のハードウェア構成例を示す図である。端末１０は、ＣＰＵ（Central Processing Unit）１１、メモリ、ＨＤＤ（Hard Disk Drive）及び／又はＳＳＤ（Solid State Drive）等の記憶装置１２、有線又は無線通信を行う通信ＩＦ（Interface）１３、入力操作を受け付ける入力デバイス１４、及び情報の出力を行う出力デバイス１５を有する。入力デバイス１４は、例えば、キーボード、タッチパネル、マウス及び／又はマイク等である。出力デバイス１５は、例えば、ディスプレイ及び／又はスピーカ等である。
【００１９】
＜機能ブロック構成＞
図３は、端末１０の機能ブロック構成例を示す図である。端末１０は、記憶部１００と、ゲーム実行部１１０とを有する。ゲーム実行部１１０は、検出部１１１と、演算部１１２と、通信部１１３と、受付部１１４と、表示制御部１１５と、同期部１１６とを含む。
【００２０】
ゲーム実行部１１０と、検出部１１１と、演算部１１２と、通信部１１３と、受付部１１４と、表示制御部１１５と、同期部１１６とは、端末１０のＣＰＵ１１が、記憶装置１２に記憶されたプログラムを実行することにより実現することができる。また、当該プログラムは、記憶媒体に格納することができる。当該プログラムを格納した記憶媒体は、コンピュータ読み取り可能な非一時的な記憶媒体（Non-transitory computer readable medium）であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、ＵＳＢメモリ又はＣＤ−ＲＯＭ等の記憶媒体であってもよい。また、記憶部１００は、端末１０が備える記憶装置１２を用いて実現することができる。
【００２１】
記憶部１００は、仮想空間情報を記憶する。仮想空間情報には、仮想空間内に存在する全てのオブジェクトに関する位置や形状に関する情報が格納される。図４に、仮想空間情報の一例を示す。「オブジェクトＩＤ」は、仮想空間に存在する全てのオブジェクトを一意に識別する識別子を示す。「初期位置」には、ゲーム開始時点におけるオブジェクトの位置を示す座標データ（ｘ、ｙ、ｚ）が格納される。「現在位置」には、現時点におけるオブジェクトの位置を示す座標データ（ｘ、ｙ、ｚ）が格納される。「ＨＰ（ヒットポイント）」は、オブジェクトが受けることができるダメージの最大値が格納される。落下や衝突等によりオブジェクトが受ける衝撃の大きさに応じてＨＰは低下していき、ＨＰがゼロになったオブジェクトは仮想空間から消滅する。
【００２２】
ゲーム実行部１１０は、プレイヤの操作に応じてキャラクタを移動させる処理や他のキャラクタへ攻撃する処理など、ゲームシステム１が提供するゲームを実行するために必要な各種の処理を行う。
【００２３】
検出部１１１は、キャラクタが行う所定の動作により、所定のオブジェクトに仮想的な力（以下、単に「力」と記載する。）が加えられたことを検出する。なお、仮想的な力とは、オブジェクトを仮想空間中で移動させようとする作用のことを言う。また、検出部１１１は、当該所定のオブジェクトに加えられた力の方向と大きさとを算出する。当該所定の動作とは、キャラクタが物体を発射する動作であってもよい。キャラクタが発射する物体はどのような物体であってもよく、また、質量を有するものに限定されない。例えば、弾丸、ミサイル、石、レーザ光、電磁波などであってもよい。
【００２４】
演算部１１２は、検出部１１１で算出された、所定のオブジェクトに加えられた力の方向と力の大きさとに基づいて、所定のオブジェクトの移動と当該所定のオブジェクトが他のオブジェクトに衝突することで生じる他のオブジェクトの移動とをシミュレーションする。演算部１１２が行うシミュレーションに用いられるアルゴリズムは、どのようなアルゴリズムであってもよいが、例えば、物理法則に従って物体の動きをシミュレーションする（再現する）技術である物理演算を用いるようにしてもよい。なお、本実施形態で用いられる物理演算は、必ずしも自然界における動作を忠実にシミュレーションするための物理演算に限定されない。例えば重力をゼロにするなど、現実にはあり得ないような動作をシミュレーションするような物理演算も含まれる。
【００２５】
物理演算を用いる場合、演算部１１２には物理演算エンジンが組み込まれていてもよい。演算部１１２は、各オブジェクトの位置を示す座標データ、所定のオブジェクトに加えられた力の方向や大きさを物理演算エンジンに入力することで、各オブジェクトがどのように移動するのかを物理演算エンジンにシミュレーションさせるようにしてもよい。
【００２６】
各オブジェクトの形状は立方体又は直方体であってもよい。各オブジェクトの形状が立方体又は直方体であることにより、それらのオブジェクトの組み合わせもまた立方体や直方体とすることができる。また、各オブジェクトの大きさは同一サイズ（例えば１ｍ四方等）であってもよい。各オブジェクトの形状が立方体又は直方体であることにより、同一又は類似のロジックを用いて当たり判定を行うことができることから、演算部１１２によるオブジェクト同士の当たり判定を行う際の処理量が削減され、その結果、端末１０の処理負荷を抑えることができる。
【００２７】
通信部１１３は、他の端末１０及びサーバ２０と通信を行う機能を有する。例えば、通信部１１３は、検出部１１１により検出された所定のオブジェクトを識別する識別子（オブジェクトＩＤ）と、所定のオブジェクトに加えられた力の方向と力の大きさとを示すメッセージ（以下、「演算指示メッセージ」と言う。）を、他の端末１０に送信する。また、通信部１１３は、他の端末１０から演算指示メッセージを受信し、受信した演算指示メッセージを演算部１１２に渡す。通信部１１３は、メッセージの送受信を行うことから、送信部又は受信部と称されてもよい。
【００２８】
ここで、本実施形態では、複数の端末１０が同一の仮想空間を共有することから、物体がオブジェクトに衝突した場合など、所定のオブジェクトに力が加えられたことを複数の端末１０が同時に検出する可能性がある。その場合に、各端末１０が一斉に他の端末１０に演算指示メッセージを送信してしまうと、各端末１０が同一のオブジェクトに対して重複した物理演算を行ってしまうことになり好ましくない。そこで、通信部１１３は、所定の条件を満たす場合に、演算指示メッセージを他の端末１０に送信するようにしてもよい。また、所定の条件を満たさない場合は、演算指示メッセージを他の端末１０に送信しないようにしてもよい。
【００２９】
所定の条件とは、端末１０自身がプレイヤの指示を受け付けて制御するキャラクタが行う所定の動作により、所定のオブジェクトに力が加えられたことを検出した場合であってもよい。つまり、通信部１１３は、端末１０自身が制御するキャラクタの動作によりオブジェクトに力が加わる場合に、演算指示メッセージを他の端末１０に送信するようにしてもよい。また、通信部１１３は、他の端末１０が制御するキャラクタの動作によりオブジェクトに力が加わる場合には、演算指示メッセージを他の端末１０に送信しないようにしてもよい。
【００３０】
若しくは、所定の条件とは、端末１０が、演算指示メッセージを他の端末１０に送信するように予め設定された端末１０であることであってもよい。すなわち、ゲームに参加する複数の端末１０の中で、演算指示メッセージの送信を行う端末１０は予め固定されていてもよい。
【００３１】
受付部１１４は、端末１０を利用するプレイヤから各種の操作を受け付ける機能を有する。例えば受付部１１４は、キャラクタを移動させる操作やキャラクタに物体を発射させる操作等をプレイヤから受け付ける。
【００３２】
表示制御部１１５は、ゲームにおける仮想空間のうち全部又は一部の範囲を、端末１０の画面に表示する機能を有する。
【００３３】
同期部１１６は、各構造物を構成する複数のオブジェクトのうち、他の端末１０との間で同期を行う条件を満たすオブジェクトが存在する場合、当該オブジェクトに関して他の端末との間で同期させる情報（以下、「同期情報」と言う。）を他の端末に送信する。同期を行う条件及び同期情報については後述する。
【００３４】
＜処理手順＞
本実施形態に係るゲームシステム１が行う処理手順について具体的に説明する。以下の説明において、ゲームシステム１は、図５に示す仮想空間の中で、キャラクタ（Ｐ１〜Ｐ３）が構造物（Ｓｔ１〜Ｓｔ６）に向かって物体を発射することで、構造物を破壊することが可能なゲームを提供する前提とする。
【００３５】
また、端末１０−１、端末１０−２及び端末１０−３は、それぞれサーバ２０を介して通信又はＰ２Ｐにより直接通信を行うものとする。また、端末１０−１はプレイヤ１が操作する端末であり、端末１０−２はプレイヤ２が操作する端末であり、端末１０−３はプレイヤ３が操作する端末であるとする。プレイヤ１、プレイヤ２及びプレイヤ３は、それぞれ、図５におけるキャラクタＰ１、キャラクタＰ２及びキャラクタＰ３を操作するものとする。また、通信部１１３は、端末１０自身が制御するキャラクタが発射した物体によりオブジェクトに力が加えられた場合に、演算指示メッセージを他の端末１０に送信するものとして説明する。
【００３６】
図６は、本実施形態に係るゲームシステム１が行う処理手順の一例を示すシーケンス図である。
【００３７】
ステップＳ１００で、端末１０−１、端末１０−２及び端末１０−３は、プレイヤ１〜３の操作に応じてゲームの実行を開始する。端末１０−１、端末１０−２及び端末１０−３の表示制御部１１５は、自身の記憶部１００に記憶されている仮想空間情報を参照することで各オブジェクトの初期位置を把握し、初期位置に該当する座標にオブジェクトを表示する。仮想空間内では、複数の小さなオブジェクトが重なり合って配置される結果、仮想空間内に大きな構造物（Ｓｔ１〜Ｓｔ６）が存在するように表示される。
【００３８】
ゲーム実行中は、端末１０−１、端末１０−２及び端末１０−３の画面に、仮想空間全体が表示されるようにしてもよいし、又は、仮想空間全体のうち、キャラクタが向いている方向を含む所定の範囲のみが表示されるようにしてもよい。所定の範囲は任意であるが、例えば、上下左右に１２０度ずつといった範囲であってもよい。この場合、キャラクタＰ１が構造物Ｓｔ５の方向を向いている場合、端末１０−１の画面には構造物Ｓｔ５が表示され、キャラクタＰ１の背後にある構造物Ｓｔ１は表示されないことになる。
【００３９】
また、ゲーム実行中、各キャラクタの位置及び動作を示すデータは、端末１０−１、端末１０−２及び端末１０−３で共有される。これにより、各キャラクタが移動したり動作したりする様子が、端末１０−１、端末１０−２及び端末１０−３の画面に表示される。
【００４０】
続いて、端末１０−１の受付部１１４は、プレイヤ１から、キャラクタＰ１が構造物Ｓｔ５に向けて物体を発射させる操作を受け付ける（Ｓ１０１）。端末１０−１の通信部１１３は、受付部１１４にて物体を発射させる操作を受け付けた場合に、物体が発射されたことを他の端末１０に通知するためのメッセージ（以下、「通知メッセージ」と言う。）を、端末１０−２及び端末１０−３に送信する（Ｓ１０２）。通知メッセージには、物体が発射された位置を示す座標データ、物体の速度を示すデータ及び飛行方向を示すデータが含まれる。
【００４１】
続いて、端末１０−１の演算部１１２は、構造物Ｓｔ５に向けて発射された物体の移動経路をシミュレーションし、端末１０−１の表示制御部１１５は、シミュレーション結果に従って物体を画面に表示する処理を行う（Ｓ１０３）。同様に、端末１０−２及び端末１０−３の演算部１１２は、端末１０−１から受信した通知メッセージに含まれる、物体が発射された位置を示す座標データ、物体の速度を示すデータ及び飛行方向を示すデータに基づいて、構造物Ｓｔ５に向けて発射された物体の移動経路をシミュレーションする。また、端末１０−２及び端末１０−３の表示制御部１１５は、シミュレーション結果に従って物体を画面に表示する処理を行う（Ｓ１０４、Ｓ１０５）。
【００４２】
続いて、端末１０−１の検出部１１１は、キャラクタＰ１から発射された物体がオブジェクトに衝突したことを検出する。また、検出部１１１は、衝突によりオブジェクトに加わった力の向きと大きさとを算出する（Ｓ１０６）。
【００４３】
図７に、構造物Ｓｔ５の周辺を拡大した様子を示す。図７に示すように、構造物Ｓｔ５は、複数のオブジェクトの集合により構成されている。ここでは、物体Ｍ１が構造物Ｓｔ５を構成するオブジェクトＢ１に物体が衝突したとする。
【００４４】
続いて、通信部１１３は、物体が衝突したオブジェクトＢ１のオブジェクトＩＤと、オブジェクトＢ１に加えられた力の方向を示すデータと力の大きさを示すデータとを含む演算指示メッセージを、端末１０−２及び端末１０−３に送信する。
【００４５】
続いて、端末１０−１の演算部１１２は、物体が衝突することでオブジェクトＢ１に加わった力の向きと大きさに基づいて、オブジェクトＢ１の移動位置と、オブジェクトＢ１が隣り合うオブジェクトに衝突することで生じるオブジェクトＢ１以外の他のオブジェクトの移動位置とを、物理演算を用いてシミュレーションする（Ｓ１０８）。当該シミュレーションはフレームレート（例えば30fpsや60fps等）の単位で行われてもよい。端末１０−１の演算部１１２は、シミュレーション結果に基づき、仮想空間情報に記憶されている各オブジェクトの「現在位置」を更新する。もし、「現在位置」が「初期位置」から一定の距離離れたオブジェクトが存在する場合、演算部１１２は当該オブジェクトを消去すると判定し、当該オブジェクトを表示対象から外すするように表示制御部１１５に指示する。これにより、画面上から当該オブジェクトは消去される。
【００４６】
また、演算部１１２は、各オブジェクトが他のオブジェクト等と衝突する際に受けたダメージを算出し、算出したダメージを仮想空間情報の「ＨＰ」から減算する。もしＨＰがゼロになったオブジェクトが存在する場合、演算部１１２は、当該オブジェクトを画面上から消去すると判定し、当該オブジェクトを表示対象から外すように表示制御部１１５に指示する。これにより、画面上から当該オブジェクトは消去される。
【００４７】
同様に、端末１０−２及び端末１０−３の演算部１１２は、端末１０−１から受信した演算指示メッセージで示される、オブジェクトＢ１のオブジェクトＩＤと、オブジェクトＢ１に加えられた力の方向を示すデータと力の大きさを示すデータとに基づいて、オブジェクトＢ１の移動位置と、オブジェクトＢ１が隣り合うオブジェクトに更に衝突することで生じるオブジェクトＢ１以外の他のオブジェクトの移動位置とを、物理演算を用いてシミュレーションする（Ｓ１０９、Ｓ１１０）。なお、具体的には後述するが、端末１０−１が行う物理演算の結果と、端末１０−２が行う物理演算の結果と、端末１０−３が行う物理演算の結果とは完全に同一にはならず、微妙に異なる可能性がある。
【００４８】
端末１０−２及び端末１０−３の演算部１１２が行うシミュレーションはフレームレートの単位で行われてもよい。また、端末１０−２及び端末１０−３の演算部１１２は、シミュレーション結果に基づき、仮想空間情報に記憶されている各オブジェクトの「現在位置」を更新する。もし、「現在位置」が「初期位置」から一定の距離離れたオブジェクトが存在する場合、演算部１１２は、当該オブジェクトを消去すると判定し、当該オブジェクトを表示対象から外すように表示制御部１１５に指示する。これにより、画面上から当該オブジェクトは消去される。
【００４９】
また、端末１０−２及び端末１０−３の演算部１１２は、各オブジェクトが他のオブジェクト等と衝突する際に受けたダメージを算出し、算出したダメージを仮想空間情報の「ＨＰ」から減算する。もしＨＰがゼロになったオブジェクトが存在する場合、演算部１１２は、当該オブジェクトを消去すると判定し、当該オブジェクトを表示対象から外すように表示制御部１１５に指示する。これにより、画面上から当該オブジェクトは消去される。
【００５０】
続いて、端末１０−１の表示制御部１１５は、シミュレーションにより算出された各オブジェクトの移動位置に基づき、オブジェクトＢ１を含む複数のオブジェクトが崩れ落ちる様子を画面に表示する処理を行う（Ｓ１１１）。同様に、端末１０−２及び端末１０−３の表示制御部１１５は、ステップＳ１０９又はステップＳ１１０の処理手順によるシミュレーションにより算出された各オブジェクトの移動位置に基づき、オブジェクトＢ１を含む複数のオブジェクトが崩れ落ちる様子を画面に表示する処理を行う（Ｓ１１２、Ｓ１１３）。
【００５１】
図８に、オブジェクトＢ１を含む複数のオブジェクトが崩れ落ちる様子の例を示す。図８に示すように、物体Ｍ１がオブジェクトＢ１に当たった際の向き及び力の大きさに応じて、オブジェクトＢ１及びその周辺のオブジェクトが飛び散ることになる。
【００５２】
以上、物体が構造物に衝突することにより構造物が破壊される場合にゲームシステム１が行う処理手順を説明した。従来の技術では、このようなシミュレーションを行う場合、サーバ２０にて各構造物の位置をフレームレートの単位で計算し、計算結果をサーバ２０から各端末１０に送信していた。一方、本実施形態では、当該計算結果に代えて、オブジェクトに加わる力の方向及び大きさを示す情報を全端末１０で共有し、各端末１０は、共有された情報に基づいて各オブジェクトの位置を物理演算により計算することで、周辺のオブジェクトが飛び散る様子を自らシミュレーションして表示するようにした。これにより、本実施形態では、従来の技術と比較して、各装置間で送受信されるデータ量を削減することが可能になる。
【００５３】
＜同期処理＞
本実施形態では、仮想空間内に存在する各オブジェクトの移動位置を、各端末１０が物理演算を用いてシミュレーションするようにした。しかしながら、各端末１０のスペックの違い及び本実施形態に係るゲーム以外に必要な処理に伴う処理負荷等の違い等により、シミュレーション結果が異なる場合があり、移動した各オブジェクトの位置が端末１０間で微妙にずれることになる。また、シミュレーションが何度も繰り返されることで、各オブジェクトの位置のずれが累積していく可能性があり、好ましくない。
【００５４】
そこで、本実施形態では、端末１０の同期部１１６は、仮想空間に存在する複数のオブジェクトの中で、他の端末１０との間で同期を行う条件を満たすオブジェクトが存在する場合、当該オブジェクトに関する同期情報を含むメッセージを他の端末に送信する。
【００５５】
図９は、本実施形態に係るゲームシステム１が行う同期処理の一例を示すシーケンス図である。図９は、端末１０−１の同期部１１６が、同期を行う条件を満たすオブジェクトが存在することを検出した場合の例を示している。
【００５６】
まず、端末１０−１の同期部１１６は、他の端末１０との間で同期を行う条件を満たすオブジェクトが存在することを検出する（Ｓ２００）。続いて、同期部１１６は、同期を行うオブジェクトのオブジェクトＩＤと、同期情報とを含む同期メッセージを端末１０−２及び端末１０−３に送信する（Ｓ２０１）。
【００５７】
同期メッセージを受信した端末１０−２及び端末１０−３の同期部１１６は、受信した同期メッセージに含まれるオブジェクトＩＤで示されるオブジェクトについて、同期情報に従って同期処理を行う（Ｓ２０２、Ｓ２０３）。
【００５８】
同期を行う条件とは、例えば、オブジェクトの位置が、ゲーム開始直後の位置（初期位置）から所定の距離（第１距離）移動した場合であってもよい。この場合、同期部１１６は、同期情報として、オブジェクトの現在位置を示す情報を同期メッセージに含めて他の端末１０に送信するようにしてもよい。当該同期メッセージ情報を受信した端末１０の同期部１１６は、同期メッセージに含まれるオブジェクトＩＤで示されるオブジェクトについて、仮想空間情報の「現在位置」を同期メッセージに含まれる現在位置に更新する。また、表示制御部１１５は、当該オブジェクトの描画位置を、同期メッセージに含まれる現在位置に描画するように修正する。なお、同期情報にはオブジェクトのＨＰが更に含まれていてもよい。現在位置に加えてＨＰも同期させることが可能になる。
【００５９】
また、同期を行う条件とは、例えば、オブジェクトのＨＰがゼロになったこと又はオブジェクトの位置がゲーム開始直後の位置から一定の距離（例えば、上述の第１距離よりも遠い第２距離）移動したことにより、演算部１１２がオブジェクトを消去すると判定した場合であってもよい。この場合、同期部１１６は、同期情報として、演算部１１２が消去すると判定したオブジェクトを示す情報（オブジェクトＩＤ）を同期メッセージに含めて他の端末１０に送信するようにしてもよい。当該同期メッセージを受信した端末１０の同期部１１６は、表示制御部１１５に対して、当該オブジェクトを画面から表示対象から外すように指示する。
【００６０】
以上説明した同期処理によれば、端末１０間でオブジェクトの位置がずれる場合であっても、オブジェクトの状態を同期させることが可能になる。これにより、端末１０間で送受信されるデータ量を削減しつつ、端末１０間におけるオブジェクトの状態にずれが生じることを抑制することが可能になる。
【００６１】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態で説明したフローチャート、シーケンス、実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【符号の説明】
【００６２】
１…ゲームシステム、１０…端末、１１…ＣＰＵ、１２…記憶装置、１３…通信ＩＦ、１４…入力デバイス、１５…出力デバイス、２０…サーバ、１００…記憶部、１１０…ゲーム実行部、１１１…検出部、１１２…演算部、１１３…通信部、１１４…受付部、１１５…表示制御部、１１６…同期部
【図１】
2020048832.tif 000003
【図２】
2020048832.tif 000004
【図３】
2020048832.tif 000005
【図４】
2020048832.tif 000006
【図５】
2020048832.tif 000007
【図６】
2020048832.tif 000008
【図７】
2020048832.tif 000009
【図８】
2020048832.tif 000010
【図９】
2020048832.tif 000011