(57)【要約】【課題】ゲームの興趣性を向上させる。【解決手段】ゲームプログラム（１３１）は、プロセッサ（１０）に、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させるステップ（Ｓ１０６〜Ｓ１２８、Ｓ１３０〜Ｓ１３４）と、進行させた前記対戦の進行状況を示す第１の状況情報を、前記対戦の進行上の所定のタイミングで生成するステップ（Ｓ１２９、Ｓ１３５）と、前記他のコンピュータにおいて同じ前記所定のタイミングで生成された第２の状況情報を取得するステップ（Ｓ１３７、Ｓ１３９）と、第１の状況情報と一致しない前記第２の状況情報がある場合に（Ｓ１３９でＮＯ）、同期ずれが発生したことを示す第１の通知を前記表示部に表示するステップ（Ｓ１４２）と、を実行させる。【選択図】図１２
2019111376.tif 000002
【特許請求の範囲】
【請求項１】
ゲームプログラムであって、
前記ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、前記各コンピュータ間の通信を介して対戦させる対戦ゲームであり、
前記ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備える、前記各コンピュータの少なくともいずれか１つにより実行されるものであり、
前記ゲームプログラムは、前記プロセッサに、
前記ユーザと前記相手ユーザとの対戦を、前記相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、前記ユーザの操作にしたがって進行させるステップと、
進行させた前記対戦の進行状況を示す第１の状況情報を、前記対戦の進行上の所定のタイミングで生成するステップと、
前記他のコンピュータにおいて同じ前記所定のタイミングで生成された第２の状況情報を取得するステップと、
前記第１の状況情報と一致しない前記第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を前記表示部に表示するステップと、を実行させる、ゲームプログラム。
【請求項２】
前記進行させるステップでは、前記同期ずれが発生した場合、前記所定のタイミングにおける進行状況が前記各コンピュータの間で共有されることにより前記対戦が再開可能となるまで、前記対戦を中断する、請求項１に記載のゲームプログラム。
【請求項３】
前記第１の通知を表示するステップでは、前記対戦が中断されている間、前記第１の通知の表示を継続する、請求項２に記載のゲームプログラム。
【請求項４】
前記対戦ゲームにおける対戦は、スポーツの試合であり、
前記第１の通知を表示するステップでは、前記試合の審判団による審議のシーンを示す第１の画像および第１のテキストの少なくともいずれか一方を、前記第１の通知とともに前記表示部に表示する、請求項３に記載のゲームプログラム。
【請求項５】
前記ゲームプログラムは、前記プロセッサに、
前記審議の結果を示す第２の通知を前記表示部に表示するステップを実行させる、請求項４に記載のゲームプログラム。
【請求項６】
前記第２の通知を表示するステップでは、前記審議の結果を審判員が発表するシーンを示す第２の画像および第２のテキストの少なくともいずれか一方を、前記第２の通知とともに前記表示部に表示する、請求項５に記載のゲームプログラム。
【請求項７】
前記対戦ゲームにおける対戦は、野球の試合であり、
前記生成するステップでは、前記試合の前記所定のタイミングにおけるイニング、スコア、ランナー、アウトカウントおよびボールカウントを含む状況情報を生成する、
請求項１から６のいずれか１項に記載のゲームプログラム。
【請求項８】
前記第１の通知を表示するステップでは、前記イニング、前記スコア、前記ランナー、前記アウトカウントおよび前記ボールカウントのうち１つでも一致しない場合には、前記第１の通知を表示する、請求項７に記載のゲームプログラム。
【請求項９】
前記ゲームプログラムは、前記プロセッサに、
前記同期ずれが発生したことを、クライアントとしての前記各コンピュータにおける前記対戦の進行を支援するサーバ、および、１以上の前記相手ユーザの１以上の前記他のコンピュータの少なくともいずれか一方に通知するステップを実行させる、請求項１から７のいずれか１項に記載のゲームプログラム。
【請求項１０】
前記進行させるステップでは、前記各コンピュータの間で共有された、前記所定のタイミングにおける進行状況に基づいて前記対戦を再開する、請求項９に記載のゲームプログラム。
【請求項１１】
前記進行させるステップでは、１度の対戦中に、同期ずれが所定回数を超えて発生した場合に、該対戦の進行に係る前記ユーザの操作を受け付けることなく、該対戦を進行させる、請求項１から１０のいずれか１項に記載のゲームプログラム。
【請求項１２】
ゲームプログラムであって、
前記ゲームプログラムは、請求項１から１１のいずれか１項に記載のゲームプログラムを実行する、クライアントとしての前記各コンピュータと通信して、各コンピュータにおける前記対戦の進行を支援するサーバにより実行されるものであり、該サーバは、プロセッサおよびメモリを備え、
前記サーバにより実行される前記ゲームプログラムは、前記サーバの前記プロセッサに、
前記対戦に参加する前記各コンピュータにより前記対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、
前記所定のタイミングにおいて前記同期ずれが発生した旨の通知を、前記対戦に参加する前記各コンピュータの少なくとも１台から受信するステップと、
取得された複数の状況情報に基づいて、前記同期ずれが発生した前記所定のタイミングにおける、前記各コンピュータに共有させる進行状況を決定するステップと、
決定された進行状況を前記各コンピュータに通知するステップとを実行させる、ゲームプログラム。
【請求項１３】
前記進行状況を決定するステップでは、取得された前記複数の状況情報のうち、いずれか１つを、前記所定のタイミングにおける状況情報として採用し、
前記通知するステップでは、いずれのコンピュータが生成した状況情報を採用したのかを示す通知を前記各コンピュータに送信する、請求項１２に記載のゲームプログラム。
【請求項１４】
前記状況情報は、前記対戦に参加する各ユーザの、前記タイミングにおける優劣を示す情報を含み、
前記進行状況を決定するステップでは、前記同期ずれが発生する直前のタイミングにおいて前記各コンピュータによって生成された状況情報を参照し、劣勢のユーザが操作しているコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用する、請求項１３に記載のゲームプログラム。
【請求項１５】
前記対戦ゲームにおいて、各ユーザには、対戦に勝利すると値が上がるように更新される評価値が付与されており、
前記進行状況を決定するステップでは、前記評価値が低いユーザが操作するコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用する、請求項１３に記載のゲームプログラム。
【請求項１６】
前記対戦ゲームにおいて前記ユーザによって操作されるチームまたはキャラクタには、強さを示すパラメータが付与されており、
前記進行状況を決定するステップでは、前記パラメータが低い前記チームまたは前記キャラクタを操作しているユーザのコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用する、請求項１３に記載のゲームプログラム。
【請求項１７】
前記進行状況を決定するステップでは、１度の対戦の中で同期ずれが複数回発生している場合に、生成した状況情報が採用された回数が最も少ないコンピュータから取得された状況情報を採用する、請求項１３に記載のゲームプログラム。
【請求項１８】
前記進行状況を決定するステップでは、状況情報を採用するコンピュータを順番に切り替える、請求項１３に記載のゲームプログラム。
【請求項１９】
前記進行状況を決定するステップでは、どのユーザに有利な状況情報を採用するのかを順番に切り替える、請求項１３に記載のゲームプログラム。
【請求項２０】
ゲームプログラムを実行する方法であって、
前記ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、前記各コンピュータ間の通信を介して対戦させる対戦ゲームであり、
前記ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備える、前記各コンピュータの少なくともいずれか１つにより実行されるものであり、
前記方法は、前記プロセッサが、
前記ユーザと前記相手ユーザとの対戦を、前記相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、前記ユーザの操作にしたがって進行させるステップと、
進行させた前記対戦の進行状況を示す第１の状況情報を、前記対戦の進行上の所定のタイミングで生成するステップと、
前記他のコンピュータにおいて同じ前記所定のタイミングで生成された第２の状況情報を取得するステップと、
前記第１の状況情報と一致しない前記第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を前記表示部に表示するステップと、を含む方法。
【請求項２１】
ゲームプログラムを実行する方法であって、
前記ゲームプログラムは、請求項１から１１のいずれか１項に記載のゲームプログラムを実行する、クライアントとしての前記各コンピュータと通信して、各コンピュータにおける前記対戦の進行を支援するサーバにより実行されるものであり、該サーバは、プロセッサおよびメモリを備え、
前記方法は、前記サーバの前記プロセッサが、
前記対戦に参加する前記各コンピュータにより前記対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、
前記所定のタイミングにおいて前記同期ずれが発生した旨の通知を、前記対戦に参加する前記各コンピュータの少なくとも１台から受信するステップと、
取得された複数の状況情報に基づいて、前記同期ずれが発生した前記所定のタイミングにおける、前記各コンピュータに共有させる進行状況を決定するステップと、
決定された進行状況を前記各コンピュータに通知するステップと、を含む方法。
【請求項２２】
ゲームプログラムを実行する方法であって、
前記ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、前記各コンピュータ間の通信を介して対戦させる対戦ゲームであり、
前記ゲームプログラムは、クライアントとしての前記各コンピュータと通信して、前記各コンピュータにおける対戦の進行を支援するサーバにより実行されるものであり、該サーバは、プロセッサおよびメモリを備え、
前記方法は、前記サーバの前記プロセッサが、
前記対戦に参加する前記各コンピュータにより前記対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、
前記同じタイミングで生成された各状況情報が一致しない場合に、同期ずれが発生したことを検知するステップと、
取得された複数の状況情報に基づいて、前記同期ずれが発生した前記タイミングにおける、前記各コンピュータに共有させる進行状況を決定するステップと、
決定された進行状況を前記各コンピュータに通知するステップと、を含む方法。
【請求項２３】
情報処理装置であって、
前記情報処理装置は、
ゲームプログラムを記憶する記憶部と、
前記ゲームプログラムを実行することにより、前記情報処理装置の動作を制御する制御部と、
操作部と、
表示部とを備え、
前記ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、前記各コンピュータ間の通信を介して対戦させる対戦ゲームであり、
前記各コンピュータの少なくともいずれか１つが前記情報処理装置として機能し、
前記制御部は、
前記ユーザと前記相手ユーザとの対戦を、前記相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、前記ユーザの操作にしたがって進行させ、
進行させた前記対戦の進行状況を示す第１の状況情報を、前記対戦の進行上の所定のタイミングで生成し、
前記他のコンピュータにおいて同じ前記所定のタイミングで生成された第２の状況情報を取得し、
前記第１の状況情報と一致しない前記第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を前記表示部に表示する、情報処理装置。
【請求項２４】
サーバであって、
前記サーバは、
ゲームプログラムを記憶する記憶部と、
前記ゲームプログラムを実行することにより、前記サーバの動作を制御する制御部と、を備え、
該サーバは、請求項１から１１のいずれか１項に記載のゲームプログラムを実行する、クライアントとしての前記各コンピュータと通信して、各コンピュータにおける前記対戦の進行を支援するものであり、
前記サーバの前記制御部は、
前記対戦に参加する前記各コンピュータにより前記対戦の進行上の同じタイミングで生成された状況情報を周期的に取得し、
前記所定のタイミングにおいて前記同期ずれが発生した旨の通知を、前記対戦に参加する前記各コンピュータの少なくとも１台から受信し、
取得された複数の状況情報に基づいて、前記同期ずれが発生した前記所定のタイミングにおける、前記各コンピュータに共有させる進行状況を決定し、
決定された進行状況を前記各コンピュータに通知する、サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はゲームプログラム、ゲームプログラムを実行する方法および情報処理装置に関する。
【背景技術】
【０００２】
仮想空間内にキャラクタを表示させて、ユーザに該キャラクタを操作させることによりゲームを進行させるゲームプログラムが、様々な事業者により提供されている。例えば、テニス、卓球、ドッジボール、野球、サッカー、ホッケー等のスポーツを題材としたゲームが提供されている。
【０００３】
このようなゲームは、複数のユーザのそれぞれが操作するキャラクタ同士を対戦させるいわゆる対戦ゲームとして提供され得る。より具体的には、対戦ゲームには、それぞれのユーザの端末が、ネットワークを介して情報をやり取りして対戦を進行させる通信対戦ゲームがある（例えば、特許文献１および２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６３０６９号公報（２００６年１０月５日公開）
【特許文献２】特開２００３−０１０５４９号公報（２００３年１月１４日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の通信対戦ゲームにおいて、対戦の進行状況を各端末間で同期させるためには、対戦の進行状況に影響を与えるゲーム要素を端末間で共有させる必要がある。しかし、サーバは、複数の端末と通信しながら同時にいくつもの対戦を支援する役割を担っている。そのため、サーバが、その対戦ごとに設定されるゲーム要素のすべてに対して、情報処理（例えば、対戦が進行する仮想空間の計算）を逐次実行することは負荷が高すぎて現実的ではないことがある。
【０００６】
そこで、上述の情報処理を、対戦に参加しているそれぞれの端末で実行することが考えられる。しかし、この場合には、それぞれの端末で実行された情報処理の結果が異なって出力されるという事態が起こり得る。この場合、各端末間で対戦の進行状況に齟齬が生じ（いわゆる同期ずれ）、これ以降の該対戦の進行が困難になる。
【０００７】
同期ずれは予測されることなく不意に起こり、この不具合の解消には、ある程度の時間が必要とされる。ゲームの世界とは無関係に現実に起こった同期ずれという不具合のために、対戦が不意に中断される。この不具合に直面したユーザは、これまで味わっていた対戦の雰囲気を壊された上、待機を強要される。その結果、ゲームの興趣性が損なわれて、ユーザが、非常にストレスを感じるという問題が生じる。上述の従来技術は、この問題に対する解決策を開示していない。
【０００８】
本開示の一態様は、同期制御に係る不具合が発生した場合でも、ゲームの興趣性を損なうことなく該不具合に対処することを目的とする。
【課題を解決するための手段】
【０００９】
本開示に係るゲームプログラムに関し、ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備える、各コンピュータの少なくともいずれか１つにより実行される。ゲームプログラムは、プロセッサに、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させるステップと、進行させた対戦の進行状況を示す第１の状況情報を、対戦の進行上の所定のタイミングで生成するステップと、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報を取得するステップと、第１の状況情報と一致しない第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を表示部に表示するステップと、を実行させる。
【００１０】
本開示に係るゲームプログラムは、上述のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバにより実行される。該サーバは、プロセッサおよびメモリを備える。サーバにより実行されるゲームプログラムは、サーバのプロセッサに、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信するステップと、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定するステップと、決定された進行状況を各コンピュータに通知するステップとを実行させる。
【００１１】
本開示に係る方法は、ゲームプログラムを実行する方法である。ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備える、各コンピュータの少なくともいずれか１つにより実行される。該方法は、プロセッサが、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させるステップと、プロセッサが、進行させた対戦の進行状況を示す第１の状況情報を、対戦の進行上の所定のタイミングで生成するステップと、プロセッサが、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報を取得するステップと、プロセッサが、第１の状況情報と一致しない第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を表示部に表示するステップと、を含む。
【００１２】
本開示に係る方法は、ゲームプログラムを実行する方法である。ゲームプログラムは、上述のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバにより実行される。該サーバは、プロセッサおよびメモリを備える。方法は、サーバのプロセッサが、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、サーバのプロセッサが、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信するステップと、サーバのプロセッサが、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定するステップと、サーバのプロセッサが、決定された進行状況を各コンピュータに通知するステップと、を含む。
【００１３】
本開示に係る方法は、ゲームプログラムを実行する方法である。該ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。該ゲームプログラムは、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバにより実行されるものであり、該サーバは、プロセッサおよびメモリを備える。方法は、サーバのプロセッサが、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、同じタイミングで生成された各状況情報が一致しない場合に、同期ずれが発生したことを検知するステップと、取得された複数の状況情報に基づいて、同期ずれが発生したタイミングにおける、各コンピュータに共有させる進行状況を決定するステップと、決定された進行状況を各コンピュータに通知するステップと、を含む。
【００１４】
本開示に係る情報処理装置は、ゲームプログラムを記憶する記憶部と、ゲームプログラムを実行することにより、情報処理装置の動作を制御する制御部と、操作部と、表示部とを備える。ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。上述の各コンピュータの少なくともいずれか１つが情報処理装置として機能する。制御部は、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させ、進行させた対戦の進行状況を示す第１の状況情報を、対戦の進行上の所定のタイミングで生成し、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報を取得し、第１の状況情報と一致しない第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を表示部に表示する。
【００１５】
本開示に係るサーバは、ゲームプログラムを記憶する記憶部と、ゲームプログラムを実行することにより、サーバの動作を制御する制御部と、を備える。該サーバは、上述のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援する。サーバの制御部は、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得し、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信し、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定し、決定された進行状況を各コンピュータに通知する。
【発明の効果】
【００１６】
本開示の一態様によれば、ゲームの興趣性を損なうことなく不具合に対処できるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】ゲームシステムのハードウェア構成を示す図である。
【図２】ユーザ端末およびサーバの機能的構成を示すブロック図である。
【図３】本実施形態に係る通信対戦野球ゲームのゲームプログラムに基づいて進行される対戦（試合）を模式的に示す図である。
【図４】ユーザ端末の表示部に表示されるゲーム画面の一具体例を示す図である。
【図５】ユーザ端末の表示部に表示されるゲーム画面の他の具体例を示す図である。
【図６】ユーザ端末の表示部に表示されるゲーム画面の他の具体例を示す図である。
【図７】ユーザ端末の表示部に表示されるゲーム画面の他の具体例を示す図である。
【図８】ユーザ端末の表示部に表示されるゲーム画面の他の具体例を示す図である。
【図９】ユーザ端末の表示部に表示されるゲーム画面のさらに他の具体例を示す図である。
【図１０】対戦進行部が生成する状況情報のデータ構造の一例を示す図である。
【図１１】ゲームシステムに含まれる各装置が、ゲームプログラムに基づいて実行する処理の流れを示すフローチャートである。
【図１２】ゲームシステムに含まれる各装置が、ゲームプログラムに基づいて実行する処理の流れを示すフローチャートである。
【図１３】ユーザ端末の表示部に表示されるメッセージ画面の一具体例を示す図である。
【図１４】ユーザ端末の表示部に表示されるメッセージ画面の他の具体例を示す図である。
【発明を実施するための形態】
【００１８】
〔実施形態１〕
本開示に係るゲームシステムは、複数のユーザにゲームを提供するためのシステムである。以下、ゲームシステムについて図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
【００１９】
＜ゲームシステム１のハードウェア構成＞
図１は、ゲームシステム１のハードウェア構成を示す図である。ゲームシステム１は図示の通り、複数のユーザ端末１００と、サーバ２００とを含む。各ユーザ端末１００は、サーバ２００とネットワーク２を介して接続する。ネットワーク２は、インターネットおよび図示しない無線基地局によって構築される各種移動通信システム等で構成される。この移動通信システムとしては、例えば、所謂３Ｇ、４Ｇ移動通信システム、ＬＴＥ（LongTerm Evolution）、および所定のアクセスポイントによってインターネットに接続可能
な無線ネットワーク（例えばWi-Fi（登録商標））等が挙げられる。
【００２０】
サーバ２００（コンピュータ、情報処理装置）は、ワークステーションまたはパーソナルコンピュータ等の汎用コンピュータであってよい。サーバ２００は、プロセッサ２０と、メモリ２１と、ストレージ２２と、通信ＩＦ２３と、入出力ＩＦ２４とを備える。サーバ２００が備えるこれらの構成は、通信バスによって互いに電気的に接続される。
【００２１】
ユーザ端末１００（コンピュータ、情報処理装置）は、スマートフォン、フィーチャーフォン、ＰＤＡ（Personal Digital Assistant）、またはタブレット型コンピュータ等の携帯端末であってよい。ユーザ端末１００は、ゲームプレイに適したゲーム装置であってもよい。ユーザ端末１００は図示の通り、プロセッサ１０と、メモリ１１と、ストレージ１２と、通信インターフェース（ＩＦ）１３と、入出力ＩＦ１４と、タッチスクリーン１５（表示部）と、カメラ１７と、測距センサ１８とを備える。ユーザ端末１００が備えるこれらの構成は、通信バスによって互いに電気的に接続される。また、図１に示すように、ユーザ端末１００は、１つ以上のコントローラ１０２０と通信可能に構成されることとしてもよい。コントローラ１０２０は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）等の通信規格に従って、ユーザ端末１００と通信を確立する。コントローラ１０２０は、１つ以上のボタン等を有していてもよく、該ボタン等に対するユーザの入力操作に基づく出力値をユーザ端末１００へ送信する。また、コントローラ１０２０は、加速度センサ、および、角速度センサ等の各種センサを有していてもよく、該各種センサの出力値をユーザ端末１００へ送信する。
【００２２】
なお、ユーザ端末１００がカメラ１７および測距センサ１８を備えることに代えて、または、加えて、コントローラ１０２０がカメラ１７および測距センサ１８を有していてもよい。
【００２３】
ユーザ端末１００は、例えばゲーム開始時に、コントローラ１０２０を使用するユーザに、該ユーザの名前またはログインＩＤ等のユーザ識別情報を、該コントローラ１０２０を介して入力させることが望ましい。これにより、ユーザ端末１００は、コントローラ１０２０とユーザとを紐付けることが可能となり、受信した出力値の送信元（コントローラ１０２０）に基づいて、該出力値がどのユーザのものであるかを特定することができる。
【００２４】
ユーザ端末１００が複数のコントローラ１０２０と通信する場合、各コントローラ１０２０を各ユーザが把持することで、ネットワーク２を介してサーバ２００などの他の装置と通信せずに、該１台のユーザ端末１００でマルチプレイを実現することができる。また、各ユーザ端末１００が無線ＬＡＮ（Local Area Network）規格等の無線規格により互いに通信接続する（サーバ２００を介さずに通信接続する）ことで、複数台のユーザ端末１００によりローカルでマルチプレイを実現することもできる。１台のユーザ端末１００によりローカルで上述のマルチプレイを実現する場合、ユーザ端末１００は、さらに、サーバ２００が備える後述する種々の機能の少なくとも一部を備えていてもよい。また、複数のユーザ端末１００によりローカルで上述のマルチプレイを実現する場合、複数のユーザ端末１００は、サーバ２００が備える後述する種々の機能を分散して備えていてもよい。
【００２５】
なお、ローカルで上述のマルチプレイを実現する場合であっても、ユーザ端末１００はサーバ２００と通信を行ってもよい。例えば、あるゲームにおける成績または勝敗等のプレイ結果を示す情報と、ユーザ識別情報とを対応付けてサーバ２００に送信してもよい。
【００２６】
また、コントローラ１０２０は、ユーザ端末１００に着脱可能な構成であるとしてもよい。この場合、ユーザ端末１００の筐体における少なくともいずれかの面に、コントローラ１０２０との結合部が設けられていてもよい。該結合部を介して有線によりユーザ端末１００とコントローラ１０２０とが結合している場合は、ユーザ端末１００とコントローラ１０２０とは、有線を介して信号を送受信する。
【００２７】
図１に示すように、ユーザ端末１００は、外部のメモリカード等の記憶媒体１０３０の装着を、入出力ＩＦ１４を介して受け付けてもよい。これにより、ユーザ端末１００は、記憶媒体１０３０に記録されるプログラム及びデータを読み込むことができる。記憶媒体１０３０に記録されるプログラムは、例えばゲームプログラムである。
【００２８】
ユーザ端末１００は、サーバ２００等の外部の装置と通信することにより取得したゲームプログラムをユーザ端末１００のメモリ１１に記憶してもよいし、記憶媒体１０３０から読み込むことにより取得したゲームプログラムをメモリ１１に記憶してもよい。
【００２９】
以上で説明したとおり、ユーザ端末１００は、該ユーザ端末１００に対して情報を入力する機構の一例として、通信ＩＦ１３、入出力ＩＦ１４、タッチスクリーン１５、カメラ１７、および、測距センサ１８を備える。入力する機構としての上述の各部は、ユーザの入力操作を受け付けるように構成された操作部と捉えることができる。
【００３０】
例えば、操作部が、カメラ１７および測距センサ１８の少なくともいずれか一方で構成される場合、該操作部が、ユーザ端末１００の近傍の物体１０１０を検出し、当該物体の検出結果から入力操作を特定する。一例として、物体１０１０としてのユーザの手、予め定められた形状のマーカーなどが検出され、検出結果として得られた物体１０１０の色、形状、動き、または、種類などに基づいて入力操作が特定される。より具体的には、ユーザ端末１００は、カメラ１７の撮影画像からユーザの手が検出された場合、該撮影画像に基づき検出されるジェスチャ（ユーザの手の一連の動き）を、ユーザの入力操作として特定し、受け付ける。なお、撮影画像は静止画であっても動画であってもよい。
【００３１】
あるいは、操作部がタッチスクリーン１５で構成される場合、ユーザ端末１００は、タッチスクリーン１５の入力部１５１に対して実施されたユーザの操作をユーザの入力操作として特定し、受け付ける。あるいは、操作部が通信ＩＦ１３で構成される場合、ユーザ端末１００は、コントローラ１０２０から送信される信号（例えば、出力値）をユーザの入力操作として特定し、受け付ける。あるいは、操作部が入出力ＩＦ１４で構成される場合、該入出力ＩＦ１４と接続されるコントローラ１０２０とは異なる入力装置（図示せず）から出力される信号をユーザの入力操作として特定し、受け付ける。
【００３２】
＜ゲーム概要＞
ゲームシステム１は、一方のコンピュータを操作するユーザと、他方のコンピュータを操作する対戦相手としての相手ユーザとを、前記各コンピュータ間の通信を介して対戦させる通信対戦ゲームを実行するためのシステムである。
【００３３】
該通信対戦ゲームの題材またはジャンルは特に限定されない。該通信対戦ゲームは、例えば、テニス、卓球、ドッジボール、野球、サッカー、ホッケー等のスポーツを題材としたゲームであってもよい。該通信対戦ゲームは、スポーツを題材としたゲーム以外にも、例えば、パズルゲーム、クイズゲーム、ＲＰＧ、アドベンチャーゲーム、シューティングゲーム、シミュレーションゲーム、育成ゲーム、アクションゲームなどにおいて、通信対戦の要素を含むゲームであってもよい。
【００３４】
本実施形態では、一例として、ゲームシステム１は、ユーザが操作する１以上のキャラクタが属する自チームと、相手ユーザが操作する１以上のキャラクタが属する相手チームとを対戦させる通信対戦野球ゲームを実行するためのシステムである。ゲームシステム１では、ユーザは、コンピュータを用いて、自チームに属するキャラクタを操作する。上述の相手ユーザは、上述の相手チームに属するキャラクタを、上述のコンピュータと通信可能な、別のコンピュータを用いて操作する。ゲームシステム１において実行される通信対戦野球ゲームのゲームプログラムは、ユーザが操作する一方のコンピュータ、および、相手ユーザが操作する他方のコンピュータのうち、少なくともいずれか１つにより実行される。
【００３５】
一例として、通信対戦野球ゲームが実行されるゲームシステム１において、サーバ２００を介して通信する第１のユーザ端末１００と第２のユーザ端末１００とによって、それぞれのチームが操作される。そして、通信対戦野球ゲームは、１イニングにつき、表と裏でチームの攻守が入れ替わりつつ進行する。以下では、あるイニングの表または裏において、守備側のチームを操作するユーザ端末１００と、攻撃側のユーザ端末１００とを互いに区別する必要がある場合、前者を投球側ユーザ端末１００Ａ、後者を打撃側ユーザ端末１００Ｂと称する。両者を区別する必要がない場合には、単に、ユーザ端末１００と称する。投球側ユーザ端末１００Ａのユーザを、投球側ユーザ、打撃側ユーザ端末１００Ｂのユーザを、打撃側ユーザと称する。ただし、両ユーザを特に区別する必要がない場合、および、その区別が明らかな場合には、単にユーザと称する。投球側ユーザは、投球側ユーザ端末１００Ａを用いて、投手キャラクタによる投球を操作し、打撃側ユーザは、打撃側ユーザ端末１００Ｂを用いて、打者キャラクタによる打撃を操作する。
【００３６】
投球側ユーザ端末１００Ａは、投球側ユーザから受け付けた投球操作に応じて投球結果を決定し、該投球結果を含むデータ（図１に示す投球結果Ｄ１）を生成し、サーバ２００に送信する。投球結果Ｄ１は、サーバ２００を介して、対戦相手の打撃側ユーザ端末１００Ｂに送信される。投球操作とは、投球側ユーザが、投手キャラクタに投球させるために、投球側ユーザ端末１００Ａの入力部１５１に対して実施する操作のことである。
【００３７】
打撃側ユーザ端末１００Ｂは、打撃側ユーザから受け付けた打撃操作に応じて打撃結果を決定し、該打撃結果を含むデータ（図１に示す打撃結果Ｄ２）を生成し、サーバ２００に送信する。打撃結果Ｄ２は、サーバ２００を介して、対戦相手の投球側ユーザ端末１００Ａに送信される。打撃操作とは、打撃側ユーザが、打者キャラクタにボールを打撃させるために、打撃側ユーザ端末１００Ｂの入力部１５１に対して実施する操作のことである。
【００３８】
本実施形態に係る通信対戦野球ゲームにおいて、対戦に参加しているユーザ端末１００のそれぞれは、投球結果Ｄ１と、打撃結果Ｄ２とに基づいて、対戦会場としての球場を模して定義された仮想空間についての計算を実行し、対戦を進行させる。投球結果Ｄ１および打撃結果Ｄ２は、一方が、自端末において生成されたものであり、他方が、相手ユーザが操作するユーザ端末１００において生成されたものである。仮想空間についての計算には、例えば、投球されたボールの移動経路、振られたバットの位置、および、打撃後のボールの飛翔経路などを計算する処理、および、バットがボールに当たったか否か判定する処理などが含まれる。さらに、フィールドに配置されている選手キャラクタの動きとボールの位置とを計算して、フィールドプレイを再現する処理なども、仮想空間についての計算に含まれる。
【００３９】
上述のとおり、ユーザ端末１００（コンピュータ）は、投球結果Ｄ１と打撃結果Ｄ２とに基づいて、対戦を進行させる機能を備えている。また、ユーザ端末１００は、該対戦の進行状況を示す状況情報Ｄ３を、サーバ２００を介して、対戦相手のユーザ端末１００に提供する機能を備えている。さらに、ユーザ端末１００は、対戦相手のユーザ端末１００から提供された状況情報Ｄ４を取得し、自端末で生成した状況情報Ｄ３と比較することにより同期ずれを検出する機能を備えている。さらに、ユーザ端末１００は、同期ずれが解消されるまでの期間、ユーザに情報を提示して、ユーザのストレスを解消または低減するユーザインターフェース（以下、ＵＩ）を備えている。サーバ２００は、対戦に参加している各ユーザのストレスを解消または低減する方法にて、同期ずれを解消する機能を備えている。本実施形態に係る各装置の上述の各構成については、以下で詳細に説明する。
【００４０】
＜各装置のハードウェア構成要素＞
プロセッサ１０は、ユーザ端末１００全体の動作を制御する。プロセッサ２０は、サーバ２００全体の動作を制御する。プロセッサ１０および２０は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、およびＧＰＵ（Graphics Processing Unit）を含む。
【００４１】
プロセッサ１０は後述するストレージ１２からプログラムを読み出し、後述するメモリ１１に展開する。プロセッサ２０は後述するストレージ２２からプログラムを読み出し、後述するメモリ２１に展開する。プロセッサ１０およびプロセッサ２０は展開したプログラムを実行する。
【００４２】
メモリ１１および２１は主記憶装置である。メモリ１１および２１は、ＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）等の記憶装置で構成される。メモリ１１は、プロセッサ１０が後述するストレージ１２から読み出したプログラムおよび各種データを一時的に記憶することにより、プロセッサ１０に作業領域を提供する。メモリ１１は、プロセッサ１０がプログラムに従って動作している間に生成した各種データも一時的に記憶する。メモリ２１は、プロセッサ２０が後述するストレージ２２から読み出した各種プログラムおよびデータを一時的に記憶することにより、プロセッサ２０に作業領域を提供する。メモリ２１は、プロセッサ２０がプログラムに従って動作している間に生成した各種データも一時的に記憶する。
【００４３】
本実施形態においてプログラムとは、ゲームをユーザ端末１００により実現するためのゲームプログラムであってもよい。あるいは、該プログラムは、該ゲームをユーザ端末１００とサーバ２００との協働により実現するためのゲームプログラムであってもよい。あるいは、該プログラムは、該ゲームを複数のユーザ端末１００の協働により実現するためのゲームプログラムであってもよい。また、各種データとは、ユーザ情報およびゲーム情報などのゲームに関するデータ、ならびに、ユーザ端末１００とサーバ２００との間または複数のユーザ端末１００間で送受信する指示または通知を含んでいる。
【００４４】
ストレージ１２および２２は補助記憶装置である。ストレージ１２および２２は、フラッシュメモリまたはＨＤＤ（Hard Disk Drive）等の記憶装置で構成される。ストレージ１２およびストレージ２２には、ゲームに関する各種データが格納される。
【００４５】
通信ＩＦ１３は、ユーザ端末１００における各種データの送受信を制御する。通信ＩＦ２３は、サーバ２００における各種データの送受信を制御する。通信ＩＦ１３および２３は例えば、無線ＬＡＮ（Local Area Network）を介する通信、有線ＬＡＮ、無線ＬＡＮ、または携帯電話回線網を介したインターネット通信、ならびに近距離無線通信等を用いた通信を制御する。
【００４６】
入出力ＩＦ１４は、ユーザ端末１００がデータの入力を受け付けるためのインターフェースであり、またユーザ端末１００がデータを出力するためのインターフェースである。入出力ＩＦ１４は、ＵＳＢ（Universal Serial Bus）等を介してデータの入出力を行ってもよい。入出力ＩＦ１４は、例えば、ユーザ端末１００の物理ボタン、カメラ、マイク、または、スピーカ等を含み得る。サーバ２００の入出力ＩＦ２４は、サーバ２００がデータの入力を受け付けるためのインターフェースであり、またサーバ２００がデータを出力するためのインターフェースである。入出力ＩＦ２４は、例えば、マウスまたはキーボード等の情報入力機器である入力部と、画像を表示出力する機器である表示部とを含み得る。
【００４７】
ユーザ端末１００のタッチスクリーン１５は、入力部１５１と表示部１５２とを組み合わせた電子部品である。入力部１５１は、例えばタッチセンシティブなデバイスであり、例えばタッチパッドによって構成される。表示部１５２は、例えば液晶ディスプレイ、または有機ＥＬ（Electro-Luminescence）ディスプレイ等によって構成される。
【００４８】
入力部１５１は、入力面に対しユーザの操作（主にタッチ操作、スライド操作、スワイプ操作、およびタップ操作等の物理的接触操作）が入力された位置を検知して、位置を示す情報を入力信号として送信する機能を備える。入力部１５１は、図示しないタッチセンシング部を備えていればよい。タッチセンシング部は、静電容量方式または抵抗膜方式等のどのような方式を採用したものであってもよい。
【００４９】
図示していないが、ユーザ端末１００は、該ユーザ端末１００の保持姿勢を特定するための１以上のセンサを備えていてもよい。このセンサは、例えば、加速度センサ、または、角速度センサ等であってもよい。ユーザ端末１００がセンサを備えている場合、プロセッサ１０は、センサの出力からユーザ端末１００の保持姿勢を特定して、保持姿勢に応じた処理を行うことも可能になる。例えば、プロセッサ１０は、ユーザ端末１００が縦向きに保持されているときには、縦長の画像を表示部１５２に表示させる縦画面表示としてもよい。一方、ユーザ端末１００が横向きに保持されているときには、横長の画像を表示部に表示させる横画面表示としてもよい。このように、プロセッサ１０は、ユーザ端末１００の保持姿勢に応じて縦画面表示と横画面表示とを切り替え可能であってもよい。
【００５０】
カメラ１７は、イメージセンサ等を含み、レンズから入射する入射光を電気信号に変換することで撮影画像を生成する。
【００５１】
測距センサ１８は、測定対象物までの距離を測定するセンサである。測距センサ１８は、例えば、パルス変換した光を発する光源と、光を受ける受光素子とを含む。測距センサ１８は、光源からの発光タイミングと、該光源から発せられた光が測定対象物にあたって反射されて生じる反射光の受光タイミングとにより、測定対象物までの距離を測定する。測距センサ１８は、指向性を有する光を発する光源を有することとしてもよい。
【００５２】
ここで、ユーザ端末１００が、カメラ１７と測距センサ１８とを用いて、ユーザ端末１００の近傍の物体１０１０を検出した検出結果を、ユーザの入力操作として受け付ける例をさらに説明する。カメラ１７および測距センサ１８は、例えば、ユーザ端末１００の筐体の側面に設けられてもよい。カメラ１７の近傍に測距センサ１８が設けられてもよい。カメラ１７としては、例えば赤外線カメラを用いることができる。この場合、赤外線を照射する照明装置および可視光を遮断するフィルタ等が、カメラ１７に設けられてもよい。これにより、屋外か屋内かにかかわらず、カメラ１７の撮影画像に基づく物体の検出精度をいっそう向上させることができる。
【００５３】
プロセッサ１０は、カメラ１７の撮影画像に対して、例えば以下の（１）〜（５）に示す処理のうち１つ以上の処理を行ってもよい。（１）プロセッサ１０は、カメラ１７の撮影画像に対し画像認識処理を行うことで、該撮影画像にユーザの手が含まれているか否かを特定する。プロセッサ１０は、上述の画像認識処理において採用する解析技術として、例えばパターンマッチング等の技術を用いてよい。（２）また、プロセッサ１０は、ユーザの手の形状から、ユーザのジェスチャを検出する。プロセッサ１０は、例えば、撮影画像から検出されるユーザの手の形状から、ユーザの指の本数（伸びている指の本数）を特定する。プロセッサ１０はさらに、特定した指の本数から、ユーザが行ったジェスチャを特定する。例えば、プロセッサ１０は、指の本数が５本である場合、ユーザが「パー」のジェスチャを行ったと判定する。また、プロセッサ１０は、指の本数が０本である（指が検出されなかった）場合、ユーザが「グー」のジェスチャを行ったと判定する。また、プロセッサ１０は、指の本数が２本である場合、ユーザが「チョキ」のジェスチャを行ったと判定する。（３）プロセッサ１０は、カメラ１７の撮影画像に対し、画像認識処理を行うことにより、ユーザの指が人差し指のみ立てた状態であるか、ユーザの指がはじくような動きをしたかを検出する。（４）プロセッサ１０は、カメラ１７の撮影画像の画像認識結果、および、測距センサ１８の出力値等の少なくともいずれか１つに基づいて、ユーザ端末１００の近傍の物体１０１０（ユーザの手など）とユーザ端末１００との距離を検出する。例えば、プロセッサ１０は、カメラ１７の撮影画像から特定されるユーザの手の形状の大小により、ユーザの手がユーザ端末１００の近傍（例えば所定値未満の距離）にあるのか、遠く（例えば所定値以上の距離）にあるのかを検出する。なお、撮影画像が動画の場合、プロセッサ１０は、ユーザの手がユーザ端末１００に接近しているのか遠ざかっているのかを検出してもよい。（５）カメラ１７の撮影画像の画像認識結果等に基づいて、ユーザの手が検出されている状態で、ユーザ端末１００とユーザの手との距離が変化していることが判明した場合、プロセッサ１０は、ユーザが手をカメラ１７の撮影方向において振っていると認識する。カメラ１７の撮影範囲よりも指向性が強い測距センサ１８において、物体が検出されたりされなかったりする場合に、プロセッサ１０は、ユーザが手をカメラの撮影方向に直交する方向に振っていると認識する。
【００５４】
このように、プロセッサ１０は、カメラ１７の撮影画像に対する画像認識により、ユーザが手を握りこんでいるか否か（「グー」のジェスチャであるか、それ以外のジェスチャ（例えば「パー」）であるか）を検出する。また、プロセッサ１０は、ユーザの手の形状とともに、ユーザがこの手をどのように移動させているかを検出する。また、プロセッサ１０は、ユーザがこの手をユーザ端末１００に対して接近させているのか遠ざけているのかを検出する。このような操作は、例えば、マウスまたはタッチパネルなどのポインティングデバイスを用いた操作に対応させることができる。ユーザ端末１００は、例えば、ユーザの手の移動に応じて、タッチスクリーン１５においてポインタを移動させ、ユーザのジェスチャ「グー」を検出する。この場合、ユーザ端末１００は、ユーザが選択操作を継続中であると認識する。選択操作の継続とは、例えば、マウスがクリックされて押し込まれた状態が維持されること、または、タッチパネルに対してタッチダウン操作がなされた後タッチされた状態が維持されることに対応する。また、ユーザ端末１００は、ユーザのジェスチャ「グー」が検出されている状態で、さらにユーザが手を移動させると、このような一連のジェスチャを、スワイプ操作（またはドラッグ操作）に対応する操作として認識することもできる。また、ユーザ端末１００は、カメラ１７の撮影画像によるユーザの手の検出結果に基づいて、ユーザが指をはじくようなジェスチャを検出した場合に、当該ジェスチャを、マウスのクリックまたはタッチパネルへのタップ操作に対応する操作として認識してもよい。
【００５５】
＜ゲームシステム１の機能的構成＞
図２は、ゲームシステム１に含まれるサーバ２００およびユーザ端末１００の機能的構成を示すブロック図である。サーバ２００およびユーザ端末１００のそれぞれが備えている、一般的なコンピュータとして機能する場合に必要な機能的構成、および、ゲームにおける公知の機能を実現するために必要な機能的構成については、適宜省略している。
【００５６】
ユーザ端末１００（コンピュータ、情報処理装置、クライアント）は、ユーザの入力操作を受け付ける入力装置としての機能と、ゲームの画像または音声を出力する出力装置としての機能を有する。ユーザ端末１００は、プロセッサ１０、メモリ１１、ストレージ１２、通信ＩＦ１３、および入出力ＩＦ１４等の協働によって、制御部１１０および記憶部１２０として機能する。
【００５７】
サーバ２００は、各ユーザ端末１００と通信して、ユーザ端末１００が通信対戦ゲームを進行させるのを支援する機能を有する。サーバ２００は、プロセッサ２０、メモリ２１、ストレージ２２、通信ＩＦ２３、および入出力ＩＦ２４等の協働によって、制御部２１０および記憶部２２０として機能する。
【００５８】
記憶部１２０および記憶部２２０は、ゲームプログラム１３１、ゲーム情報１３２およびユーザ情報１３３を格納する。ゲームプログラム１３１は、ユーザ端末１００およびサーバ２００で実行するゲームプログラムである。ゲーム情報１３２は、制御部１１０および制御部２１０がゲームプログラム１３１を実行する際に参照するデータである。ユーザ情報１３３は、ユーザのアカウントに関するデータである。記憶部２２０において、ゲーム情報１３２およびユーザ情報１３３は、ユーザ端末１００ごとに格納されている。
【００５９】
（サーバ２００の機能的構成）
制御部２１０は、記憶部２２０に格納されたゲームプログラム１３１を実行することにより、サーバ２００を統括的に制御する。例えば、制御部２１０は、ユーザ端末１００に各種データおよびプログラム等を送信する。制御部２１０は、ゲーム情報もしくはユーザ情報の一部または全部をユーザ端末１００から受信する。ゲームがマルチプレイゲームである場合には、制御部２１０は、ユーザ端末１００からマルチプレイの同期の要求を受信して、同期のためのデータをユーザ端末１００に送信してもよい。
【００６０】
制御部２１０は、ゲームプログラム１３１の記述に応じて、対戦支援部２１１として機能する。制御部２１０は、実行するゲームの性質に応じて、ユーザ端末１００におけるゲームの進行を支援するために、図示しないその他の機能ブロックとしても機能することができる。
【００６１】
対戦支援部２１１は、各ユーザ端末１００が通信対戦ゲームを進行させるのを支援する。具体的には、対戦支援部２１１は、対戦する各ユーザ端末１００と通信して、ユーザ端末１００同士のやりとりを仲介する。さらに、対戦支援部２１１は、対戦相手のマッチング、対戦の進行状況の同期をとるための同期制御などを実行する。
【００６２】
（ユーザ端末１００の機能的構成）
制御部１１０は、記憶部１２０に格納されたゲームプログラム１３１を実行することにより、ユーザ端末１００を統括的に制御する。例えば、制御部１１０は、ゲームプログラム１３１およびユーザの操作にしたがって、ゲームを進行させる。また、制御部１１０は、ゲームを進行させている間、必要に応じて、サーバ２００と通信して、情報の送受信を行う。
【００６３】
制御部１１０は、ゲームプログラム１３１の記述に応じて、操作受付部１１１、表示制御部１１２、ＵＩ制御部１１３、アニメーション生成部１１４、および、対戦進行部１１５として機能する。制御部１１０は、実行するゲームの性質に応じて、ゲームを進行させるために、図示しないその他の機能ブロックとしても機能することができる。
【００６４】
操作受付部１１１は、入力部１５１に対するユーザの入力操作を検知し受け付ける。操作受付部１１１は、タッチスクリーン１５およびその他の入出力ＩＦ１４を介したコンソールに対してユーザが及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部１１０の各要素に出力する。
【００６５】
例えば、操作受付部１１１は、入力部１５１に対する入力操作を受け付け、該入力操作の入力位置の座標を検出し、該入力操作の種類を特定する。操作受付部１１１は、入力操作の種類として、例えばタッチ操作、スライド操作、スワイプ操作、およびタップ操作等を特定する。また、操作受付部１１１は、連続して検知されていた入力が途切れると、タッチスクリーン１５から接触入力が解除されたことを検知する。
【００６６】
ＵＩ制御部１１３は、ＵＩを構築するために表示部１５２に表示させるＵＩオブジェクトを制御する。ＵＩオブジェクトは、ユーザが、ゲームの進行上必要な入力をユーザ端末１００に対して行うためのツール、または、ゲームの進行中に出力される情報をユーザ端末１００から得るためのツールである。ＵＩオブジェクトは、これには限定されないが、例えば、アイコン、ボタン、リスト、メニュー画面、および、ユーザへ提供されるメッセージを含むテキストまたは画像などである。
【００６７】
さらに、ＵＩ制御部１１３は、対戦進行中、対戦進行部１１５と連携して、投球側ユーザによる投球操作を支援するためのＵＩオブジェクト、または、打撃側ユーザによる打撃操作を支援するためのＵＩオブジェクトの表示態様を制御する。これらのＵＩオブジェクトについては、図５〜図９に基づいて、後に詳述する。
【００６８】
アニメーション生成部１１４は、各種オブジェクトの制御態様に基づいて、各種オブジェクトのモーションを示すアニメーションを生成する。例えば、投手キャラクタの投球動作のアニメーション、打者キャラクタの打撃動作のアニメーション、該打者キャラクタが振るバットのアニメーション、投手キャラクタによって投げられたボールのアニメーション、打者キャラクタによって打たれたボールのアニメーション、走者キャラクタが盗塁するアニメーション等を生成してもよい。
【００６９】
表示制御部１１２は、タッチスクリーン１５の表示部１５２に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。表示制御部１１２は、アニメーション生成部１１４によって生成されたアニメーションを含むゲーム画面を表示部１５２に表示してもよい。また、表示制御部１１２は、ＵＩ制御部１１３によって制御されている上述のＵＩオブジェクトを、該ゲーム画面に重畳して描画してもよい。
【００７０】
対戦進行部１１５は、サーバ２００との間でデータの送受信を行って、相手ユーザとの対戦を進行させる。具体的には、ユーザ端末１００を操作するユーザの操作にしたがって、対戦を進行させるとともに、該対戦の進行状況を、相手ユーザが操作する他のユーザ端末１００との間で同期させるために必要な各処理を実行する。
【００７１】
一例として、対戦進行部１１５は、自身が進行させた対戦の進行状況を示す状況情報（以下、第１状況情報）を、該対戦の進行上の所定のタイミングで生成する。一方、相手ユーザが操作する他のユーザ端末１００では、上述と同じタイミングにて、該他のユーザ端末１００が、該対戦の進行状況を示す状況情報（以下、第２状況情報）を生成する。そこで、対戦進行部１１５は、第２状況情報を、サーバ２００を介して、取得する。対戦進行部１１５は、表示制御部１１２を制御して、第１状況情報および第２状況情報のうち、一致しない状況情報がある場合に、同期ずれが発生したことを示す通知を表示部１５２に表示させる。また、対戦進行部１１５は、同期ずれが発生したことをサーバ２００に通知する。
【００７２】
また、対戦進行部１１５は、ＵＩ制御部１１３およびアニメーション生成部１１４と連携して、ユーザが通信対戦野球ゲームをプレイするために必要な上述の各種ＵＩを提供する。各種ＵＩは、例えば、対戦進行部１１５が、ＵＩ制御部１１３に、ＵＩオブジェクトを含むゲーム画面を生成させること、および、表示制御部１１２が、該ゲーム画面を表示部１５２に表示させることにより実現される。
【００７３】
なお、図２に示すサーバ２００およびユーザ端末１００の機能は一例にすぎない。サーバ２００は、ユーザ端末１００が備える機能の少なくとも一部を備えていてもよい。また、ユーザ端末１００は、サーバ２００が備える機能の少なくとも一部を備えていてもよい。さらに、ユーザ端末１００およびサーバ２００以外の他の装置をゲームシステム１の構成要素とし、該他の装置にゲームシステム１における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、ユーザ端末１００、サーバ２００、および他の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
【００７４】
＜対戦の進行＞
図３は、本実施形態に係るゲームシステム１において、通信対戦野球ゲームのゲームプログラム１３１に基づいて進行される対戦（試合）を模式的に示す図である。本実施形態に係る通信対戦野球ゲームの対戦は、一例として、以下の要素で構成される。
【００７５】
この対戦が開始される前に、まず、複数のキャラクタから成るチームが編成される。ユーザは、ユーザ端末１００を操作して、９名のキャラクタをポジションごとに選出することができる。こうして、自チームを編成する。相手ユーザも、同様に、自分のユーザ端末１００を操作して、９名のキャラクタによるチーム（相手チーム）を編成する。
【００７６】
サーバ２００は、ユーザ端末１００からマッチング要求を受け付けると、同じくマッチング要求を受け付けた別のユーザ端末１００の中から対戦相手を決定して、対戦の準備を整える。サーバ２００により、マッチングが成立すると、以下のように、対戦が進行される。
【００７７】
図３に示すとおり、各ユーザ端末１００の対戦進行部１１５によって進行される対戦は、複数の回（イニング）で構成される。本ゲームでは、１イニングにつき、表と裏でチームの攻守を入れ替え、各チームが１回ずつ守備と攻撃とを実施することにより、対戦が進行する。１イニングの表および裏のそれぞれは、複数の打席で構成され、攻撃側のキャラクタ１名につき１つの打席が対応付けられる。１つの打席は、守備側（投球側）のキャラクタと、攻撃側（打撃側）のキャラクタとが１対１で対決するキャラクタ対決シーンと、対決の結果を決定し、それをアニメーションによって描出して、該打席を完了させるフィールドプレイシーンとで構成される。
【００７８】
キャラクタ対決シーンは、さらに複数のフェーズに区切られる。フェーズは、対決する各キャラクタが、守備動作および攻撃動作のいずれか一方を、それぞれ所定回数行う期間である。１つのフェーズにおいて、守備側のキャラクタ（投手キャラクタ）、および、攻撃側のキャラクタ（打者キャラクタ）のそれぞれが動作を行う回数は、予め定められている。しかし、その回数は、ゲームの題材となる競技に基づいて任意に定められればよい。また、守備側と攻撃側とで、動作回数は同じに定められてもよいし、異なっていても構わない。本実施形態では、一例として、１つのフェーズにおいて、投手キャラクタが投球動作を１回、打者キャラクタが打撃動作を１回行うと定められているものとする。なお、本実施形態では、打撃動作には、バットを振らずに投球を見送る動作、バットにボールを当てられずに空振りする動作も含まれる。
【００７９】
フェーズは、いわば、対戦を構成する要素の最小単位であり、野球ゲームにおいては、投手キャラクタが投げる１球に相当する。１つのフェーズにおいて、投手キャラクタによって、１つの投球動作が実行され、打者キャラクタによって１つの打撃動作が実行されると、対戦進行部１１５は、１つのフェーズを完了させて、フィールドプレイシーンまたは次のフェーズに移行する。例えば、打者キャラクタがバットにボールを当てることができ、ボールに対して打撃が与えられた場合、対戦進行部１１５は、打撃された該ボールの飛翔経路を計算し、該ボールをフィールド上にて移動させるとともに、フィールドプレイシーンを進行させる。一方、打者キャラクタが空振りしたり見逃したりしてボールに対して打撃が与えられなかった場合、対戦進行部１１５は、当該フェーズを完了させて、状況情報を更新し、次のフェーズを進行させる。具体的には、対戦進行部１１５は、ホームベースの上あたりに仮想的に設定された、ストライクゾーンとボールゾーンとを含む交差面における投球の到達位置に基づいて、状況情報の１つであるボールカウントを更新する。例えば、投球がストライクゾーンに着弾すれば、ストライクのカウントを１つ増やし、ストライクゾーン以外に着弾すれば、ボールのカウントを１つ増やす。
【００８０】
１以上のフェーズの進行を経て、最新のフェーズまたはフィールドプレイシーンにおいて、対戦進行部１１５は、進行中の打席の結果を決定する。例えば、三振またはゴロなどにより１アウト、ヒットによる進塁、ホームランによる得点追加などが決定される。対戦進行部１１５は、これに伴い、上述の１つの打席を完了させて、次の打席を進行させる。つまり、１つの打席は、フィールドプレイシーンを経ずに終了することもあり得る。例えば、三振またはフォアボールのときは、複数のフェーズのみが進行されて１つの打席が完了する。
【００８１】
いくつかの打席の進行を経て、１つのイニングの表（または裏）において、３つのアウトが累積されると、対戦進行部１１５は、該１つのイニングの表（または裏）を完了させ、各チームの攻守を入れ替えて、同イニングの裏（または次のイニングの表）を進行させる。
【００８２】
一例として、本実施形態では、対戦を構成する上述の各要素のうち、フィールドプレイシーンは、ユーザの操作を受け付けることなく、対戦中の各ユーザ端末１００が、ゲームプログラム１３１にしたがって、それぞれ、オートで進行させてもよい（オート進行）。一方、キャラクタ対決シーンの全フェーズは、ユーザが入力部１５１を介して実施する操作に基づいて、すなわち、マニュアル制御によって進行させることができる（マニュアル進行）。投球動作および打撃動作が１度ずつ行われる各フェーズは、対戦の勝敗を左右する重要な要素であり、対戦の大部分を占める要素である。したがって、ユーザの操作の巧拙が対戦の勝敗に大きな影響を与え、うまく操作したユーザが対戦を有利に進めることができる。
【００８３】
本実施形態では、ユーザは、フェーズごとに（一球ごとに）、希望する制御方法を切り替えることができてもよい。本実施形態では、ユーザ端末１００は、制御方法の切り替え指示を随時ユーザから受け付け、受け付け直後に訪れるフェーズの開始時点で、指示された制御方法に設定する。例えば、ユーザは、ある一球については、ユーザが自身で投球操作を行って、投手キャラクタに投球動作を行わせ、次の一球については、サーバ２００の制御下で、自動で投手キャラクタに投球動作を行わせるというように、プレイすることが可能である。
【００８４】
本実施形態では、対戦進行部１１５は、対戦の進行上の所定のタイミングで、周期的に状況情報を生成する。所定のタイミングは、一例として、対戦の各要素の区切りである。図３に示すとおり、所定のタイミングは、フェーズの区切り（ｔ１〜ｔ３など）であってもよいし、打席の区切り（ｔｍなど）であってもよいし、攻守切り替え時（ｔｎなど）であってもよいし、イニングの区切り（ｔｐ、ｔｑなど）であってもよい。
【００８５】
状況情報は、対戦の進行状況を示す情報であり、特に対戦の勝敗を左右する重要な情報である。状況情報は、一例として、進行中のイニングを示す「イニング」、各チームの得点を示す「スコア」、走者が何塁にいるかを示す「ランナー」、「アウトカウント」、および、「ボールカウント」を含む。状況情報のデータ構造は、図４を参照しながら詳述する。
【００８６】
本実施形態では、対戦進行部１１５は、生成した第１状況情報を、サーバ２００に送信するとともに、同じタイミングで生成された対戦相手のユーザ端末１００で生成された第２状況情報を受信する。すなわち、対戦しているユーザ端末１００同士が、互いに生成した状況情報を交換し合う。これにより、互いの状況情報が一致しているか否かを確認することができる。両者の状況情報の一致は、対戦の進行状況について同期がとれており、このまま対戦を進行させることができるということを意味する。
【００８７】
状況情報の交換を行うタイミング（以下、通信タイミング）は、状況情報を生成するタイミング（以下、生成タイミング）と同じであってもよい。あるいは、対戦進行部１１５は、状況情報の交換を、少なくともフィールドプレイシーンが完了した直後のタイミング（ｔｍなど）において行うことが好ましい。
【００８８】
同期ずれは、フィールドプレイシーンで起こり得る。フィールドプレイシーンを進行させる処理は、多数のパラメータを参照し、複雑な計算を行う高負荷処理だからである。例えば、対戦進行部１１５は、フィールドプレイシーンを進行させるために以下の高負荷処理を実行する。バットで打撃されたボールの飛翔経路と飛翔速度とを計算して、仮想空間においてボールを移動させる。対戦進行部１１５は、ボールと野手キャラクタとの位置関係、および、野手キャラクタの守備に係る能力値に基づいて、ボールの捕球シーンおよび送球シーンを再現する。例えば、対戦進行部１１５は、野手キャラクタを移動させるためのアルゴリズムと、対戦進行部１１５により決定されるボールの移動経路とに応じて、野手キャラクタをフィールドにおいて移動させ、野手キャラクタにボールを捕球させる。対戦進行部１１５は、野手キャラクタがボールを捕球した際に、ランナーの出塁状況、アウトカウントの状況などに基づいて、ボールの送球先を決定する。対戦進行部１１５は、走者キャラクタの走力に係る能力値に基づいて、走塁シーンを再現する。対戦進行部１１５は、ボールの位置と、走者キャラクタとの位置関係に基づいてアウトかセーフかを判定する。
【００８９】
例えば、それぞれのユーザ端末１００が把握している仮想空間において、塁を守る野手によってボールが捕球されたタイミングと、走者キャラクタの体の一部が塁に届いたタイミングとが、ほんの数フレームずれているだけでも、一方のユーザ端末１００では、アウトと処理され、他方のユーザ端末１００ではセーフと処理されるということが起こり得る。このように進行状況にずれが生じたままでは、これ以降対戦を進行させることができない。
【００９０】
上述の構成によれば、少なくとも、同期ずれが起こり得るフィールドプレイシーンの直後に、両者の状況情報を交換し、比較するので、同期ずれが起こったとしても、ただちにそれを検出し、対処することができる。このような同期制御を可能にするための、ゲームシステム１における情報処理および該情報処理で用いられるデータ構造の具体例を、以下で詳細に説明する。
【００９１】
フィールドプレイシーンの前後における、上述の情報処理およびデータ構造の具体例を説明する前に、まず、フィールドプレイシーンに移るまでの、ユーザ端末１００の動作およびユーザインターフェースについて、図４〜図９に基づいて説明する。
【００９２】
＜マッチング画面の例＞
図４は、ユーザ端末の表示部に表示されるゲーム画面の一具体例を示す図である。具体的には、該ゲーム画面は、サーバ２００においてマッチングが成立したとき、対戦が開始される直前に、ユーザ端末１００の表示部１５２に表示されるマッチング画面５００である。マッチング画面５００は、ＵＩ制御部１１３が、対戦進行部１１５の指示にしたがって、必要な各種情報を組み合わせることにより生成される。
【００９３】
マッチング画面５００は、サーバ２００から提供された対戦に係る各種情報を、対戦開始前にユーザに提供するための画面である。一例として、マッチング画面５００は、対戦開始のタイミングをユーザに知らせるためのカウントダウン５２０を含んでいてもよい。マッチング画面５００は、ユーザ自身のユーザ名５２２、相手ユーザのユーザ名５２３、ユーザのレーティング５２４、および、相手ユーザのレーティング５２５を含んでいてもよい。その他、図示されていないが、該ゲーム画面は、例えば、自チームおよび相手チームにおける先発の投手キャラクタの情報を含んでいてもよい。
【００９４】
レーティングは、各ユーザに設定されている評価値を示す。評価値は、ユーザの実力を量るための指標である。一例として、評価値は、数値が多いほど実力が高い、すなわち、本ゲームが巧いことを意味する。本実施形態では、評価値の算定方法は、従来実施されている方法が採用されてもよい。例えば、ユーザが対戦に勝利すると、評価値は、所定値分加算され、敗北すると、所定値分減算される。加算または減算される所定値は、対戦開始時におけるユーザの評価値と、相手ユーザの評価値との差分に基づいて決定されてもよい。評価値の算定は、ユーザ端末１００の対戦進行部１１５が実行してもよいし、サーバ２００の対戦支援部２１１が実行してもよい。このレーティングを用いることにより、サーバ２００は、実力に大きな開きがあるユーザ同士をマッチングすることを避け、できるだけ実力が拮抗するユーザ同士をマッチングさせることができる。
【００９５】
＜投球画面の例＞
図５〜図８は、ユーザ端末の表示部に表示されるゲーム画面の他の具体例を示す図である。具体的には、該ゲーム画面は、投手キャラクタの投球シーンを表す投球画面６００である。投球画面６００は、進行中のフェーズがマニュアル進行モードである場合に、投球側ユーザによる投球操作を受け付けるための、以下に説明する投球操作ＵＩを含む。
【００９６】
本実施形態において、投球結果Ｄ１を決定するための投球操作には、一例として、球種を指定するためのスライド操作と、コースを指定するためのドラッグ操作と、制球の良否を決定するためのタイミングを投球側ユーザに指定させるタップ操作とが含まれる。第２タップ操作の入力タイミングの良否に応じて、投球の良否が決定される。つまり、投球側ユーザにとって、対戦、特に、守備の回を有利に進めることができるか否かは、マニュアル進行モードの場合、タップ操作の巧拙にかかっている。
【００９７】
１つのフェーズが開始されると、投球側ユーザ端末１００Ａの対戦進行部１１５は、まず、図５に示す第１の投球画面６００を、ＵＩ制御部１１３に生成させて、表示部１５２に表示させる。
【００９８】
第１の投球画面６００は、仮想空間に配置されている各種オブジェクトを含む。具体的には、相手ユーザが操作する打者キャラクタ６０１、バット６０２、ユーザ自身が操作する投手キャラクタ６０３、ホームベース６０７、および、捕手キャラクタ６０５を含む。
【００９９】
第１の投球画面６００は、次のフェーズをオート進行またはマニュアル進行に切り替えるための切替ボタン６１３を含んでいてもよい。図５に示す例では、該フェーズは、マニュアルモードにて進行している。そのため、切替ボタン６１３は、次のフェーズをオート進行に切り替えるためのボタンとして投球画面６００に重畳表示されている。
【０１００】
第１の投球画面６００は、該フェーズにおいて対決中の各キャラクタのステータス情報を含んでいてもよい。一例として、自チームの投手キャラクタのステータス情報６１１と、相手チームの打者キャラクタのステータス情報６１２とを含んでいてもよい。
【０１０１】
第１の投球画面６００は、投球操作を支援するＵＩオブジェクトとして、投手キャラクタ６０３に投げさせる球種を投球側ユーザが指定するための球種指定オブジェクト６１０を含んでいてもよい。
【０１０２】
対戦進行部１１５は、球種指定オブジェクト６１０に対するユーザのスライド操作に基づいて、球種を決定する。図５に示すとおり、球種指定オブジェクト６１０において、ボールアイコンの周囲を囲うように、球種が１対１で対応付けられた球種アイコンが配置されている。球種アイコンは、対応付けられている球種を示すテキストまたはイラストなどを含んでいる。ＵＩ制御部１１３は、球種指定オブジェクト６１０において一覧される球種の種類を、投手キャラクタ６０３の能力に基づいて異ならせてもよい。
【０１０３】
操作受付部１１１は、ボールアイコンに対する所定方向のスライド操作を、球種を指定するための操作として受け付ける。対戦進行部１１５は、スライド操作の方向に配置されている球種アイコンに対応する球種を、投手キャラクタ６０３に投げさせる球種として決定する。例えば、図５に示す例では、ユーザがボールアイコンを上方向にスライドさせた場合、対戦進行部１１５は、投手キャラクタ６０３にストレートを投げさせると決定する。球種にはボール６０４の移動経路、球速等を特定するためのパラメータが対応付けられている。球種のパラメータは、球速、変化量、および変化の方向を示す情報を含む。また、球種のパラメータは、投手キャラクタ６０３の識別情報に対応付けられて、記憶部１２０に記憶されている（不図示）。対戦進行部１１５は、投手キャラクタ６０３の識別情報に対応付けられた球種のパラメータのうち、決定した球種のパラメータを記憶部１２０から読み出し、投球結果Ｄ１に含める。
【０１０４】
球種が決定されると、次に、対戦進行部１１５は、図６に示す第２の投球画面６００を表示部１５２に表示させる。第２の投球画面６００は、球種指定オブジェクト６１０に代えて、コース指定オブジェクト６１４を含む。コース指定オブジェクト６１４は、カーソル６１５と組み合わせて、投球側ユーザに、投手キャラクタ６０３に投げさせるコース（内角高め、低めなど）を指定させるためのＵＩオブジェクトとして機能する。
【０１０５】
コース指定オブジェクト６１４は、一例として、ストライクゾーンに対応する矩形を９つのマスに分割したものである。各マスは、投手キャラクタ６０３の能力、具体的には、得意なコースおよび不得意なコースに基づいて、色分けして表示されてもよい。
【０１０６】
コース指定オブジェクト６１４は、投げられたボールの到達予定位置を示す標識であるカーソル６１５を含む。第２の投球画面６００が表示されている間、操作受付部１１１は、カーソル６１５の位置を指定するためのドラッグ操作を受け付ける。操作受付部１１１がカーソル６１５を移動させるためのドラッグ操作を受け付けると、ＵＩ制御部１１３は、該ドラッグ操作に関して検出されたタッチ位置に基づいて、カーソル６１５を移動させる。
【０１０７】
操作受付部１１１は、タッチスクリーン１５に対するユーザの最初の接触位置（初期タッチ座標）と、カーソル移動操作後の接触位置（タッチナウ座標）とを取得する。ＵＩ制御部１１３は、取得された各座標を比較した結果得られた変化方向、および、変化量に基づいて、カーソル６１５の位置の変化方向、および、変化量をそれぞれ決定する。これにより、ＵＩ制御部１１３は、カーソル６１５が直接タッチされなくても、また、コース指定オブジェクト６１４の表示領域外でドラッグ操作が受け付けられても、該ドラッグ操作に連動して、カーソル６１５を移動させることができる。このようにすれば、ユーザの指によってカーソル６１５の視認が妨げられることを回避できる。表示制御部１１２は、ＵＩ制御部１１３によって実行されているカーソル６１５の移動に連動して、移動するカーソル６１５を第２の投球画面６００上に表示させる。
【０１０８】
対戦進行部１１５は、コースの確定を、任意の方法で行う。例えば、ユーザが上述のドラッグ操作に基づく接触が維持された状態で、所定閾値以上の圧力で強く押し込む操作を続けて行ったとする。対戦進行部１１５は、押し込む操作が受け付けられた時点におけるカーソル６１５の位置を、最終的なコースとして確定させる。あるいは、「コース確定」などのボタン（不図示）が別途、第２の投球画面６００に設けられてもよい。対戦進行部１１５は、該ボタンがタップ操作されたときのカーソル６１５の位置に基づいてコースを確定させてもよい。
【０１０９】
コースが確定すると、次に、対戦進行部１１５は、図７に示す第３の投球画面６００を表示部１５２に表示させる。第３の投球画面６００は、良否判定オブジェクト６２０を含む。良否判定オブジェクト６２０は、投手キャラクタ６０３の制球の良否を決定するためのタイミングを投球側ユーザに指定させるためのＵＩオブジェクトとして機能する。
【０１１０】
一例として、良否判定オブジェクト６２０は、弓形の帯状のゲージで構成される。良否判定オブジェクト６２０は、該ゲージ内に、帯の長手方向にスライドするスライドバー６２１と、スライドバー６２１が停止する帯上の位置を定義する第１領域６２２および第２領域６２３とを含む。
【０１１１】
該帯状のゲージは、投手キャラクタ６０３の位置（以下、第１位置）から、捕手キャラクタ６０５の位置（以下、第２位置）に向かって伸びている。
【０１１２】
ＵＩ制御部１１３は、スライドバー６２１を、初期位置である第１位置（例えば、図７の破線枠）から、最終位置である第２位置（例えば、図７のカーソル６１５の位置）に向かって、帯の長手方向（矢印の方向）に移動させる。アニメーション生成部１１４は、スライドバー６２１が、移動の開始から所定時間後に第２領域６２３を通過し、第１領域６２２を通過して、最終的にカーソル６１５の位置に到達するように、アニメーションを生成する。
【０１１３】
ユーザは、スライドバー６２１が帯上の所望の位置に到達した時、その位置でスライドバー６２１を停止させるよう、タッチスクリーン１５に対してタップ操作を行う。ＵＩ制御部１１３は、操作受付部１１１によってタップ操作が受け付けられた時の位置にて、スライドバー６２１を停止させる。対戦進行部１１５は、スライドバー６２１の停止位置に応じて、制球の良否を判定する。一例として、本実施形態では、対戦進行部１１５は、スライドバー６２１が第１領域６２２で停止した場合に、投手キャラクタ６０３が制球に完全に成功したと判定し、スライドバー６２１が第２領域６２３で停止した場合、成功に近い投球がなされたと判定し、それ以外の領域で停止した場合に、制球に失敗したと判定する。ここで、「制球に完全に成功した」とは、投手キャラクタ６０３が好投し、投球側ユーザによって指定された球種およびコースどおりに該ボールが仮想空間上を移動することを意味する。「成功に近い投球がなされた」とは、投球側ユーザによって指定された球種およびコースどおりにとはいかないが、それに近い球種およびコースに基づいて該ボールが仮想空間上を移動することを意味する。「制球に失敗した」とは、投手キャラクタ６０３が失投し、投球側ユーザによって指定された球種およびコースとはかけ離れた球種およびコースにて、該ボールが仮想空間上を移動することを意味する。
【０１１４】
別の実施形態では、好投であると判定された場合には、打撃側ユーザ端末１００Ｂは、打撃画面７００（図９にて後述）に表示される、打撃操作を支援するＵＩオブジェクトを非表示にしたり、見えにくくしたり、表示するタイミングを遅くしたりしてもよい。これにより、投球側ユーザが、上述の一連の投球操作をうまく実施して制球に成功した場合には、打撃側ユーザが打撃を成功させにくくなる。このように、ユーザのゲームの操作に対する習熟度が対戦の進行に直接影響をおよぼすため、対戦ゲームの興趣性がより一層高まる。
【０１１５】
制球の良否が判定されると、次に、対戦進行部１１５は、図８に示す第４の投球画面６００を表示部１５２に表示させる。第４の投球画面６００は、良否判定結果６２４を含む。また、第４の投球画面６００においては、投手キャラクタ６０３が投球を開始するアニメーションが付与され、これまで投手キャラクタ６０３のグローブに収まっていたボール６０４が描出されてもよい。これにより、投球側ユーザは、第３の投球画面６００に対して行った自身の操作に関して、フィードバックを即時に受け取ることができる。
【０１１６】
なお、良否判定オブジェクト６２０の帯状のゲージは、弓、アーチなど形状を有し、投げられたボールが描く放物線を模していることが好ましい。また、良否判定オブジェクト６２０の帯の幅は、第１位置から第２位置へ移動するにつれて、細くなるように定められていることが好ましい。また、該ゲージにおいて、第２位置に最も近く、最も帯の幅が細くなっている部分、すなわち、ゲージの先端が、ボールの到達予定位置として確定したカーソル６１５に重なるように、良否判定オブジェクト６２０が配置されることが好ましい。これにより、ユーザは、直観的に、帯状のゲージを、投手キャラクタ６０３から投げられたボールが、画面奥に配置されている捕手キャラクタ６０５に向かって移動する経路であるかのように理解する。以上のことから、本実施形態に係る良否判定オブジェクト６２０は、現実の野球を再現するという目的に反して、ゲームの興趣性を高める目的で追加されたＵＩでありながら、投球画面６００を現実の投球シーンから乖離させることなく、見た目に違和感のない投球シーンを演出することに貢献している。
【０１１７】
＜打撃画面の例＞
図９は、ユーザ端末の表示部に表示されるゲーム画面のさらに他の具体例を示す図である。具体的には、該ゲーム画面は、打者キャラクタの打撃シーンを表す打撃画面７００である。打撃画面７００は、進行中のフェーズがマニュアル進行モードである場合に、打撃側ユーザによる打撃操作を受け付けるための、以下に説明する打撃操作ＵＩを含む。
【０１１８】
１つのフェーズが開始され、対戦相手である投球側ユーザが投球操作を実施すると、それに応じて投球側ユーザ端末１００Ａにて生成された投球結果Ｄ１が、打撃側ユーザ端末１００Ｂに供給される。打撃側ユーザ端末１００Ｂが、投球結果Ｄ１を受信すると、打撃側ユーザ端末１００Ｂの対戦進行部１１５は、例えば、図９に示す打撃画面７００を、ＵＩ制御部１１３に生成させて、表示部１５２に表示させる。
【０１１９】
対戦進行部１１５は、仮想空間としての球場における第１位置と第２位置との間に、ホームベース６０７を配置する。対戦進行部１１５は、ホームベース６０７上に、第１位置から第２位置に向かう方向に交差する方向に延在する交差面を設定する。対戦進行部１１５は、交差面に基づいて、打者キャラクタ６０１がボール６０４を打撃したか否かを判定する。上述したとおり、交差面は、例えば、ストライクゾーン７０１と、該ストライクゾーンの外側に配置されるボールゾーン７０２とを含んでいてもよい。
【０１２０】
操作受付部１１１が、投手キャラクタ６０３が投球したボール６０４が交差面に到達したタイミングで、ユーザからスイングのタイミングを指定する操作を受け付けると、打者キャラクタ６０１は、バット６０２をスイングすることによって、ボール６０４を打ち返す作用をボール６０４に与えることができる。図９に示すボール６０４は、投手キャラクタ６０３によって投球された後、交差面に向かって移動している途中のボール６０４の一例を示す。
【０１２１】
図９に示すとおり、打撃画面７００は、上述の他にも、各種オブジェクトを含んでいてもよい。特に、ユーザの打撃操作を支援するためのＵＩオブジェクトを含んでいることが好ましい。打撃操作を支援するＵＩオブジェクトとしては、例えば、タイミングヒントオブジェクト７０３、ミートカーソル７０４、位置ヒントオブジェクト７０５、方向ヒントオブジェクト７０６等がある。
【０１２２】
タイミングヒントオブジェクト７０３は、打者キャラクタ６０１にバット６０２をスイングさせる良好なタイミングをユーザに示す。ミートカーソル７０４は、バット６０２がスイングされた際に交差面においてボール６０４に作用を与え得る領域として、スイングされたバット６０２の到達予定位置をユーザに示す。また、ミートカーソル７０４は、バット６０２とボール６０４との当たりを判定するために、対戦進行部１１５によって参照される領域でもある。位置ヒントオブジェクト７０５は、投手キャラクタ６０３によって投げられたボール６０４の、交差面における到達予定位置をユーザに示す。方向ヒントオブジェクト７０６は、投げられたボール６０４の進行方向の変化をユーザに示す。
【０１２３】
本実施形態において、打撃結果Ｄ２を決定するための打撃操作には、一例として、ミートカーソル７０４の位置を指定するためのスライド操作と、決定したミートカーソル７０４の位置に向けてバット６０２を振るタイミングを指定するためのフリック操作とが含まれる。つまり、スライド操作が、投球に対して打撃を行う位置を指定する操作であり、フリック操作が、打撃を行うタイミング、つまりバット６０２を振るタイミングを指定する操作である。つまり、打撃側ユーザにとって、対戦、特に、攻撃の回を有利に進めることができるか否かは、マニュアル進行モードの場合、スライド操作とフリック操作との両方の巧拙にかかっている。
【０１２４】
投手キャラクタ６０３からボール６０４が投げられると、打撃画面７００において、操作受付部１１１は、上述の打撃操作を待機する状態に遷移する。操作受付部１１１が、タッチスクリーン１５に対するユーザのスライド操作を受け付けると、該スライド操作にしたがって、ＵＩ制御部１１３は、ミートカーソル７０４を移動させる。なお、ユーザは、ミートカーソル７０４のベストの位置を、位置ヒントオブジェクト７０５を参考にして決定してもよい。
【０１２５】
続いて、対戦進行部１１５は、投手キャラクタ６０３より投げられたボール６０４が交差面を基準とする所定の範囲内に到達したか否かを判定する。つまり、投げられたボール６０４が、ホームベース６０７上に設定された交差面に所定距離未満まで近づいてきたか否かを判定する。ボール６０４が交差面から所定距離未満まで到達したと判定された場合、ＵＩ制御部１１３は、ミートカーソル７０４の移動の少なくとも一部を制限してもよい。移動が制限されたことを示すように、ＵＩ制御部１１３はミートカーソル７０４の色または模様などの表示態様を変化させてもよい。
【０１２６】
打撃画面７００において、投げられたボール６０４には、ストライクゾーン７０１に向かって移動してくるアニメーションが、アニメーション生成部１１４によって付与される。ユーザは、移動してくるボール６０４を目で追い、ボール６０４がホームベース６０７上に到達したと思うベストのタイミングで、打者キャラクタ６０１が行うスイングの開始タイミングを指定するためにフリック操作を行うことができる。
【０１２７】
ユーザは、フリック操作のベストのタイミングを計るために、さらに、タイミングヒントオブジェクト７０３を参考にすることができる。タイミングヒントオブジェクト７０３は、ボール６０４の投球が開始されたときから表示が開始され、ボール６０４がホームベース６０７上の交差面に近づくにつれてボール６０４の中心に向かって収縮するようなアニメーションが、アニメーション生成部１１４によって付与されている。さらに、該アニメーションは、ボール６０４が交差面に到達したタイミングで、ちょうどボール６０４の輪郭と同じ大きさにまで縮小するアニメーションである。ユーザは、タイミングヒントオブジェクト７０３の大きさを確認することにより、良好な打撃結果が得られるベストタイミングを計ることができる。
【０１２８】
操作受付部１１１がフリック操作を受け付けると、対戦進行部１１５は、その時の交差面におけるボール６０４とミートカーソル７０４との位置関係に少なくとも基づいて、打者キャラクタ６０１がボール６０４に打撃を与えたか否かを判定する。つまり、ユーザのスライド操作とフリック操作とに基づいて、打者キャラクタ６０１によってスイングされたバット６０２が、ボール６０４に当たったか否かを判定する。例えば、交差面においてボール６０４がミートカーソル７０４と少なくとも部分的に重畳している場合には、打者キャラクタ６０１がボール６０４を打撃したと判定してもよい。
【０１２９】
さらに、対戦進行部１１５は、操作受付部１１１が特定したフリック操作のタイミングに基づいて、打撃を与えたか否かの判定を実行してもよい。例えば、交差面におけるボール６０４およびミートカーソル７０４が打撃に適合した位置関係にある場合であっても、フリック操作のタイミングがボール６０４への打撃に適合したタイミングに対して、早過ぎたり遅すぎたりする場合には、対戦進行部１１５は、打者キャラクタ６０１がボール６０４を打撃しなかったと判定してもよい。
【０１３０】
また、対戦進行部１１５は、上述の位置関係に少なくとも基づいて、打撃が与えられたボール６０４が仮想空間において移動する際の移動経路を算出する。具体的には、対戦進行部１１５は、上述の位置関係に基づいて、バット６０２とボール６０４との衝突を力学的にモデル化する。この場合、バット６０２に衝突した直後のボール６０４の速度ベクトル、回転軸、回転量等を、ボール６０４を移動させるための初期条件として取得すればよい。例えば、ボール６０４の下部をミートカーソル７０４の上部で打撃した場合には、打球の角度が上がりフライとなる。また、ボール６０４の上部をミートカーソル７０４の下部で打撃した場合には、打球の角度が下がりゴロとなる。また、例えば、対戦進行部１１５は、ミートカーソル７０４の中央の位置（図９の芯７０７）でボール６０４の中央を打撃する等の所謂ジャストミートの場合には、ライナーでボール６０４が飛ぶような移動経路を算出する。一方、ジャストミート以外の場合には凡打と判定して、凡打に対応する移動経路を算出してもよい。
【０１３１】
対戦進行部１１５が算出した移動経路にしたがって、アニメーション生成部１１４は、算出された移動経路を飛んでいくボール６０４のアニメーションを生成する。表示制御部１１２は、生成された、飛翔するボール６０４のアニメーションを、表示部１５２に表示する。
【０１３２】
こうしてボール６０４がフィールド上に移動した後は、対戦進行部１１５は、ゲームプログラム１３１にしたがって、仮想空間における、ボール６０４の移動、守備をする野手キャラクタの動き、および、進塁する走者キャラクタの動きなどをそれぞれ計算する。そして、計算結果に基づいて、各オブジェクトを移動させ、フィールドプレイシーンを進行させる。ＵＩ制御部１１３およびアニメーション生成部１１４は、計算されたフィールドプレイシーンに対応する画像またはアニメーションを生成して、表示部１５２に表示させてもよい。
【０１３３】
なお、対戦進行部１１５は、打者キャラクタ６０１がボール６０４に打撃を与えなかったと判定した場合には、ボール６０４の移動経路の算出を省略してもよい。この場合、打者キャラクタ６０１がボール６０４を空振りするアニメーションがアニメーション生成部１１４によって生成され、該アニメーションが表示制御部１１２によって表示部１５２に表示される。
【０１３４】
打撃画面７００は、進行しているフェーズにおいて対決中の各キャラクタのステータス情報を含んでいてもよい。一例として、自チームの打者キャラクタ６０１のステータス情報７０８と、相手チームの投手キャラクタ６０３のステータス情報７０９とを含んでいてもよい。
【０１３５】
＜状況情報＞
図１０は、対戦進行部１１５が生成する状況情報のデータ構造の一例を示す図である。一例として、状況情報４００は、図３に示すタイミングｔ３において、投球側ユーザ端末１００Ａおよび打撃側ユーザ端末１００Ｂの両方で共有されている状況情報を示す。状況情報４０１は、タイミングｔｍにおいて、投球側ユーザ端末１００Ａの対戦進行部１１５によって生成された第１状況情報を示す。状況情報４０２は、同じタイミングｔｍにおいて、打撃側ユーザ端末１００Ｂの対戦進行部１１５によって生成された第２状況情報を示す。
【０１３６】
図１０に示すとおり、状況情報は、一例として、進行中のイニングを示すイニング４１０、各チームの得点を示すスコア４１１、攻撃側のチームの走者キャラクタが何塁にいるかを示すランナー４１２、進行中の打席におけるボールカウント４１３、および、進行中のイニングにおけるアウトカウント４１４の各種情報を含む。
【０１３７】
図１０に示す例では、タイミングｔ３において、「１アウト、ランナー１塁」という状況で、各ユーザ端末１００の同期がとれている。ここで、タイミングｔ３以降の所定のフェーズにおいて、投手キャラクタから投げられたボールを打者キャラクタがフェアに打ち返したとする。
【０１３８】
そして、一方の投球側ユーザ端末１００Ａでは、対戦進行部１１５が、フィールドプレイを計算し、１塁にいた走者キャラクタは２塁に進塁し、打者キャラクタは１塁でアウトをとられたという結果を出力したとする。この場合、対戦進行部１１５は、タイミングｔｍにおいて、状況情報４０１を生成する。
【０１３９】
他方、打撃側ユーザ端末１００Ｂでは、対戦進行部１１５が、フィールドプレイを計算し、１塁にいた走者キャラクタは２塁に進塁し、打者キャラクタはセーフとなり１塁に出塁したという結果を出力したとする。この場合、対戦進行部１１５は、タイミングｔｍにおいて、状況情報４０２を生成する。
【０１４０】
状況情報４０１および状況情報４０２が、サーバ２００を介して交換されると、対戦進行部１１５は、タイミングｔ３からｔｍまでのどこかで、同期ずれが発生したことを検出する。対戦進行部１１５は、同じタイミングで生成された状況情報４０１と状況情報４０２とを比較し、状況情報に含まれている少なくとも１つの情報に不一致があれば、同期ずれが発生したと判断できる。図１０に示す例では、対戦進行部１１５は、ランナー４１２と、アウトカウント４１４とが一致しないことに基づいて、同期ずれの発生を検出する。
【０１４１】
＜処理フロー＞
図１１および図１２は、ゲームシステム１に含まれる各装置が、ゲームプログラム１３１に基づいて実行する処理の流れを示すフローチャートである。図１１に示すフローチャートにおいては、ユーザ端末１００が実行する処理を、投球側ユーザ端末１００Ａが実行する処理と、打撃側ユーザ端末１００Ｂが実行する処理とに分けて記載する。図１２に示すステップＳ１３９以降の処理については、ユーザ端末１００が実行する処理は、投球側ユーザ端末１００Ａと打撃側ユーザ端末１００Ｂとで共通である。そのため、図１２に示すフローチャートにおいては、投球側ユーザ端末１００Ａが実行する処理と打撃側ユーザ端末１００Ｂが実行する処理とを区別せずに、ユーザ端末１００が実行する処理としてまとめて記載する。
【０１４２】
図１１に示す一連の処理は、サーバ２００が、投球側ユーザ端末１００Ａと、打撃側ユーザ端末１００Ｂとのマッチングを成立させたことにより開始される。
【０１４３】
ステップＳ１０１にて、サーバ２００の対戦支援部２１１は、状況情報を初期化する。初期化された対戦情報は、対戦開始時の対戦の進行状況を示す。ステップＳ１０２にて、対戦支援部２１１は、マッチングが成立した旨の通知と、初期化された状況情報とを各ユーザ端末１００に送信して、対戦を開始する。
【０１４４】
ステップＳ１０３およびステップＳ１０４にて、各ユーザ端末１００の対戦進行部１１５は、初期化された状況情報を受信して、対戦の進行を開始する。このとき、各ユーザ端末１００の表示制御部１１２は、例えば、図４に示すマッチング画面を表示部１５２に表示してもよい。
【０１４５】
ステップＳ１０５にて、対戦支援部２１１は、フェーズ開始の同期をとる。これに伴い、投球側ユーザ端末１００Ａの対戦進行部１１５は、ステップＳ１０６にて、該フェーズの進行を開始し、投球画面６００（図５〜図８）を表示部１５２に表示させる。
【０１４６】
ステップＳ１０７にて、操作受付部１１１は、投球側ユーザから投球操作を受け付ける。ステップＳ１０８にて、対戦進行部１１５は、該投球操作に基づいて、球種、コース、および、好投か否か等の投球内容を決定する。ステップＳ１０９にて、決定した投球内容を示す情報を含む投球結果Ｄ１を生成し、投球結果Ｄ１をサーバ２００に送信する。
【０１４７】
一方、ステップＳ１０５にてフェーズ開始の同期がとられたとき、打撃側ユーザ端末１００Ｂの対戦進行部１１５は、ステップＳ１１０にて、打撃画面７００を表示部１５２に表示させる。このとき、投手キャラクタ６０３の投球動作は確定していないので、打撃画面７００には、ボールを投げる前の投手キャラクタ６０３と、ミートカーソル７０４とが表示される。ステップＳ１１１にて、操作受付部１１１は、ミートカーソル７０４を移動させるためのスライド操作を受け付けてもよい。
【０１４８】
ステップＳ１１２にて、対戦支援部２１１は、投球結果Ｄ１を受信する。そして、ステップＳ１１３にて、受信した投球結果Ｄ１を、打撃側ユーザ端末１００Ｂに送信する。
【０１４９】
ステップＳ１１４にて、打撃側ユーザ端末１００Ｂは、サーバ２００から投球結果Ｄ１を受信する。ステップＳ１１５にて、打撃側ユーザ端末１００Ｂのアニメーション生成部１１４は、受信された投球結果Ｄ１に基づいて、投手キャラクタ６０３が投球するアニメーションとボール６０４が移動するアニメーションとを生成する。ステップＳ１１６にて、表示制御部１１２は、生成された該アニメーションを表示部１５２に表示する。ここで、ＵＩ制御部１１３は、ミートカーソル７０４の他に、打撃側ユーザの打撃操作を支援するためのＵＩオブジェクト（例えば、図９）を打撃画面７００に重畳させてもよい。
【０１５０】
投球側ユーザ端末１００Ａにおいても同様に、ステップＳ１１７にて、アニメーション生成部１１４によって、投手キャラクタ６０３が投球するアニメーションとボール６０４が移動するアニメーションとが生成される。そして、ステップＳ１１８にて、表示制御部１１２によって、これらのアニメーションが表示部１５２に表示される。
【０１５１】
ステップＳ１１９にて、打撃側ユーザ端末１００Ｂの操作受付部１１１は、打撃側ユーザによる打撃操作を受け付ける。ステップＳ１２０にて、対戦進行部１１５は、受け付けられた打撃操作に基づいて、バット６０２のスイング位置、および、スイングタイミング等を決定する。ステップＳ１２１にて、対戦進行部１１５は、決定したスイング位置およびスイングタイミングの情報を含む打撃結果Ｄ２を生成し、サーバ２００に送信する。
【０１５２】
ステップＳ１２２にて、対戦支援部２１１は、打撃結果Ｄ２を受信する。そして、ステップＳ１２３にて、受信した打撃結果Ｄ２を、投球側ユーザ端末１００Ａに送信する。
【０１５３】
投球側ユーザ端末１００Ａがサーバ２００から打撃結果Ｄ２を受信すると、ステップＳ１２４にて、アニメーション生成部１１４は、受信された打撃結果Ｄ２に基づいて、打者キャラクタ６０１が打撃するアニメーションを生成する。ステップＳ１２５にて、表示制御部１１２は、生成された該アニメーションを表示部１５２に表示する。
【０１５４】
対戦進行部１１５は、打撃結果Ｄ２に基づいて「打者キャラクタ６０１がバット６０２にボール６０４を当てて打撃した」と判断した場合には、ステップＳ１２６にて、フィールドプレイの計算を行う。具体的には、対戦進行部１１５は、打撃されたボール６０４をフィールド上で移動させるための計算、野手キャラクタに守備（捕球、送球など）をさせるための計算、および、走者キャラクタを進塁または出塁させるための計算を行う。
【０１５５】
ステップＳ１２７にて、アニメーション生成部１１４は、対戦進行部１１５の計算結果にしたがって、フィールドプレイのアニメーションを生成してもよい。ステップＳ１２８にて、表示制御部１１２は、該生成されたアニメーションを表示部１５２に表示してもよい。
【０１５６】
なお、対戦進行部１１５は、打撃結果Ｄ２に基づいて「打者キャラクタ６０１がバット６０２にボール６０４を当てなかった（空振りした、または、見逃した）」と判断した場合には、ステップＳ１２６〜ステップＳ１２８の各処理の実行を省略する。
【０１５７】
ステップＳ１２９にて、対戦進行部１１５は、フィールドプレイに関する計算結果に基づいて、状況情報を更新する。例えば、計算結果が、「打者キャラクタ６０１がフェアに打ち返したボールは、打者キャラクタ６０１が１塁に到達するよりも前に、１塁に送球された」ことを指しているとする。この場合、対戦進行部１１５は、状況情報４００を状況情報４０１に更新する。対戦進行部１１５は、更新した状況情報４０１をサーバ２００に送信する。
【０１５８】
あるいは、対戦進行部１１５は、ステップＳ１２６〜ステップＳ１２８が省略された場合には、投げられたボール６０４の交差面における到達位置が、ストライクゾーン７０１内か、それ以外かに基づいて、状況情報の中のボールカウント４１３を更新する。
【０１５９】
一方、打撃側ユーザ端末１００Ｂの対戦進行部１１５は、ステップＳ１２１の後、ステップＳ１３０〜ステップＳ１３４の各ステップを実行する。ステップＳ１３０〜ステップＳ１３４は、上述の、ステップＳ１２４〜ステップＳ１２８と同様に実行される。異なる点は、打撃結果Ｄ２が、サーバ２００から送信されたものではなく、ステップＳ１２０にて自端末にて生成された情報であるという点である。
【０１６０】
また、ステップＳ１３２では、ステップＳ１２６とは異なり、対戦進行部１１５は、例えば、「打者キャラクタ６０１がフェアに打ち返したボールが１塁に送球されるよりも前に、打者キャラクタ６０１が１塁に到達した」ことを指す計算結果を出力したとする。この場合、対戦進行部１１５は、ステップＳ１３５にて、状況情報４００を状況情報４０２に更新する。対戦進行部１１５は、更新した状況情報４０２をサーバ２００に送信する。
【０１６１】
対戦支援部２１１は、それぞれのユーザ端末１００から、同じタイミングで生成された状況情報を受信すると、ステップＳ１３６にて、受信した状況情報を、それぞれ対戦体の各ユーザ端末１００に転送する。すなわち、投球側ユーザ端末１００Ａが生成した状況情報４０１は、打撃側ユーザ端末１００Ｂに供給され、打撃側ユーザ端末１００Ｂが生成した状況情報４０２は、投球側ユーザ端末１００Ａに供給されて、状況情報が交換される。ステップＳ１３７およびステップＳ１３８にて、各ユーザ端末１００は、対戦相手のユーザ端末１００で生成された状況情報をそれぞれ受信する。
【０１６２】
ユーザ端末１００が対戦相手の状況情報を受信すると、ステップＳ１３９にて、対戦進行部１１５は、自端末で生成された第１状況情報（例えば、状況情報４０１）と、対戦相手のユーザ端末１００で生成された第２状況情報（例えば、状況情報４０２）とを比較する。
【０１６３】
状況情報のすべてが一致している場合、対戦進行部１１５は、ステップＳ１３９のＹＥＳから、ステップＳ１０６またはステップＳ１１０に戻り、それ以降の処理を実行して、次のフェーズを進行させる。
【０１６４】
一方、状況情報に含まれる情報のうち１つでも一致しない情報がある場合、対戦進行部１１５は、ステップＳ１３９のＮＯから、ステップＳ１４０に進む。そして、対戦進行部１１５は、対戦の進行状況が一致していないこと、すなわち、同期ずれが発生していることを検知する。対戦進行部１１５は、同期ずれの発生を検知すると、現在進行中のフェーズを中断する。
【０１６５】
ステップＳ１４１にて、対戦進行部１１５は、同期ずれが発生していることをサーバ２００に通知する。通知は、投球側ユーザ端末１００Ａおよび打撃側ユーザ端末１００Ｂの両方からサーバ２００宛てに送信されてもよいし、いずれか一方からサーバ２００宛てに送信されてもよい。また、各ユーザ端末１００は、対戦相手のユーザ端末１００にも、該通知を送信してもよい。
【０１６６】
ステップＳ１４２にて、対戦進行部１１５は、同期ずれが発生した旨をユーザに通知するためのメッセージ画面を表示部１５２に表示する。具体的には、対戦進行部１１５は、ＵＩ制御部１１３に作成させた該メッセージ画面を表示部１５２に表示するように、表示制御部１１２に指示する。該メッセージ画面を表示するステップＳ１４２は、ステップＳ１４０が実行された後、ステップＳ１４１よりも前に実行されてもよい。また、メッセージ画面は、後述のステップＳ１４６が実行されるまで、継続して表示されてもよい。
【０１６７】
ステップＳ１４３にて、サーバ２００の対戦支援部２１１は、対戦中の各ユーザ端末１００のうちの少なくとも１台から同期ずれが発生した旨の通知を受信すると、ステップＳ１４３のＹＥＳからステップＳ１４４に進む。ここで、対戦支援部２１１は、各ユーザ端末１００から状況情報を取得する。一例として、投球側ユーザ端末１００Ａから第１状況情報を、打撃側ユーザ端末１００Ｂから第２状況情報を取得する。
【０１６８】
ステップＳ１４４にて、対戦支援部２１１は、どちらの状況情報を進行中の対戦における最新の状況情報として採用するのかを決定する。対戦支援部２１１は、後述するように、各種パラメータに基づいて採用する状況情報を決定してもよいし、ランダムに決定してもよい。
【０１６９】
ステップＳ１４５にて、対戦支援部２１１は、いずれの状況情報を採用したのかを示す通知を、対戦に参加する各ユーザ端末１００に送信する。
【０１７０】
ステップＳ１４６にて、各ユーザ端末１００の対戦進行部１１５は、上述の通知を受信する。そして、進行中の対戦の最新の状況情報を、通知された、採用された方の状況情報に更新する。採用された状況情報が、ステップＳ１２９またはステップＳ１３５にて、自端末で作成されたものである場合には、更新する処理は省略されてもよい。
【０１７１】
ステップＳ１４７にて、対戦進行部１１５は、採用された状況情報に基づく対戦の進行状況をユーザに通知するためのメッセージ画面を表示部１５２に表示する。具体的には、対戦進行部１１５は、該状況情報に基づいてＵＩ制御部１１３に作成させたメッセージ画面を表示部１５２に表示するように、表示制御部１１２に指示する。
【０１７２】
１つの状況情報が採用され統一されたことにより、同期ずれが解消されると、各装置は、中断していたフェーズを終了させ、採用された状況情報に基づいて、次のフェーズに移行し、対戦を再開する。具体的には、ステップＳ１４８にて、サーバ２００の対戦支援部２１１は、同期ずれが解消されたフェーズを終了し、ステップＳ１０５に戻り、次のフェーズを開始するための同期制御を行う。ステップＳ１４９にて、各ユーザ端末１００の対戦支援部２１１は、同期ずれが解消されたフェーズを終了し、次のフェーズに移行して、中断していた対戦を再開する。投球側ユーザ端末１００Ａは、ステップＳ１０６に戻り、上述の次のフェーズの投球画面６００を自端末の表示部１５２に表示する。打撃側ユーザ端末１００Ｂは、ステップＳ１１０に戻り、上述の次のフェーズの打撃画面７００を自端末の表示部１５２に表示する。
【０１７３】
＜メッセージ画面の例＞
（審議中画面）
図１３は、ユーザ端末の表示部に表示されるメッセージ画面の一具体例を示す図である。具体的には、該メッセージ画面は、同期ずれが発生している間、ステップＳ１４２にて、ユーザ端末１００の表示部１５２に表示される。該メッセージ画面は、一例として、図１３に示すとおり、審議中画面８００であることが好ましい。
【０１７４】
審議中画面８００は、例えば、同期ずれが発生した旨をユーザに通知するためのテキストメッセージ８０１を含む。審議中画面８００は、さらに、同期ずれという、ゲームシステム１上で現実に発生している不具合によって、対戦の進行が中断している状況を、野球の試合が中断している状況に置き換えた演出を含んでいることが好ましい。
【０１７５】
現実の野球の試合では、審判の判定に納得できない場合に監督が再考を求めることにより、審判団が審議を行う間、試合が中断するということが起こり得る。そこで、審議中画面８００は、上述の演出として、審判団による審議中であることを示すテキストデータ８０２を含んでいてもよい。これに代えて、または、これに加えて、審議中画面８００は、上述の演出として、審判団による審議のシーンを示す画像データ８０３を含んでいてもよい。
【０１７６】
上述のメッセージ画面により、ユーザは、対戦の進行が中断している理由を知ることができる。そのため、ユーザに、待機の時間を短く感じさせることができる。また、上述のメッセージ画面により、同期ずれという現実の不具合を通知するときに、野球の雰囲気を壊さないようにすることができる。結果として、対戦を通じてユーザが培った野球ゲームへの没入感、および、該ゲームの興趣性は損なわれないという効果を奏する。
【０１７７】
なお、対戦進行部１１５は、審議中画面８００において、対戦の進行が中断していてもユーザが可能な操作に関して、切替ボタン６１３などのＵＩオブジェクトを表示させ、ユーザの操作を受け付けてもよい。
【０１７８】
（審議結果画面）
図１４は、ユーザ端末の表示部に表示されるメッセージ画面の他の具体例を示す図である。具体的には、該メッセージ画面は、発生していた同期ずれが解消されたときに、ステップＳ１４７にて、ユーザ端末１００の表示部１５２に表示される。該メッセージ画面は、一例として、図１４に示すとおり、審議結果画面８１０であることが好ましい。
【０１７９】
審議結果画面８１０は、例えば、同期ずれが解消され、どのような進行状況から対戦を再開するのかをユーザに通知するためのテキストメッセージ８１１を含む。図示のテキストメッセージ８１１は、一例として、不一致が起こっていた状況情報４０１および状況情報４０２（図１０）のうち、状況情報４０１が採用された場合に通知されるテキストメッセージを示している。
【０１８０】
審議結果画面８１０は、さらに、ゲームシステム１上で現実に発生した同期ずれの不具合に対する対処結果の報告を、野球の試合で行われる結果の報告に置き換えた演出を含んでいることが好ましい。
【０１８１】
現実の野球の試合では、審判団の審議の結果を、代表の審判員が観客席に向かって発表するということが起こり得る。そこで、審議結果画面８１０は、上述の演出として、審議の結果についての発表であることを示すテキストデータ８１２を含んでいてもよい。これに代えて、または、これに加えて、審議結果画面８１０は、上述の演出として、審議の結果が代表の審判員によって発表されるシーンを示す画像データ８１３を含んでいてもよい。図１４に示すとおり、テキストメッセージ８１１の表現は、画像データ８１３で表現されている雰囲気にマッチさせることがより好ましい。具体的には、テキストメッセージ８１１は、画像データ８１３に含まれる審判員が発現した内容を表現していることが好ましい。
【０１８２】
上述のメッセージ画面により、同期ずれに対する対処結果という現実の不具合に係る内容を通知するときに、野球の雰囲気を壊さないようにすることができる。特に、自端末の進行状況がリセットされ、それとは違う状況から対戦を再開しなければならなくなったユーザは、違和感または不満を抱く可能性がある。上述のメッセージ画面に係る演出により、こうした違和感または不満をできるだけ緩和することができる。結果として、対戦を通じてユーザが培った野球ゲームへの没入感、および、該ゲームの興趣性は損なわれないという効果を奏する。
【０１８３】
＜採用する状況情報の決定方法＞
ステップＳ１４４では、サーバ２００の対戦支援部２１１は、同期ずれが発生する直前の時点において、負けている（劣勢の）ユーザのユーザ端末１００で生成された状況情報を採用してもよい。例えば、図３に示すｔ３のタイミングにおいて、図１０に示す状況情報４００のとおり、攻撃側ユーザが操作する第１チームと、投球側ユーザが操作する第２チームとのスコアが、１対０であるとする。この場合、対戦支援部２１１は、打撃側ユーザ端末１００Ｂで生成された状況情報４０１を不採用とし、投球側ユーザ端末１００Ａで生成された状況情報４０２を採用する。
【０１８４】
上述の構成によれば、同期ずれが原因で余儀なく発生する違和感のある進行を、対戦で勝っている（優勢の）ユーザに負担してもらうことにより、負けているユーザのストレスを減らし、心理的負担の公平性を保つことができる。違和感のある進行とは、自端末における対戦の進行状況がなかったことになり、それとは異なる進行状況から対戦が再開されるというゲーム上の進行を指す。
【０１８５】
ステップＳ１４４では、対戦支援部２１１は、同期ずれが発生する直前の時点において、負けているユーザに有利な状況情報を採用してもよい。例えば、図３に示すｔ３のタイミングにおいて、状況情報４００のとおり、攻撃側ユーザが操作する第１チームと、投球側ユーザが操作する第２チームとのスコアが、１対０であるとする。ここで、状況情報４０１および状況情報４０２のうち、負けている第２チームに有利な状況情報は、状況情報４０１である。よって、対戦支援部２１１は、状況情報４０２を破棄し、状況情報４０１を採用する。
【０１８６】
上述の構成によれば、試合の均衡をできる限り保ち、同期ずれの発生が、一方的な試合展開を助長することを防止することができる。
【０１８７】
ステップＳ１４４では、対戦支援部２１１は、レーティングが低いユーザのユーザ端末１００で生成された状況情報を採用してもよい。例えば、図１０に示す第１チームを操作する打撃側ユーザのレーティングが「１９３２」で、第２チームを操作する投球側ユーザのレーティングが「２０６９」であるとする。この場合、対戦支援部２１１は、レーティングが低い打撃側ユーザの打撃側ユーザ端末１００Ｂで生成された状況情報４０１を採用する。
【０１８８】
上述の構成によれば、同期ずれが原因で余儀なく発生する違和感のある進行を、ゲームに強い方のユーザに負担してもらうことにより、弱い方のユーザのストレスを減らし、心理的負担の公平性を保つことができる。
【０１８９】
ステップＳ１４４では、対戦支援部２１１は、レーティングが低いユーザが操作しているチームに有利な状況情報を採用してもよい。例えば、レーティングが低い打撃側ユーザが操作している第１チームに有利な状況情報は、状況情報４０２である。よって、対戦支援部２１１は、状況情報４０１を破棄し、状況情報４０２を採用する。
【０１９０】
上述の構成によれば、試合の均衡をできる限り保ち、同期ずれの発生が、一方的な試合展開を助長することを防止することができる。
【０１９１】
ステップＳ１４４では、対戦支援部２１１は、ユーザが操作するチーム、または、該チームに属する各選手キャラクタに付与されている強さのパラメータが低い方のユーザのユーザ端末１００で生成された状況情報を採用してもよい。例えば、図１０に示す第１チームの総合的な強さを示す総合能力値のパラメータが「１２８８５ポイント」であって、第２チームの総合能力値のパラメータが「１４０６８ポイント」であるとする。この場合、対戦支援部２１１は、総合能力値が低い第１チームを操作している打撃側ユーザの打撃側ユーザ端末１００Ｂで生成された状況情報４０１を採用する。
【０１９２】
上述の構成によれば、同期ずれが原因で余儀なく発生する違和感のある進行を、強いチームを操作しているユーザに負担してもらうことにより、弱いチームを操作しているユーザのストレスを減らし、心理的負担の公平性を保つことができる。
【０１９３】
ステップＳ１４４では、対戦支援部２１１は、上述の強さのパラメータが低いチームに有利な状況情報を採用してもよい。上述の例では、総合能力値が低いチームは、第１チームであり、第１チームに有利な状況情報は、状況情報４０２である。よって、対戦支援部２１１は、状況情報４０１を破棄し、状況情報４０２を採用する。
【０１９４】
上述の構成によれば、試合の均衡をできる限り保ち、同期ずれの発生が、一方的な試合展開を助長することを防止することができる。
【０１９５】
ステップＳ１４４では、対戦支援部２１１は、１つの試合の中で同期ずれが複数回発生している場合に、採用された回数が少ないユーザ端末１００で生成された状況情報を採用してもよい。例えば、１試合中で、これまで同期ずれが３回発生し、投球側ユーザ端末１００Ａで生成された状況情報が２回、打撃側ユーザ端末１００Ｂで生成された状況情報が１回採用されているとする。この場合、対戦支援部２１１は、４回目の同期ずれにおいては、打撃側ユーザ端末１００Ｂで生成された状況情報を採用する。
【０１９６】
上述の構成によれば、同期ずれが原因で、違和感のある進行を強制されるユーザが特定のユーザに偏らないようにすることができる。これにより、ユーザの心理的負担を公平に保つことができる。
【０１９７】
ステップＳ１４４では、対戦支援部２１１は、状況情報を採用するユーザ端末１００を順番に、２人対戦の場合は交互に、切り替えてもよい。例えば、１回目の同期ずれでは、投球側ユーザ端末１００Ａで生成された状況情報を採用し、２回目の同期ずれでは、打撃側ユーザ端末１００Ｂで生成された状況情報を採用し、以降も同期ずれが発生すれば、各ユーザ端末１００で生成された状況情報を交互に採用する。
【０１９８】
上述の構成によれば、同期ずれが原因で、違和感のある進行を強制されるユーザが特定のユーザに偏らないようにすることができる。これにより、ユーザの心理的負担を公平に保つことができる。
【０１９９】
ステップＳ１４４では、対戦支援部２１１は、どのユーザが操作するチームにとって有利な状況情報を採用するのかを、順番にまたは交互に切り替えてもよい。例えば、１回目の同期ずれでは、第１チームに有利な状況情報を採用し、１回目の同期ずれでは、第２チームに有利な状況情報を採用し、以降も同期ずれが発生すれば、各チームに有利な状況情報を交互に採用する。
【０２００】
上述の構成によれば、同期ずれが原因で、進行上の不利益を被るユーザが特定のユーザに偏らないようにすることができる。
【０２０１】
〔変形例〕
ユーザ端末１００の対戦進行部１１５は、１つ試合で同期ずれが発生する回数が所定回数を超えると、強制的に、進行モードをオート進行に切り替えて、対戦の進行に係るユーザの操作を受け付けないようにしてもよい。具体的には、対戦進行部１１５は、図５〜図９に示す投球操作ＵＩまたは打撃操作ＵＩを表示させない。したがって、対戦進行部１１５は、ユーザの投球操作または打撃操作を受け付けることなく、ゲームプログラム１３１にしたがって、サーバ２００との通信によって対戦を進行させる。
【０２０２】
本実施形態の構成は、２人で対戦するゲームの他に、３人以上で対戦するゲームにも適用可能である。この場合、ユーザ端末１００の対戦進行部１１５は、３人以上のユーザのそれぞれが操作している各ユーザ端末１００で生成された、３つ以上状況情報をそれぞれ比較する。そして、１つでも矛盾する状況情報があれば、同期ずれを検知する。この場合、サーバ２００の対戦支援部２１１は、多数決で１つの状況情報を採用してもよい。
【０２０３】
対戦支援部２１１は、矛盾のある２つ以上の状況情報を組み合わせて、妥協点となる１つの状況情報を新規に生成してもよい。例えば、図１０に示す状況情報４０１と、状況情報４０２との不一致により、同期ずれが発生したとする。不一致は、状況情報の中でも、特に、各ランナー４１２および各アウトカウント４１４において生じている。そこで、対戦支援部２１１は、ランナー４１２については、一方の状況情報４０１から採用し、アウトカウント４１４については、他方の状況情報４０２から採用して、新たな状況情報を生成してもよい。
【０２０４】
あるいは、２以上の状況情報の間で、数値に矛盾がある場合、対戦支援部２１１は、矛盾する数値の平均値を新たな状況情報として生成してもよい。例えば、スコア４１１が、一方の状況情報において、「５対３」を示し、他方の状況情報において、スコア４１１が「７対３」を示す場合、対戦支援部２１１は、矛盾する数値の間をとり、「６対３」のスコア４１１を含む状況情報を生成し、これを採用してもよい。
【０２０５】
上述の構成によれば、同期ずれが原因で、進行上の不利益を被るユーザが特定のユーザに偏らないようにすることができるとともに、ユーザの心理的負担を公平に保つことができる。
【０２０６】
各ユーザ端末１００で生成された状況情報の比較と、同期ずれの検知とを、ユーザ端末１００に代えて、サーバ２００が行ってもよい。この場合、図１１に示すステップＳ１３６にて、サーバ２００の対戦支援部２１１は、各ユーザ端末１００によって、対戦の進行上の同じタイミングで生成された状況情報を、ユーザ端末１００のそれぞれから取得する。対戦支援部２１１は、ここでは、取得した状況情報を別のユーザ端末１００に転送すること、すなわち、状況情報を交換する処理を省略してもよい。この場合、ステップＳ１３７〜Ｓ１４３も省略される。
【０２０７】
対戦支援部２１１は、ステップＳ１３６の次に、各ユーザ端末１００の状況情報を比較するステップを実行する。例えば、投球側ユーザ端末１００Ａで生成された状況情報４０１と、打撃側ユーザ端末１００Ｂで生成された状況情報４０２とを比較する。
【０２０８】
状況情報のすべてが一致している場合、対戦支援部２１１は、ステップＳ１４８に進み、進行中のフェーズを終了させて、次のフェーズに移行する。一方、状況情報に含まれる情報のうち１つでも一致しない情報がある場合、対戦支援部２１１は、対戦の進行状況が一致していないこと、すなわち、同期ずれが発生していることを検知するステップを実行する。対戦支援部２１１は、同期ずれの発生を検知すると、同期ずれが発生した旨を各ユーザ端末１００に通知するステップを実行してもよい。それから、ステップＳ１４４に進む。
【０２０９】
なお、ステップＳ１４４にて、対戦支援部２１１が、いずれの状況情報を採用するのかを調停している間、通信トラブルなどによって、一方または両方のユーザ端末１００がオフラインになることが想定される。この場合、対戦支援部２１１は、オフラインになったユーザ端末１００の進行モードをオート進行モードに切り替える。そして、オート進行モードにおいて、対戦支援部２１１は、投球結果または打撃結果を、ユーザ端末１００から受信できない代わりに、抽選を実行して決定し、自ら生成してもよい。これにより、ユーザ端末１００がオフラインになっても対戦を進行させることができる。対戦支援部２１１は、オフラインのユーザ端末１００が、再度オンラインになった場合に、対戦の最終結果（スコア、勝敗など）を送信してもよい。
【０２１０】
〔ソフトウェアによる実現例〕
制御部２１０の制御ブロック（特に、対戦支援部２１１）、ならびに、制御部１１０の制御ブロック（特に、操作受付部１１１、表示制御部１１２、ＵＩ制御部１１３、アニメーション生成部１１４、および、対戦進行部１１５）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２１１】
後者の場合、制御部２１０または制御部１１０、もしくはその両方を備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２１２】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０２１３】
〔付記事項〕
本発明の一側面に係る内容を列記すると以下のとおりである。
【０２１４】
（項目１）  ゲームプログラム（１３１）について説明した。本開示のある局面によると、ゲームプログラムに基づくゲームは、コンピュータ（ユーザ端末１００）を操作するユーザと、１以上の、他のコンピュータ（他のユーザ端末１００）を操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。ゲームプログラムは、プロセッサ（１０）、メモリ（１１）、操作部（入力部１５１など）および表示部（１５２）を備える、上述の各コンピュータの少なくともいずれか１つにより実行される。ゲームプログラムは、プロセッサに、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させるステップ（Ｓ１０６〜Ｓ１２８、Ｓ１３０〜Ｓ１３４）と、進行させた対戦の進行状況を示す第１の状況情報（状況情報４０１、状況情報４０２）を、対戦の進行上の所定のタイミング（例えば、ｔｍなど）で生成するステップ（Ｓ１２９、Ｓ１３５）と、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報（状況情報４０２、状況情報４０１）を取得するステップ（Ｓ１３７、Ｓ１３８）と、第１の状況情報と一致しない第２の状況情報がある場合に（Ｓ１３９でＮＯ）、同期ずれが発生したことを示す第１の通知（テキストメッセージ８０１）を表示部に表示するステップ（Ｓ１４２）と、を実行させる。これにより、同期制御を実現し、通信対戦ゲームを滞りなく進行させることができる。また、同期ずれが発生した場合には、待たされることによりユーザが感じるストレスを軽減できるという効果を奏する。結果として、同期制御に係る不具合が発生した場合でも、ゲームの興趣性を損なうことなく不具合に対処することができるという効果を奏する。
【０２１５】
（項目２）  （項目１）において、進行させるステップでは、同期ずれが発生した場合、所定のタイミングにおける進行状況が各コンピュータの間で共有されることにより対戦が再開可能となるまで、対戦を中断する。これにより、ゲームの興趣性を損なうことなく不具合に対処することができる。
【０２１６】
（項目３）  （項目２）において、第１の通知を表示するステップでは、対戦が中断されている間、第１の通知の表示を継続する。これにより、ゲームの興趣性を損なうことなく不具合に対処することができる。
【０２１７】
（項目４）  （項目３）において、対戦ゲームにおける対戦は、スポーツ（野球）の試合であり、第１の通知を表示するステップでは、試合の審判団による審議のシーンを示す第１の画像（画像データ８０３）および第１のテキスト（テキストデータ８０２）の少なくともいずれか一方を、第１の通知とともに表示部に表示することが好ましい。これにより、ユーザに、待機の時間を短く感じさせることができる。また、通信に係る現実の不具合を通知するときに、野球の雰囲気を壊さないようにすることができる。結果として、対戦を通じてユーザが培ったゲームへの没入感は損なわれないという効果を奏する。
【０２１８】
（項目５）  （項目４）において、ゲームプログラムは、プロセッサに、審議の結果を示す第２の通知（テキストメッセージ８１１）を表示部に表示するステップ（Ｓ１４７）を実行させてもよい。これにより、ユーザは、不具合に対する対処結果を知ることができる。
【０２１９】
（項目６）  （項目５）において、第２の通知を表示するステップでは、審議の結果を審判員が発表するシーンを示す第２の画像（画像データ８１３）および第２のテキスト（テキストデータ８１２）の少なくともいずれか一方を、第２の通知とともに表示部に表示することが好ましい。これにより、通信に係る不具合に対する対処結果という現実の問題を通知するときに、野球の雰囲気を壊さないようにすることができる。特に、自端末の進行状況がリセットされ、それとは違う状況から再開しなければならなくなったユーザが抱くであろう違和感をできるだけ緩和することができる。結果として、対戦を通じてユーザが培ったゲームへの没入感は損なわれないという効果を奏する。
【０２２０】
（項目７）  （項目１）から（項目６）までのいずれか１項目において、対戦ゲームにおける対戦は、野球の試合であり、生成するステップでは、試合の所定のタイミングにおけるイニング、スコア、ランナー、アウトカウントおよびボールカウントを含む状況情報を生成してもよい。これにより、同期させるのは、野球ゲームの進行上影響がある必要最低限の情報（上述のイニング、スコア・・・など）に絞られ、クライアントとしての各コンピュータの対戦を支援するサーバは、それ以外の情報を保持したり処理したりしないで済む。その他の情報は、各クライアントで、保持および処理される。これにより、サーバの負荷を低減させることができる。
【０２２１】
（項目８）  （項目７）において、第１の通知を表示するステップでは、イニング、スコア、ランナー、アウトカウントおよびボールカウントのうち１つでも一致しない場合には、第１の通知を表示する。これにより、同期制御を実現しすることができる。また、同期ずれが発生した場合には、待たされることによりユーザが感じるストレスを軽減できるという効果を奏する。
【０２２２】
（項目９）  （項目１）から（項目７）までのいずれか１項目において、ゲームプログラムは、プロセッサに、同期ずれが発生したことを、クライアントとしての各コンピュータにおける対戦の進行を支援するサーバ（２００）、および、１以上の相手ユーザの１以上の他のコンピュータの少なくともいずれか一方に通知するステップ（Ｓ１４１）を実行させてもよい。これにより、同期制御を実現し、通信対戦ゲームを滞りなく進行させることができる。
【０２２３】
（項目１０）  （項目９）において、進行させるステップでは、各コンピュータの間で共有された、所定のタイミングにおける進行状況に基づいて対戦を再開する。これにより、同期制御を実現し、通信対戦ゲームを滞りなく進行させることができる。
【０２２４】
（項目１１）  （項目１）から（項目１０）までのいずれか１項目において、進行させるステップでは、１度の対戦中に、同期ずれが所定回数を超えて発生した場合に、該対戦の進行に係るユーザの操作を受け付けることなく、該対戦を進行させてもよい。これにより、頻繁に同期ずれが発生する場合でも、通信対戦ゲームを滞りなく進行させることができる。また、頻繁に対戦が中断することに基づくストレスからユーザを解放することができるという効果を奏する。
【０２２５】
（項目１２）  ゲームプログラム（１３１）について説明した。本開示のある局面によると、ゲームプログラムは、（項目１）から（項目１１）までのいずれか１項目に記載のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバ（２００）により実行されるものである。該サーバは、プロセッサ（２０）およびメモリ（２１）を備える。サーバにより実行されるゲームプログラムは、サーバのプロセッサに、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップ（Ｓ１３６）と、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信するステップ（Ｓ１４３）と、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定するステップ（Ｓ１４４）と、決定された進行状況を各コンピュータに通知するステップ（Ｓ１４５）とを実行させる。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。同期ずれが発生することに基づくストレスからユーザを解放することができる。結果として、ゲームの興趣性を損なうことなく不具合に対処することができるという効果を奏する。
【０２２６】
（項目１３）  （項目１２）において、進行状況を決定するステップでは、取得された複数の状況情報のうち、いずれか１つを、所定のタイミングにおける状況情報として採用し、通知するステップでは、いずれのコンピュータが生成した状況情報を採用したのかを示す通知を各コンピュータに送信してもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。同期ずれが発生することに基づくストレスからユーザを解放することができるという効果を奏する。
【０２２７】
（項目１４）  （項目１３）において、状況情報は、対戦に参加する各ユーザの、上述のタイミングにおける優劣を示す情報（スコア４１１）を含み、進行状況を決定するステップでは、同期ずれが発生する直前のタイミング（例えば、ｔｍの前のｔ３）において各コンピュータによって生成された状況情報を参照し、劣勢の（負けている）ユーザが操作しているコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用してもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２２８】
（項目１５）  （項目１３）において、対戦ゲームにおいて、各ユーザには、対戦に勝利すると値が上がるように更新される評価値が付与されており、進行状況を決定するステップでは、評価値が低いユーザが操作するコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用してもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２２９】
（項目１６）  （項目１３）において、対戦ゲームにおいてユーザによって操作されるチームまたはキャラクタには、強さを示すパラメータが付与されており、進行状況を決定するステップでは、パラメータが低いチームまたはキャラクタを操作しているユーザのコンピュータから取得された状況情報、または、該ユーザに有利な状況情報を採用してもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２３０】
（項目１７）  （項目１３）において、進行状況を決定するステップでは、１度の対戦の中で同期ずれが複数回発生している場合に、生成した状況情報が採用された回数が最も少ないコンピュータから取得された状況情報を採用してもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２３１】
（項目１８）  （項目１３）において、進行状況を決定するステップでは、状況情報を採用するコンピュータを順番に切り替えてもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２３２】
（項目１９）  （項目１３）において、進行状況を決定するステップでは、どのユーザに有利な状況情報を採用するのかを順番に切り替えてもよい。これにより、同期ずれを解消し、通信対戦ゲームを滞りなく進行させることができる。
【０２３３】
（項目２０）  ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームであり、ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備える、各コンピュータの少なくともいずれか１つにより実行される。該方法は、プロセッサが、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させるステップと、プロセッサが、進行させた対戦の進行状況を示す第１の状況情報を、対戦の進行上の所定のタイミングで生成するステップと、プロセッサが、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報を取得するステップと、プロセッサが、第１の状況情報と一致しない第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を表示部に表示するステップと、を含む。（項目２０）に係る方法は、（項目１）に係るゲームプログラムと同様の作用効果を奏する。
【０２３４】
（項目２１）  ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラムは、（項目１）から（項目１１）までのいずれか１項目に記載のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバにより実行される。該サーバは、プロセッサおよびメモリを備える。該方法は、サーバのプロセッサが、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、サーバのプロセッサが、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信するステップと、サーバのプロセッサが、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定するステップと、サーバのプロセッサが、決定された進行状況を各コンピュータに通知するステップと、を含む。（項目２１）に係る方法は、（項目１２）に係るゲームプログラムと同様の作用効果を奏する。
【０２３５】
（項目２２）  ゲームプログラムを実行する方法を説明した。本開示のある局面によると、該ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。該ゲームプログラムは、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するサーバにより実行されるものであり、該サーバは、プロセッサおよびメモリを備える。該方法は、サーバのプロセッサが、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得するステップと、サーバのプロセッサが、同じタイミングで生成された各状況情報が一致しない場合に、同期ずれが発生したことを検知するステップと、サーバのプロセッサが、取得された複数の状況情報に基づいて、同期ずれが発生したタイミングにおける、各コンピュータに共有させる進行状況を決定するステップと、サーバのプロセッサが、決定された進行状況を各コンピュータに通知するステップと、を含む。（項目２２）に係る方法は、（項目１２）に係るゲームプログラムと同様の作用効果を奏する。
【０２３６】
（項目２３）  情報処理装置を説明した。本開示のある局面によると、該情報処理装置は、ゲームプログラムを記憶する記憶部（１２０）と、ゲームプログラムを実行することにより、情報処理装置（ユーザ端末１００）の動作を制御する制御部（１１０）と、操作部と、表示部とを備える。ゲームプログラムに基づくゲームは、コンピュータを操作するユーザと、１以上の、他のコンピュータを操作する相手ユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。上述の各コンピュータの少なくともいずれか１つが情報処理装置として機能する。制御部は、ユーザと相手ユーザとの対戦を、相手ユーザが操作する他のコンピュータとの間で進行状況を同期させて、ユーザの操作にしたがって進行させ、進行させた対戦の進行状況を示す第１の状況情報を、対戦の進行上の所定のタイミングで生成し、他のコンピュータにおいて同じ所定のタイミングで生成された第２の状況情報を取得し、第１の状況情報と一致しない第２の状況情報がある場合に、同期ずれが発生したことを示す第１の通知を表示部に表示する。（項目２３）に係る情報処理装置は、（項目１）に係るゲームプログラムと同様の作用効果を奏する。
【０２３７】
（項目２４）  サーバを説明した。本開示のある局面によると、該サーバは、ゲームプログラムを記憶する記憶部（２２０）と、ゲームプログラムを実行することにより、サーバ（２００）の動作を制御する制御部（２１０）とを備える。サーバは、（項目１）から（項目１１）までのいずれか１項目に記載のゲームプログラムを実行する、クライアントとしての各コンピュータと通信して、各コンピュータにおける対戦の進行を支援するものである。サーバの制御部は、対戦に参加する各コンピュータにより対戦の進行上の同じタイミングで生成された状況情報を周期的に取得し、所定のタイミングにおいて同期ずれが発生した旨の通知を、対戦に参加する各コンピュータの少なくとも１台から受信し、取得された複数の状況情報に基づいて、同期ずれが発生した所定のタイミングにおける、各コンピュータに共有させる進行状況を決定し、決定された進行状況を各コンピュータに通知する。（項目２３）に係る情報処理装置は、（項目２４）に係るゲームプログラムと同様の作用効果を奏する。
【符号の説明】
【０２３８】
１  ゲームシステム、２  ネットワーク、１０，２０  プロセッサ、１１，２１  メモリ、１２，２２  ストレージ、１３，２３  通信ＩＦ（操作部）、１４，２４  入出力ＩＦ（操作部）、１５  タッチスクリーン（表示部、操作部）、１７  カメラ（操作部）、１８  測距センサ（操作部）、１００  ユーザ端末（情報処理装置、コンピュータ、他のコンピュータ、クライアント）、１００Ａ  投球側ユーザ端末（情報処理装置、コンピュータ）、１００Ｂ  打撃側ユーザ端末（情報処理装置、コンピュータ）、１１０，２１０  制御部、１１１  操作受付部、１１２  表示制御部、１１３  ＵＩ制御部、１１４  アニメーション生成部、１１５  対戦進行部、１２０，２２０  記憶部、１３１  ゲームプログラム、１３２  ゲーム情報、１３３  ユーザ情報、１５１  入力部（操作部）、１５２
表示部、２００  サーバ、２１１  対戦支援部、４００  状況情報、４０１  状況情報（第１の状況情報）、４０２  状況情報（第２の状況情報）、８０１  テキストメッセージ（第１の通知）、８０２  テキストデータ（第１のテキスト）、８０３  画像データ（第１の画像）、８１１  テキストメッセージ（第２の通知）、８１２  テキストデータ（第２のテキスト）、８１３  画像データ（第２の画像）、１０１０  物体、１０２０  コントローラ（操作部）、１０３０  記憶媒体
【図１】
2019111376.tif 000003
【図２】
2019111376.tif 000004
【図３】
2019111376.tif 000005
【図４】
2019111376.tif 000006
【図５】
2019111376.tif 000007
【図６】
2019111376.tif 000008
【図７】
2019111376.tif 000009
【図８】
2019111376.tif 000010
【図９】
2019111376.tif 000011
【図１０】
2019111376.tif 000012
【図１１】
2019111376.tif 000013
【図１２】
2019111376.tif 000014
【図１３】
2019111376.tif 000015
【図１４】
2019111376.tif 000016