JP5745204B2 - プログラム、情報記憶媒体及びゲーム機 - Google Patents

プログラム、情報記憶媒体及びゲーム機 Download PDF

Info

Publication number
JP5745204B2
JP5745204B2 JP2008194209A JP2008194209A JP5745204B2 JP 5745204 B2 JP5745204 B2 JP 5745204B2 JP 2008194209 A JP2008194209 A JP 2008194209A JP 2008194209 A JP2008194209 A JP 2008194209A JP 5745204 B2 JP5745204 B2 JP 5745204B2
Authority
JP
Japan
Prior art keywords
game
game data
delay time
machine
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008194209A
Other languages
English (en)
Other versions
JP2010029393A (ja
Inventor
秀憲 岩切
秀憲 岩切
徹雄 般若
徹雄 般若
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Namco Ltd
Bandai Namco Entertainment Inc
Original Assignee
Namco Ltd
Bandai Namco Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Namco Ltd, Bandai Namco Entertainment Inc filed Critical Namco Ltd
Priority to JP2008194209A priority Critical patent/JP5745204B2/ja
Priority to US12/509,143 priority patent/US8734246B2/en
Priority to EP09166632.1A priority patent/EP2158952B1/en
Publication of JP2010029393A publication Critical patent/JP2010029393A/ja
Application granted granted Critical
Publication of JP5745204B2 publication Critical patent/JP5745204B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • A63F13/12
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0682Clock or time synchronisation in a network by delay compensation, e.g. by compensation of propagation delay or variations thereof, by ranging
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/335Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/63Methods for processing data by generating or executing the game program for controlling the execution of the game in time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、プログラム、情報記憶媒体及びゲーム機に関する。
従来から、ネットワークを介して複数のプレーヤが参加してゲームを行うオンラインゲームが知られている。このようなオンラインゲームでは、ゲーム機が、ネットワークを介して他のゲーム機とデータを送受信し、同期をとってゲームを進行させる。例えば、特許文献1、特許文献2、特許文献3に記載されているように、各ゲーム機間において同期をとってゲームを進行させる技術が開示されている。
特開2001−17735号公報 特開2002−186785号公報 特開2005−6913号公報 特開2006−32502号公報
ネットワークを介してデータのやり取りを行う場合には、通信による遅延があるので、これを考慮して入力を反映させることが必要である。しかし参加するプレーヤの通信環境は時と場合によって異なるため、常に一定の通信遅延を設定していては、プレーヤの操作入力がゲームへ反映されるまで長期間を要することになる問題が発生する。特に、格闘ゲームのようにプレーヤの操作入力のタイミングが重視されるゲームでは、プレーヤの操作入力のレスポンスの悪さが、プレーヤに不快感を与えることになる。
特許文献4においては、他のゲーム機から受信するデータの通信遅延時間に基づいて、他のプレーヤが操作する他キャラクタの移動を予測して、プレーヤキャラクタと他プレーヤキャラクタとの整合性を図り、レスポンスの早いゲームを実現する手法が開示されている。しかし、格闘ゲームのように、操作タイミングの技が重視されるゲームにおいては、他キャラクタの移動を予測する手法は不向きである。例えば、格闘ゲームの場合は、タイミングに応じた各プレーヤからの入力情報が揃った段階で順次ゲーム演算を行い、各キャラクタを動作させている。したがって、各キャラクタの動作を予測する手法は採用し難い。
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、通信環境に応じて必要十分な遅延を設定することにより効率的なレスポンスでプレーヤの操作を反映可能なネットワークゲームを実現することができるプログラム、情報記憶媒体及びゲーム機を提供することにある。
また本発明の他の目的は、表示環境に応じて最適な遅延を設定することにより表示同期のとれたネットワークゲームを実現することができるプログラム、情報記憶媒体及びゲーム機を提供することにある。
(1)本発明は、
複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機のためのプログラムであって、
自機への入力情報に基づき、各フレーム毎に、各フレームに対応した識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理行うゲームデータ通信制御部と、
自機のゲームデータに対応付けられている識別番号に基づき自機のゲームデータを第1のバッファに記憶し、他機のゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデー
タとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部と、
自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、して、コンピュータを機能させ、
前記同期制御部は、
第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出するゲーム機に関する。
また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
通信遅延時間とは各ゲーム機間の通信に要する時間(自機から送信されたゲームデータが何フレーム遅れで他機に受信されるか又は他機から送信されたゲームデータが何フレーム遅れで自機が受信するかを示す時間)であり、単位フレーム数でもよい。
入力遅延時間とは各ゲーム機において入力から何フレーム後に当該入力に基づくゲーム演算を行うのかを示す時間であり、単位はフレーム数でもよい。
前記同期制御部は、各ゲームデータに対応した入力情報が入力されてからの経過フレームが前記入力遅延時間に達したゲームデータを順次抽出することで、入力遅延時間を経過したゲームデータを古いほうから順次抽出してもよい。
また第1のバッファとは自機のゲームデータが記憶される記憶領域であり、第2のバッファとは他機から受信したゲームデータが記憶される記憶領域であって、例えば主記憶の一部に設けられてソフトウエア的によって読み書きの制御が行われる構成でもよい。
本発明によれば、通信環境に応じて必要十分な遅延を設定することにより効率的なレスポンスでプレーヤの操作を反映可能なネットワークゲームを実現することができる。
(2)本発明のゲーム機、プログラム及び情報記憶媒体では、
自機ゲームデータ生成部は、
自機への入力情報を受け付けたフレームと前記入力遅延時間に基づき、前記入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた自機のゲームデータを生成し、
前記同期制御部は、
前記識別番号に基づき演算予定フレームが到来したゲームデータを抽出してもよい。
自機ゲームデータ生成部は、例えばゲームデータに対応した入力情報入力時のフレーム番号に自機の入力遅延時間(フレーム数)を足し込んだフレーム番号を生成し、生成したフレーム番号に対応した識別番号を生成して、ゲームデータに対応付けても良い。
(3)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記入力遅延時間設定処理部は、
自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信してもよい。
(4)本発明は、
複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機のためのプログラムであって、
自機への入力情報に基づき、各フレーム毎に、各フレームに対応した識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理行うゲームデータ通信制御部と、
自機のゲームデータに対応付けられている識別番号に基づき自機のゲームデータを第1のバッファに記憶し、他機のゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部と、
自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を別個に設定し、他機の入力遅延時間情報をネットワークを介して他機に送信する入力遅延時間設定処理部と、してコンピュータを機能させ、
前記同期制御部は、
第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と自機の前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出するゲーム機に関する。
また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
自機の入力遅延時間と他機の入力遅延時間は所定の通信遅延時間より長くなるように設定してもよい。
本発明によれば、表示環境に応じて最適な遅延を設定することにより表示同期のとれたネットワークゲームを実現することができる。
(5)本発明のゲーム機、プログラム及び情報記憶媒体では、
自機ゲームデータ生成部は、
自機への入力情報を受け付けたフレームと自機の入力遅延時間に基づき、自機の入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた自機演算用の自機のゲームデータを生成し、
自機への入力情報を受け付けたフレームと他機の入力遅延時間に基づき、他機の入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた他機送信用の自機のゲームデータを生成し、
前記ゲームデータ通信制御部は、
生成した他機送信用の自機のゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理とを行い、
前記同期制御部は、
自機演算用の自機のゲームデータに対応付けられている識別番号に基づき自機演算用の自機のゲームデータを第1のバッファに記憶し、他機から受信したゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行ってもよい。
(6)本発明のゲーム機、プログラム及び情報記憶媒体では、
ユーザーからの入力情報に基づき自機の表示遅延時間情報を設定する表示遅延時間設定処理部を更に含み、
設定された自機の表示遅延時間情報を他機にネットワークを介して送信するとともに、他機から送信された他機の表示遅延時間情報をネットワークを介して受信する処理とを行う表示遅延時間情報通信制御部と、を含み、
前記入力遅延時間設定処理部は、
設定された自機の表示遅延時間情報及び受信した他機の表示遅延時間情報報に基づき、自機と他機の表示遅延時間差を求めてもよい。
(7)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記通信遅延時間判定処理部は、
自機と対戦相手となる他機の間でパケットの送受信を行うテスト通信を連続して複数回行い、複数回のテスト通信結果に基づき通信遅延時間を判定してもよい。
(8)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記通信遅延時間判定処理部は、
テスト通信開始後の所定期間内のテスト通信状況に基づき通信遅延時間を判定してもよい。
(9)本発明のゲーム機、プログラム及び情報記憶媒体では、
自機への入力操作と各ゲームで共通に使用される動作情報の対応関係を設定する設定入力に基づき、自機への入力操作と前記動作情報の対応関係が定義された入力操作定義情報を生成する入力操作定義情報生成部を含み、
前記自機ゲームデータ生成部は、
入力操作定義情報に基づき、入力情報が示す自機への入力操作を対応する動作情報に変換し、当該動作情報を含むゲームデータを生成してもよい。
(10)本発明のゲーム機、プログラム及び情報記憶媒体では、
自機への入力操作と各ゲームで共通に使用される動作情報の対応関係を設定する設定入力に基づき、自機への入力操作と前記動作情報の対応関係が定義された入力操作定義情報を生成する入力操作定義情報生成部と、
生成した自機の入力操作定義情報を他機にネットワークを介して送信するとともに、他機から送信された他機の入力操作定義情報を、ネットワークを介して受信する処理とを行う入力操作定義情報通信制御部と、を含み、
前記自機ゲームデータ生成部は、
入力情報が示す自機への入力操作の情報を含むゲームデータを生成し、
前記ゲーム演算部は、
自機の入力操作定義情報に基づき、第1のバッファから抽出したゲームデータに含まれた入力操作の情報を入力操作に対応した自機の動作情報に変換し、
他機の入力操作定義情報に基づき、第2のバッファから抽出したゲームデータに含まれた入力操作の情報を入力操作に対応した他機の動作情報に変換し、
自機の動作情報と他機の動作情報に基づいて、各フレームのゲーム演算を行ってもよい。
(11)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記ゲーム演算部は、
抽出されるべき他機のゲームデータを受信していない場合には、ゲーム演算処理を中断し、前フレームと同じ画像を表示してもよい。
(12)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記ゲームデータ通信制御部は、
途中でゲームデータが紛失しても再送されないタイプの第1のプロトコルでゲームデータを他機に送信し、前記第1のプロトコルで他機から送信されたゲームデータを受信する処理を行い、
抽出されるべき他機のゲームデータ受信していない場合には、抽出されるべきゲームデータの識別番号を再送データ特定情報として付加してゲームデータ再送要求を行い、
他機からゲームデータ再送要求を受信した場合には、付加された再送データ特定情報に対応する識別番号に対応付けられたゲームデータを他機に送信してもよい。
(13)本発明のゲーム機、プログラム及び情報記憶媒体では、
前記ゲームデータ通信制御部は、
途中でゲームデータが紛失しても再送されないタイプの第1のプロトコルでn回パケットを送信する毎に、送信の途中でデータが紛失すると再送されるタイプの第2のプロトコルでn回分のパケットに含まれたゲームデータを含む1つのパケットを他機に送信し、前記第1のプロトコル及び前記第2のプロトコルで他機から送信されたパケットを受信し、
前記同期制御部は、
所与のフレームのゲームデータに対応したパケットを前記第1のプロトコルで他機から受信出来なかった場合には、前記第2のプロトコルで他機から送信されたパケットに含まれた前記所与のフレームのゲームデータを第2のバッファに記憶する処理を行ってもよい。
(14)本発明は、
コンピュータ読み取り可能な情報記憶媒体であって、上記のいずれかに記載のプログラムを記憶されていることを特徴とする情報記憶媒体である。
(15)本発明は、
複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機であって、
自機への入力情報に基づき、各フレーム毎に、各フレームに対応した識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理行うゲームデータ通信制御部と、
自機のゲームデータに対応付けられている識別番号に基づき自機のゲームデータを第1のバッファに記憶し、他機のゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、フレーム毎にゲーム演算を行うゲーム演算部と、
自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、を含み、
前記同期制御部は、
第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出するゲーム機に関する。
また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
1.構成
図1に本実施形態のゲーム機の機能ブロック図を示す。なお本実施形態のゲーム機は図1の構成要素(各部)の一部を省略した構成としてもよい。
操作部160は、プレーヤがプレーヤキャラクタ(プレーヤが操作するプレーヤキャラクタ、移動体、プレーヤオブジェクト、ゲームキャラクタを含む)の操作情報を入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。特に、本実施形態の記憶部170は、主記憶部172、画像バッファ174、第1のバッファ176、第2のバッファ178、各種制御情報記憶部179を有している。
ここで、第1のバッファ176には、自機への入力情報に基づき生成されたゲームデータが記憶される。また、第2のバッファ178には、受信した他機のゲームデータが記憶される。
第1のバッファとは自機のゲームデータが記憶される記憶領域であり、第2のバッファとは他機から受信したゲームデータが記憶される記憶領域であって、例えば主記憶の一部に設けられてソフトウエア的によって読み書きの制御が行われる構成でもよい。
各種設定御情報記憶部179には、自機や他機の入力遅延時間や自機や他機の入力操作定義情報や自機や他機の表示遅延情報が必要に応じて記憶されている。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを入力するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカードなどにより実現できる。処理部100は、情報記憶媒体180に入力されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
通信部196は外部(例えば、他機、サーバや他のゲームシステム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
なお、ゲーム機が、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)を、ネットワークを介してサーバからダウンロードし、情報記憶媒体180に記憶するようにしてもよい。このようなサーバに入力されているプログラムの出力も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、操作部160からの操作情報(入力情報の一例)やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
処理部100は、ゲーム演算部110、オブジェクト空間設定部111、仮想カメラ制
御部112、移動・動作処理部113、ネットワーク設定部114、通信制御部115、同期制御部116、自機ゲームデータ生成部117、通信遅延時間判定処理部118、入力遅延時間設定処理部119、表示遅延時間設定処理部120、入力操作定義情報生成処理部121、描画部130、音生成部140を含む。なおこれらの一部を省略する構成としてもよい。
ゲーム演算部110は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
本実施形態のゲーム演算部110は、ゲーム開始時に各プレーヤの体力値を初期値(例えば100)に設定し、ゲームを開始してからゲームが終了するまでのゲーム期間(例えば、90秒の間)に、フレーム毎に、各プレーヤからの入力情報に基づいてヒット判定処理を行い、ヒット判定結果に基づいていて、各プレーヤキャラクタの体力値を減算させ、各プレーヤキャラクタの体力値が0になったか否かに基づいてゲーム結果(勝敗、引き分け)を決定する演算処理を行ってもよい。なお、ゲーム演算部110は、ゲーム期間経過時点で、いずれのプレーヤキャラクタの体力値が0より大きい値である場合には、一方のプレーヤキャラクタの体力値が、他方のプレーヤキャラクタの体力値よりも大きい値である場合に、一方のプレーヤキャラクタが勝ちと決定し、他方のプレーヤキャラクタが負けと決定し、体力値が双方同じ場合には引き分けと決定してもよい。
本実施形態のゲーム演算部110は、第1のバッファ176から抽出されたゲームデータと第2のバッファ178から抽出されたゲームデータとに基づいて、フレーム毎にゲーム演算を行う。
また、本実施形態のゲーム演算部110は、第1のバッファ176から抽出されたゲームデータと第2のバッファ178から抽出されたゲームデータとに基づいて、自機を使用するプレーヤの操作対象の第1のプレーヤキャラクタと、他機を使用するプレーヤの操作対象の第2のプレーヤキャラクタとを動作させるゲーム演算を行うようにしてもよい。
オブジェクト空間設定部111は、プレーヤキャラクタ、移動体、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
仮想カメラ制御部112は、オブジェクト空間内の所与(任意)の仮想カメラ(視点)から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。また、画角を制御するようにしてもよい。
例えば、仮想カメラによりオブジェクト(例えば、プレーヤキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
移動・動作処理部113は、モデル(キャラクタ、車、電車又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、モデルをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
特に、本実施形態の移動・動作処理部113は、プレーヤからの入力情報に基づいて、プレーヤの操作対象のプレーヤキャラクタを移動・動作させる処理を行うことができる。また、後述する通信制御部115によって送信されたパケットに含まれる他機のゲームデータに基づいて、他機を使用する第2のプレーヤの操作対象の第2のプレーヤキャラクタを、自機を使用するプレーヤの操作対象となる第1のプレーヤキャラクタと同一のオブジェクト空間において移動・動作させる処理を行うことができる。
本実施形態の移動・動作処理部113は、第1のバッファ176から出力されたゲームデータに基づいて、自機を使用するプレーヤの操作対象の第1のプレーヤキャラクタを動作させる演算と、第2のバッファ178から出力されたゲームデータに基づいて、他機を使用するプレーヤの操作対象の第2のプレーヤキャラクタを動作させる演算を行うことができる。
ネットワーク設定部114は、ゲームシステムで必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部は、各ゲーム機に個別に付与されるゲーム機の識別情報(オンラインゲームに参加できるゲーム機を識別するために個別に付与されたデータ)と、ゲーム機の識別情報に対応付けられたパケットの送信先を指定する宛先情報とを取得し、管理する処理を行う。
また、宛先情報とは、ゲームシステムを構成する各ゲーム機のIPアドレス、ポート番号とすることができる。IPアドレスは、インターネット上もしくはWANで特定のゲーム機を特定するためのグローバルIPアドレスとしてもよいし、LANで特定のゲーム機を特定するためのプライベートIPアドレスとしてもよい。
通信制御部115は、他機(第2のゲーム機)に送信するパケットを生成する処理、パケット送信先のゲーム機のIPアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部170に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
パケットとは、ネットワークを介して通信する固まりであり、送信元IPアドレス、送信先IPアドレスを含むネットワークに必要なヘッダーと、送信元において書き込まれたデータがペイロードとからなるデータのことをいう。
また、アプリケーションレベルの通信を実現するためには、使用するTCPやUDPプロトコルに応じたアプリケーションの種類を特定するポート番号を指定してパケットを生成する。例えば、TCPプロトコルは、データの送受信の信頼性が高く、例えば、確認応答や再送を利用している。また、TCPプロトコルは、紛失したデータの再送処理を行うことができ、さらにデータの送信順序を確保して送信先のゲーム機にパケットを送信することができる。一方、UDPプロトコルでは、送信の途中でデータを紛失しても再送されず、順番が入れ替わって伝送されることがある。しかし、UDPプロトコルは、TCPプロトコルに比べてオーバヘッドがないので、リアルタイムにデータを送信するオンラインゲームでは適している場合がある。UDPプロトコルを利用する場合には、バッファに入力するゲームデータが識別番号順(昇順)に入力するようにし、入力対象の識別番号のゲームデータが届いていない場合には、他機に要求するようにしてもよい。本実施形態では、いずれのプロトコルにも対応することができる。なお、UDPプロトコルを利用する場合には、バッファへのゲームデータの入力順序を識別情報(識別番号)の昇順に入力するように制御するようにしてもよい。
本実施形態の通信制御部115は、画像を描画するフレームレートに応じてパケットを生成し、接続先の第2のゲーム機に生成したパケットを送信する処理を行う。具体的に説明すると、例えば、フレームレートが60fpsである場合には、1/60秒毎に、パケットのヘッダーの送信先IPアドレスと送信先ポート番号に、第2のゲーム機のIPアドレスと使用するポート番号指定し、ヘッダーの送信元のIPアドレスと送信元ポート番号に、第1のゲーム機のIPアドレスと使用するポート番号を指定して、ゲームデータを含むデータをパケットのペイロードに入力し、生成したパケットを第2のゲーム機に送信する処理を行う。なお、送信したゲームデータは、後述する同期制御部116において、所与の条件下、第1のバッファ176に入力される。
ここで、ゲームデータとは、フレーム毎にゲーム機を操作するプレーヤからの入力情報(操作情報も含む)を含むデータである。例えば、ゲームデータは、入力情報の有無や、入力情報が有る場合には入力情報の内容を示したデータとすることができる。例えば、ゲームデータを数値で示す場合には、入力情報が無い場合はゲームデータを「0」とし、入力情報があってその内容がAボタンの入力である場合にはゲームデータを「1」、入力情報があってその内容がBボタンの入力である場合にはゲームデータを「2」、また、入力情報があってその内容がA及びBボタンの入力である場合にはゲームデータを「3」としてもよい。
また、ここで、識別情報とは、フレーム毎に付与される複数のゲーム機(第1、第2のゲーム機)において共通のデータである。本実施形態では、第1のゲーム機と第2のゲーム機との接続が確立されたときを基準に、経過時間に応じてフレーム毎に付与される情報とすることができる。例えば、ゲーム機において、フレームレートに応じて取得したゲームデータに対応付けるシーケンシャルな識別番号(1から始まる正の整数)とすることができる。
例えば、フレームレートが60fpsである場合を考えると、1/60毎に取得したゲームデータに、識別情報を対応付ける。例えば、第1のゲーム機と第2のゲーム機それぞれにおいて、接続が確立された時点に取得したゲームデータには、識別番号「1」を対応付けし、接続確立時から1/60秒後に取得したゲームデータには、識別番号「2」を対応付けし、接続確立時から2/60秒後に取得したゲームデータには、識別番号「3」を対応付けする。
また、本実施形態の通信制御部115は、第2のゲーム機から送信されたパケットを受信する処理を行う。そして、受信したパケットを解析し、パケットのペイロードに含まれるゲームデータを含むデータを取得する。そして、受信したゲームデータは、後述する同期制御部116において、第2のバッファ178に入力される。
また、本実施形態の通信制御部115は、複数のゲーム機間においての接続(第1のゲーム機と第2のゲーム機との接続)が確立されてから接続が切断されるまで、ゲームデータを互いに送受信する処理を行うことができる。
なお、本実施形態のゲームに参加する通信グループに所属する複数のゲーム機のうち、1つのゲーム機を親機として特定することができる。親機は、ゲーム空間を生成したゲーム機としてもよいし、勝者と挑戦者との対戦ゲームである場合には、勝者側のゲーム機としてもよい。
また通信制御部115は、生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理とを行うゲームデータ通信制御部として機能する。
また通信制御部115は、生成した他機送信用の自機のゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行ってもよい。
また通信制御部115は、設定された自機の表示遅延時間情報を他機にネットワークを介して送信するとともに、他機から送信された他機の表示遅延時間情報をネットワークを介して受信する処理とを行う表示遅延時間情報通信制御部として機能する。
また通信制御部115は、生成した自機の入力操作定義情報を他機にネットワークを介して送信するとともに、他機から送信された他機の入力操作定義情報を、ネットワークを介して受信する処理とを行ってもよい。
同期制御部116は、自機のゲームデータに対応付けられている識別番号に基づき自機のゲームデータを第1のバッファに記憶し、他機のゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第1のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する。ここにおいて第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出する。
同期制御部116は、第1のバッファ176、第2のバッファ178のゲームデータの入出力を制御する処理を行う。ここで、バッファにゲームデータを入力する処理とは、ゲームデータをバッファが確保する記憶領域に記憶させる処理をいい、バッファからゲームデータを出力する処理とは、バッファが確保する記憶領域に記憶されたゲームデータを読み取ると共に、そのゲームデータを記憶領域から抹消することを意味する。
また、本実施形態の同期制御部116は、自機のゲームデータを第1のバッファ176に入力し、他機のゲームデータを第2のバッファ178に入力する処理とを行う。
また、本実施形態の同期制御部116は、第1のバッファ176に記憶されているゲームデータと第2のバッファ178に記憶されているゲームデータに対応した入力情報が入力されてからのゲーム内経過時間が前記入力遅延時間に達したゲームデータを(古いほうから順次)抽出する。
また同期制御部116は、識別番号に基づき演算予定フレームが到来したゲームデータを抽出してもよい。
また同期制御部116は、自機演算用の自機のゲームデータに対応付けられている識別番号に基づき自機演算用の自機のゲームデータを第1のバッファに記憶し、他機から受信したゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行ってもよい。
また同期制御部116は、所与のフレームのゲームデータに対応したパケットを前記第1のプロトコルで他機から受信出来なかった場合には、前記第2のプロトコルで他機から送信されたパケットに含まれた前記所与のフレームのゲームデータを第2のバッファに記憶する処理を行ってもよい。
例えばゲームデータの識別番号が演算予定時刻(フレーム)に対応したものであったら演算第1のバッファ176及び第2のバッファ178から演算予定時刻(フレーム)に対応した識別番号のゲームデータから出力するようにしてもよい。
すなわち、本実施形態の同期制御部116は、第1のバッファ176に記憶されているゲームデータの識別情報と、第2のバッファ178に記憶されているゲームデータの識別情報とが一致していることを条件に、当該識別番号が演算予定時刻に達した場合に識別番号の昇順(小さい順)に出力される。
自機ゲームデータ生成部117は、自機への入力情報に基づき、各フレーム毎に、各フレームに対応した識別番号に対応付けられた自機のゲームデータを生成する。
自機ゲームデータ生成部117は、自機への入力情報を受け付けたフレームと前記入力遅延時間に基づき、前記入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた自機のゲームデータを生成してもよい。
自機ゲームデータ生成部117は、自機への入力情報を受け付けたフレームと自機の入力遅延時間に基づき、自機の入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた自機演算用の自機のゲームデータを生成し、自機への入力情報を受け付けたフレームと他機の入力遅延時間に基づき、他機の入力遅延時間を反映させた演算予定フレームに対応する識別番号に対応付けられた他機送信用の自機のゲームデータを生成してもよい。
自機ゲームデータ生成部117は、入力操作定義情報に基づき、入力情報が示す自機への入力操作を対応する動作情報に変換し、当該動作情報を含むゲームデータを生成してもよい。
自機ゲームデータ生成部117は、入力情報が示す自機への入力操作の情報を含むゲームデータを生成してもよい。
通信遅延時間判定処理部118は、自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する。
通信遅延時間判定処理部118は、自機と対戦相手となる他機の間でパケットの送受信を行うテスト通信を連続して複数回行い、複数回のテスト通信結果に基づき通信遅延時間を判定してもよい。
通信遅延時間判定処理部118は、テスト通信開始後の所定期間内のテスト通信状況に基づき通信遅延時間を判定してもよい。
入力遅延時間設定処理部119は、判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する。
入力遅延時間設定処理部119は、自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信してもよい。
入力遅延時間設定処理部119は、設定された自機の表示遅延時間情報及び受信した他機の表示遅延時間情報報に基づき、自機と他機の表示遅延時間差を求めてもよい。
表示遅延時間設定処理部120は、ユーザーからの入力情報に基づき自機の表示遅延時間情報を設定する。
入力操作定義情報生成処理部121は、自機への入力操作と各ゲームで共通に使用される動作情報の対応関係を設定する設定入力に基づき、自機への入力操作と前記動作情報の対応関係が定義された入力操作定義情報を生成する。
描画部130は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータ(モデルデータ)に含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を画像バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
なお、頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
そして、描画部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、図示しないオブジェクトデータ記憶部に保存される。
テクスチャマッピングは、記憶部170のテクスチャ記憶部に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が入力されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに入力されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして出力できる。
音生成部140は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
2.本実施形態の手法
(1)概要
本実施形態のゲームシステムは、オンライン格闘ゲームのためのゲームシステムである。すなわち、本実施形態のゲームシステムは、プレーヤの操作対象のプレーヤキャラクタが、他のプレーヤの操作対象の相手プレーヤキャラクタに攻撃を加えることによって相手プレーヤキャラクタにダメージを与え相手プレーヤキャラクタの体力値を減算させ、各プレーヤキャラクタの体力値に基づいて勝敗を判定する処理を行う。
図2は、本実施形態のゲームシステムの一例を示す。本実施形態のゲームシステムでは、オンラインゲームに参加する各ゲーム機が、インターネットを介して相互に直接通信して、データを共有することができるピア・ツー・ピア方式のゲームシステムを採用する。また、本実施形態は、オンラインゲームに参加するプレーヤの操作対象のプレーヤキャラクタが同一のゲーム空間(オブジェクト空間)に存在してゲームが進行されるゲームシステムである。
つまり、本実施形態では、第1のゲーム機、第2のゲーム機の相互間において、ゲーム機を操作するプレーヤからの入力情報の検出結果を含むゲームデータを送受信する処理を行い、ゲーム演算を行う。
ここで、ゲームデータとは、フレーム毎に、方向キー、Aボタン、Bボタン等のキー入力によって検出された検出信号等のキー入力情報や、キー入力の検出結果を特定コマンド(動作情報)に変換した情報、入力情報がないという情報(例えば、「キー入力なし」の情報)も含む。
本実施形態では、例えば、第1のゲーム機は、第1のゲーム機のゲームデータに基づいて、第1のプレーヤキャラクタ(第1のゲーム機を使用する第1のプレーヤの操作対象のプレーヤキャラクタ)の移動・動作演算等のゲーム演算を行い、第1のゲーム機のゲームデータを、ネットワークを介して第2のゲーム機へ送信する処理を行う。そして、第1のゲーム機は、ネットワークを介して受信した第2のゲーム機のゲームデータに基づいて、第2のプレーヤキャラクタ(第2のゲーム機を使用する第2のプレーヤの操作対象のプレーヤキャラクタ)の移動・動作演算等のゲーム演算を行う。また、第2のゲーム機においても、第1のゲーム機と同様にゲーム演算処理を行う。
(2)同期処理
本実施形態は、同期処理を図るために、第1、第2のゲーム機が、フレーム毎に付与される共通の識別番号を用いて、ゲームデータを送受信する処理を行う。
より具体的に説明すると、本実施形態では、まず、各ゲーム機において、画像を描画するフレームレートと同じ周期で、ゲームデータを取得する。そして取得したゲームデータに識別番号を対応付ける。すなわち、描画フレームレートが60fpsのフレームレートである場合には、第1のゲーム機と第2のゲーム機との接続が確立した時点を基準に、1/60毎に取得したゲームデータに、「1」、「2」、「3」、「4」・・・と、シーケンシャルに正の整数からなる識別番号を対応付けていく。
なお、同じタイミングで取得したゲームデータを用いて正確に同期処理を行うために、第1、第2のゲーム機共に、同じ描画フレームレート(例えば、60fps)に設定することが望ましい。以下の説明では、第1のゲーム機、第2のゲーム機共に、描画のフレームレートを60fpsに設定した際の説明である。
なお、「接続が確立した時点」とは、第1のゲーム機においては、第2のゲーム機に対する接続要求に対する確認応答を得たときであって、第2のゲーム機においても、第1のゲーム機に対する接続要求に対する確認応答を得たときである。なお、絶対時間軸に対して第1のゲームにおける「接続が確立した時点」と、ゲーム機2における「接続が確立した時点」とにおいて僅かな誤差があってもよい。
本実施形態のゲーム機では、自機のゲームデータを順次記憶して一時的に保持する第1のバッファ176と、他機のゲームデータを順次記憶して一時的に保持する第2のバッファ178を設け、第1のバッファ176に識別番号を対応付けた自機のゲームデータを記憶させ処理を行い、第2のバッファ178に識別番号に対応付けられた他機のゲームデータを記憶させる処理を行う。また、自機のゲームデータは、識別番号を対応付けて他機に送信する処理を行う。
そして、本実施形態では、第1のバッファ176に入力されている入力遅延時間を経過した(演算予定時刻がゲーム時刻と一致した)ゲームデータの識別番号と、第2のバッファ178に入力されている入力遅延時間を経過した(演算予定時刻がゲーム時刻と一致した)ゲームデータの識別番号とが一致することを条件に、第1のバッファ176に入力されているのゲームデータと、第2のバッファ178に入力されているゲームデータとを出力する処理を行う。
そして、本実施形態では、第1のバッファ176から演算予定時刻に達したゲームデータを順次出力して、出力されたゲームデータに基づいて第1のプレーヤキャラクタの移動・動作演算等のゲーム演算を行い、第2のバッファ178から演算予定時刻に達したゲームデータを順次出力して、出力されたゲームデータに基づいて第2のプレーヤキャラクタの移動・動作演算(モーション演算)等のゲーム演算を行う。
第1のバッファ176、第2のバッファ178をFIFO(First In,First Out)(先入れ先出し)によって入出力処理を行うように構成してもよい。なお第1のバッファ176、第2のバッファ178をFIFO制御はソフトウエアによって実現することが出来る。
より具体的に、第1ゲーム機において、第1のゲーム機のゲームデータを第1のバッファ176に入出力を制御する処理、第2のゲーム機のゲームデータを第2のバッファ178に入出力する処理について、図3を用いて具体的に説明する。
例えば、本実施形態では、第1、第2のゲーム機の接続が確立されるT1時点において、識別番号「1」の第1のゲーム機のゲームデータを、第1のバッファ176に入力する処理を行う。一方、T1時点では、まだ第2のゲーム機からゲームデータを受信していないので、第2のバッファ178は空の状態である。
そして、T2時点〜T9時点と経過したときに第2のゲーム機から識別番号「1」のゲームデータを受信すると、T11時点において、第1のバッファ176に、識別番号「11」のゲームデータを入力し、第2のゲーム機から受信した識別番号「1」のゲームデータを、第2のバッファ178に入力する処理を行う。
すると、T12時点において、第1のバッファ176、第2のバッファ178に入力されている最先のゲームデータの識別番号が一致する(共通の識別番号「1」である)。
本実施の形態では、後述するように通信の遅延を吸収するために入力遅延時間を設定する。例えば入力遅延時間がx(フレーム)である場合にはnフレーム目に入力された入力情報はn+xフレーム目に演算される。従って例えば入力遅延時間が1/60秒×11(11フレーム)である場合には、T12の時点で、第1のバッファ及び第2のバッファに格納されている識別番号「1」のゲームデータは入力遅延時間に達している(演算予定時刻に達している)ので、第1のバッファ176、第2のバッファ178から出力して、出力されたゲームデータに基づいて、ゲーム演算が行われる。
以上のように、本実施形態では、第1、第2のゲーム機それぞれが、フレーム毎に付与される共通の識別番号を用いて、ゲームデータを送受信する処理を行い、演算予定時刻に達している識別番号に対応する自機のゲームデータと他機のゲームデータに基づいてゲーム演算を行うので、オンラインの格闘ゲームにおいても、通信遅延を吸収して、同一のゲーム結果になるようにゲーム演算処理を行うことができる。
(3)入力遅延時間設定処理
図4は、入力遅延時間の設定手法について説明するための図である。
nフレーム目に第1のゲーム機で入力情報に基づきゲームデータDAnが発生し(200参照)、第2のゲーム機で入力情報に基づきゲームデータDBnが発生した(200’参照)とする。ここでnフレーム目とは第1のゲーム機と第2のゲーム機において共通して使用されるゲーム内時刻であり、第1のゲーム機と第2のゲーム機の同期が確立した後に共通して使用されるフレームのシーケンス番号でもよい。
nフレーム目に第1のゲーム機において発生したゲームデータDAnは第2のゲーム機に送信される。第1のゲーム機から送信されたゲームデータは所与の時間T1後に第2のゲーム機に到達する(210’参照)。またnフレーム目に第2のゲーム機において発生したゲームデータDBnは第1のゲーム機に送信される。第2のゲーム機から送信されたゲームデータは所与の時間T1後に第1のゲーム機に到達する(210参照)。
この所与の時間T1は通信に要する時間であり、以下通信遅延時間と呼ぶ。通信遅延時間はネットワークの状態や各ゲーム機の状態により変動する。
このような通信の遅延を吸収するために、入力遅延時間T2を設定する。入力遅延時間T2は入力されてから何フレーム(又は何秒)遅れて、その入力のゲーム演算が行われるかを示す値である。すなわちnフレーム目に入力された入力情報(第1のゲーム機において発生したゲームデータDAnと第2のゲーム機において発生したゲームデータDBnは、第1のゲーム機及び第2のゲーム機においてn+T2フレーム目に演算される(220、220’参照)。
本実施の形態では、所定のタイミング(ゲーム開始前や、対戦相手決定時)に自機と対戦相手となる他機の間でテスト通信を行い、自機と対戦相手となる他機の間の通信遅延時間を測定して、測定した前記通信遅延時間より長い入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する。入力遅延時間の設定は、いずれかのゲーム機で行い、他機に送信する。例えば第1のゲーム機で設定した入力遅延時間を第2のゲーム機に送信するようにしてもよい。
入力遅延時間T2は測定した通信遅延時間T1より長くなるように設定すると、通信による遅延を吸収することが出来る。ここで入力遅延時間T2≧通信遅延時間T1であれば通信による遅延を吸収することが出来るが、入力遅延時間T2が大きくなるほど、プレーヤの入力動作のゲームへの反映が遅くなるので、入力遅延時間T2は入力遅延時間T2≧通信遅延時間T1を満たす必要十分な値に設定することが好ましい。
なおここでは第1のゲーム機と第2のゲーム機の入力遅延時間の値が同じ場合を例にとり説明したが、後述するように第1のゲーム機と第2のゲーム機の自入力遅延時間が異なる場合でもよい。
図13は、入力情報に基づき生成されるゲームデータについて説明するための図である。
本実施の形態では、各フレーム毎(又は所定の描画単位でもよい)に自機への入力情報に基づき、各フレームに対応した識別番号(シーケンスデータ)が付加された自機のゲームデータが生成される。ゲームデータは300は、識別番号310と入力情報を含む。
ここで識別番号は、入力情報が入力された時点のフレームに対応する番号でもよい。こ
の場合同期制御部が、現在のゲーム内時刻から入力遅延時間を減算して演算対象となるフレームの識別番号をもとめ、演算対象となるフレームの識別番号のゲームデータを抽出することにより、各ゲームデータに対応した入力情報が入力されてからのゲーム内経過時間が前記入力遅延時間に達したゲームデータを(古いほうから順次)抽出することができる
図5は入力遅延時間時間を反映したゲームデータを生成する例について説明するための図である。
自機ゲームデータ生成部は、自機への入力情報を受け付けたゲーム内時刻と前記入力遅延時間に基づき、前記入力遅延時間を反映させた演算予定時刻のフレーム対応する識別番号が付加された自機のゲームデータを生成するようにしてもよい。
ここでは、各ゲーム機において入力があってもなくてもゲームデータが生成され(入力がある場合には入力情報を含むゲームデータが生成され、入力がない場合には入力無しを示すゲームデータが生成される)、所定の間隔で対戦相手に送信される場合について説明する。データが送信される間隔は例えばnフレーム毎でもよく、その場合nフレーム分のゲームデータがまとめて送信されることになるが、ここでは説明を簡単にするために、1フレーム毎に1フレーム分のゲームデータが送信される場合を例にとり説明する。
入力遅延時間が6フレームであるとすると、例えば第1のゲーム装置において0フレーム目にゲームデータDA0が発生した場合、入力情報が入力された時点のフレーム番号(0フレーム)と入力遅延時間(6フレーム)を加算して演算予定時刻である「6(フレーム)」を求め、識別番号「6」とするゲームデータを生成する。
同様にして、第1のゲーム装置において1フレーム目にゲームデータDA1が発生した場合識別番号「7」とするゲームデータを生成し、2フレーム目にゲームデータDA2が発生した場合識別番号「8」とするゲームデータを生成し、・・・、nフレーム目にゲームデータDAnが発生した場合識別番号「n+6」とするゲームデータを生成する。
また例えば第2のゲーム装置において0フレーム目にゲームデータDB0が発生した場合、入力情報が入力された時点のフレーム番号(0フレーム)と入力遅延時間(6フレーム)を加算して演算予定時刻である「6(フレーム)」を求め、識別番号「6」とするゲームデータを生成する。
同様にして、第1のゲーム装置において1フレーム目にゲームデータDB1が発生した場合識別番号「7」とするゲームデータを生成し、2フレーム目にゲームデータDB2が発生した場合識別番号「8」とするゲームデータを生成し、・・・、nフレーム目にゲームデータDBnが発生した場合識別番号「n+6」とするゲームデータを生成する。
図6は、第1のゲーム機の第1のバッファ及び第2のバッファにゲームデータが蓄積される様子を模式的に示した図である。
第1のバッファ及び第2のバッファは識別番号に対応したエリアが用意されており、バッファ内のデータが出力されると順次再使用可能となり、再使用可能となったエリアには順次循環して識別番号が対応付けられる。
ここでは入力遅延時間が6フレームなので、0から5の識別番号に対応したエリアには、「入力なし」のデータが格納される。第1のゲーム機では自機のゲームデータが生成されると、そのフレーム内で第1のバッファに格納される。ここで格納されるエリアは演算予定時刻に対応したエリアである。すなわち第1のゲーム機で0フレーム目に発生したゲームデータDA0は6フレーム目に演算されるので識別番号「6」に対応したエリアに格納される。その後各フレームで発生したゲームデータも発生したフレームにおいて、演算予定時刻に対応したエリアに格納される
一方第2のゲーム装置で0フレーム目に発生したゲームデータDB0は4フレーム目に第1のゲームで受信されるので、4フレーム目に第2のバッファに格納される。ここで格納されるエリアは演算予定時刻に対応したエリアである。すなわち第2のゲーム機で0フレーム目に発生したゲームデータDA0は6フレーム目に演算されるので識別番号「6」に対応したエリアに格納される。その後第2のゲームで発生したゲームデータは第1のゲーム機で順次受信されるので受信したフレームにおいて、第2のバッファの演算予定時刻に対応したエリアに格納される。
図7は、入力遅延時間の設定手法の他の例について説明するための図である。
図4では通信遅延時間に基づき、第1のゲーム機と第2のゲーム機で同じ入力遅延時間を設定する手法について説明したが、ここでは、通信遅延時間及び各ゲーム機の表示遅延時間に基づき、第1のゲーム機と第2のゲーム機で異なる入力遅延時間を設定する手法について説明する。
nフレーム目に第1のゲーム機で入力情報に基づきゲームデータDAnが発生し(300参照)、第2のゲーム機で入力情報に基づきゲームデータDBnが発生した(300’参照)とする。ここでnフレーム目とは第1のゲーム機と第2のゲーム機において共通して使用されるゲーム内時刻であり、第1のゲーム機と第2のゲーム機の同期が確立した後に共通して使用されるフレームのシーケンス番号でもよい。
nフレーム目に第1のゲーム機において発生したゲームデータDAnは第2のゲーム機に送信される。第1のゲーム機から送信されたゲームデータは通信遅延時間T1後に第2のゲーム機に到達する(310’参照)。またnフレーム目に第2のゲーム機において発生したゲームデータDBnは第1のゲーム機に送信される。第2のゲーム機から送信されたゲームデータは通信遅延時間T1後に第1のゲーム機に到達する(310参照)。
ここで第1のゲーム機の表示に要する時間をTA、第2のゲーム機の表示に要する時間をTBとする。表示に要する時間とは、ゲーム演算を行ってゲーム演算結果を反映した画像が生成され表示部に出力されるのに要する時間であり、以下表示遅延時間と呼ぶ。
第1のゲーム機の表示遅延時間TAを1フレーム、第2のゲーム機の表示遅延時間TBを2フレームとすると、同じタイミングでゲーム演算を開始すると、第1のゲーム機では演算結果を反映した画像が1フレーム後に表示され、第2のゲーム機では演算結果を反映した画像が2フレーム後に表示される事になる。
本実施の形態では、表示遅延時間が小さい方(ここでは第1のゲーム機)の演算開始タイミングを第1のゲーム機と第1のゲーム機の表示遅延時間の差α(2フレーム−1フレーム=1フレーム)だけ遅らせることで、ゲーム結果を反映した画像を第1のゲーム機と第2のゲーム機で同じタイミングとすることが出来る。
すなわち表示遅延時間が小さい方のゲーム機の入力遅延時間(ここでは第1のゲーム機の入力遅延時間)を表示遅延時間が大きい方のゲーム機の入力遅延時間(ここでは第2のゲーム機の入力遅延時間)より表示遅延時間の差αだけ長く設定することで、第1のゲーム機と第2のゲーム機でゲーム結果を反映した画像を同じタイミングで表示することが出来る。
図7に示すように表示遅延時間が小さい方のゲーム機(ここでは第1のゲーム機)について、通信遅延時間に基づき設定した入力遅延時間T2に表示遅延時間の差αを加算した値を入力遅延時間として設定する。このようにすると第1のゲーム機ではn+T2+αフレーム目にDAnとDBnに基づきゲーム演算が開始され(320参照)、n+T2+α+TAフレーム目にDAnとDBnに基づき生成されたゲーム画像が表示される(330参照)。また第2のゲーム機ではn+T2フレーム目にDAnとDBnに基づきゲーム演算が開始され(320’参照)、n+T2+TBフレーム目にDAnとDBnに基づき生成されたゲーム画像が表示される(330’参照)。ここでn+T2+α+TA=n+T2+TBなので、DAnとDBnに基づき生成されたゲーム画像が第1のゲーム機と第2のゲーム機で同じタイミングで表示されることになる。
ここで各ゲーム機の表示デバイスの種類情報(例えばメーカや型番の情報)に対応した表示遅延時間の情報を予め有している場合には、各ゲーム機の種類情報を取得してこの種類情報に対応した表示遅延時間の情報に基づき第1のゲーム機と第2のゲーム機の表示遅延時間を決定しても良い。
またユーザーが自機の表示遅延時間の値を入力出来るような構成にし、ユーザーによって入力された値に基づき第1のゲーム機と第2のゲーム機の表示遅延時間を決定しても良い。
またユーザーがテスト入力を行うと、テスト入力情報に基づき自機の表示遅延時間を自動的に判定する構成にし、自動的に判定された表示遅延時間に基づき第1のゲーム機と第2のゲーム機の表示遅延時間を決定しても良い。
例えばテスト入力画面として所定フレーム毎にテスト画像を表示し、テスト画像が表示されたタイミングでユーザーにボタンをおしてもらい、ボタンの押されたタイミングで表示遅延時間を判定するようにしても良い。より具体的には、表示遅延がTA(フレーム)であるとするとmフレーム目にテスト画像の生成処理が開始されるとm+TAフレーム目に表示される。このタイミングでユーザーがボタンを押下すると、ボタン入力を受け付けたタイミングとテスト画像の生成処理が開始したタイミングの差に基づき表示遅延時間を判定するようにしても良い。
そして設定された自機の表示遅延時間情報を他機にネットワークを介して送信するとともに、他機から送信された他機の表示遅延時間情報をネットワークを介して受信する処理とを行う。
図8はゲームによって異なる入力遅延時間時間を反映したゲームデータを生成する例について説明するための図である。
図8では第1のゲーム機の入力遅延時間は「6」(450)、第2のゲーム機の入力遅延時間は「7」(452)と第1のゲーム機と第2のゲーム機で異なる入力遅延時間が設定されている場合のゲームデータの生成例について説明する。
第1のゲーム機の自機ゲームデータ生成部は、第1のゲーム機への入力情報を受け付けたゲーム内時刻410と第1のゲーム機の入力遅延時間450に基づき、第1のゲーム機の入力遅延時間450を反映させた演算予定時刻のフレーム対応する識別番号432−1、432−2、432−3が付加された自機用のゲームデータ430を生成する。例えば0フレーム目(ゲーム内時刻)に発生したゲームデータDA0の識別番号432−1はゲーム内時刻である0(フレーム)に第1のゲーム機の入力遅延時間450である6(フレーム)を加算した値「6」となる。自機用のゲームデータ430は、第1のゲーム機の第1のバッファに格納される。
また第1のゲーム機の自機ゲームデータ生成部は、第1のゲーム機への入力情報を受け付けたゲーム内時刻410と第2のゲーム機の入力遅延時間452に基づき、第2のゲーム機の入力遅延時間452を反映させた演算予定時刻のフレーム対応する識別番号422−1、422−2、422−3が付加された送信用のゲームデータ420を生成する。例えば0フレーム目(ゲーム内時刻)に発生したゲームデータDA0の識別番号422−1はゲーム内時刻である0(フレーム)に第2のゲーム機の入力遅延時間452である7(フレーム)を加算した値「7」となる。送信用のゲームデータ420は、第2のゲーム機に送信され、第2のゲーム機の第2のバッファに格納される。
第2のゲーム機の自機ゲームデータ生成部は、第2のゲーム機への入力情報を受け付けたゲーム内時刻460と第2のゲーム機の入力遅延時間452に基づき、第2のゲーム機の入力遅延時間452を反映させた演算予定時刻のフレーム対応する識別番号472−1、472−2、472−3が付加された自機用のゲームデータ470を生成する。例えば0フレーム目(ゲーム内時刻)に発生したゲームデータDB0の識別番号472−1はゲーム内時刻である0(フレーム)に第2のゲーム機の入力遅延時間452である7(フレーム)を加算した値「7」となる。自機用のゲームデータ470は、第2のゲーム機の第1のバッファに格納される。
また第2のゲーム機の自機ゲームデータ生成部は、第2のゲーム機への入力情報を受け付けたゲーム内時刻460と第1のゲーム機の入力遅延時間450に基づき、第1のゲーム機の入力遅延時間450を反映させた演算予定時刻のフレーム対応する識別番号482−1、482−2、482−3が付加された送信用のゲームデータ480を生成する。例えば0フレーム目(ゲーム内時刻)に発生したゲームデータDB0の識別番号482−1はゲーム内時刻である0(フレーム)に第1のゲーム機の入力遅延時間450である6(フレーム)を加算した値「6」となる。送信用のゲームデータ480は、第1のゲーム機に送信され、第1のゲーム機の第2のバッファに格納される。
(4)通信遅延時間判定処理
図9は本実施の形態の通信遅延時間判定処理について説明するための図である。
本実施の形態の通信遅延時間判定処理部118は、所定のタイミング(ゲーム開始前や、対戦相手決定時)で自機と対戦相手となる他機の間でパケットの送受信を行うテスト通信を連続して複数回行い、前記複数回のテスト通信結果に基づき通信遅延時間を求める。
テスト通信開始後の所定期間内のテスト通信状況(所定期間内に受信した返信パケットの受信タイミング)に基づき通信遅延時間を求めるようにしてもよい。所定期間内のテスト通信状況とは所定期間内に受信した返信パケットの受信までの経過時間等を意味する。
テスト通信Tは自機から他機に対して返信要求を行うパケットPの送信と、パケットPを受信した他機から自機に送信された返信パケットP’の受信を1対とする送受信からなる。図9ではT1(パケットP1の送信と返信パケットP’1の受信)からT10(パケットP10の送信と返信パケットP’10の受信)の10回のテスト通信がおこなわれた様子を示している。テスト通信を連続して複数回行うとは、例えば複数のパケットP1〜PNを送信する場合に複数のパケットP1〜PNをまとめて送信することや、送信したパケットPnに対する返信パケットP’nの受信を待たずに次のパケットPn+1を送信することを意味する。
例えば複数回のテスト通信に要する時間(パケットPを送信してから対応するパケットP’を受信するまでに要する時間)に基づき通信遅延時間を求めても良いし、複数回のテスト通信の最初の通信タイミングテスト(通信開始タイミング510)から所定期間内Kに受信した返信パケットP’の受信タイミングまでの経過時間に基づき通信遅延時間を求めても良い。また複数回のテスト通信のなかで所定の条件を満たすテスト通信に要する時間または経過時間に基づきもとめてもよい。
図9は、テスト通信開始タイミング510において第1のゲーム機から第2のゲーム機に10個のパケットP1〜P10が送信された場合の通信状況を示している。通信状況が良い場合には第1のゲーム機から送信されたパケットP1からP10は第2のゲーム機で受信され、第2のゲーム機でパケットP1〜P10に対応した返信パケットP1’〜P’10が送信され、第1のゲーム機では、返信パケットP1’〜P’10を受信するが、ここでは第1のゲーム機は、パケットP9に対応する返信パケットP’9を受信していない。(パケットP9が第2のゲーム機に受信されていない場合や、パケットP9第2のゲーム機に受信され第2のゲーム機は返信パケットP’9を送信したが、第1のゲーム機が返信パケットP’9を受信していない場合を含む)。
たとえば最初の通信タイミング510から所定期間内Kに受信した返信パケットP’8、P’1、P’2、P’4、P’3、P’7、P’10、P’5のなかで、テスト通信開始510からの返信パケット受信までの経過時間の小さい方からm個(例えばm=2とするとP’8、P’1)、経過時間の大きい方からm個(例えばm=2とするとP’10、P’5)の返信パケットをのぞいた残りのパケット(ここではP’2、P’4、P’3、P’7)の受信までの経過時間の平均に基づき通信遅延時間を求めてもよい。所定期間経過後に受信した返信パケットP’6は平均算出の対象としない。またテスト通信T9のように返信パケットP’9を受信していないケースも平均算出の対象としない。
このようにすると、テスト通信開始510後の所定期間内Kの所定時間内に返信のあったテスト通信の通信結果を用いて通信遅延時間を求めることが出来るので、通信状況が良くない場合でも効率よく通信遅延を測定することが出来る。
図15は通信遅延時間に基づき入力遅延時間を設定する例について説明するための図である。
本実施の形態では測定した前記通信遅延時間より長い入力遅延時間を設定する。例えば通信遅延時間T1、入力遅延時間をT2、所定のオフセットをβとしてT2=T1+βとなるように入力遅延時間を設定してもよい。
なおオフセットβは一定でなくてもよい(通信遅延時間T1に応じて変化してもよい)。例えば通信遅延時間の取り得る値の範囲を複数に分割し、各範囲522と設定される入力遅延時間524の対応を予め定義しておき、テーブルとして記憶させておいても良いし、アルゴリズムに組み込んでおいても良い。そして測定した通信遅延時間が属する範囲522に対応して定義されている入力遅延時間524に基づき入力遅延時間を設定してもよい。(表示遅延時間を考慮しない場合には、定義されている入力遅延時間524を入力遅延時間として設定してもよい)。
(5)ゲームデータ生成処理
図10(A)(B)は入力操作定義情報について説明する図である。
本実施の形態のゲーム機は、例えばAボタン、Bボタン、Cボタン、Dボタン等の所定のキーに対する入力操作に対してプレーヤ所望の動作コマンドを割り付けることが出来る。ここで動作コマンドとは、各ゲームで共通に使用される動作情報である。入力操作定義情報生成部は、例えばキーカスタマイズ画面等を表示して、プレーヤからの設定入力を受け付けるようにしてもよい。そしてプレーヤからの設定入力情報に基づき、自機への入力操作と前記動作情報(動作コマンド)の対応関係が定義された入力操作定義情報を生成する。
図10(A)は、第1のゲーム機の入力操作定義情報の一例を示しており、図10(B)は、第2のゲーム機の入力操作定義情報の一例を示している。入力操作定義情報530−1、530−2はキー情報(押されたボタンの種類を示す情報)532−1、532−2とボタンの種類に対応する動作情報534−1、534−2の対応関係を示すテーブルやアルゴリズムとして設定することが出来る。ここで、動作情報として例示されている「タテ切り」「ヨコ切り」「けり」「ガード」は第1のゲーム機と第2のゲーム機で共通して同じ意味で解釈、実行される共通の動作コマンドでもよい。
第1のゲーム機ではAボタンに「タテ切り」が割り当てられ、Bボタンに「ヨコ切り」が割り当てられ、Cボタンに「けり」が割り当てられ、Dボタンに「ガード」が割り当てられている。
また第2のゲーム機ではAボタンに「ガード」が割り当てられ、Bボタンに「けり」が割り当てられ、Cボタンに「タテ切り」が割り当てられ、Dボタンに「ヨコ切り」が割り当てられている。
例えば自機ゲームデータ生成部は、入力操作定義情報に基づき、入力情報が示す自機への入力操作を対応する動作情報に変換し、図14(A)に示すように入力情報とて動作情報322を含むゲームデータ300を生成してもよい。この場合第1のゲーム機ではAボタンが押下されると動作情報「タテ切り」を含むゲームデータが生成され、第2のゲーム機ではAボタンが押下されると動作情報「ガード」を含むゲームデータが生成されることになる。
このようにすると他機のゲームデータを動作情報として受け取ること出来るので、他機の入力操作定義情報を意識することなく(入力操作定義情報を受信しなくてもよい)、ゲーム演算を行うことが出来る。
また例えば自機ゲームデータ生成部は、図14(B)に示すように入力情報が示す自機への入力操作の情報(キー情報)324を含むゲームデータ300を生成してもよい。この場合第1のゲーム機ではAボタンが押下されるとキー情報「A」を含むゲームデータが生成され、第2のゲーム機ではAボタンが押下されるとキー情報「A」を含むゲームデータを生成されることになる。
ここで、第1のゲーム機と第2のゲーム機ではキー情報「A」が指示する動作が異なるため、ゲーム演算部は、自機の入力操作定義情報(第1のゲーム機の場合図10(A)の530−1)に基づき、第1のバッファから抽出したゲームデータに含まれた入力操作の情報を入力操作に対応した自機の動作情報に変換し、他機の入力操作定義情報(第1のゲーム機の場合図10(B)の530−2)に基づき、第2のバッファから抽出したゲームデータに含まれた入力操作の情報を入力操作に対応した他機の動作情報に変換し、自機の動作情報と他機の動作情報に基づいて、各フレームのゲーム演算を行う。例えばゲーム演算部は、第1のバッファから抽出したゲームデータのキー情報が「A」であれば動作情報「タテ切り」に変換し、第2のバッファから抽出したゲームデータのキー情報が「A」であれば動作情報「ガード」に変換してゲーム演算を行う事になる。
図14(B)に示すように入力情報が示す自機への入力操作の情報(キー情報)324を含むゲームデータ300を送受信する場合には、他機の入力操作定義情報を予め受信しておくことで、他機のゲームデータを動作情報に変換してゲーム演算を行うことが出来る。
(6)入力遅延時間を経過しても他機のゲームデータを受信していない場合の処理
本実施の形態のゲーム演算部は、抽出されるべき他機のゲームデータを受信していない(第2のバッファに記憶されていない)場合には、ゲーム演算処理を中断し、前フレームと同じ画像を表示してもよい。
例えば図12において、演算予定フレーム(識別番号)が「12」である場合には、第1のバッファ及び第2のバッファから識別番号「12」に対応付けられたゲームデータが抽出されなければならないが、未だ第2のゲーム機から識別番号「12」に対応付けられたゲームデータを受信していない場合に、第1のゲーム機の第2のバッファの識別番号「12」に対応付けられたエリアは「データなし」の状態となっている(550参照)。例えば第1のバッファ及び第2のバッファは初期設定において「データなし」を設定しておくと、他機から所与の識別番号に対応付けられたゲームデータを受信しないと、第2のバッファの所与の識別番号に対応付けられたエリアは「データなし」の状態となる。
従って第2のバッファの演算予定フレーム(識別番号)が「12」に対応付けられたエリアが「データなし」の状態であれば、抽出されるべき他機のゲームデータを受信していないと判断することが出来る。この場合ゲーム演算処理部は、当該フレームのゲーム演算処理を中断し、前フレームと同じ画像を表示する。この場合ゲーム内経過フレームも更新されない。
そして、抽出されるべき他機のゲームデータを受信した(第2のバッファに記憶された)場合には、ゲーム演算処理を再開することが出来る。この場合ゲーム内経過フレームも更新を開始する。
(7)ゲームデータ通信制御
本実施の形態のゲームデータの第1の通信形態として、途中でゲームデータが紛失しても再送されないタイプの第1のプロトコル(例えばUDP)でゲームデータの送受信を行う構成を取ることが出来る。この場合には、抽出されるべき他機のゲームデータ受信していない(第2のバッファに記憶されていない)場合には、抽出されるべきゲームデータの識別番号を再送データ特定情報として付加してゲームデータ再送要求を行い、他機からゲームデータ再送要求を受信した場合には、付加された再送データ特定情報に対応する識別番号に対応付けられたゲームデータを他機に送信する。
抽出されるべき他機のゲームデータ受信していない(第2のバッファに記憶されていない)場合とは、通信遅延時間経過後、演算予定時刻に達しても他機のゲームデータ受信していない(第2のバッファに記憶されていない)場合である。
図16(A)(B)は本実施の形態のゲームデータの第2の通信形態について説明するための図である。図16(A)は第1のゲーム機が送信するパケットを示しており、図16(B)は第1のゲーム機が受信するパケットを示している。
第2の通信形態では、図16(A)に示すように途中でゲームデータが紛失しても再送されないタイプの第1のプロトコル(UDP)でn回(例えば610−1〜610−10の10回や610−11〜610−20の10回)パケットを送信する毎に、送信の途中でデータが紛失すると再送されるタイプの第2のプロトコル(TCP)でn回分のパケットに含まれたゲームデータ(例えばDA1〜DA10やDA11〜DA20)を含む1つのパケット620−1、620−2を他機に送信する。また図16(B)に示すように、前記第1のプロトコル及び前記第2のプロトコルで他機から送信されたパケットを受信することが期待されている。
第2の通信形態では、同期制御部は、所与のフレームのゲームデータに対応したパケットを前記第1のプロトコルで他機から受信出来なかった場合には、前記第2のプロトコルで他機から送信されたパケットに含まれた前記所与のフレームのゲームデータを第2のバッファに蓄積する処理を行うことが出来る。例えば図16(B)において、ゲームデータDB3に対応したパケット630−3を前記第1のプロトコル(UDP)で他機から受信出来なかった場合には、前記第2のプロトコル(TCP)で他機から送信されたパケット640−1に含まれたDB3のゲームデータを第2のバッファに記憶させる処理を行うことが出来る。
3.本実施形態の処理の流れ
図11は、入力遅延設定手法タイミングチャートの一例を示す。
親機である第1のゲーム機において、所定のタイミング(例えばゲーム開始前の対戦相手が決定された後)280で、以下の処理を行う。
まず各種設定情報の送受信を行う(282参照)。ここで各種設定情報とは、図10で説明した各ゲーム機の入力操作定義情報や、図7で説明した各ゲーム機の表示遅延時間情報である。
次に例えば図9で説明した手法により、遅延時間を判定する(284参照)。次に判定した遅延時間に基づき例えば図9で説明した手法により、自機及び他機の入力遅延時間を設定する(286参照)。次に他機の入力遅延時間を送受信する(288参照)。すなわち第1のゲーム機が第2のゲーム機の入力遅延時間を送信し、第2のゲーム機がこれを受信する。
第1のゲーム機のゲーム開始のタイミング250と第2のゲーム機のゲーム開始のタイミング250’の同期を取ってゲーム演算を開始する。各ゲームでは入力情報を受け付けたフレーム250、250’において入力情報に基づいてゲームデータを生成し、他機に送信するとともに、自機の第1のバッファに格納する。通信遅延時間がT1である場合、フレーム250、250’において他機から送信されたしたゲームデータはフレーム260、260’において受信され、第2のバッファに格納される。入力遅延時間がT2である場合、フレーム250、250’において生成されたゲームデータは、各ゲームにおいて入力遅延時間を経過したフレーム270、270’において第1のバッファ及び第2のバッファから抽出され、ゲーム演算が行われる。
なお、本発明は本実施の形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
上記実施の形態では各フレーム毎にゲームデータが送信される場合を例にとり説明したがこれに限られない。例えばnフレーム分まとめて1つのパケットとして、nフレーム毎に送信される構成でもよい。
本実施形態のゲーム機の機能ブロック図。 本実施形態のネットワーク図。 同期処理の説明図。 入力遅延時間の設定手法について説明するための図。 入力遅延時間時間を反映したゲームデータを生成する例について説明するための図。 第1のゲーム機の第1のバッファ及び第2のバッファにゲームデータが蓄積される様子を模式的に示した図。 入力遅延時間の設定手法の他の例について説明するための図。 ゲームによって異なる入力遅延時間時間を反映したゲームデータを生成する例について説明するための図。 通信遅延時間判定処理について説明するための図。 図10(A)(B)は入力操作定義情報について説明する図。 入力遅延設定手法タイミングチャートの一例を示す図。 入力遅延時間を経過しても他機のゲームデータを受信していない場合の処理について説明するための図。 入力情報に基づき生成されるゲームデータについて説明するための図。 図14(A)(B)はゲームデータの構成について説明する図 通信遅延時間に基づき入力遅延時間を設定する例について説明するための図。 図16(A)(B)は本実施の形態のゲームデータの第2の通信形態について説明するための図。
符号の説明
100 処理部、110 ゲーム演算部、111、オブジェクト空間設定部、112 仮想カメラ制御部、113 移動・動作処理部、114 ネットワーク設定部、115 通信制御部、116 同期制御部、117 自機ゲームデータ生成部、118 通信遅延時間判定処理部、119 入力遅延時間設定処理部、120 表示遅延時間設定処理部、121、入力操作定義情報生成処理部、130 描画部、140 音生成部、160 操作部、170 記憶部、172 主記憶部、174 描画バッファ、176 第1のバッファ、178 第2のバッファ、179 各種定義情報記憶部、180 情報記憶媒体、190 表示部、192 音出力部、196 通信部

Claims (9)

  1. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機のためのプログラムであって、
    自機への入力情報に基づき、ゲーム画像を描画するフレームレート毎に、識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、前記フレームレート毎にゲーム演算を行うゲーム演算部と、
    自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
    判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、して、コンピュータを機能させ、
    前記自機ゲームデータ生成部は、
    自機への入力情報を受け付けた前記フレームと前記入力遅延時間に基づき、演算予定フレームを決定し、当該演算予定フレームに基づき前記識別番号を設定し、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号に基づき、前記入力遅延時間を経過して演算予定フレームが到来したゲームデータを抽出し、
    前記入力遅延時間設定処理部は、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延
    の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信することを特徴とするプログラム。
  2. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいて格闘ゲームのゲーム演算を行うゲーム機のためのプログラムであって、
    自機へ入力された格闘ゲームの入力コマンドに基づき、フレーム毎に、識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータが示す自機の入力コマンドと、第2のバッファから抽出したゲームデータが示す他機の入力コマンドとに基づいて、前記フレーム毎に、自機の操作対象のプレーヤキャラクタと他機の操作対象のプレーヤキャラクタとが対戦する格闘ゲームのゲーム演算を行うゲーム演算部と、
    自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
    判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、して、コンピュータを機能させ、
    前記自機ゲームデータ生成部は、
    自機への入力コマンドを受け付けた前記フレームと前記入力遅延時間に基づき、演算予定フレームを決定し、当該演算予定フレームに基づき前記識別番号を設定し、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号に基づき、前記入力遅延時間を経過して演算予定フレームが到来したゲームデータを抽出し、
    前記入力遅延時間設定処理部は、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信することを特徴とするプログラム。
  3. 請求項1又は2のいずれかにおいて、
    前記通信遅延時間判定処理部は、
    自機と対戦相手となる他機の間でパケットの送受信を行うテスト通信を連続して複数回行い、複数回のテスト通信結果に基づき通信遅延時間を判定することを特徴とするプログラム。
  4. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機のためのプログラムであって、
    自機への入力情報に基づき、フレーム毎に識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送
    信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、前記フレーム毎にゲーム演算を行うゲーム演算部と、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を別個に設定し、他機の入力遅延時間情報をネットワークを介して他機に送信する入力遅延時間設定処理部と、してコンピュータを機能させ、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と自機の前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出することを特徴とするプログラム。
  5. 請求項1乃至4のいずれかにおいて、
    前記自機ゲームデータ生成部は、
    自機への入力情報を受け付けたフレームと自機の入力遅延時間に基づき、自機の入力遅延時間を反映させた自機演算予定フレームを決定し、当該自機演算予定フレームに基づき、自機演算用の自機のゲームデータの前記識別番号を設定し、
    自機への入力情報を受け付けたフレームと他機の入力遅延時間に基づき、他機の入力遅延時間を反映させた他機演算予定フレームを決定し、当該他機演算予定フレームに基づき、他機送信用の自機のゲームデータの前記識別番号を設定し、
    前記ゲームデータ通信制御部は、
    生成した他機送信用の自機のゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行い、
    前記同期制御部は、
    自機演算用の自機のゲームデータに対応付けられている識別番号に基づき自機演算用の自機のゲームデータを第1のバッファに記憶し、他機から受信したゲームデータに対応付けられている識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行うことを特徴とするプログラム。
  6. 請求項1乃至5のいずれかにおいて、
    ユーザーからの入力情報に基づき自機の表示遅延時間情報を設定する表示遅延時間設定処理部と、
    設定された自機の表示遅延時間情報を他機にネットワークを介して送信するとともに、他機から送信された他機の表示遅延時間情報をネットワークを介して受信する処理とを行う表示遅延時間情報通信制御部と、してさらにコンピュータを機能させ、
    前記入力遅延時間設定処理部は、
    設定された自機の表示遅延時間情報及び受信した他機の表示遅延時間情報報に基づき、自機と他機の表示遅延時間差を求めることを特徴とするプログラム。
  7. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機であって、
    自機への入力情報に基づき、ゲーム画像を描画するフレームレート毎に、識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、前記フレームレート毎にゲーム演算を行うゲーム演算部と、
    自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
    判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、を含み、
    前記自機ゲームデータ生成部は、
    自機への入力情報を受け付けた前記フレームと前記入力遅延時間に基づき、演算予定フレームを決定し、当該演算予定フレームに基づき前記識別番号を設定し、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号に基づき、前記入力遅延時間を経過して演算予定フレームが到来したゲームデータを抽出し、
    前記入力遅延時間設定処理部は、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信することを特徴とするゲーム機。
  8. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいて格闘ゲームのゲーム演算を行うゲーム機であって、
    自機へ入力された格闘ゲームの入力コマンドに基づき、フレーム毎に、識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータが示す自機の入力コマンドと、第2のバッファから抽出したゲームデータが示す他機の入力コマンドとに基づいて、前記フレーム毎に、自機の操作対象のプレーヤキャラクタと他機の操作対象のプレーヤキャラクタとが対戦する格闘ゲームのゲーム演算を行うゲーム演算部と、
    自機と他機の間でテスト通信を行い、テスト通信結果に基づき通信遅延時間を判定する通信遅延時間判定処理部と、
    判定した前記通信遅延時間以上の長さの入力遅延時間を設定し、当該入力遅延時間をネットワークを介して他機に送信する入力遅延時間設定処理部と、を含み、
    前記自機ゲームデータ生成部は、
    自機への入力コマンドを受け付けた前記フレームと前記入力遅延時間に基づき、演算予定フレームを決定し、当該演算予定フレームに基づき前記フレームの前記識別番号を設定し、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号に基づき、前記入力遅延時間を経過して演算予定フレームが到来したゲームデータを抽出し、
    前記入力遅延時間設定処理部は、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を設定し、他機の入力遅延時間情報をネットワークを介して他機に送信することを特徴とするゲーム機。
  9. 複数のゲーム機それぞれが、各ゲーム機への入力情報に基づき生成されたゲームデータをネットワークを介して相互に送受信し、各ゲーム機において複数のゲーム機のゲームデータに基づいてゲーム演算を行うゲーム機であって、
    自機への入力情報に基づき、フレーム毎に識別番号に対応付けられた自機のゲームデータを生成する自機ゲームデータ生成部と、
    生成したゲームデータを所定の間隔で他機にネットワークを介して送信し、他機から送信されたゲームデータを、ネットワークを介して受信する処理を行うゲームデータ通信制御部と、
    前記識別番号に基づき自機のゲームデータを第1のバッファに記憶し、前記識別番号に基づき他機のゲームデータを第2のバッファに記憶する処理を行い、第1のバッファに記憶されているゲームデータと第2のバッファに記憶されているゲームデータを各ゲームデータに対応付けられている識別番号に基づき同期を取って抽出する同期制御部と、
    第1のバッファから抽出したゲームデータと、第2のバッファから抽出したゲームデータとに基づいて、前記フレーム毎にゲーム演算を行うゲーム演算部と、
    自機と他機の表示遅延時間情報に基づき自機と他機の表示遅延時間差を求め、表示遅延の短い方の入力遅延時間が表示遅延時間差分だけ長くなるように自機の入力遅延時間と、他機の入力遅延時間を別個に設定し、他機の入力遅延時間情報をネットワークを介して他機に送信する入力遅延時間設定処理部と、を含み、
    前記同期制御部は、
    第1のバッファ及び第2のバッファに記憶されているゲームデータに対応付けられた前記識別番号と自機の前記入力遅延時間に基づき、前記入力遅延時間を経過したゲームデータを抽出することを特徴とするゲーム機。
JP2008194209A 2008-07-28 2008-07-28 プログラム、情報記憶媒体及びゲーム機 Active JP5745204B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008194209A JP5745204B2 (ja) 2008-07-28 2008-07-28 プログラム、情報記憶媒体及びゲーム機
US12/509,143 US8734246B2 (en) 2008-07-28 2009-07-24 Information storage medium, synchronization control method, and computer terminal
EP09166632.1A EP2158952B1 (en) 2008-07-28 2009-07-28 Computer terminal and synchronization control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008194209A JP5745204B2 (ja) 2008-07-28 2008-07-28 プログラム、情報記憶媒体及びゲーム機

Publications (2)

Publication Number Publication Date
JP2010029393A JP2010029393A (ja) 2010-02-12
JP5745204B2 true JP5745204B2 (ja) 2015-07-08

Family

ID=41569127

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008194209A Active JP5745204B2 (ja) 2008-07-28 2008-07-28 プログラム、情報記憶媒体及びゲーム機

Country Status (3)

Country Link
US (1) US8734246B2 (ja)
EP (1) EP2158952B1 (ja)
JP (1) JP5745204B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5745204B2 (ja) * 2008-07-28 2015-07-08 株式会社バンダイナムコエンターテインメント プログラム、情報記憶媒体及びゲーム機
JP4871373B2 (ja) 2009-06-19 2012-02-08 任天堂株式会社 情報処理システムおよび情報処理装置
JP2011045504A (ja) * 2009-08-26 2011-03-10 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム装置
JP2011250874A (ja) 2010-05-31 2011-12-15 Nintendo Co Ltd 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法
JP2012018657A (ja) 2010-06-11 2012-01-26 Nintendo Co Ltd 情報処理端末、情報処理システム、情報処理プログラム
JP5677811B2 (ja) 2010-06-11 2015-02-25 任天堂株式会社 携帯型情報端末、携帯情報システム、携帯型情報端末制御プログラム
JP5672840B2 (ja) * 2010-08-12 2015-02-18 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4999213B2 (ja) * 2010-09-17 2012-08-15 任天堂株式会社 情報処理プログラム、携帯端末装置、システム、情報処理方法及び通信システム
JP5774314B2 (ja) * 2011-01-05 2015-09-09 任天堂株式会社 遅延測定システムおよび遅延測定方法
US9205333B2 (en) * 2013-06-07 2015-12-08 Ubisoft Entertainment Massively multiplayer gaming
US9782670B2 (en) 2014-04-25 2017-10-10 Ubisoft Entertainment Computer program, method, and system for enabling an interactive event among a plurality of persons
JP5602963B1 (ja) * 2014-01-30 2014-10-08 グリー株式会社 ゲーム管理プログラム、ゲーム管理方法及びゲーム管理システム
US9912562B2 (en) 2014-03-31 2018-03-06 Microsoft Technology Licensing, Llc Measuring latency in an interactive application
US10255083B2 (en) * 2014-09-12 2019-04-09 Ubisoft Entertainment Method and system for unified input in cross-platform streaming applications in cloud computing environments
US10158700B1 (en) * 2014-11-14 2018-12-18 Amazon Technologies, Inc. Coordination of content presentation operations
US9839843B1 (en) 2014-11-14 2017-12-12 Amazon Technologies, Inc. Coordination of content presentation operations
US9821222B1 (en) 2014-11-14 2017-11-21 Amazon Technologies, Inc. Coordination of content presentation operations
JP5815901B2 (ja) * 2015-03-19 2015-11-17 グリー株式会社 ゲーム管理方法及びゲーム管理システム
CN104915564B (zh) * 2015-06-16 2017-03-22 深圳市腾讯计算机系统有限公司 实现虚拟角色转弯的方法和装置
KR101810537B1 (ko) * 2015-11-12 2017-12-19 주식회사 넥슨코리아 랙 발생을 감지하는 방법 및 장치
JP7120014B2 (ja) * 2016-08-17 2022-08-17 日本電気株式会社 遠隔制御装置、遅延調整装置、遠隔制御システム、遠隔制御方法、遅延調整方法、遠隔制御プログラムおよび遅延調整プログラム
JP6549176B2 (ja) * 2017-03-30 2019-07-24 株式会社バンダイナムコエンターテインメント プログラム及び電子機器
JP6944812B2 (ja) * 2017-05-24 2021-10-06 任天堂株式会社 情報処理システム、情報処理装置、情報処理プログラム、および、ゲーム処理方法
US10569168B2 (en) 2017-05-24 2020-02-25 Nintendo Co., Ltd. Information processing system, apparatus, method, and storage medium storing program to address game delay between apparatuses
JP6229092B1 (ja) * 2017-06-22 2017-11-08 株式会社 ディー・エヌ・エー 通信ゲームシステム及び通信ゲーム処理方法
JP6979292B2 (ja) * 2017-06-28 2021-12-08 株式会社タイトー ゲーム機
US10726765B2 (en) * 2018-02-15 2020-07-28 Valve Corporation Using tracking of display device to control image display
US11077364B2 (en) * 2018-04-02 2021-08-03 Google Llc Resolution-based scaling of real-time interactive graphics
CN109040208B (zh) * 2018-07-18 2021-06-01 广州多益网络股份有限公司 基于多客户端交互的数据同步方法、服务器、系统及介质
US10924525B2 (en) 2018-10-01 2021-02-16 Microsoft Technology Licensing, Llc Inducing higher input latency in multiplayer programs
FR3100459B1 (fr) * 2019-09-05 2021-11-05 Blade Procédé de capture et de diffusion pour coordonner des commandes produites par deux clients distants associés à une même session informatique
CN111467798B (zh) * 2020-04-01 2021-09-21 腾讯科技(深圳)有限公司 游戏应用程序中的帧显示方法、装置、终端和存储介质
CN112843677B (zh) * 2021-02-08 2023-07-11 脸萌有限公司 一种系统延时确定方法、装置、设备和存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5538255A (en) * 1992-02-18 1996-07-23 Barker; Bruce J. Remote controlled multiplayer video game
AU4804097A (en) * 1996-09-30 1998-04-24 Sandcastle, Inc. Synchronization of events occurring over a network in the presence of latency
JPH11347254A (ja) * 1998-06-12 1999-12-21 Sega Enterp Ltd 通信ゲームシステム及びそれにおけるゲーム実行方法
JP4218913B2 (ja) 1999-07-05 2009-02-04 株式会社バンダイナムコゲームス ゲーム演算集中処理装置及び情報記憶媒体
JP2001198363A (ja) * 1999-09-14 2001-07-24 Sega Corp データ処理方法
JP3506671B2 (ja) 2000-12-20 2004-03-15 株式会社インテリジェントシステムズ 通信ゲームシステム
JP3815278B2 (ja) * 2001-08-30 2006-08-30 ソニー株式会社 ネットワークゲームシステム、ネットワークゲームサーバ装置、ネットワークゲーム端末装置、情報処理方法、及び情報処理プログラム
JP5059263B2 (ja) * 2001-09-03 2012-10-24 任天堂株式会社 通信ゲームシステム
JP2004049922A (ja) * 2002-07-19 2004-02-19 Sega Corp クライアントサーバシステム
JP2005006913A (ja) 2003-06-19 2005-01-13 Namco Ltd ゲーム装置、ゲーム制御プログラムおよびそのプログラムが記録された記録媒体
JP4554949B2 (ja) * 2004-01-23 2010-09-29 株式会社日立製作所 管理計算機および記憶装置の管理方法
JP2006032502A (ja) 2004-07-14 2006-02-02 Nidec Tosok Corp ダイボンディング装置
JP4758122B2 (ja) * 2005-03-31 2011-08-24 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成装置
JP3995257B2 (ja) * 2005-10-04 2007-10-24 任天堂株式会社 通信ゲームプログラムおよび通信ゲームシステム
JP5268246B2 (ja) * 2006-11-17 2013-08-21 任天堂株式会社 ゲームシステム
JP5745204B2 (ja) * 2008-07-28 2015-07-08 株式会社バンダイナムコエンターテインメント プログラム、情報記憶媒体及びゲーム機
WO2010113454A1 (ja) * 2009-03-31 2010-10-07 パナソニック株式会社 記録媒体、再生装置、及び集積回路
US20130070928A1 (en) * 2011-09-21 2013-03-21 Daniel P. W. Ellis Methods, systems, and media for mobile audio event recognition

Also Published As

Publication number Publication date
US8734246B2 (en) 2014-05-27
EP2158952A3 (en) 2015-05-20
EP2158952A2 (en) 2010-03-03
US20100022302A1 (en) 2010-01-28
EP2158952B1 (en) 2019-06-19
JP2010029393A (ja) 2010-02-12

Similar Documents

Publication Publication Date Title
JP5745204B2 (ja) プログラム、情報記憶媒体及びゲーム機
JP5283150B2 (ja) プログラム、ゲーム機、及びゲームシステム
JP5558733B2 (ja) プログラム、情報記憶媒体、及びゲームシステム
JP2013127683A (ja) プログラム、情報記憶媒体、端末、サーバ及びネットワークシステム
JP2008225985A (ja) 画像認識システム
JP2013063296A (ja) プログラム及びゲームシステム
JP5474391B2 (ja) プログラム、情報記憶媒体、ゲーム機、及びゲームシステム
JP5995304B2 (ja) プログラム、情報記憶媒体、端末及びサーバ
US8484280B2 (en) Program, computer terminal, and command execution method
JP2011096018A (ja) プログラム、情報記憶媒体、端末及びネットワークシステム
JP5514147B2 (ja) プログラム、情報記憶媒体、サーバ、端末及びネットワークシステム
JP2011053737A (ja) プログラム、情報記憶媒体及び画像生成装置
JP4743770B2 (ja) 画像生成システム、プログラム、及び情報記憶媒体
JP5111951B2 (ja) プログラム、情報記憶媒体、ゲーム機及びゲームシステム
JP5259118B2 (ja) プログラム、情報記憶媒体、ゲーム機及びゲームシステム
JP2007272388A (ja) プログラム、情報記録媒体および画像生成システム
JP2005209217A (ja) ゲームシステム及び情報記憶媒体
JP5260122B2 (ja) ゲームシステム
JP2010134798A (ja) プログラム、情報記憶媒体、ゲーム装置、及びゲームシステム
JP5111950B2 (ja) プログラム、情報記憶媒体、ゲーム機及びゲームシステム
JP2001283244A (ja) 3次元画像合成装置及び方法、情報記憶媒体、プログラム配信装置及び方法
JP3686978B2 (ja) 3次元画像合成装置並びに方法及び情報記憶媒体
JP4508517B2 (ja) 3次元画像合成装置並びに方法及び情報記憶媒体
JP2010231364A (ja) 画像生成システム、プログラム及び情報記憶媒体
JP2009140371A (ja) プログラム、情報記憶媒体、画像生成システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140502

RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20140619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150401

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150501

R150 Certificate of patent or registration of utility model

Ref document number: 5745204

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250