(57)【要約】 【課題】サーバ装置と複数の端末装置との間で、効率よく通信を行うのに好適なサーバ装置等を提供する。【解決手段】複数の端末装置と情報の送受を行うサーバ装置２０１において、記憶部３０１には、情報を送受した時刻の履歴と各端末装置にする送信予定時刻が記憶され、送信部３０２は、現在時刻が送信予定時刻のいずれかになると、当該端末装置へ端末宛情報を送信し、受信部３０３は、端末装置から送信された、サーバ宛情報を受信し、推定部３０４は、記憶された履歴と送信予定時刻から、サーバ宛情報が受信される受信予定時刻を推定し、更新部３０５は、送信予定時刻と推定された受信予定時刻が、重ならないように、送信予定時刻を更新する。【選択図】図３
2010198542.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末装置のそれぞれと情報の送受を行うサーバ装置であって、
前記複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶される記憶部、
現在時刻が前記複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信する送信部、
前記複数の端末装置のうち、前記端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信する受信部、
前記記憶された履歴と、前記記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が前記受信部により受信される受信予定時刻を推定する推定部、
前記記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して前記推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する更新部
を備えることを特徴とするサーバ装置。
【請求項２】
請求項１に記載のサーバ装置であって、
前記サーバ装置は、前記複数の端末装置R[1]，R[2]，…，R[N]のそれぞれと、所定時間Tに１回、間欠的に情報の送受を行い、
前記記憶部には、整数i = 1，2，…，Nのそれぞれについて、前記端末装置R[i]に最後に端末宛情報を送信した後に当該送信に呼応した当該端末装置R[i]から最後にサーバ宛情報が受信されるまでの送受間隔m[i]が、前記時刻の履歴として記憶され、当該端末装置R[i]に次に端末宛情報を送信すべき送信予定時刻s[i]が、記憶され、
前記送信部は、整数j = 1，2，…，Nのそれぞれについて、現在時刻が前記送信予定時刻s[j]になると、前記端末装置R[j]へ端末宛情報を送信し、
前記受信部は、整数k = 1，2，…，Nのそれぞれについて、前記端末装置R[k]から送信されたサーバ宛情報を受信し、
前記更新部は、前記端末装置R[k]から送信されたサーバ宛情報が受信されると、現在時刻と前記送信予定時刻s[k]との差により、前記送受間隔m[k]を更新し、
前記推定部は、前記送受間隔m[k]が更新された後、前記送信予定時刻s[k]の候補値として値rが与えられると、前記送信予定時刻
s[1], s[2]，…, s[k-1]，r, s[k+1]，…, s[N]
のそれぞれに送信される端末宛情報に対応付けられるサーバ宛情報を受信する受信予定時刻を
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1]，r+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
と推定し、
前記更新部は、前記送信予定時刻s[k]の現在の値に前記所定時間Tを加算した時刻pを取得し、当該取得された時刻pを前記所定時間Tで割った結果の切捨てfloor(p/T)に対して定められる時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間の、いずれかの時刻から、前記送信予定時刻s[k]の次の値qを選択し、前記選択された次の値qにより、前記送信予定時刻s[k]を更新し、
を備え、
前記更新部は、
（１）前記推定部に前記送信予定時刻s[k]の候補値として当該値pを与えた場合の送信予定時刻
s[1], s[2]，…, s[k-1], p, s[k+1]，…, s[N]
ならびに受信予定時刻
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1], p+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
を整列した時刻列における各時刻の間隔の最小値と、
（２）前記推定部に前記送信予定時刻s[k]の候補値として当該次の値qを与えた場合の送信予定時刻
s[1], s[2]，…, s[k-1], q, s[k+1]，…, s[N]
ならびに
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1], q+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
を整列した時刻列における各時刻の間隔の最小値と、
を対比して、上記（２）の間隔の最小値が、上記（１）の間隔の最小値以上となるように、
当該次の値qを選択する
ことを特徴とするサーバ装置。
【請求項３】
請求項２に記載のサーバ装置であって、
前記更新部は、前記時刻floor(p/T)×Tから前記時刻〔floor(p/T)+1〕×Tまでの間から、前記次の値qの候補を複数選択し、当該候補ならびに前記値pのそれぞれに対する前記間隔の最小値を求め、当該最小値が最大である値を、前記次の値qとして選択する
ことを特徴とするサーバ装置。
【請求項４】
請求項３に記載のサーバ装置であって、
前記更新部は、前記時刻floor(p/T)×Tから前記時刻〔floor(p/T)+1〕×Tまでの間を所定の間隔で区切る時刻のそれぞれを、前記次の値qの候補として選択する
ことを特徴とするサーバ装置。
【請求項５】
請求項３に記載のサーバ装置であって、
前記更新部は、前記時刻floor(p/T)×Tから前記時刻〔floor(p/T)+1〕×Tまでの間から、前記次の値qの候補をランダムに複数選択する
ことを特徴とするサーバ装置。
【請求項６】
複数の端末装置と、サーバ装置と、を備える通信システムであって、
（ａ）前記サーバ装置は、
前記複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶される記憶部、
現在時刻が前記複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信するサーバ側送信部、
前記複数の端末装置のうち、前記端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信するサーバ側受信部、
前記記憶された履歴と、前記記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が前記受信部により受信される受信予定時刻を推定する推定部、
前記記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して前記推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する更新部
を備え、
（ｂ）前記端末装置は、
前記サーバ装置から送信された端末宛情報を受信する端末側受信部、
前記端末宛情報を受信するごとに、前記サーバ装置へ、サーバ宛情報を送信する端末側送信部
を備える
ことを特徴とする通信システム。
【請求項７】
複数の端末装置のそれぞれと情報の送受を行うサーバ装置が実行するサービス方法であって、前記サーバ装置は、記憶部、送信部、受信部、推定部、更新部を備え、前記記憶部には、前記複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶され、
前記送信部が、現在時刻が前記複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信する送信工程、
前記受信部が、前記複数の端末装置のうち、前記端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信する受信工程、
前記推定部が、前記記憶された履歴と、前記記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が前記受信部により受信される受信予定時刻を推定する推定工程、
前記更新部が、前記記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して前記推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する更新工程
を備えることを特徴とするサービス方法。
【請求項８】
コンピュータに、複数の端末装置のそれぞれと情報の送受を行わせるプログラムであって、前記プログラムは、前記コンピュータを、
前記複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶される記憶部、
現在時刻が前記複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信する送信部、
前記複数の端末装置のうち、前記端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信する受信部、
前記記憶された履歴と、前記記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が前記受信部により受信される受信予定時刻を推定する推定部、
前記記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して前記推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する更新部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置と複数の端末装置との間で、効率よく通信を行うのに好適なサーバ装置、通信システム、サービス方法、ならびに、これらをコンピュータにて実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、インターネットを介した通信ゲームには、複数の端末装置同士が通信し、通信し合う端末装置のいずれか１つがサーバ装置（ホスト装置）となるか、あるいは、あらかじめ定めたサーバ装置においてゲーム進行の計算処理を集中して行い、それ以外の端末装置は、サーバ装置から送信された表示情報に基づいて画面表示を行い、端末装置におけるユーザからの入力情報をサーバ装置に送信する、という手法を採用するものがある。
【０００３】
このような手法に関連する技術としては、以下に掲げる特許文献１に開示されるような、通信負荷を軽くするための技術が存在する。
【０００４】
このような通信ゲームでは、サーバ装置から端末装置へ、定期的に表示情報が送られ、端末装置からサーバ装置へ、定期的に入力情報が送信されるのが一般的である。すなわち、サーバ装置と端末装置との間で、間欠的に情報の送受が行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３４９６１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、端末装置とサーバ装置との間の通信遅延は、各端末装置が置かれる通信環境によって異なる。一方で、各端末装置から送信される情報がサーバ装置に到着する時刻があまりに近接すると、パケットが衝突し、サーバ装置の計算処理に支障が生じたり、パケットが失われて通信負荷が高まるおそれもある。
【０００７】
したがって、サーバ装置から各端末装置へ情報を送信する時刻を適切に管理することによって、各端末装置から送られた情報をサーバ装置が受信する時刻が分散するように調整する技術が求められている。
【０００８】
本発明は、上記のような課題を解決するもので、サーバ装置と複数の端末装置との間で、効率よく通信を行うのに好適なサーバ装置、通信システム、サービス方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１０】
本発明の第１の観点に係るサーバ装置は、複数の端末装置のそれぞれと情報の送受を行い、記憶部、送信部、受信部、推定部、更新部を備え、以下のように構成する。
【００１１】
すなわち、記憶部には、複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶される。
【００１２】
典型的には、サーバ装置から端末装置へ端末宛情報が送信されると、それに呼応して、端末装置からサーバ装置へサーバ宛情報が送信され、これらは対の関係にある。そこで、サーバ装置で情報の送受時刻を管理しておく。また、送信予定時刻は、端末装置に対して次に端末宛情報を送信すべき時刻を意味する。
【００１３】
一方、送信部は、現在時刻が複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信する。
【００１４】
たとえば、リアルタイムクロックによる時間計測やタイマ割込等を用いれば、サーバ装置は、送信予定時刻になったことが知得できる。
【００１５】
さらに、受信部は、複数の端末装置のうち、端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信する。
【００１６】
ここで受信されるサーバ宛情報は、先に送信した端末宛情報と対になるものであり、これに呼応するものである。サーバ宛情報が受信された時刻は、情報を送受した時刻の履歴として、記憶部に記憶される。
【００１７】
そして、推定部は、記憶された履歴と、記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が受信部により受信される受信予定時刻を推定する。
【００１８】
ある端末装置について、端末宛情報を送信した時刻と、その送信の後に当該端末装置からのサーバ宛情報を受信した時刻と、の間隔は、当該端末装置において、ほぼ一定になると推定できる。そこで、推定部は、記憶部に記憶される情報の送受の履歴に基づいて、送信予定時刻から受信予定時刻を推定する。
【００１９】
一方、更新部は、記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する。
【００２０】
上記のように、送信予定時刻が決まれば、情報の送受の履歴に基づいて、当該送信予定時刻に対する受信予定時刻を推定することができる。そこで、更新部は、一旦は定めた送信予定時刻と推定された受信予定時刻とができるだけ均一に分散し、重ならないように、送信予定時刻を再設定するのである。
【００２１】
本発明によれば、サーバ装置において情報の送受を行う時刻をできるだけ分散させることができ、通信を効率良く実行することができるようになる。
【００２２】
また、本発明のサーバ装置は、複数の端末装置R[1]，R[2]，…，R[N]のそれぞれと、所定時間Tに１回、間欠的に情報の送受を行い、以下のように構成することができる。
【００２３】
本発明を通信ゲームに適用する場合を考えると、端末装置における画面更新の間隔は、垂直同期周期（もしくは、その整数倍）となるのが典型的である。したがって、当該画面更新間隔が、所定時間Tに相当する。この所定時間Tの間に１回、サーバ装置から端末装置へ、端末装置の画面に表示すべき表示情報が端末宛情報として送信され、端末装置からサーバ装置へ、端末装置のユーザの操作入力の入力情報がサーバ宛情報として送信される。
【００２４】
一方、記憶部には、整数i = 1，2，…，Nのそれぞれについて、端末装置R[i]に最後に端末宛情報を送信した後に当該送信に呼応した当該端末装置R[i]から最後にサーバ宛情報が受信されるまでの送受間隔m[i]が、時刻の履歴として記憶され、当該端末装置R[i]に次に端末宛情報を送信すべき送信予定時刻s[i]が、記憶される。
【００２５】
送信部は、整数j = 1，2，…，Nのそれぞれについて、現在時刻が送信予定時刻s[j]になると、端末装置R[j]へ端末宛情報を送信する。
【００２６】
受信部は、整数k = 1，2，…，Nのそれぞれについて、端末装置R[k]から送信されたサーバ宛情報を受信する。
【００２７】
更新部は、端末装置R[k]から送信されたサーバ宛情報が受信されると、現在時刻と送信予定時刻s[k]との差により、送受間隔m[k]を更新する。
【００２８】
すなわち、本発明においては、端末宛情報の送信からサーバ宛情報の受信までの最新の送受間隔を、情報の送受の時刻の履歴として採用することとしている。
【００２９】
さらに、推定部は、送受間隔m[k]が更新された後、送信予定時刻s[k]の候補値として値rが与えられると、送信予定時刻
s[1], s[2]，…, s[k-1]，r, s[k+1]，…, s[N]
のそれぞれに送信される端末宛情報に対応付けられるサーバ宛情報を受信する受信予定時刻を
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1]，r+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
と推定する。
【００３０】
すなわち、本発明では、端末装置R[j]に対する送信予定時刻s[j]から、当該端末装置R[j]からの受信予定時刻s[j]+m[j]を推定するのである。
【００３１】
さらに、更新部は、送信予定時刻s[k]の現在の値に前記所定時間Tを加算した時刻pを取得し、当該取得された時刻pを所定時間Tで割った結果の切捨てfloor(p/T)に対して定められる時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間の、いずれかの時刻から、送信予定時刻s[k]の次の値qを選択し、選択された次の値qにより、送信予定時刻s[k]を更新する。
【００３２】
ここで、送信予定時刻s[k]の次の値qを選択する範囲を時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間とするのは、所定時間Tの間に１回、サーバ装置と端末装置R[k]との間で、情報の送受を行うためである。
【００３３】
ここで、更新部は、
（１）推定部に送信予定時刻s[k]の候補値として当該値pを与えた場合の送信予定時刻
s[1], s[2]，…, s[k-1], p, s[k+1]，…, s[N]
ならびに受信予定時刻
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1], p+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
を整列した時刻列における各時刻の間隔の最小値と、
（２）推定部に送信予定時刻s[k]の候補値として当該次の値qを与えた場合の送信予定時刻
s[1], s[2]，…, s[k-1], q, s[k+1]，…, s[N]
ならびに
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1], q+m[k], s[k+1]+m[k+1]，…, s[N]+m[2]
を整列した時刻列における各時刻の間隔の最小値と、
を対比して、上記（２）の間隔の最小値が、上記（１）の間隔の最小値以上となるように、当該次の値qを選択する。
【００３４】
すなわち、送信予定時刻と受信予定時刻をソートして、その間隔の最小値を求める。この最小値が小さければ小さいほど、パケット送受の時刻の衝突が生じやすいこととなり、サーバ装置における計算処理に支障が生じやすくなる。
【００３５】
そこで、典型的には、次の間隔の最小値が、現在の間隔の最小値に比べて、できるだけ大きくなるように、次の値qを選択するのである。
【００３６】
本発明によれば、サーバ装置は、情報の送受の時刻の直近の間隔を用いることによって簡易に受信予定時刻を推定し、情報の送受の時刻ができるだけ重ならないように、設定することができるようになる。
【００３７】
また、本発明のサーバ装置において、更新部は、時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間から、次の値qの候補を複数選択し、当該候補ならびに値pのそれぞれに対する間隔の最小値を求め、当該最小値が最大である値を、次の値qとして選択するように構成することができる。
【００３８】
次の値qや、その他の送信予定時刻の配置を求めるにあたっては、最急降下法や擬似焼きなまし法を用いて、送信予定時刻と受信予定時刻の間隔の統計的分布における分散・標準偏差を最小化するような最適な配置を求めることとしても良い。
【００３９】
しかしながら、端末装置とサーバ装置の通信における送受間隔は、通信状況によって変化するものであり、複雑な計算手法ではなく、簡易な計算手法を採用することで十分な場合も多い。
【００４０】
本発明はこのような考えに基づくもので、次の値qの候補を複数選び、評価値として、送信予定時刻・受信予定時刻をソートした時刻列における時刻同士の間隔の最小値を採用して、値pとその候補のそれぞれとで、評価値が最大となるものを選択する。
【００４１】
更新部が次の値qの候補を複数選ぶ手法としては、たとえば、時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間を所定の間隔で区切る時刻のそれぞれを、次の値qの候補として選択する手法や、時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間から、次の値qの候補をランダムに複数選択する手法がある。
【００４２】
本発明によれば、サーバ装置は、簡易な計算で、送信予定時刻を適切に配置することができるようになる。
【００４３】
本発明のその他の観点に係る通信システムは、複数の端末装置と、上記のサーバ装置と、を備えるように構成する。
【００４４】
ここで、複数の端末装置のそれぞれは、端末側受信部、端末側送信部を備える。
【００４５】
ここで、端末側受信部は、サーバ装置から送信された端末宛情報を受信し、端末側送信部は、端末宛情報を受信するごとに、サーバ装置へ、サーバ宛情報を送信する。
【００４６】
たとえば通信ゲームを実現する場合には、端末宛情報には、現在ゲームに参加している各端末装置（あるいは、他の端末装置）のプレイヤーの状態情報が指定されることになり、サーバ宛情報には、当該端末装置のプレイヤーの指示操作に基づいて更新された当該プレイヤーの状態情報が指定されることになる。典型的には、受信から送信までの間に実行される処理は固定されているから、受信から送信までの時間はほぼ一定となり、サーバ装置は、各端末装置との通信路の時間遅延を適切に推定できるようになる。
【００４７】
したがって、本発明によれば、サーバ装置において情報の送受を行う時刻をできるだけ分散させることができ、通信を効率良く実行することができるようになる。
【００４８】
本発明のその他の観点に係るサービス方法は、複数の端末装置のそれぞれと情報の送受を行うサーバ装置が実行し、サーバ装置は、記憶部、送信部、受信部、推定部、更新部を備え、以下のように構成する。
【００４９】
ここで、記憶部には、複数の端末装置のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置のそれぞれに対応付けられる送信予定時刻と、が、記憶される。
【００５０】
一方、送信工程では、送信部が、現在時刻が複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置へ端末宛情報を送信する。
【００５１】
さらに、受信工程では、受信部が、複数の端末装置のうち、端末宛情報を受信した端末装置から送信された、当該端末宛情報に対応付けられるサーバ宛情報を受信する。
【００５２】
そして、推定工程では、推定部が、記憶された履歴と、記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が受信部により受信される受信予定時刻を推定する。
【００５３】
一方、更新工程では、更新部が、記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して推定部により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する。
【００５４】
本発明のその他の観点に係るプログラムは、コンピュータを上記のサーバ装置の各部として機能させるように構成する。
【００５５】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００５６】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５７】
本発明によれば、サーバ装置と複数の端末装置との間で、効率よく通信を行うのに好適なサーバ装置、通信システム、サービス方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【００５８】
【図１】プログラムを実行することにより、本実施形態のサーバ装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係るサーバ装置と、端末装置と、の様子を示す説明図である。
【図３】本実施形態に係るサーバ装置の概要構成を示す説明図である。
【図４】サーバ装置にて実行されるサービス処理の制御の流れを示すフローチャートである。
【図５Ａ】送信予定時刻として時刻pを採用した場合の送信予定時刻や受信予定時刻の分布を示す説明図である。
【図５Ｂ】送信予定時刻として時刻qを採用した場合の送信予定時刻や受信予定時刻の分布を示す説明図である。
【図６】本実施形態に係る端末装置の概要構成を示す説明図である。
【図７】本実施形態に係る端末装置にて実行されるゲーム処理の制御の流れを示すフローチャートである。
【発明を実施するための形態】
【００５９】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
【００６０】
したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００６１】
図１は、プログラムを実行することにより、本実施形態のサーバ装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００６２】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェース１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、マイク１１１と、を備えるように構成することができる。各種の入出力装置は、適宜省略することができる。
【００６３】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態のサーバ装置や、当該サーバ装置と通信する端末装置が実現される。
【００６４】
また、携帯型ゲーム機においては、携帯可能とするために、ＤＶＤ−ＲＯＭドライブ１０８を利用するのではなく、ＲＯＭカセット用スロットを利用することも可能である。この場合、プログラムが記録されたＲＯＭカセットを挿入して、当該プログラムを実行することで、本実施形態のサーバ装置が実現される。
【００６５】
このほか、端末装置から専用サーバ装置に接続することによりゲームを進めるようなシステムにおいても、専用サーバ装置は、計算能力の違いや機器構成に少々の相違はあるものの、本質的には、情報処理装置１００と同様の構成である。
【００６６】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００６７】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００６８】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００６９】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００７０】
なお、コントローラ１０５は、必ずしも情報処理装置１００に対して外付けにされている必要はなく、一体に形成されていても良い。
【００７１】
携帯可能な端末装置のコントローラ１０５は、各種のボタンやスイッチから構成され、これらの押圧操作を操作入力として扱う。このほか、タッチスクリーンを利用した情報処理装置１００では、ユーザがペンや指を利用してタッチスクリーンをなぞった軌跡を操作入力として扱う。
【００７２】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００７３】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００７４】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００７５】
携帯可能なゲーム機のモニタとしては、小型の液晶ディスプレイを利用するのが典型的であり、コントローラ１０５としてタッチスクリーンを利用する場合には、当該タッチスクリーンの表示パネルがモニタとして機能する。自宅で遊ぶためのゲーム機のモニタとしては、ＣＲＴ（Cathode Ray Tube）やプラズマディスプレイなどの表示装置を利用することも可能である。
【００７６】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００７７】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００７８】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００７９】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮを構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００８０】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン（図示せず）、イヤフォン（図示せず）から出力させる。
【００８１】
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００８２】
さらに、情報処理装置１００には、インターフェース１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【００８３】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００８４】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置１００にかえて、汎用のパーソナルコンピュータを利用することもできる。
【００８５】
以上で説明した情報処理装置１００は、いわゆるコンシューマ向けゲーム機に相当するものであるが、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明のサーバ装置を実現することが可能である。
【００８６】
たとえば、一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用する。
【００８７】
図２は、本実施形態に係るサーバ装置と、端末装置と、の様子を示す説明図である。以下、本図を参照して説明する。
【００８８】
本実施形態では、サーバ装置２０１は、複数の端末装置２２１と、インターネット２４１を介して通信可能に接続されて、通信ゲームシステムを実現している。
【００８９】
サーバ装置２０１と端末装置２２１は、いずれも、同一の構成の情報処理装置１００において所定のプログラムを実行することにより実現されるのが典型的である。
【００９０】
すなわち、情報処理装置１００において通信ゲーム用プログラムを実行すると、各情報処理装置１００は、紹介サーバ（図示せず。）に問い合わせを行い、通信ゲームを一緒を行う他の情報処理装置１００の紹介を求める。
【００９１】
紹介サーバは、一緒に通信ゲームを行わせる情報処理装置１００を選択し、その中から、サーバ装置２０１として機能するものを１つ選ぶ。そして、各情報処理装置１００に、サーバ装置２０１として機能するものはいずれか、端末装置２２１として機能するものはいずれか、を、通知することにより、他の情報処理装置１００を紹介する。
【００９２】
サーバ装置２０１は、通信ゲームの進行を司る。
【００９３】
また、サーバ装置２０１および各端末装置２２１は、当該情報処理装置１００を使用するユーザの指示操作の入力を受け付け、サーバ装置２０１によって進行される通信ゲームの状況を画面に表示して、ユーザに提示する。
【００９４】
このため、サーバ装置２０１から端末装置２２１へは、垂直同期周期（もしくは、その整数倍）に１回、画面に表示すべき表示情報が伝達され、これに応答して、端末装置２２１からサーバ装置２０１へ、当該端末装置２２１においてなされたユーザの指示操作が通知される。
【００９５】
通信ゲーム以外の態様であっても、複数の端末装置２２１のそれぞれと、間欠的に、単位時間あたりの通信回数が一定になるように、サーバ装置２０１が情報を送受し合う状況がありうる。そこで、理解を容易にするため、サーバ装置２０１から端末装置２２１へ通信される情報を、以下端末宛情報と呼ぶこととし、端末装置２２１からサーバ装置２０１へ通信される情報を、以下サーバ宛情報と呼ぶこととする。
【００９６】
各端末装置２２１は、サーバ装置２０１から送信された端末宛情報を受信すると、これを契機に、サーバ装置２０１へサーバ宛情報を送信する。
【００９７】
さて、ネットワークの通信は、パケットのやりとりによって行われるが、効率の良い通信を行うためには、パケットができるだけ衝突しないことが望ましい。したがって、サーバ装置２０１から各端末装置２２１へ端末宛情報を送信する時刻と、サーバ装置２０１が各端末装置２２１からのサーバ宛情報を受信する時刻は、できるだけ分散している方が良い。
【００９８】
ここで、各端末装置２２１とサーバ装置２０１との間の通信経路は、端末装置２２１がインターネット２４１のどの箇所に接続されているか、どのような機器を用いて接続されているか、により、その通信状況が異なる。
【００９９】
したがって、端末宛情報を受信してからサーバ宛情報を送信する時間が、各端末装置２２１で同一であっても、通信経路の差によって、情報の往復に要する時間は異なる。
【０１００】
一方で、ある端末装置２２１についていえば、サーバ装置２０１との情報の往復に要する時間は、統計的な揺らぎは存在するものの、ある一定の値をとるものと期待できる。
【０１０１】
そこで本発明では、サーバ装置２０１において、ある端末装置２２１に端末宛情報を送信してからその端末装置２２１からサーバ宛情報を受信するまでの時間間隔を管理することによって、送信時刻と受信時刻とができるだけ衝突しないように、自動的に調整することとしている。以下、詳細に説明する。
【０１０２】
図３は、本実施形態に係るサーバ装置２０１の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１０３】
本実施形態に係るサーバ装置２０１は、複数の端末装置２２１のそれぞれと情報の送受を行い、記憶部３０１、送信部３０２、受信部３０３、推定部３０４、更新部３０５を備え、これらの各部は、情報処理装置１００において所定のプログラムを実行することによって実現される。
【０１０４】
ここで、記憶部３０１は、ＲＡＭ  １０３やハードディスクなどによって実現され、複数の端末装置２２１のそれぞれと情報を送受した時刻の履歴と、当該複数の端末装置２２１のそれぞれに対応付けられる送信予定時刻と、が、記憶される。
【０１０５】
時刻の履歴としては、各端末装置２２１に過去に端末宛情報を送った時刻と、各端末装置２２１から過去にサーバ宛情報を受信した時刻と、を記憶するのが最も単純である。このほか、各端末装置２２１に最後に端末宛情報を送信した時刻と、当該送信に応答して、各端末装置２２１が送信したサーバ宛情報を受信した時刻と、の時間間隔（以下、「送受間隔」という。）を記憶することとしても良い。
【０１０６】
送信予定時刻は、各端末装置２２１に次に端末宛情報を送信すべき時刻を示すもので、サーバ装置２０１は、この情報を適宜調整することによって、送信時刻と受信時刻とが、できるだけ均一にばらけて、衝突しないようにするのである。
【０１０７】
一方、送信部３０２は、ＣＰＵ  １０１の制御の下で、ＮＩＣ  １０９によって実現されるもので、現在時刻が複数の送信予定時刻のいずれかになると、当該送信予定時刻に対応付けられる端末装置２２１へ端末宛情報を送信する。
【０１０８】
すると、端末宛情報を受信した端末装置２２１は、これに呼応して、サーバ装置２０１へ、サーバ宛情報を送信する。
【０１０９】
さらに、受信部３０３は、ＣＰＵ  １０１の制御の下で、ＮＩＣ  １０９によって実現されるもので、複数の端末装置２２１のそれぞれから送信されたサーバ宛情報を受信する。
【０１１０】
更新部３０５は、ＲＡＭ  １０３等とＣＰＵ  １０１が共働して実現されるもので、いずれかの端末装置２２１からサーバ宛情報を受信すると、当該サーバ宛情報に対応する端末宛情報を送信した送信時刻と、当該サーバ宛情報の受信時刻と、に基づいて、記憶部３０１に記憶される情報の送受の時刻を更新する。
【０１１１】
そして、推定部３０４は、ＲＡＭ  １０３等とＣＰＵ  １０１が共働して実現されるもので、記憶された履歴と、記憶された複数の送信予定時刻のそれぞれと、から、当該送信予定時刻における端末宛情報の送信に対応付けられるサーバ宛情報が受信部３０３により受信される受信予定時刻を推定する。
【０１１２】
上記のように、各端末装置２２１についての送受間隔は、ランダムな揺らぎはあるものの、ほぼ一定になると期待できる。そこで、推定部３０４は、記憶部３０１に記憶される情報の送受の履歴に基づいて、送信予定時刻から受信予定時刻を推定する。
【０１１３】
すると、更新部３０５は、記憶された複数の送信予定時刻と、当該複数の送信予定時刻に対して推定部３０４により推定される複数の受信予定時刻と、が、重ならないように、当該送信予定時刻を更新する。
【０１１４】
上記のように、送信予定時刻が決まれば、情報の送受の履歴に基づいて、当該送信予定時刻に対する受信予定時刻を推定することができる。そこで、更新部３０５は、一旦は定めた送信予定時刻と推定された受信予定時刻とができるだけ均一に分散し、重ならないように、送信予定時刻を再設定するのである。
【０１１５】
以下、さらに詳細に、本実施形態に係る手法について説明する。ここで、理解を容易にするため、サーバ装置２０１は、複数の端末装置２２１  R[1]，R[2]，…，R[N]のそれぞれと、所定時間Tに１回、間欠的に情報の送受を行うものとする。
【０１１６】
また、記憶部３０１には、整数i = 1，2，…，Nのそれぞれについて、端末装置２２１  R[i]に最後に端末宛情報を送信した後に当該送信に呼応した当該端末装置２２１  R[i]から最後にサーバ宛情報が受信されるまでの送受間隔m[i]が、時刻の履歴として記憶され、当該端末装置２２１  R[i]に次に端末宛情報を送信すべき送信予定時刻s[i]が、記憶されるものとする。
【０１１７】
上記の仮定から、整数i = 1，2，…，Nのそれぞれについて、端末装置２２１  R[i]へ送信予定時刻s[i]に端末宛情報を送信すると、当該端末装置２２１  R[i]から送信されたサーバ宛情報が受信される時刻の期待値（最も尤もらしい時刻）は、s[i]+m[i]である。
【０１１８】
以下、理解を容易にするため、リアルタイムクロックやタイマ割込によって取得可能な現在時刻を、変数tにより表記するものとする。
【０１１９】
図４は、サーバ装置２０１にて実行されるサービス処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１２０】
サービス処理が開始されると、サーバ装置２０１は、各種の初期化を行う（ステップＳ４０１）。本実施形態では、記憶部３０１を、以下のように初期化する。
【０１２１】
すなわち、初期化の最終段階での現在時刻tに基づいて、整数i = 1，2，…，Nのそれぞれについて、
s[i] ← t + i×T/N；
m[i] ← T/(2×N)
のように初期化する。ここで、「←」は代入を意味する。
【０１２２】
前者は、所定時間Tの間に、各送信予定時刻を等間隔に配置するものであり、後者は、所定時間Tの間に、各送信予定時刻の直後に対応する受信予定時刻を等間隔に配置するものである。
【０１２３】
このほか、前回の通信ゲームにおける最終的な値に基づいて初期化を行ったり、適当な乱数を用いて初期化を行ったりしても良い。
【０１２４】
次に、サーバ装置２０１は、送信予定時刻s[1]，s[2]，…，s[N]を時刻順にソートする（ステップＳ４０２）。そして、現在時刻tから直近の送信予定時刻s[j]、すなわち、先頭の送信予定時刻s[j]にタイマ割込が生じるように、設定を行う（ステップＳ４０３）。
【０１２５】
さらに、ＮＩＣ  １０９に情報パケットが到達すると受信割込が生じるように、設定を行う（ステップＳ４０４）。
【０１２６】
さらに、当該サーバ装置２０１を通信ゲーム端末として機能させる場合には、垂直同期割込の設定も行うものとする（ステップＳ４０５）。この場合は、垂直同期割込の周期（もしくは、その所定定数倍）が、所定時間Tとなる。
【０１２７】
なお、サーバ装置２０１が、各端末装置２２１と対等の立場にはない専用ゲームサーバである場合には、サーバ装置２０１における表示は必要ない。この場合には、各端末装置２２１における表示の更新間隔、すなわち、端末装置２２１を実現する情報処理装置１００の垂直同期割込の周期（もしくは、その所定定数倍）が、所定時間Tとなる。
【０１２８】
そして、タイマ割込、受信割込、もしくは、垂直同期割込が生じるまで、待機する（ステップＳ４０６）。なお、この待機の間には、通信ゲームを進行させるための各種の計算処理や、サーバ装置２０１のモニタに表示する画像をＲＡＭ  １０３内に生成する生成処理を、コルーチン的に実行するのが典型的である。
【０１２９】
さて、割込が生じたら、その種類を調べる（ステップＳ４０７）。
【０１３０】
割込が、タイマ割込である場合（ステップＳ４０７；タイマ）、現在時刻tがいずれかの送信予定時刻s[j]と一致しているので、サーバ装置２０１の送信部３０２は、タイマ割込の原因となった送信予定時刻s[j]に対する端末装置２２１  R[j]へ、端末宛情報を送信し（ステップＳ４０８）、ステップＳ４０２に戻る。
【０１３１】
割込が、垂直同期割込である場合（ステップＳ４０７；垂直同期）、画像処理部１０７を制御して、ＲＡＭ  １０３内に生成されている画像をモニタに転送して表示し（ステップＳ４０９）、サーバ装置２０１を実現する情報処理装置１００のコントローラ１０５の操作状況を調べて（ステップＳ４１０）、ゲームの進行状況に反映させ（ステップＳ４１１）、ステップＳ４０２に戻る。
【０１３２】
割込が、受信割込である場合（ステップＳ４０７；受信）、サーバ装置２０１の受信部３０３は、いずれかの端末装置２２１  R[k]から送信されたサーバ宛情報を受信する（ステップＳ４１２）。
【０１３３】
そして、サーバ装置２０１の更新部３０５は、現在時刻tと、当該端末装置２２１  R[k]に対して最後に端末宛情報を送信した時刻s[k]との差t - s[k]を計算し、記憶部３０１を
m[k] ← t - s[k]
のように更新する（ステップＳ４１３）。
【０１３４】
そして、端末装置２２１  R[k]に対する次の送信予定時刻の基準となる時刻pを、
p ← s[k] + T
のように計算する（ステップＳ４１４）。
【０１３５】
そして、以下のような処理（ステップＳ４１５〜Ｓ４１９）を行って、時刻pよりも、送信予定時刻や受信予定時刻がより均一にばらつくような時刻qを求めて、これを、端末装置２２１  R[k]に対する新たな送信予定時刻とする。
【０１３６】
図５Ａは、送信予定時刻として時刻pを採用した場合の送信予定時刻や受信予定時刻の分布を示す説明図である。図５Ｂは、送信予定時刻として時刻qを採用した場合の送信予定時刻や受信予定時刻の分布を示す説明図である。以下、これらの図を参照して説明する。
【０１３７】
これらの図においては、横軸tは時間の経過を意味し、黒丸は送信予定時刻を、白丸は受信予定時刻を、黒丸と白丸を結ぶ線分の長さは推定された送受間隔を、それぞれ表している。
【０１３８】
また、更新の対象となる端末装置２２１についての送信予定時刻は白い四角で、受信予定時刻は黒い四角で、それぞれ表記している。
【０１３９】
図５Ａは、端末装置R[1]，R[2]，R[3]，R[4]，R[5]のうち、端末装置R[3]の送信予定時刻s[3]を、時刻pとした場合の一例を示している。本例では、時間軸tを見ればわかるように、時刻pと時刻s[1]+m[1]が近付き過ぎており、処理の衝突が生じる可能性がある。
【０１４０】
図５Ｂは、時刻pとは異なる時刻qを、送信予定時刻s[3]とする一例を示している。本例では、図５Ａに示す例にくらべて、時間軸tにおける各時刻の分布がより均一になっている。
【０１４１】
また、図５Ａにおける各時刻の時間間隔の最小値は、pとs[1]+m[1]の間の時間間隔５０１ａであるが、図５Ｂにおける各時刻の時間間隔の最小値は、s[1]+m[1]とs[2]+m[2]の間の時間間隔５０１ｂであり、時間間隔５０１ｂは、時間間隔５０１ａよりも大きい。
【０１４２】
したがって、「送信予定時刻と受信予定時刻をソートした時刻列における時間間隔の最小値」を大きくするように、送信予定時刻を更新することによって、処理の衝突を避けることができるものと考えられる。
【０１４３】
さて、以下では、具体的に時刻qを求める手法について説明する。
【０１４４】
すなわち、端末装置２２１  R[k]に対する次の送信予定時刻の候補v[1]，v[2]，…，v[M]を、時刻floor(p/T)×Tから時刻〔floor(p/T)+1〕×Tまでの間で、適当に選ぶ（ステップＳ４１５）。ここで、floor(・)は、与えられた引き数の小数点以下を切り捨てる演算である。また、定数Mの値は、端末装置２２１の個数Nと同程度とすれば良いことが多いが、任意に選ぶことも可能である。
【０１４５】
ここで、候補v[1]，v[2]，…，v[M]を選ぶ手法としては、以下のようなものが考えられる。
（１）値floor(p/T)×Tから値〔floor(p/T)+1〕×Tまでの間で一様乱数をM個発生させ、各々を候補v[1]，v[2]，…，v[M]とする。
（２）整数h = 1，2，…，Mのそれぞれについて、
v[h] = floor(p/T)×T + h×T/M
とする。所定時間Tの間で等間隔に候補を選ぶものである。
（３）他の送信予定時刻s[1]，s[2]，…，s[k-1]，s[k+1]，…，s[N]をソートした時刻列において、隣り合う時刻の間隔が広い順にM個を選び、当該隣り合う時刻の中点のそれぞれを、候補v[1]，v[2]，…，v[M]とする。
【０１４６】
ついで、サーバ装置２０１の推定部３０４は、時刻pおよび候補v[1]，v[2]，…，v[M]のそれぞれを送信予定時刻の候補値rとして、時刻
s[1], s[2]，…, s[k-1]，r, s[k+1]，…, s[N]
のそれぞれに送信される端末宛情報に対応付けられるサーバ宛情報を受信する受信予定時刻を推定する（ステップＳ４１６）。
【０１４７】
各受信予定時刻は、記憶部３０１に記憶される値に基づいて、
s[1]+m[1], s[2]+m[2]，…, s[k-1]+m[k-1]，r+m[k], s[k+1]+m[k+1]，…, s[N]+m[N]
とするのが最も単純な手法であるが、過去の送信時刻や受信時刻の履歴をある程度記憶しておき、その変化に基づいて、減衰平均などを用いて送受間隔を推定してから、各受信予定時刻を得ることとしても良い。
【０１４８】
そして、サーバ装置２０１の更新部３０５は、時刻pおよび候補v[1]，v[2]，…，v[M]のそれぞれを候補値rとした場合の送信予定時刻と、これに対して推定された受信予定時刻と、をソートして、得られる時刻列の時間間隔の最小値を求める（ステップＳ４１７）。
【０１４９】
ここで得られる時刻列が完全に均一にばらけている場合には、N個の送信予定時刻とN個の受信予定時刻とが等間隔に並ぶことになるから、「時刻列の時間間隔の最小値」の上限は、T/(2×N)である。
【０１５０】
また、時刻列に同じ値がある場合には、「時刻列の時間間隔の最小値」は０となる。これは、送受に衝突が生じることを意味する。
【０１５１】
すなわち、「時刻列の時間間隔の最小値」が小さければ小さいほど、情報の送受の衝突が生じやすくなる。また、「時刻列の時間間隔の最小値」が大きければ大きいほど、送受のタイミングが分散して、ばらけていることになる。
【０１５２】
そこで、サーバ装置２０１の更新部３０５は、時刻pおよび候補v[1]，v[2]，…，v[M]のそれぞれの中から、当該値を候補値rと仮定した場合に、推定部３０４により推定された最小値が最大となるような値qを選択して（ステップＳ４１８）、
s[k] ← q
のように記憶部３０１の更新を行う（ステップＳ４１９）。
【０１５３】
そして、受信されたサーバ宛情報をゲームの進行状況に反映させ（ステップＳ４２０）、ステップＳ４０２に戻る。
【０１５４】
このように、本発明では、過去の送受の状況、特に送受間隔に基づいて、未来の送受ができるだけ衝突しないようにすることで、サーバ装置２０１における計算処理の負担や通信負荷を低減して、効率の良い処理を行うことができるようになる。
【０１５５】
なお、最急降下法や擬似焼きなまし法等を用いて、送信予定時刻と受信予定時刻の間隔の統計的分布における分散・標準偏差を最小化するような最適な配置を求めることも可能である。
【０１５６】
しかしながら、通信状況の揺れを考慮すると、本実施形態のように、簡易な計算によって送信予定時刻を調整するのであっても、十分な場合が多いと考えられる。
【０１５７】
このほか、送信用と受信用とで異なるＮＩＣ  １０９を有するようなサーバ装置２０１では、時刻列のばらつきの均一度合を求める際に、受信予定時刻のみを評価の対象とするような態様を採用しても良い。
【０１５８】
また、p，v[1]，v[2]，…，v[M]のいずれを採用したとしても、時間間隔の最小値が同じである場合には、s[k]として、pをそのまま採用したり、ランダムにいずれかを採用したり、時間間隔の分散や標準偏差が最も小さいものを選択するなど、種々の態様を採用することができる。
【０１５９】
図６は、本実施形態に係る端末装置２２１の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１６０】
本図に示すように、端末装置２２１は、受信部６０１、送信部６０２を備える。
【０１６１】
ここで、受信部６０１は、サーバ装置２０１から送信される端末宛情報を受信する。
【０１６２】
一方、送信部６０２は、端末宛情報が受信部６０１により受信されるごとに、サーバ装置２０１へ、サーバ宛情報を送信する。
【０１６３】
情報処理装置１００により端末装置２２１が実現される場合には、受信部６０１および送信部６０２は、ＣＰＵ  １０１の制御の下でＮＩＣ  １０９が動作することによって実現される。
【０１６４】
図７は、端末装置２２１において通信ゲームが提供される場合のゲーム処理の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１６５】
本処理は、情報処理装置１００において、ＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤ−ＲＯＭに記録されたプログラムを、ＣＰＵ  １０１がＲＡＭ  １０３に読み出して実行することにより、開始される。
【０１６６】
すなわち、本処理が開始されると、ＣＰＵ  １０１は、ＲＡＭ  １０３等の初期化を行って、通信ゲームを開始する準備を行う（ステップＳ７０１）。この際に、サーバ装置２０１との通信の確立等の処理や、ゲーム状態の初期化が行われる。
【０１６７】
まず、ＣＰＵ  １０１は、コントローラ１０５の押圧状態を検査してユーザの指示操作を取得し（ステップＳ７０２）、当該指示操作をＲＡＭ  １０３に記憶されるゲーム状態に反映させる（ステップＳ７０３）。
【０１６８】
ついで、ＣＰＵ  １０１は、ＮＩＣ  １０９を検査して、サーバ装置２０１から端末宛情報が到達しているか否かを調べる（ステップＳ７０４）。到達していない場合には（ステップＳ７０４；Ｎｏ）、ステップＳ７０９に進む。到達している場合には（ステップＳ７０４；Ｙｅｓ）、これを受信してＲＡＭ  １０３に展開し（ステップＳ７０５）、ＲＡＭ  １０３に記憶されるゲーム状態に、端末宛情報に指定されている情報を反映させる（ステップＳ７０６）。
【０１６９】
そして、ＣＰＵ  １０１は、ＲＡＭ  １０３内に記憶された現在のゲーム状態に基づいて、サーバ装置２０１に送信すべきサーバ宛情報をＲＡＭ  １０３内に生成し（ステップＳ７０７）、ＮＩＣ  １０９を制御して、サーバ宛情報をサーバ装置２０１に送信する（ステップＳ７０８）。
【０１７０】
ついで、ＣＰＵ  １０１は、ＲＡＭ  １０３内に記憶された現在のゲーム状態に基づいて、画面に表示すべき画像をＲＡＭ  １０３内に生成し（ステップＳ７０９）、垂直同期割込が生じるまで待機する（ステップＳ７１０）。
【０１７１】
なお、この待機中には、ユーザとの対話処理（ステップＳ７０２〜Ｓ７０３）や、サーバ装置２０１との通信処理（ステップＳ７０４〜ステップＳ７０８）等の処理を、適宜繰り返すこととしても良い。
【０１７２】
垂直同期割込が生じたら、ＣＰＵ  １０１は、画像処理部１０７を制御して、ＲＡＭ  １０３内の画像をモニターに転送して表示し（ステップＳ７１１）、ステップＳ７０２に戻る。
【０１７３】
なお、コントローラ１０５の押圧操作割込や、ＮＩＣ  １０９への受信割込、垂直同期割込を利用して、対話処理（ステップＳ７０２〜Ｓ７０３）、通信処理（ステップＳ７０４〜Ｓ７０８）、描画処理（ステップＳ７０９〜Ｓ７１１）等の処理を並行に実行することとしても良い。
【０１７４】
上記のような構成を採用すると、端末装置２２１がサーバ装置２０１から端末宛情報を受信してから、サーバ装置２０１へサーバ宛情報を送信するまでの時間は、ほぼ一定となる。このため、サーバ装置２０１では、端末装置２２１との間の通信路の遅延時間を、適切に推定することができるようになる。
【産業上の利用可能性】
【０１７５】
本発明によれば、サーバ装置と複数の端末装置との間で、効率よく通信を行うのに好適なサーバ装置、通信システム、サービス方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することができる。
【符号の説明】
【０１７６】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  サーバ装置
２２１  端末装置
２４１  インターネット
３０１  記憶部
３０２  送信部
３０３  受信部
３０４  推定部
３０５  更新部
６０１  受信部
６０２  送信部
【図１】
2010198542.tif 000003
【図２】
2010198542.tif 000004
【図３】
2010198542.tif 000005
【図４】
2010198542.tif 000006
【図５Ａ】
2010198542.tif 000007
【図５Ｂ】
2010198542.tif 000008
【図６】
2010198542.tif 000009
【図７】
2010198542.tif 000010