通信ゲームプログラムおよび通信ゲームシステム
【課題】ネットワークを介して他のゲーム装置において操作されるオブジェクトの位置の予測を、別のゲーム装置上でより確実に行うことができる通信ゲームシステムおよび通信ゲームプログラムを提供する。
【解決手段】ゲーム装置は、予測用データをネットワークを介して他のゲーム装置から受信する。予測用データは、他のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む。ゲーム装置は、受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点における前記オブジェクトの予測位置を算出する。さらに、予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する。
【解決手段】ゲーム装置は、予測用データをネットワークを介して他のゲーム装置から受信する。予測用データは、他のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む。ゲーム装置は、受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点における前記オブジェクトの予測位置を算出する。さらに、予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信ゲームプログラムおよび通信ゲームシステムに関し、より特定的には、各ゲーム装置を用いてそれぞれ操作される複数のオブジェクトが登場するゲームを実行するための通信ゲームプログラムおよび通信ゲームシステムに関する。
【背景技術】
【0002】
従来、複数のゲーム装置をネットワークを介して接続することによって、同じ内容のゲームを複数人のプレイヤでプレイするゲームシステムがよく知られている。特に、昨今ではネットワークロールプレイングゲーム(以下ネットワークRPGとする)が広くプレイされるようになっている。ネットワークRPGでは、サーバを介して、あるいはピア・ツー・ピアで、複数のプレイヤが同じ内容のゲームをプレイすることができる。
【0003】
このようなネットワークゲームにおいて、各プレイヤが1つずつのゲーム装置を用いてそれぞれのオブジェクトを操作する場合、各ゲーム装置は、自機を用いて操作されるオブジェクトに関するデータを他のゲーム装置に対して送信する。オブジェクトに関するデータは、例えば、オブジェクトのゲーム空間における位置を示す位置データ等である。当該他のゲーム装置は、受信したオブジェクトデータに基づいて各オブジェクトの位置や動作等を決定する。ここで、ネットワークを介したゲームシステムにおいては、ゲーム装置間での通信に遅延が生じることが常である。つまり、ある時点において位置データが送信側から送信されても、その位置データが受信側で受信されるときには、ネットワークを介することにより生じる遅延によって、その位置データにより示される位置からオブジェクトの位置が変化していることがある。受信された位置データにより示される情報が古い情報となるのである。
【0004】
ネットワークRPGでは、最終的に同じ結果が得られれば、ゲームの進行状況、すなわち、ある時点において各ゲーム装置において表示される画像の内容が多少違っていても支障はきたさない。したがって、ネットワークのトラフィックの増減や(無線LANの場合では)ノイズの影響等によって、データの送受信に要する時間にばらつきが出ても、大きな影響をきたすことはない。
【0005】
一方、レースゲームやアクションゲームのようなゲームをネットワークを介した通信システムで実行する場合には、他のゲーム装置からのデータを単に用いてオブジェクトの動作を決定するだけでは、ゲームの進行状況を正確に表現することができない。例えばレースゲームを例とし、送信されるデータがレースカーの位置を示す位置データである場合を考える。この場合、送信側のゲーム装置を用いて操作されるレースカーの位置データが受信側のゲーム装置で受信された時点では、当該レースカーは、その位置データにより示される位置に実際には存在しない。そのため、位置データにより示される位置にあるレースカーを表示すると、実際のゲーム状況を正確に反映することができないことになる。レースゲームやアクションゲームのようなゲームにおいては、正確なタイミングでゲーム操作を行うことや、より迅速にゲーム操作を行うことがプレイヤに要求される。そのため、このようなゲームにおいて実際のゲーム状況を正確に反映することができないことになると、各ゲーム装置間でゲームの処理内容が異なってしまい、ゲームが成立しなくなるという課題がある。
【0006】
特許文献1では、クライアント−サーバ型のネットワークを用いて上記課題を解決しようとしたゲームシステムが開示されている。このゲームシステムでは、各クライアントは、自機を用いて操作されるレースカーの所定時間後の将来の位置を予測する。そして、レースカーの現在位置の情報に加えて、上記所定時間後の時刻(将来時刻)の情報と、上記所定時間後におけるレースカーの予測位置の情報とをサーバに対して送信する。また、各クライアントは、自機以外の他のクライアントからサーバに送信された情報をサーバから受信する。そして、自機以外のクライアントを用いて操作されるレースカーの現在の位置を、上記予測位置および将来時刻に基づいて算出する。このように、レースカーの位置を予測することによって、通信による遅延による課題を解決することが考えられている。
【特許文献1】特開2004−105671号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献1のゲームシステムでは、受信側のゲーム装置は、送信側から送信されてくる予測位置および将来時刻等のデータを用いて、送信側のゲーム装置を用いて操作されるレースカーの位置を特定する。しかし、このデータが送信側から受信側へ送信される際に要する実際の時間を正確に検知することは困難である。例えば、通信に要する時間を予め測定しておいたとしても、ネットワークの接続環境(通信速度やノイズ)は時々刻々変化するので、実際には、測定した時間で送信側から受信側へデータが必ず送信されるとは限らない。そのため、上記データを送信側から受信側へ送信する場合、当該データにより示される将来時刻よりも遅い時刻に当該データが受信される可能性がある。このとき、受信側ではレースカーの位置を特定することができなくなってしまうという問題がある。以上のように、従来のゲームシステムでは、送信側のゲーム装置で予測を行うことから、予測結果を受信側へ送信する間に予測結果自体が古くなってしまい、予測結果が受信側で受信される時点では予測結果が意味をなさないものとなる可能性があった。なお、上記問題を防止するためには、現在時刻から将来時刻までの時間をできるだけ長くすることが考えられる。しかし、この時間を長くすると、予測の精度が悪くなり、正確な予測が行えなくなる。
【0008】
それ故、本発明の目的は、他のゲーム装置を用いて操作されるオブジェクトの予測をできる限り確実に行うとともに、正確な予測を行うことができる通信ゲームシステムおよび通信ゲームプログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0010】
第1の発明は、ネットワーク(1)を介して複数のゲーム装置(ゲーム装置10a〜10c)を接続してなる通信ゲームシステムに含まれるゲーム装置(10)のコンピュータ(CPUコア21等)において実行される通信ゲームプログラム(ゲームプログラム51)である。通信ゲームプログラムは、受信ステップ(S7)と、予測位置算出ステップ(S43,S44)と、位置決定ステップ(S45)とをコンピュータに実行させる。受信ステップは、他のゲーム装置によって操作されるオブジェクト(カート41〜43)のゲーム空間における位置を示す位置データ(64a)と、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データ(64c)とを少なくとも含む予測用データを当該他のゲーム装置から受信する。予測位置算出ステップは、受信ステップで受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点におけるオブジェクトの予測位置(図7に示す位置Qn+3)を算出する。位置決定ステップは、受信ステップで予測用データを受信した時点におけるオブジェクトのゲーム空間内における位置(図7に示す位置Rn+3)を予測位置に基づいて決定する。
【0011】
第2の発明においては、予測位置算出ステップは、受信ステップで予測用データが受信される度に実行されてもよい。このとき、位置決定ステップは、所定時間毎(1フレーム毎)に繰り返し実行される。位置決定ステップにおいては、予測位置算出ステップで算出された最新の予測位置(図7に示す位置Qn+3)と、前回に実行された位置決定ステップで決定されたオブジェクトの位置(図7に示す位置Rn+2)とに基づいて当該オブジェクトの位置(図7に示す位置Rn+3)が決定される。
【0012】
第3の発明においては、位置決定ステップにおいて、受信ステップで予測用データを受信した時点における当該オブジェクトの位置は、当該オブジェクトの直前の位置と予測位置との間の位置に決定されてもよい。
【0013】
第4の発明においては、位置決定ステップにおいて、受信ステップで予測用データを受信した時点における当該オブジェクトの位置は予測位置に決定されてもよい。
【0014】
第5の発明においては、予測位置算出ステップにおいて、受信ステップで受信した予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差(Δt)が算出され、当該予測用データを受信した時点における予測位置が当該時間差に基づいて算出されてもよい。
【0015】
第6の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点における当該オブジェクトの位置の変化度を示す変化度データ(速度データ64b)をさらに含んでいてもよい。このとき、予測位置算出ステップにおいては、受信ステップで受信した予測用データに含まれる位置データと時刻データと変化度データとに基づいて、所定の時点におけるオブジェクトの予測位置が算出される。
【0016】
第7の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点において行われたゲーム操作を示す操作データ(64d)をさらに含んでいてもよい。このとき、予測位置算出ステップにおいては、受信ステップで受信した予測用データに含まれる位置データと時刻データと操作データとに基づいて、所定の時点におけるオブジェクトの予測位置が算出される。
【0017】
第8の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点における当該オブジェクトの姿勢を示す姿勢データをさらに含んでいてもよい。このとき、受信ステップで受信した予測用データに含まれる姿勢データに基づいて、所定の時点におけるオブジェクトの姿勢を算出する姿勢算出ステップをコンピュータにさらに実行させる。
【0018】
第9の発明においては、通信ゲームプログラムは、ゲームシステムに含まれる各ゲーム装置間で開始タイミングをそろえて所定のイベント(レースゲーム)を開始するイベント開始ステップをさらに実行させてもよい。このとき、時刻データは、所定のイベントが開始された時点からの経過時間を示す。
【0019】
第10の発明は、ネットワーク(1)を介して第1および第2のゲーム装置を接続してなる通信ゲームシステムである。第1のゲーム装置(図5に示す第2ゲーム装置10b)は、第1のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを第2のゲーム装置(図5に示す第1ゲーム装置10a)へ送信する送信手段(CPUコア21、データ送信プログラム53)を備えている。第2のゲーム装置は、受信手段(CPUコア21、)と、予測位置算出手段と(CPUコア21、予測位置算出プログラム55)、位置決定手段(CPUコア21、位置決定プログラム56)とを備えている。受信手段は、第1のゲーム装置から送信されてくる予測用データを受信する。予測位置算出手段は、受信手段によって受信された予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点におけるオブジェクトの予測位置を算出する。位置決定手段は、受信手段によって予測用データを受信した時点におけるオブジェクトのゲーム空間内における位置を予測位置に基づいて決定する。
【発明の効果】
【0020】
第1の発明によれば、送信側のゲーム装置(他のゲーム装置)からは予測用データが送信され、受信側のゲーム装置において予測位置算出ステップが実行されることによって受信側のゲーム装置で予測位置が算出される。送信側で予測を行う場合には、予測結果が受信側に届いた時点で古くなり、予測結果を用いることができなくなる可能性があったのに対して、第1の発明では、受信側で予測を行うようにするので、予測結果が無駄になることがなく、確実に予測を行うことができる。
【0021】
第2の発明によれば、オブジェクトの位置は、予測位置と前回におけるオブジェクトの位置とに基づいて決定される。つまり、予測位置がそのままオブジェクトの新たな位置に決定されるわけではない。ここで、予測位置がそのままオブジェクトの新たな位置に決定される場合には、予測用データが送信されてきたときにのみオブジェクトの位置が変更されることとなる。オブジェクトは、所定時間毎に移動するのではなく、予測用データが送信されてきたときにのみ移動するように表示されるので、オブジェクトの移動が滑らかでなくなり、オブジェクトが移動する様子が不自然に見えてしまう。これに対して、第2の発明によれば、予測用データが所定時間毎に受信されない場合であっても、オブジェクトの位置を所定時間毎に変化させることができるので、オブジェクトが移動する様子を自然に表現することができる。
【0022】
第3の発明によれば、オブジェクトの新たな位置は、予測位置とオブジェクトの直前の位置との間となる。したがって、予測位置が急激に変化した場合であっても、その変化を緩和することができ、オブジェクトの移動を滑らかにすることができる。
【0023】
第4の発明によれば、オブジェクトの新たな位置を予測位置のみから容易に決定することができるので、オブジェクトの位置を決定する処理を簡易にすることができ、ゲーム装置のコンピュータの処理負担を軽減することができる。
【0024】
第5の発明によれば、予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差が算出される。そして、当該時間差に基づいて予測位置が算出される。これによれば、予測用データの送信に要した実際の遅延時間を考慮して予測位置が算出されるので、予測位置をより正確に算出することができる。また、上記時間差は実際の遅延時間であり、予め測定しておいた遅延時間を用いて予測位置を算出するよりも予測位置を正確に算出することができる。
【0025】
第6の発明によれば、オブジェクトの速度データを用いて予測位置を算出することによって、予測位置をより正確に算出することができる。
【0026】
第7の発明によれば、オブジェクトに対するゲーム操作を考慮して予測位置を算出することができるので、予測位置をより正確に算出することができる。
【0027】
第8の発明によれば、オブジェクトの位置のみならず、オブジェクトの姿勢についても予測を行うことによって、オブジェクトの姿勢を実際の姿勢に近いものにすることができる。
【0028】
第9の発明によれば、各ゲーム装置間でほぼ一致した時点を基準として経過時間を表すことができるので、時刻データに基づいて算出される予測位置の算出処理をより正確に行うことができる。
【発明を実施するための最良の形態】
【0029】
以下、図面を参照して、本発明の一実施形態に係るゲームシステムに含まれるゲーム装置の構成について説明する。図1は、本実施形態に係るゲームシステムの構成を示すブロック図である。図1に示すように、本ゲームシステムは、複数の携帯ゲーム装置(以下、単に「ゲーム装置」と呼ぶ。)10a〜10cがインターネット等のネットワーク1を介して接続される構成である。本実施形態では、例えば3つのゲーム装置10a〜10cによってゲームシステムが構成され、3人のプレイヤがゲーム装置を1つずつ使用するものとする。各ゲーム装置10a〜10cは、無線でネットワーク1に接続可能であるが、有線で接続されるものであってもよい。また各ゲーム装置は携帯ゲーム装置ではなく、据置型ゲーム装置であってももちろん構わない。以下においては、3つのゲーム装置10a〜10cを、第1ゲーム装置10a、第2ゲーム装置10b、および第3ゲーム装置10cと呼ぶ。なお、3つのゲーム装置を特に区別する必要がない場合は、第1〜第3ゲーム装置10a〜10cを単にゲーム装置10と記載することもある。
【0030】
まず、ゲーム装置の構成について説明する。図2は、ゲームシステムに含まれるゲーム装置10の外観図である。本実施形態では、第1〜第3ゲーム装置10a〜10cは全て同じ構成であり、全て図1に示す構成である。
【0031】
以下、ゲーム装置の構成および動作を説明する。図2は、本実施形態に係るゲームシステムに含まれるゲーム装置の外観図である。図2において、ゲーム装置10は、第1LCD(Liquid Crystal Display:液晶表示装置)11および第2LCD12を含む。ハウジング13は上側ハウジング13aと下側ハウジング13bとによって構成されており、第1LCD11は上側ハウジング13aに収納され、第2LCD12は下側ハウジング13bに収納される。第1LCD11および第2LCD12の解像度はいずれも256dot×192dotである。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【0032】
上側ハウジング13aには、後述する1対のスピーカ(図3の30a、30b)からの音を外部に放出するための音抜き孔18a、18bが形成されている。
【0033】
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、Lボタン14LおよびRボタン14Rが設けられている。また、さらなる入力装置として、第2LCD12の画面上にタッチパネル15が装着されている。また、下側ハウジング13bには、電源スイッチ19や、メモリカード17やスティック16を収納するための挿入口も設けられている。
【0034】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。本実施形態では、タッチパネル15として、第2LCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2LCD12の解像度が一致している必要はない。
【0035】
メモリカード17はゲームプログラムを記録した記録媒体であり、下部ハウジング13bに設けられた挿入口に着脱自在に装着される。
【0036】
次に、図3を参照してゲーム装置10の内部構成を説明する。図3において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24、およびLCDコントローラ31が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM17aと、バックアップデータを書き換え可能に記憶するRAM17bを搭載する。メモリカード17のROM17aに記憶されたゲームプログラムはRAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、CPUコア21がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。I/F回路25には、タッチパネル15、右スピーカ30a、左スピーカ30b、無線通信部33、および図2の十字スイッチ14aやAボタン14d等からなる操作スイッチ部14が接続される。右スピーカ30aと左スピーカ30bは、音抜き孔18a、18bの内側にそれぞれ配置される。
【0037】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されているゲーム画像を生成するためのデータに基づいて第1のゲーム画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2のゲーム画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29はLCDコントローラ31に接続されている。
【0038】
LCDコントローラ31はレジスタ32を含む。レジスタ32はCPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1LCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2LCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2LCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1LCD11に出力する。
【0039】
無線通信部33は、I/F回路25と接続されている。無線通信部33は、他のゲーム装置の無線通信部33との間で、ゲーム処理に利用されるデータやその他のデータを送受信する機能を有しており、一例としてIEEE802.11の無線LAN規格に則った無線通信機能を提供する。無線通信部33は、受信したデータをCPUコア21に出力する。また、無線通信部33は、CPUコア21から指示されたデータを他のゲーム装置へ送信する。なお、TCP/IP(Transmission Control Protocol/Internet Protocol)等のプロトコルや所定のブラウザを無線通信部33やゲーム装置10内の記憶部に実装することによって、ゲーム装置10は、無線通信部33を介してインターネット等のネットワークとの接続が可能となる。そして、ゲーム装置10は、ネットワークを介して他のゲーム装置と通信を行うことによって、複数のゲーム装置で同じゲームを実行することが可能となる。また、ゲーム装置10は、ネットワーク上で公開されている文書や画像等のデータを第1LCD11および第2LCD12で閲覧したり、ネットワーク上で公開されているゲームデータを用いてゲーム処理を実行したりすることもできる。
【0040】
なお、上記のようなゲーム装置10の構成は単なる一例に過ぎず、本発明は、ネットワークを介して他の装置と通信可能な任意のコンピュータシステムに適用することができる。また、本発明のゲームプログラムは、メモリカード17などの外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよいし、さらにはコンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。
【0041】
以下、本実施形態においてゲーム装置10を用いて行われるゲームについて説明する。図4は、本実施形態におけるゲームのゲーム画面を示す図である。ゲーム装置10の第2LCD12の画面には、当該ゲーム装置のプレイヤによって操作されるオブジェクトであるカート(レースカー)41の他、他のゲーム装置のプレイヤによって操作されるオブジェクトであるカート42および43が表示される。本ゲームはレースゲームであり、各プレイヤは操作ゲームオブジェクトとしてのカートを操作してカートがゴールする順位を競って遊ぶ。以下では、第1ゲーム装置10aを用いて操作されるカート41を「第1カート」と呼び、第2ゲーム装置10bを用いて操作されるカート42を「第2カート」と呼び、第3ゲーム装置10cを用いて操作されるカート43を「第3カート」と呼ぶ。なお、ゲーム装置を用いて操作されるカートとは、そのゲーム装置に設けられた操作スイッチ部14に対する操作に応じて動作が制御されるカートのことである。
【0042】
図4に示したようなレースゲームでは、カートがゴールする順位を競うというゲームの性質上、各ゲーム装置10a〜10cを用いて操作される各カートの現在位置をできるだけ正確に表示する必要がある。ここで、ゲーム装置10は、自機を用いて操作されるカート(自機カート)については正確な現在位置を算出することができるものの、自機以外の他のゲーム装置を用いて操作されるカート(他機カート)の現在位置については、自機と他のゲーム装置との間で通信の遅延があるために、現在位置のデータをリアルタイムに取得することはできない。そのため、ゲーム装置10は、他機カートの現在位置を正確に予測する必要がある。以下では、他機カートの現在位置を予測する処理について主に説明する。
【0043】
まず、本実施形態に係るゲームシステムにおいて実行される予測処理の概要を、図5〜図8を用いて説明する。図5〜図8においては、第2ゲーム装置10bを用いて操作されるカート(第2カート)の位置を、第1ゲーム装置10aにおいて予測する場合を例として説明する。なお、第1ゲーム装置10aが第3カートの位置を予測する場合、および、第2ゲーム装置10bおよび第3ゲーム装置10cが自機以外の他のゲーム装置のカートの位置を予測する場合の予測処理は、図5〜図8に示す場合と同様である。
【0044】
まず、予測用データの送信方法について図5を用いて説明する。予測用データとは、受信側のゲーム装置が送信側のゲーム装置を用いて操作されるカートの位置を予測するために用いるデータである。予測用データの詳細な内容については後述する。図5は、第2ゲーム装置10bが他のゲーム装置へ予測用データを送信する処理を示す図である。なお、図5においては、第2ゲーム装置10bが他のゲーム装置10aおよび10cに予測用データを送信する場合のみを示し、他のゲーム装置10aおよび10cから予測用データが送信される場合については図示していない。
【0045】
また、本実施形態においては、各ゲーム装置10a〜10cは、レースゲームが開始されてからの経過時間を計測し、ゲーム中における時刻をこの経過時間によって表す。また、経過時間は、フレーム時間(1/60秒)を単位として計測される。すなわち、各ゲーム装置10a〜10cは、1/60秒単位で時間をカウントするタイマーを内蔵し、このタイマーの値を用いて経過時間を測定する。図5は、nフレーム時間(nは任意の自然数)からn+5フレーム時間までの間において第2ゲーム装置10bが送信する予測用データが送受信されるタイミングを示している。
【0046】
図5に示すように、第2のゲーム装置10bは1フレーム毎に予測用データを送信する。第2のゲーム装置10bは、時刻t=n、n+2、n+4の時点で第1ゲーム装置10aへ予測用データを送信し、時刻t=n+1、n+3、n+5の時点で第3ゲーム装置10cへ予測用データを送信する。このように、第2ゲーム装置10bは、1フレームにつき1つのゲーム装置へ予測用データを送信し、かつ、他のゲーム装置へ順番に予測用データを送信する。なお、他の実施形態においては、ゲーム装置は、1フレームにつき他の全てのゲーム装置へ予測用データを送信するようにしてもよい。
【0047】
図5において、時刻t=nの時点において第2ゲーム装置10bから送信された予測用データは、3フレーム時間後、すなわち、時刻t=n+3の時点において第1ゲーム装置10aで受信される。予測用データには、それが送信された時点におけるカートの状態(位置や速度等)、および、当該時点を示すデータ等が含まれている。つまり、第1ゲーム装置10aは、時刻t=n+3の時点において予測用データを受信することによって、3フレーム前、すなわち、時刻t=nの時点における第2カートの状態を知ることができる。第1ゲーム装置10aは、この予測用データを用いて、時刻t=n+3の時点における第2カートの位置を予測する。このときの予測処理については図7を用いて後述する。
【0048】
なお、時刻t=n+2の時点において第2ゲーム装置10bから送信された予測用データは、4フレーム時間後、すなわち、時刻t=n+6の時点において第1ゲーム装置10aで受信される。時刻t=n+4の時点において第2ゲーム装置10bから送信された予測用データは、3フレーム時間後、すなわち、時刻t=n+7の時点において第1ゲーム装置10aで受信される。このように、予測用データが送信されてから受信側で受信されるまでの時間は、必ずしも一定とはならない。また、時刻t=n+1の時点において第2ゲーム装置10bから送信された予測用データは、5フレーム時間後、すなわち、時刻t=n+6の時点において第3ゲーム装置10cで受信される。このように、予測用データが送信されてから受信側で受信されるまでの時間は、データを送受信するゲーム装置によっても異なり、一定とはならない。
【0049】
次に、図6〜図8を用いて、予測処理の詳細について説明する。ここでは、図5に示すタイミングで予測用データが送信された場合における予測処理を説明する。図6〜図8は、予測処理を説明するための図である。図6〜図8において、縦軸は時刻t(経過時間)を示し、横軸は第2カートの位置を示す。なお、図6〜図8では、説明を簡単にする目的で、第2カートの位置を1次元(例えばレースゲームのゲーム空間xyz軸におけるx軸上の位置)として説明するが、2次元(例えばxy軸上の位置など)および3次元の場合も1次元の場合と同様に考えることができる。また、図6〜図8において、丸で示される位置は、第2カートの実際の位置、すなわち、第2ゲーム装置10bで算出された第2カートの位置である。四角で示される位置は、予測用データから第1ゲーム装置10aによって算出される予測位置である。三角で示される位置は、第1ゲーム装置10aにおいて決定される第2カートの位置である。また、図6は、第2カートが実際に移動する様子を示す図である。以下では、図6に示すように第2カートが移動した場合において第1ゲーム装置10aで実行される予測処理を、図7および図8を用いて説明する。
【0050】
図7は、時刻t=n+3の時点で実行される予測処理を説明するための図である。図7では、時刻t=n+2の時点においては第2カートの位置が位置Rn+2と決定されたものとする。図5に示したように、第1ゲーム装置10aは、時刻t=nの時点における第2カートの位置を示すデータを含む予測用データを時刻t=n+3の時点において受信する。このとき、第1ゲーム装置10aは、時刻t=n+3の時点における第2カートの予測位置Qn+3を予測用データを用いて算出する。なお、本実施形態における予測位置の算出方法の詳細は後述するが、予測位置の算出方法はどのような方法であってもよい。
【0051】
予測位置Qn+3を算出すると、第1ゲーム装置10aは、直前のフレームにおける第2カートの位置(時刻t=n+2における位置)Rn+2と予測位置Qn+3とに基づいて、時刻t=n+3の時点における第2カートの位置Rn+3を決定する。具体的には、位置Rn+3は、直前の位置Rn+2と予測位置Qn+3とをk:1−k(kは0<k<1)に内分する位置に決定される。なお、このkの値は、各ゲーム装置間における通信の遅延の度合等に応じて適宜設定されることが好ましい。このように、本実施形態においては、第2カートの新たな位置は前回のフレームにおける位置と予測位置との間の位置に決定される。
【0052】
図8は、時刻t=n〜n+6の間における第2カートの移動の様子を示す図である。なお、図8において、時刻t=nからn+2までの第2カートの位置Rn、Rn+1、Rn+2は、位置Rn+3〜位置Rn+6を決定する方法(後述する)と同様の方法で予め決定されているものとする。図8において、時刻t=n+3の時点における第2カートの位置Rn+3の決定方法は、図7に示した通りである。
【0053】
次に、時刻t=n+4の時点における第2カートの位置Rn+4の決定方法について説明する。図5に示したように、時刻t=n+4の時点においては第1ゲーム装置10aでは予測用データが受信されない。このとき、第1ゲーム装置10aは、それまでに受信した予測用データのうちで最新の予測データを用いて算出された予測位置に基づいて現在位置を決定する。具体的には、時刻t=n+4の時点における第2カートの位置Rn+4は、直前のフレームにおける第2カートの位置Rn+3と、最新の予測データを用いて算出された予測位置Qn+3とをk:1−k(kは0<k<1)に内分する位置に決定される。
【0054】
時刻t=n+5の時点においては、第2ゲーム装置10bからの新たな予測用データが第1ゲーム装置10aで受信される。この予測用データは、時刻t=n+2の時点における第2カートの実際の位置Pn+2である。第1ゲーム装置10aは、予測用データに基づいて新たな予測位置Qn+5を算出する。さらに、時刻t=n+3の場合と同様の方法で、時刻t=n+5の時点における第2カートの位置Rn+5を、前回のフレームの位置Rn+4と上記予測位置Qn+5とをk:1−k(kは0<k<1)に内分する位置に決定する。
【0055】
時刻t=n+6の時点においても時刻t=n+5の場合と同様、第2ゲーム装置10bからの新たな予測用データが第1ゲーム装置10aで受信される。したがって、第1ゲーム装置10aは、時刻t=n+5の場合と同様の処理を実行することによって時刻t=n+6の時点における第2カートの位置Rn+6を決定する。すなわち、新たに受信した予測用データに基づいて予測位置Qn+6を算出し、当該予測位置Qn+6と前回のフレームの位置Rn+5とに基づいて位置Rn+6を決定する。
【0056】
なお、時刻t=n〜n+2の時点においても、時刻t=n+3〜n+6の場合と同様に第2カートの位置が決定される。すなわち、時刻t=n〜n+2の時点においては、予測位置が算出されているものとし、当該予測位置と前回のフレームにおける位置とに基づいて今回のフレームにおける位置が決定される。
【0057】
以上のように、本実施形態によれば、送信側のゲーム装置は、自機のカートの位置等を示すデータを送信し、当該データを受信した受信側のゲーム装置で予測を行う。ここで、送信側で予測を行う場合には、予測結果が受信側に届いた時点で古くなり、予測結果を用いることができなくなるという問題があった。これに対して、本実施形態によれば、受信側で予測を行うようにしたことによって、送信側で予測を行う場合の問題点を解消することができ、確実に予測を行うことができる。
【0058】
また、本実施形態によれば、予測位置と前回のフレームにおける位置とに基づいてカートの現在位置を決定している。すなわち、予測位置と前回のフレームにおける位置との間の位置を現在位置に決定するのである。ここで、予測位置をそのまま現在位置とする場合を考える。この場合、予測用データが受信されなかったフレームにおいては、新たな予測位置が算出されないため、予測位置が前回のフレームと同じになることから現在位置も前回のフレームと同じ位置になってしまう。予測用データを受信しなかったフレームでは他機カートが移動しないので、他機カートは数フレームに1回しか移動しないこととなり、他機カートの移動が滑らかに表示されない。これによって、他機カートが移動する様子が不自然に表示されてしまうことになる。
【0059】
そこで、本実施形態では、予測用データに基づいて算出される予測位置をそのままカートの現在位置とするのではなく、予測位置と前回のフレームにおける位置とに基づいて現在位置を決定している(図8における時刻t=n+4の場合を参照)。これによって、予測用データが受信されなかったフレームにおいてもカートの現在位置が前のフレームの位置と異なるので、予測用データの受信の有無とは無関係にカートは毎フレーム移動する。したがって、カートの移動の様子を自然に表現することができる。
【0060】
次に、本実施形態に係るゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置10のRAM24に記憶される主なデータを示す図である。図9に示すように、RAM24には、ゲームプログラム51およびゲームデータ61が記憶される。
【0061】
ゲームプログラム51には、経過時間カウントプログラム52、データ送信プログラム53、データ受信プログラム54、予測位置算出プログラム55、位置決定プログラム56、および開始タイミング決定プログラム57が含まれる。経過時間カウントプログラム52は、ゲーム中における所定のイベントが開始されてからの経過時間を測定する処理を実行するためのプログラムである。本実施形態においては、所定のイベントとは、レースゲームをスタートすることである。データ送信プログラム53は、上記予測用データを他のゲーム装置へ送信する処理を実行するためのプログラムである。データ受信プログラム54は、他のゲーム装置からの予測用データを受信して自機に記憶させる処理を実行するためのプログラムである。予測位置算出プログラム55は、受信された予測用データに含まれるデータのうち、少なくとも位置データと時刻データとに基づいて、当該予測用データを受信した時点におけるオブジェクト(カート)の予測位置を算出する処理を実行するためのプログラムである。位置決定プログラム56は、予測用データを受信した時点におけるオブジェクト(カート)のゲーム空間内における位置を予測位置に基づいて決定する処理を実行するためのプログラムである。開始タイミング決定プログラム57は、各ゲーム装置10a〜10cの間で開始タイミングをそろえて上記所定のイベントを開始する処理を実行するためのプログラムである。なお、ゲームプログラム51には、上記の他、レースゲームを実行するために必要な種々のプログラム等が含まれる。
【0062】
一方、ゲームデータ61には、操作データ62、時刻データ63、送信予測用データ64、受信予測用データ65、オブジェクトデータ66、および予測位置データ70が含まれる。なお、RAM24には、図9に示すデータの他、後述するカウンタiの値や、レースコースの地形データや画像データ等、レースゲームに必要なデータが記憶される。なお、図9では、第1ゲーム装置10aのRAM24に記憶されるデータを例として説明するが、他のゲーム装置10bおよび10cにおいても同様のデータがRAM24に記憶される。
【0063】
操作データ62は、ゲーム装置10の操作スイッチ部14に対して行われたゲーム操作に関する情報を示すデータである。操作データ62は、例えば、操作スイッチ部14の各スイッチの操作状態(各スイッチが押下されたか否か)を示すデータである。ここでは、操作データ62は、カートを加速するためのボタン(例えばAボタン14d)が押下されたか否かを示すデータであるとする。なお、他の実施形態においては、操作データ62には、カートの進行方向を変化させるボタン(例えば十字キー14a)の操作状態を示すデータが含まれていてもよい。
【0064】
時刻データ63は、ゲーム中における時刻を示すデータである。本実施形態では、時刻データ63は、レースが開始されてからの経過時間をフレーム時間単位で示すデータである。時刻データ63は、レースが開始されてから1フレーム経過する度に更新される。
【0065】
送信予測用データ64は、予測用データとしてゲーム装置10から他のゲーム装置へ送信されるデータである。送信予測用データ64には、位置データ64a、速度データ64b、時刻データ64c、および操作データ64cが含まれる。位置データ64aは、ゲーム装置10を用いて操作されるカート(自機カート)の位置を示すデータである。速度データ64bは、自機カートの速度を示すデータである。本実施形態では、カートの速度は、速度の大きさ(速さ)を示すスカラー値と、速度の方向を示す角度(ゲーム空間における所定方向を基準とした角度)の値とで表されるものとする。すなわち、速度データは、速さを示すスカラー値のデータと、速度の方向を示す角度のデータとからなる。時刻データ64cは、その送信予測用データ64が作成された時刻を示すデータである。操作データ64dは、時刻データ64cにより示される時刻における操作データ62である。つまり、送信予測用データ64が生成された時点では操作データ64dと操作データ62とは同じ内容である。
【0066】
受信予測用データ65は、他のゲーム装置からゲーム装置10へ送信されてきた予測用データである。ゲーム装置10は、受信予測用データ65を用いて他機カートの予測位置を算出する。受信予測用データ65は、他のゲーム装置の数と同数の予測用データを含む。本実施形態では、ゲームシステムは3つのゲーム装置で構成されるので、受信予測用データ65には、第1予測用データ65aおよび第2予測用データ65bが含まれる。第1ゲーム装置10aにおいては、第1予測用データ65aは、第2ゲーム装置10bから送信されてくる予測用データであり、第2予測用データ65bは、第3ゲーム装置10cから送信されてくる予測用データである。受信予測用データ65の内容は、他のゲーム装置から予測用データを受信する度に更新される。
【0067】
オブジェクトデータ66は、レースゲームに登場するオブジェクト(カート)に関する情報を示すデータである。オブジェクトデータ66には、プレイヤオブジェクトデータ67、第1他オブジェクトデータ68、および第2他オブジェクトデータ69が含まれる。
【0068】
プレイヤオブジェクトデータ67は、ゲーム装置10を用いて操作されるオブジェクトであるカート(自機カート)に関する情報を示すデータである。プレイヤオブジェクトデータ67には、位置データ67aおよび速度データ67bが含まれる。位置データ67aは、自機カートの位置を示すデータである。速度データ67bは、自機カートの速度を示すデータである。位置データ67aおよび速度データ67bは、送信予測用データに含まれて他のゲーム装置へ送信される。
【0069】
第1他オブジェクトデータ68および第2他オブジェクトデータ69は、ゲーム装置10以外の他のゲーム装置を用いて操作されるオブジェクトであるカート(他機カート)に関する情報を示すデータである。第1ゲーム装置10aにおいては、第1他オブジェクトデータ68は、第2カートに関する情報を示すデータであり、第2他オブジェクトデータ69は、第3カートに関する情報を示すデータである。第1他オブジェクトデータ68には、位置データ68aが含まれる。位置データ68aは、第1他オブジェクト(第1ゲーム装置10aにおいては第2カート)の位置を示すデータである。なお、図示していないが、第2他オブジェクトデータ69には第1他オブジェクトデータ68と同様、第2他オブジェクト(第1ゲーム装置10aにおいては第3カート)の位置を示す位置データが含まれる。
【0070】
予測位置データ70は、予測用データを用いて算出される上記予測位置を示すデータである。予測位置データ70には、第1予測位置データ70aおよび第2予測位置データ70bが含まれる。第1予測位置データ70aは、第1他オブジェクトの予測位置を示すデータであり、第2予測位置データ70bは、第2他オブジェクトの予測位置を示すデータである。
【0071】
次に、ゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を、図10〜図13を用いて説明する。図10は、ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置10の電源が投入されると、ゲーム装置10のCPUコア21は、図示しないブートROMに記憶されている起動プログラムを実行し、RAM24等の各ユニットが初期化される。そして、メモリカード17に格納されたゲームプログラムがRAM24に読み込まれ、CPUコア21によって当該ゲームプログラムの実行が開始される。図10に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図10〜図13においては、ゲーム処理のうち、他機カートの現在位置を決定する処理について詳細に示し、本願発明と関連しない他のゲーム処理については詳細な説明を省略する。
【0072】
図10のステップS1において、まず、初期設定処理が実行される。初期設定処理においては、CPUコア21は、ゲームシステムに含まれるゲーム装置を用いて操作されるカートの数を設定したり、各ゲーム装置に対して固有のIDを設定したりする。また、自機以外の他のゲーム装置に対して番号を設定する。ここでは、第1ゲーム装置10aを例として説明するものとすると、第1ゲーム装置10aにおいて、第2ゲーム装置10bは上記番号が“G1”に設定され、第3ゲーム装置10cは上記番号が“G2”に設定される。また、初期設定処理においては、上記番号を示すカウンタi(iは自然数)の値として“1”がRAM24に記憶され、他のゲーム装置の台数j(本実施形態ではj=2)がRAM24に記憶される。また、初期設定処理において、レースゲームのゲーム空間が構築され、自機カートおよび他機カートがレースコース内の初期位置に配置される。
【0073】
続くステップS2において、開始タイミング決定プログラム57が実行されることによって、開始タイミング決定処理が実行される。開始タイミング決定処理は、レースを開始するタイミングを各ゲーム装置間で一致させるための処理である。この処理は、レースを開始するタイミングを各ゲーム装置間である程度一致させることができる方法であればどのような方法であってもよい。例えば、各ゲーム装置間の通信における遅延時間を測定し、測定した遅延時間を考慮して所定のゲーム装置から他のゲーム装置に対してレース開始までの残り時間を通知する。なお、ステップS2の最後に、CPUコア21は、RAM24に記憶されている時刻データ63の内容を“0フレーム時間”に設定する。
【0074】
上記ステップS2によって各ゲーム装置においてほぼ一斉にレースが開始される、すなわち、ステップS3〜S11の処理ループの実行が開始される。ステップS3〜S11の処理が繰り返されることによって、プレイヤの操作に応じてカートが移動し、レースゲームが進行する。なお、ステップS3〜S11の処理ループは、1フレームにつき1回実行される。
【0075】
ステップS3においては、経過時間カウントプログラム52が実行されることによって、経過時間がカウントされる。すなわち、CPUコア21は、時刻データ63により示される値を、その値に1を加算した値に更新する。続くステップS4において、操作データが取得される。CPUコア21は、操作スイッチ部14の各スイッチの操作状態を示すデータを操作スイッチ部14から取得する。このとき、本実施形態では、カートを加速するためのボタン(例えばAボタン14d)が押下されたか否かを示すデータが操作データ62としてRAM24に記憶される。
【0076】
ステップS5において、予測用データを生成するための予測用データ生成処理が実行される。以下、図11を用いて予測用データ生成処理の詳細を説明する。
【0077】
図11は、図10に示すステップS5の詳細な処理の流れを示すフローチャートである。予測用データ生成処理においては、まずステップS21において、ステップS4で取得された操作データに基づいてプレイヤオブジェクト(自機カート)の加速度が算出される。加速度は、カートを加速するためのボタン(例えばAボタン14d)の押下状態に基づいて算出される。例えば、CPUコア21は、当該ボタンが押下されていれば加速度の値を予め定められた所定値に設定し、当該ボタンが押下されていなければ加速度の値を0に設定する。また、他の例では、当該ボタンが押下されている長さに応じて加速度の値を算出するようにしてもよいし、当該ボタンがアナログ量を検知することが可能であれば、検知されたアナログ量に応じて加速度の値を算出してもよい。
【0078】
続くステップS22において、ステップS21で算出された加速度に基づいて自機カートの速度が算出される。なお、速度の算出方法はどのような方法であってもよいが、本実施形態では例えば以下の方法で算出する。まず、本実施形態では、上述のように、自機カートの速度は、速度の大きさ(速さ)を示すスカラー値と、速度の方向を示す角度の値とで表される。今回のフレームにおける速さは、前回のフレームにおける速さと上記加速度(スカラー値)とを加算することによって得られる。また、今回のフレームにおける速度の方向は、前回のフレームにおける方向と、十字キー14aの左右方向のキーの押下状態とに基づいて算出される。ステップS22で算出された自機カートの速度を示すデータは、速度データ67bとしてRAM24に記憶される。
【0079】
続くステップS23において、自機カートの新たな位置が算出される。自機カートの位置は、ステップS22で算出された速度と、前回のフレームにおける位置とに基づいて算出される。すなわち、前回のフレームにおける位置から、当該速度の方向に当該速度の大きさだけ離れた位置が自機カートの新たな位置となる。ステップS23において算出された位置のデータは位置データ67aとしてRAM24に記憶される。
【0080】
続くステップS24において、予測用データが生成される。すなわち、CPUコア21は、ステップS22で得られた速度データ67bと、ステップS23で得られた位置データ67aと、現時点でRAM24に記憶されている時刻データ63と、操作データ62とを送信予測用データ64としてRAM24に記憶する。RAM24に記憶された送信予測用データ64は、以降のステップS6において他のゲーム装置へ送信されることとなる。以上のステップS24の後、CPUコア21は予測用データ生成処理を終了する。
【0081】
図10の説明に戻り、ステップS6において、データ送信プログラム53が実行されることによってデータ送信処理が実行される。データ送信処理は、ステップS5で生成された予測用データを他のゲーム装置へ送信するための処理である。以下、図12を用いてデータ送信処理の詳細を説明する。
【0082】
図12は、図10に示すステップS5の詳細な処理の流れを示すフローチャートである。データ送信処理においては、まずステップS31において、ステップS24で生成された予測用データがゲーム装置Giへ送信される。ここで、ゲーム装置Giとは、他のゲーム装置に対して設定される番号が“i”であるゲーム装置のことである。また、iは、上述したカウンタiの値である。例えば、RAM24に現在記憶されているカウンタiの値が“1”であれば、予測用データはゲーム装置G1に送信され、カウンタiの値が“2”であれば、予測用データはゲーム装置G2に送信される。
【0083】
ステップS32においては、CPUコア21は、RAM24に記憶されているカウンタiの値が、他のゲーム装置の台数j(本実施形態ではj=2)と等しいか否かを判定する。判定の結果、カウンタiの値がjと等しい場合、ステップS33の処理が実行される。すなわち、ステップS33において、カウンタiの値が“1”に設定される。一方、カウンタiの値がjと等しくない場合、ステップS34の処理が実行される。すなわち、ステップS34において、カウンタiの値が1だけインクリメントされる。ステップS33またはS34の後、CPUコア21はデータ送信処理を終了する。
【0084】
以上のステップS32〜S34の処理によって、次のフレームにおいては、今回のフレームで予測用データが送信されたゲーム装置とは異なるゲーム装置に予測用データが送信される。ステップS32〜S34の処理は、自機以外の他のゲーム装置が複数存在する場合に他のゲーム装置のそれぞれへ順番に予測用データを送信するための処理である。
【0085】
図10の説明に戻り、ステップS7において、データ受信プログラム54が実行されることによって、データ受信処理が実行される。具体的には、CPUコア21は、他のゲーム装置から予測用データを受信しているか否かをチェックする。そして、予測用データを受信した場合、受信した予測用データを受信データ65としてRAM24に記憶する。なお、予測用データは、送信元のゲーム装置毎に区別して記憶される。すなわち、第1ゲーム装置10aにおいては、第2ゲーム装置10bからの予測用データは、第1予測用データ65aとしてRAM24に更新して記憶され、第3ゲーム装置10cからの予測用データは、第2予測用データ65bとしてRAM24に更新して記憶される。なお、他のゲーム装置からの予測用データは、自機から送信する予測用データと同様、位置データ64a、速度データ64b、時刻データ64c、および操作データ64dを含む。
【0086】
ステップS8においては、他機カートの現在位置を算出するための位置算出処理が実行される。以下、図13を用いて位置算出処理の詳細を説明する。
【0087】
図13は、図10に示すステップS8の詳細な処理の流れを示すフローチャートである。位置算出処理においては、まずステップS41において、カウンタmの値が1に設定される。このカウンタmの値はRAM24に記憶される。続くステップS42において、CPUコア21は、今回のフレームにおけるステップS7においてゲーム装置Gmの予測用データが更新されたか否かを判定する。ここで、ゲーム装置Gmとは、他のゲーム装置に対して設定される番号が“m”であるゲーム装置のことである。また、mは、上述したカウンタmの値である。ステップS8において、例えば、RAM24に現在記憶されているカウンタmの値が“1”であれば、ゲーム装置G1の予測用データ(第1予測用データ)が更新されたか否かが判定され、カウンタmの値が“2”であれば、ゲーム装置G2の予測用データ(第2予測用データ)が更新されたか否かが判定される。判定の結果、ゲーム装置Gmの予測用データが更新されたと判定される場合、ステップS43の処理が実行される。一方、ゲーム装置Gmの予測用データが更新されたと判定される場合、ステップS43およびS44の処理が実行される。ゲーム装置Gmの予測用データが更新されていないと判定される場合、ステップS43およびS44の処理がスキップされ、ステップS45の処理が実行される。ステップS43およびS44の処理は、予測位置算出プログラム55によって実行される処理であり、予測用データに基づいて予測位置を算出する処理である。
【0088】
ステップS43においては、予測用データにより示される時刻と現在の時刻との時間差Δtが算出される。この予測用データは、ステップS8で新たに受信されたゲーム装置Gmからの予測用データである。具体的には、CPUコア21は、RAM24に記憶されている受信予測用データ65に含まれる時刻データにより示される時刻と、RAM24に記憶されている時刻データ63により示される時刻との差の時間を算出する。
【0089】
続くステップS44においては、ゲーム装置Gmを用いて操作されるカートの予測位置が算出される。カートの予測位置は、ステップS43で算出された時間差Δtと、予測用データに含まれる各データとを用いて算出される。なお、この予測用データは、ステップS8で新たに受信されたゲーム装置Gmからの予測用データである。本実施形態において、予測位置は、予測距離と予測方向とによって表される。予測距離とは、予測用データに含まれる位置データにより示される位置(基準位置。例えば図7に示す位置Pn)から予測位置(例えば図7に示す位置Qn+3)までの距離である。予測方向とは、基準位置から予測位置への方向である。
【0090】
予測距離Peは、予測用データに含まれる速度データにより示される速度の大きさVと、予測用データに含まれる操作データから算出される加速度aと、上記時間差Δtとに基づいて算出される。すなわち、CPUコア21は、次の式に従って距離Peを算出する。
Pe=V×Δt+(1/2)×a×(Δt)2
ここで、上式におけるaは、カートの加速度を表し、予測用データに含まれる操作データから算出される。加速度aの算出方法はステップS21の方法と同様である。一方、上記予測方向は、予測用データに含まれる速度データにより示される速度の方向に決定される。以上のように算出された予測距離および予測方向によって予測位置を決定することができる。すなわち、予測位置は、基準位置から予測方向へ予測距離だけ離れた位置に決定される。決定された予測位置のデータは予測位置データ70としてRAM24に記憶される。ステップS44の次にステップS45の処理が実行される。
【0091】
ステップS45においては、位置決定プログラム56が実行されることによって、ゲーム装置Gmを用いて操作されるカートの現在位置が決定される。現在位置(例えば図7に示す位置Rn+3)は、ステップS44で算出された予測位置(例えば図7に示す予測位置Qn+3)と、前回のフレームにおけるカートの位置(例えば図7に示す位置Rn+2)とに基づいて決定される。具体的には、現在位置は、前回のフレームにおけるカートの位置と予測位置とをk:1−k(kは0<k<1)に内分する位置に決定される。決定された現在位置のデータは、ゲーム装置Gmを用いて操作されるカートに対応するオブジェクトデータ68または69に含まれる位置データ68aまたは69aとしてRAM24に記憶される。
【0092】
位置算出処理においては、以上のステップS42〜S45の処理が他のゲーム装置毎に実行される。すなわち、ステップS46において、カウンタmの値が、他のゲーム装置の台数j(本実施形態ではj=2)と等しいか否かが判定される。判定の結果、カウンタmの値がjと等しくない場合、ステップS47の処理が実行される。すなわち、ステップS47において、カウンタmの値が1だけインクリメントされる。そして、ステップS47の次に再度ステップS42の処理が実行される。以降、カウンタmの値がjと等しくなるまでステップS42〜S45の処理が繰り返される。一方、ステップS46の判定においてカウンタmの値がjと等しい場合、CPUコア21は、位置算出処理を終了する。
【0093】
図10の説明に戻り、ステップS8の次のステップS9において、ゲーム進行処理が実行される。ゲーム進行処理においては、レースゲームの進行において必要となる処理が実行される。例えば、各カートがアイテムを用いた場合にはアイテムに関する処理が実行されたり、ゲーム装置10が動作を制御するカートが存在する場合には当該カートの位置を決定する処理が実行されたりする。
【0094】
続くステップS10において、ステップS5〜S9の処理結果に従ってゲーム画像が生成され、第2LCD12に表示される。続くステップS11において、レースゲームを終了するか否かが判定される。CPUコア21は、例えば、レースに参加した全てのカートがゴールしたか否かや、レース開始から予め定められた所定時間が経過したか否かによって、レースゲームを終了するか否かを判定する。判定の結果、レースゲームを終了すると判定される場合、CPUコア21は図10に示すゲーム処理を終了する。一方、レースゲームを終了しないと判定される場合、ステップS3の処理が再度実行される。以降、レースゲームを終了すると判定されるまで、ステップS3〜S11の処理が繰り返し実行されることによってレースゲームが進行する。以上で、本実施形態におけるゲーム処理の説明を終了する。
【0095】
なお、上記実施形態においては、予測位置は、他機カートの位置、他機カートが当該位置に存在する時点における時刻の他、他機カートの速度や他機カートに関する操作データに基づいて算出された。ここで、予測位置は、他機カートの過去の位置の履歴を用いれば、他機カートの位置とそのとき時刻とに基づいて算出することも可能である。したがって、ゲーム装置は、他機カートの速度や操作データを用いずに予測位置を算出してもよい。
【0096】
また、上記実施形態においては、予測位置と前回のフレームにおける位置とに基づいてカートの現在位置を決定するようにしたが、他の実施形態においては、予測位置をそのまま現在位置にするようにしてもよい。これによって、現在位置を算出するための処理量を軽減することができる。ただし、予測位置をそのまま現在位置にする場合、上述したように、予測用データが受信されなかったフレームにおいては現在位置が前回のフレームと同じ位置になり、他機カートが移動する様子が不自然に表示されてしまうおそれがある点に留意する。
【0097】
また、上記実施形態においては、予測用データに基づいて算出される予測位置は、当該予測用データが受信された時点における予測位置であった。ここで、他の実施形態においては、予測用データに基づいて算出される予測位置は、当該予測用データが受信された時点以降の所定の時点における予測位置であってもよい。例えば、図7を例にとって説明すると、時刻t=nの時点において、ゲーム装置は、時刻t=n+xの時点における予測位置Qn+xを算出するようにしてもよい。具体的には、ステップS43で算出された時間差Δtに上記xを加算してステップS44の処理を実行すればよい。なお、所定の時点は、予測用データが受信された時点以降の時点であって、予測用データが受信された時点に基づいて決められる時点であればよい。また、xの値は予め決められていてもよい。さらに、xの値は、他のゲーム装置毎に異なる値に設定されてもよい。例えば、自機と他のゲーム装置との通信に係る遅延時間が測定される場合には、当該遅延時間を考慮して他のゲーム装置毎にxの値を決定してもよい。なお、予測用データが受信された時点以降に上記所定の時点を設定する場合でも、ステップS45の処理は同様に行うことができる。
【0098】
また、上記実施形態においては、オブジェクト(カート)のゲーム空間における位置について予測を行うようにしたが、他の実施形態では、オブジェクトの位置に加えてオブジェクトの姿勢についても予測を行うようにしてもよい。このとき、ゲーム装置は、オブジェクトの姿勢を示す姿勢データを予測用データに含めて他のゲーム装置へ送信する。受信側のゲーム装置では、受信した予測用データに含まれている姿勢データを用いて、予測用データを受信した時点におけるオブジェクトの予測姿勢を算出する。なお、予測姿勢の算出方法としては、例えば、今回受信された予測用データとその前に受信された予測用データとを用いて姿勢の変化度合を算出し、当該変化度合と、今回受信した予測用データに含まれる姿勢データとに基づいて予測姿勢を算出する方法が考えられる。その他、送信側のゲーム装置が、姿勢の変化度合を示すデータを予測用データに含ませて送信するようにし、受信側のゲーム装置が、当該変化度合を示すデータと姿勢を示すデータとを用いて予測姿勢を算出する方法も考えられる。また、予測姿勢を算出したゲーム装置は、予測姿勢をそのまま現在の姿勢として決定してもよいし、1フレーム前の姿勢と予測姿勢とに基づいて現在の姿勢を決定するようにしてもよい。なお、オブジェクトの姿勢は、例えば、ワールド座標系における基準方向を0°とした角度で表現することができる。
【0099】
また、上記実施形態においては、本発明をレースゲームに適用した場合を例として説明したが、本発明は、ネットワークを介して接続される複数のゲーム装置のそれぞれを用いて操作される複数のオブジェクトが登場する任意のゲームに適用することが可能である。例えば、本発明は、ゲーム空間内を複数のキャラクタが移動するようなアクションゲーム等に対しても適用することが可能である。
【産業上の利用可能性】
【0100】
本発明は、他のゲーム装置を用いて操作されるオブジェクトの予測を確実に行うとともに、正確な予測を行うこと等を目的として、通信ゲームシステムや通信ゲームプログラム等として利用することが可能である。
【図面の簡単な説明】
【0101】
【図1】本実施形態に係るゲームシステムの構成を示すブロック図
【図2】本実施形態に係るゲームシステムに含まれるゲーム装置の外観図
【図3】ゲーム装置の内部構成図
【図4】本実施形態におけるゲームのゲーム画面を示す図
【図5】第2ゲーム装置10bが他のゲーム装置へ予測用データを送信する処理を示す図
【図6】第2カートの実際の移動の様子を示す図
【図7】n+3フレーム時間における時点で実行される予測処理を説明するための図
【図8】nフレーム時間からn+6フレーム時間の間における第2カートの移動の様子を示す図
【図9】ゲーム装置10のRAM24に記憶される主なデータを示す図
【図10】ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャート
【図11】図10に示すステップS5の詳細な処理の流れを示すフローチャート
【図12】図10に示すステップS5の詳細な処理の流れを示すフローチャート
【図13】図10に示すステップS8の詳細な処理の流れを示すフローチャート
【符号の説明】
【0102】
1 ネットワーク
10 ゲーム装置
12 第2LCD
17 メモリカード
21 CPUコア
24 RAM
33 無線通信部
51 ゲームプログラム
52 経過時間カウントプログラム
53 データ送信プログラム
54 データ受信プログラム
55 予測位置算出プログラム
56 位置決定プログラム
57 開始タイミング決定プログラム
【技術分野】
【0001】
本発明は、通信ゲームプログラムおよび通信ゲームシステムに関し、より特定的には、各ゲーム装置を用いてそれぞれ操作される複数のオブジェクトが登場するゲームを実行するための通信ゲームプログラムおよび通信ゲームシステムに関する。
【背景技術】
【0002】
従来、複数のゲーム装置をネットワークを介して接続することによって、同じ内容のゲームを複数人のプレイヤでプレイするゲームシステムがよく知られている。特に、昨今ではネットワークロールプレイングゲーム(以下ネットワークRPGとする)が広くプレイされるようになっている。ネットワークRPGでは、サーバを介して、あるいはピア・ツー・ピアで、複数のプレイヤが同じ内容のゲームをプレイすることができる。
【0003】
このようなネットワークゲームにおいて、各プレイヤが1つずつのゲーム装置を用いてそれぞれのオブジェクトを操作する場合、各ゲーム装置は、自機を用いて操作されるオブジェクトに関するデータを他のゲーム装置に対して送信する。オブジェクトに関するデータは、例えば、オブジェクトのゲーム空間における位置を示す位置データ等である。当該他のゲーム装置は、受信したオブジェクトデータに基づいて各オブジェクトの位置や動作等を決定する。ここで、ネットワークを介したゲームシステムにおいては、ゲーム装置間での通信に遅延が生じることが常である。つまり、ある時点において位置データが送信側から送信されても、その位置データが受信側で受信されるときには、ネットワークを介することにより生じる遅延によって、その位置データにより示される位置からオブジェクトの位置が変化していることがある。受信された位置データにより示される情報が古い情報となるのである。
【0004】
ネットワークRPGでは、最終的に同じ結果が得られれば、ゲームの進行状況、すなわち、ある時点において各ゲーム装置において表示される画像の内容が多少違っていても支障はきたさない。したがって、ネットワークのトラフィックの増減や(無線LANの場合では)ノイズの影響等によって、データの送受信に要する時間にばらつきが出ても、大きな影響をきたすことはない。
【0005】
一方、レースゲームやアクションゲームのようなゲームをネットワークを介した通信システムで実行する場合には、他のゲーム装置からのデータを単に用いてオブジェクトの動作を決定するだけでは、ゲームの進行状況を正確に表現することができない。例えばレースゲームを例とし、送信されるデータがレースカーの位置を示す位置データである場合を考える。この場合、送信側のゲーム装置を用いて操作されるレースカーの位置データが受信側のゲーム装置で受信された時点では、当該レースカーは、その位置データにより示される位置に実際には存在しない。そのため、位置データにより示される位置にあるレースカーを表示すると、実際のゲーム状況を正確に反映することができないことになる。レースゲームやアクションゲームのようなゲームにおいては、正確なタイミングでゲーム操作を行うことや、より迅速にゲーム操作を行うことがプレイヤに要求される。そのため、このようなゲームにおいて実際のゲーム状況を正確に反映することができないことになると、各ゲーム装置間でゲームの処理内容が異なってしまい、ゲームが成立しなくなるという課題がある。
【0006】
特許文献1では、クライアント−サーバ型のネットワークを用いて上記課題を解決しようとしたゲームシステムが開示されている。このゲームシステムでは、各クライアントは、自機を用いて操作されるレースカーの所定時間後の将来の位置を予測する。そして、レースカーの現在位置の情報に加えて、上記所定時間後の時刻(将来時刻)の情報と、上記所定時間後におけるレースカーの予測位置の情報とをサーバに対して送信する。また、各クライアントは、自機以外の他のクライアントからサーバに送信された情報をサーバから受信する。そして、自機以外のクライアントを用いて操作されるレースカーの現在の位置を、上記予測位置および将来時刻に基づいて算出する。このように、レースカーの位置を予測することによって、通信による遅延による課題を解決することが考えられている。
【特許文献1】特開2004−105671号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献1のゲームシステムでは、受信側のゲーム装置は、送信側から送信されてくる予測位置および将来時刻等のデータを用いて、送信側のゲーム装置を用いて操作されるレースカーの位置を特定する。しかし、このデータが送信側から受信側へ送信される際に要する実際の時間を正確に検知することは困難である。例えば、通信に要する時間を予め測定しておいたとしても、ネットワークの接続環境(通信速度やノイズ)は時々刻々変化するので、実際には、測定した時間で送信側から受信側へデータが必ず送信されるとは限らない。そのため、上記データを送信側から受信側へ送信する場合、当該データにより示される将来時刻よりも遅い時刻に当該データが受信される可能性がある。このとき、受信側ではレースカーの位置を特定することができなくなってしまうという問題がある。以上のように、従来のゲームシステムでは、送信側のゲーム装置で予測を行うことから、予測結果を受信側へ送信する間に予測結果自体が古くなってしまい、予測結果が受信側で受信される時点では予測結果が意味をなさないものとなる可能性があった。なお、上記問題を防止するためには、現在時刻から将来時刻までの時間をできるだけ長くすることが考えられる。しかし、この時間を長くすると、予測の精度が悪くなり、正確な予測が行えなくなる。
【0008】
それ故、本発明の目的は、他のゲーム装置を用いて操作されるオブジェクトの予測をできる限り確実に行うとともに、正確な予測を行うことができる通信ゲームシステムおよび通信ゲームプログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0010】
第1の発明は、ネットワーク(1)を介して複数のゲーム装置(ゲーム装置10a〜10c)を接続してなる通信ゲームシステムに含まれるゲーム装置(10)のコンピュータ(CPUコア21等)において実行される通信ゲームプログラム(ゲームプログラム51)である。通信ゲームプログラムは、受信ステップ(S7)と、予測位置算出ステップ(S43,S44)と、位置決定ステップ(S45)とをコンピュータに実行させる。受信ステップは、他のゲーム装置によって操作されるオブジェクト(カート41〜43)のゲーム空間における位置を示す位置データ(64a)と、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データ(64c)とを少なくとも含む予測用データを当該他のゲーム装置から受信する。予測位置算出ステップは、受信ステップで受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点におけるオブジェクトの予測位置(図7に示す位置Qn+3)を算出する。位置決定ステップは、受信ステップで予測用データを受信した時点におけるオブジェクトのゲーム空間内における位置(図7に示す位置Rn+3)を予測位置に基づいて決定する。
【0011】
第2の発明においては、予測位置算出ステップは、受信ステップで予測用データが受信される度に実行されてもよい。このとき、位置決定ステップは、所定時間毎(1フレーム毎)に繰り返し実行される。位置決定ステップにおいては、予測位置算出ステップで算出された最新の予測位置(図7に示す位置Qn+3)と、前回に実行された位置決定ステップで決定されたオブジェクトの位置(図7に示す位置Rn+2)とに基づいて当該オブジェクトの位置(図7に示す位置Rn+3)が決定される。
【0012】
第3の発明においては、位置決定ステップにおいて、受信ステップで予測用データを受信した時点における当該オブジェクトの位置は、当該オブジェクトの直前の位置と予測位置との間の位置に決定されてもよい。
【0013】
第4の発明においては、位置決定ステップにおいて、受信ステップで予測用データを受信した時点における当該オブジェクトの位置は予測位置に決定されてもよい。
【0014】
第5の発明においては、予測位置算出ステップにおいて、受信ステップで受信した予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差(Δt)が算出され、当該予測用データを受信した時点における予測位置が当該時間差に基づいて算出されてもよい。
【0015】
第6の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点における当該オブジェクトの位置の変化度を示す変化度データ(速度データ64b)をさらに含んでいてもよい。このとき、予測位置算出ステップにおいては、受信ステップで受信した予測用データに含まれる位置データと時刻データと変化度データとに基づいて、所定の時点におけるオブジェクトの予測位置が算出される。
【0016】
第7の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点において行われたゲーム操作を示す操作データ(64d)をさらに含んでいてもよい。このとき、予測位置算出ステップにおいては、受信ステップで受信した予測用データに含まれる位置データと時刻データと操作データとに基づいて、所定の時点におけるオブジェクトの予測位置が算出される。
【0017】
第8の発明においては、予測用データは、それに含まれる位置データにより示される位置にオブジェクトが存在する時点における当該オブジェクトの姿勢を示す姿勢データをさらに含んでいてもよい。このとき、受信ステップで受信した予測用データに含まれる姿勢データに基づいて、所定の時点におけるオブジェクトの姿勢を算出する姿勢算出ステップをコンピュータにさらに実行させる。
【0018】
第9の発明においては、通信ゲームプログラムは、ゲームシステムに含まれる各ゲーム装置間で開始タイミングをそろえて所定のイベント(レースゲーム)を開始するイベント開始ステップをさらに実行させてもよい。このとき、時刻データは、所定のイベントが開始された時点からの経過時間を示す。
【0019】
第10の発明は、ネットワーク(1)を介して第1および第2のゲーム装置を接続してなる通信ゲームシステムである。第1のゲーム装置(図5に示す第2ゲーム装置10b)は、第1のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを第2のゲーム装置(図5に示す第1ゲーム装置10a)へ送信する送信手段(CPUコア21、データ送信プログラム53)を備えている。第2のゲーム装置は、受信手段(CPUコア21、)と、予測位置算出手段と(CPUコア21、予測位置算出プログラム55)、位置決定手段(CPUコア21、位置決定プログラム56)とを備えている。受信手段は、第1のゲーム装置から送信されてくる予測用データを受信する。予測位置算出手段は、受信手段によって受信された予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点におけるオブジェクトの予測位置を算出する。位置決定手段は、受信手段によって予測用データを受信した時点におけるオブジェクトのゲーム空間内における位置を予測位置に基づいて決定する。
【発明の効果】
【0020】
第1の発明によれば、送信側のゲーム装置(他のゲーム装置)からは予測用データが送信され、受信側のゲーム装置において予測位置算出ステップが実行されることによって受信側のゲーム装置で予測位置が算出される。送信側で予測を行う場合には、予測結果が受信側に届いた時点で古くなり、予測結果を用いることができなくなる可能性があったのに対して、第1の発明では、受信側で予測を行うようにするので、予測結果が無駄になることがなく、確実に予測を行うことができる。
【0021】
第2の発明によれば、オブジェクトの位置は、予測位置と前回におけるオブジェクトの位置とに基づいて決定される。つまり、予測位置がそのままオブジェクトの新たな位置に決定されるわけではない。ここで、予測位置がそのままオブジェクトの新たな位置に決定される場合には、予測用データが送信されてきたときにのみオブジェクトの位置が変更されることとなる。オブジェクトは、所定時間毎に移動するのではなく、予測用データが送信されてきたときにのみ移動するように表示されるので、オブジェクトの移動が滑らかでなくなり、オブジェクトが移動する様子が不自然に見えてしまう。これに対して、第2の発明によれば、予測用データが所定時間毎に受信されない場合であっても、オブジェクトの位置を所定時間毎に変化させることができるので、オブジェクトが移動する様子を自然に表現することができる。
【0022】
第3の発明によれば、オブジェクトの新たな位置は、予測位置とオブジェクトの直前の位置との間となる。したがって、予測位置が急激に変化した場合であっても、その変化を緩和することができ、オブジェクトの移動を滑らかにすることができる。
【0023】
第4の発明によれば、オブジェクトの新たな位置を予測位置のみから容易に決定することができるので、オブジェクトの位置を決定する処理を簡易にすることができ、ゲーム装置のコンピュータの処理負担を軽減することができる。
【0024】
第5の発明によれば、予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差が算出される。そして、当該時間差に基づいて予測位置が算出される。これによれば、予測用データの送信に要した実際の遅延時間を考慮して予測位置が算出されるので、予測位置をより正確に算出することができる。また、上記時間差は実際の遅延時間であり、予め測定しておいた遅延時間を用いて予測位置を算出するよりも予測位置を正確に算出することができる。
【0025】
第6の発明によれば、オブジェクトの速度データを用いて予測位置を算出することによって、予測位置をより正確に算出することができる。
【0026】
第7の発明によれば、オブジェクトに対するゲーム操作を考慮して予測位置を算出することができるので、予測位置をより正確に算出することができる。
【0027】
第8の発明によれば、オブジェクトの位置のみならず、オブジェクトの姿勢についても予測を行うことによって、オブジェクトの姿勢を実際の姿勢に近いものにすることができる。
【0028】
第9の発明によれば、各ゲーム装置間でほぼ一致した時点を基準として経過時間を表すことができるので、時刻データに基づいて算出される予測位置の算出処理をより正確に行うことができる。
【発明を実施するための最良の形態】
【0029】
以下、図面を参照して、本発明の一実施形態に係るゲームシステムに含まれるゲーム装置の構成について説明する。図1は、本実施形態に係るゲームシステムの構成を示すブロック図である。図1に示すように、本ゲームシステムは、複数の携帯ゲーム装置(以下、単に「ゲーム装置」と呼ぶ。)10a〜10cがインターネット等のネットワーク1を介して接続される構成である。本実施形態では、例えば3つのゲーム装置10a〜10cによってゲームシステムが構成され、3人のプレイヤがゲーム装置を1つずつ使用するものとする。各ゲーム装置10a〜10cは、無線でネットワーク1に接続可能であるが、有線で接続されるものであってもよい。また各ゲーム装置は携帯ゲーム装置ではなく、据置型ゲーム装置であってももちろん構わない。以下においては、3つのゲーム装置10a〜10cを、第1ゲーム装置10a、第2ゲーム装置10b、および第3ゲーム装置10cと呼ぶ。なお、3つのゲーム装置を特に区別する必要がない場合は、第1〜第3ゲーム装置10a〜10cを単にゲーム装置10と記載することもある。
【0030】
まず、ゲーム装置の構成について説明する。図2は、ゲームシステムに含まれるゲーム装置10の外観図である。本実施形態では、第1〜第3ゲーム装置10a〜10cは全て同じ構成であり、全て図1に示す構成である。
【0031】
以下、ゲーム装置の構成および動作を説明する。図2は、本実施形態に係るゲームシステムに含まれるゲーム装置の外観図である。図2において、ゲーム装置10は、第1LCD(Liquid Crystal Display:液晶表示装置)11および第2LCD12を含む。ハウジング13は上側ハウジング13aと下側ハウジング13bとによって構成されており、第1LCD11は上側ハウジング13aに収納され、第2LCD12は下側ハウジング13bに収納される。第1LCD11および第2LCD12の解像度はいずれも256dot×192dotである。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【0032】
上側ハウジング13aには、後述する1対のスピーカ(図3の30a、30b)からの音を外部に放出するための音抜き孔18a、18bが形成されている。
【0033】
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、Lボタン14LおよびRボタン14Rが設けられている。また、さらなる入力装置として、第2LCD12の画面上にタッチパネル15が装着されている。また、下側ハウジング13bには、電源スイッチ19や、メモリカード17やスティック16を収納するための挿入口も設けられている。
【0034】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。本実施形態では、タッチパネル15として、第2LCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2LCD12の解像度が一致している必要はない。
【0035】
メモリカード17はゲームプログラムを記録した記録媒体であり、下部ハウジング13bに設けられた挿入口に着脱自在に装着される。
【0036】
次に、図3を参照してゲーム装置10の内部構成を説明する。図3において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24、およびLCDコントローラ31が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM17aと、バックアップデータを書き換え可能に記憶するRAM17bを搭載する。メモリカード17のROM17aに記憶されたゲームプログラムはRAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、CPUコア21がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。I/F回路25には、タッチパネル15、右スピーカ30a、左スピーカ30b、無線通信部33、および図2の十字スイッチ14aやAボタン14d等からなる操作スイッチ部14が接続される。右スピーカ30aと左スピーカ30bは、音抜き孔18a、18bの内側にそれぞれ配置される。
【0037】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されているゲーム画像を生成するためのデータに基づいて第1のゲーム画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2のゲーム画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29はLCDコントローラ31に接続されている。
【0038】
LCDコントローラ31はレジスタ32を含む。レジスタ32はCPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1LCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2LCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2LCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1LCD11に出力する。
【0039】
無線通信部33は、I/F回路25と接続されている。無線通信部33は、他のゲーム装置の無線通信部33との間で、ゲーム処理に利用されるデータやその他のデータを送受信する機能を有しており、一例としてIEEE802.11の無線LAN規格に則った無線通信機能を提供する。無線通信部33は、受信したデータをCPUコア21に出力する。また、無線通信部33は、CPUコア21から指示されたデータを他のゲーム装置へ送信する。なお、TCP/IP(Transmission Control Protocol/Internet Protocol)等のプロトコルや所定のブラウザを無線通信部33やゲーム装置10内の記憶部に実装することによって、ゲーム装置10は、無線通信部33を介してインターネット等のネットワークとの接続が可能となる。そして、ゲーム装置10は、ネットワークを介して他のゲーム装置と通信を行うことによって、複数のゲーム装置で同じゲームを実行することが可能となる。また、ゲーム装置10は、ネットワーク上で公開されている文書や画像等のデータを第1LCD11および第2LCD12で閲覧したり、ネットワーク上で公開されているゲームデータを用いてゲーム処理を実行したりすることもできる。
【0040】
なお、上記のようなゲーム装置10の構成は単なる一例に過ぎず、本発明は、ネットワークを介して他の装置と通信可能な任意のコンピュータシステムに適用することができる。また、本発明のゲームプログラムは、メモリカード17などの外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよいし、さらにはコンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。
【0041】
以下、本実施形態においてゲーム装置10を用いて行われるゲームについて説明する。図4は、本実施形態におけるゲームのゲーム画面を示す図である。ゲーム装置10の第2LCD12の画面には、当該ゲーム装置のプレイヤによって操作されるオブジェクトであるカート(レースカー)41の他、他のゲーム装置のプレイヤによって操作されるオブジェクトであるカート42および43が表示される。本ゲームはレースゲームであり、各プレイヤは操作ゲームオブジェクトとしてのカートを操作してカートがゴールする順位を競って遊ぶ。以下では、第1ゲーム装置10aを用いて操作されるカート41を「第1カート」と呼び、第2ゲーム装置10bを用いて操作されるカート42を「第2カート」と呼び、第3ゲーム装置10cを用いて操作されるカート43を「第3カート」と呼ぶ。なお、ゲーム装置を用いて操作されるカートとは、そのゲーム装置に設けられた操作スイッチ部14に対する操作に応じて動作が制御されるカートのことである。
【0042】
図4に示したようなレースゲームでは、カートがゴールする順位を競うというゲームの性質上、各ゲーム装置10a〜10cを用いて操作される各カートの現在位置をできるだけ正確に表示する必要がある。ここで、ゲーム装置10は、自機を用いて操作されるカート(自機カート)については正確な現在位置を算出することができるものの、自機以外の他のゲーム装置を用いて操作されるカート(他機カート)の現在位置については、自機と他のゲーム装置との間で通信の遅延があるために、現在位置のデータをリアルタイムに取得することはできない。そのため、ゲーム装置10は、他機カートの現在位置を正確に予測する必要がある。以下では、他機カートの現在位置を予測する処理について主に説明する。
【0043】
まず、本実施形態に係るゲームシステムにおいて実行される予測処理の概要を、図5〜図8を用いて説明する。図5〜図8においては、第2ゲーム装置10bを用いて操作されるカート(第2カート)の位置を、第1ゲーム装置10aにおいて予測する場合を例として説明する。なお、第1ゲーム装置10aが第3カートの位置を予測する場合、および、第2ゲーム装置10bおよび第3ゲーム装置10cが自機以外の他のゲーム装置のカートの位置を予測する場合の予測処理は、図5〜図8に示す場合と同様である。
【0044】
まず、予測用データの送信方法について図5を用いて説明する。予測用データとは、受信側のゲーム装置が送信側のゲーム装置を用いて操作されるカートの位置を予測するために用いるデータである。予測用データの詳細な内容については後述する。図5は、第2ゲーム装置10bが他のゲーム装置へ予測用データを送信する処理を示す図である。なお、図5においては、第2ゲーム装置10bが他のゲーム装置10aおよび10cに予測用データを送信する場合のみを示し、他のゲーム装置10aおよび10cから予測用データが送信される場合については図示していない。
【0045】
また、本実施形態においては、各ゲーム装置10a〜10cは、レースゲームが開始されてからの経過時間を計測し、ゲーム中における時刻をこの経過時間によって表す。また、経過時間は、フレーム時間(1/60秒)を単位として計測される。すなわち、各ゲーム装置10a〜10cは、1/60秒単位で時間をカウントするタイマーを内蔵し、このタイマーの値を用いて経過時間を測定する。図5は、nフレーム時間(nは任意の自然数)からn+5フレーム時間までの間において第2ゲーム装置10bが送信する予測用データが送受信されるタイミングを示している。
【0046】
図5に示すように、第2のゲーム装置10bは1フレーム毎に予測用データを送信する。第2のゲーム装置10bは、時刻t=n、n+2、n+4の時点で第1ゲーム装置10aへ予測用データを送信し、時刻t=n+1、n+3、n+5の時点で第3ゲーム装置10cへ予測用データを送信する。このように、第2ゲーム装置10bは、1フレームにつき1つのゲーム装置へ予測用データを送信し、かつ、他のゲーム装置へ順番に予測用データを送信する。なお、他の実施形態においては、ゲーム装置は、1フレームにつき他の全てのゲーム装置へ予測用データを送信するようにしてもよい。
【0047】
図5において、時刻t=nの時点において第2ゲーム装置10bから送信された予測用データは、3フレーム時間後、すなわち、時刻t=n+3の時点において第1ゲーム装置10aで受信される。予測用データには、それが送信された時点におけるカートの状態(位置や速度等)、および、当該時点を示すデータ等が含まれている。つまり、第1ゲーム装置10aは、時刻t=n+3の時点において予測用データを受信することによって、3フレーム前、すなわち、時刻t=nの時点における第2カートの状態を知ることができる。第1ゲーム装置10aは、この予測用データを用いて、時刻t=n+3の時点における第2カートの位置を予測する。このときの予測処理については図7を用いて後述する。
【0048】
なお、時刻t=n+2の時点において第2ゲーム装置10bから送信された予測用データは、4フレーム時間後、すなわち、時刻t=n+6の時点において第1ゲーム装置10aで受信される。時刻t=n+4の時点において第2ゲーム装置10bから送信された予測用データは、3フレーム時間後、すなわち、時刻t=n+7の時点において第1ゲーム装置10aで受信される。このように、予測用データが送信されてから受信側で受信されるまでの時間は、必ずしも一定とはならない。また、時刻t=n+1の時点において第2ゲーム装置10bから送信された予測用データは、5フレーム時間後、すなわち、時刻t=n+6の時点において第3ゲーム装置10cで受信される。このように、予測用データが送信されてから受信側で受信されるまでの時間は、データを送受信するゲーム装置によっても異なり、一定とはならない。
【0049】
次に、図6〜図8を用いて、予測処理の詳細について説明する。ここでは、図5に示すタイミングで予測用データが送信された場合における予測処理を説明する。図6〜図8は、予測処理を説明するための図である。図6〜図8において、縦軸は時刻t(経過時間)を示し、横軸は第2カートの位置を示す。なお、図6〜図8では、説明を簡単にする目的で、第2カートの位置を1次元(例えばレースゲームのゲーム空間xyz軸におけるx軸上の位置)として説明するが、2次元(例えばxy軸上の位置など)および3次元の場合も1次元の場合と同様に考えることができる。また、図6〜図8において、丸で示される位置は、第2カートの実際の位置、すなわち、第2ゲーム装置10bで算出された第2カートの位置である。四角で示される位置は、予測用データから第1ゲーム装置10aによって算出される予測位置である。三角で示される位置は、第1ゲーム装置10aにおいて決定される第2カートの位置である。また、図6は、第2カートが実際に移動する様子を示す図である。以下では、図6に示すように第2カートが移動した場合において第1ゲーム装置10aで実行される予測処理を、図7および図8を用いて説明する。
【0050】
図7は、時刻t=n+3の時点で実行される予測処理を説明するための図である。図7では、時刻t=n+2の時点においては第2カートの位置が位置Rn+2と決定されたものとする。図5に示したように、第1ゲーム装置10aは、時刻t=nの時点における第2カートの位置を示すデータを含む予測用データを時刻t=n+3の時点において受信する。このとき、第1ゲーム装置10aは、時刻t=n+3の時点における第2カートの予測位置Qn+3を予測用データを用いて算出する。なお、本実施形態における予測位置の算出方法の詳細は後述するが、予測位置の算出方法はどのような方法であってもよい。
【0051】
予測位置Qn+3を算出すると、第1ゲーム装置10aは、直前のフレームにおける第2カートの位置(時刻t=n+2における位置)Rn+2と予測位置Qn+3とに基づいて、時刻t=n+3の時点における第2カートの位置Rn+3を決定する。具体的には、位置Rn+3は、直前の位置Rn+2と予測位置Qn+3とをk:1−k(kは0<k<1)に内分する位置に決定される。なお、このkの値は、各ゲーム装置間における通信の遅延の度合等に応じて適宜設定されることが好ましい。このように、本実施形態においては、第2カートの新たな位置は前回のフレームにおける位置と予測位置との間の位置に決定される。
【0052】
図8は、時刻t=n〜n+6の間における第2カートの移動の様子を示す図である。なお、図8において、時刻t=nからn+2までの第2カートの位置Rn、Rn+1、Rn+2は、位置Rn+3〜位置Rn+6を決定する方法(後述する)と同様の方法で予め決定されているものとする。図8において、時刻t=n+3の時点における第2カートの位置Rn+3の決定方法は、図7に示した通りである。
【0053】
次に、時刻t=n+4の時点における第2カートの位置Rn+4の決定方法について説明する。図5に示したように、時刻t=n+4の時点においては第1ゲーム装置10aでは予測用データが受信されない。このとき、第1ゲーム装置10aは、それまでに受信した予測用データのうちで最新の予測データを用いて算出された予測位置に基づいて現在位置を決定する。具体的には、時刻t=n+4の時点における第2カートの位置Rn+4は、直前のフレームにおける第2カートの位置Rn+3と、最新の予測データを用いて算出された予測位置Qn+3とをk:1−k(kは0<k<1)に内分する位置に決定される。
【0054】
時刻t=n+5の時点においては、第2ゲーム装置10bからの新たな予測用データが第1ゲーム装置10aで受信される。この予測用データは、時刻t=n+2の時点における第2カートの実際の位置Pn+2である。第1ゲーム装置10aは、予測用データに基づいて新たな予測位置Qn+5を算出する。さらに、時刻t=n+3の場合と同様の方法で、時刻t=n+5の時点における第2カートの位置Rn+5を、前回のフレームの位置Rn+4と上記予測位置Qn+5とをk:1−k(kは0<k<1)に内分する位置に決定する。
【0055】
時刻t=n+6の時点においても時刻t=n+5の場合と同様、第2ゲーム装置10bからの新たな予測用データが第1ゲーム装置10aで受信される。したがって、第1ゲーム装置10aは、時刻t=n+5の場合と同様の処理を実行することによって時刻t=n+6の時点における第2カートの位置Rn+6を決定する。すなわち、新たに受信した予測用データに基づいて予測位置Qn+6を算出し、当該予測位置Qn+6と前回のフレームの位置Rn+5とに基づいて位置Rn+6を決定する。
【0056】
なお、時刻t=n〜n+2の時点においても、時刻t=n+3〜n+6の場合と同様に第2カートの位置が決定される。すなわち、時刻t=n〜n+2の時点においては、予測位置が算出されているものとし、当該予測位置と前回のフレームにおける位置とに基づいて今回のフレームにおける位置が決定される。
【0057】
以上のように、本実施形態によれば、送信側のゲーム装置は、自機のカートの位置等を示すデータを送信し、当該データを受信した受信側のゲーム装置で予測を行う。ここで、送信側で予測を行う場合には、予測結果が受信側に届いた時点で古くなり、予測結果を用いることができなくなるという問題があった。これに対して、本実施形態によれば、受信側で予測を行うようにしたことによって、送信側で予測を行う場合の問題点を解消することができ、確実に予測を行うことができる。
【0058】
また、本実施形態によれば、予測位置と前回のフレームにおける位置とに基づいてカートの現在位置を決定している。すなわち、予測位置と前回のフレームにおける位置との間の位置を現在位置に決定するのである。ここで、予測位置をそのまま現在位置とする場合を考える。この場合、予測用データが受信されなかったフレームにおいては、新たな予測位置が算出されないため、予測位置が前回のフレームと同じになることから現在位置も前回のフレームと同じ位置になってしまう。予測用データを受信しなかったフレームでは他機カートが移動しないので、他機カートは数フレームに1回しか移動しないこととなり、他機カートの移動が滑らかに表示されない。これによって、他機カートが移動する様子が不自然に表示されてしまうことになる。
【0059】
そこで、本実施形態では、予測用データに基づいて算出される予測位置をそのままカートの現在位置とするのではなく、予測位置と前回のフレームにおける位置とに基づいて現在位置を決定している(図8における時刻t=n+4の場合を参照)。これによって、予測用データが受信されなかったフレームにおいてもカートの現在位置が前のフレームの位置と異なるので、予測用データの受信の有無とは無関係にカートは毎フレーム移動する。したがって、カートの移動の様子を自然に表現することができる。
【0060】
次に、本実施形態に係るゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置10のRAM24に記憶される主なデータを示す図である。図9に示すように、RAM24には、ゲームプログラム51およびゲームデータ61が記憶される。
【0061】
ゲームプログラム51には、経過時間カウントプログラム52、データ送信プログラム53、データ受信プログラム54、予測位置算出プログラム55、位置決定プログラム56、および開始タイミング決定プログラム57が含まれる。経過時間カウントプログラム52は、ゲーム中における所定のイベントが開始されてからの経過時間を測定する処理を実行するためのプログラムである。本実施形態においては、所定のイベントとは、レースゲームをスタートすることである。データ送信プログラム53は、上記予測用データを他のゲーム装置へ送信する処理を実行するためのプログラムである。データ受信プログラム54は、他のゲーム装置からの予測用データを受信して自機に記憶させる処理を実行するためのプログラムである。予測位置算出プログラム55は、受信された予測用データに含まれるデータのうち、少なくとも位置データと時刻データとに基づいて、当該予測用データを受信した時点におけるオブジェクト(カート)の予測位置を算出する処理を実行するためのプログラムである。位置決定プログラム56は、予測用データを受信した時点におけるオブジェクト(カート)のゲーム空間内における位置を予測位置に基づいて決定する処理を実行するためのプログラムである。開始タイミング決定プログラム57は、各ゲーム装置10a〜10cの間で開始タイミングをそろえて上記所定のイベントを開始する処理を実行するためのプログラムである。なお、ゲームプログラム51には、上記の他、レースゲームを実行するために必要な種々のプログラム等が含まれる。
【0062】
一方、ゲームデータ61には、操作データ62、時刻データ63、送信予測用データ64、受信予測用データ65、オブジェクトデータ66、および予測位置データ70が含まれる。なお、RAM24には、図9に示すデータの他、後述するカウンタiの値や、レースコースの地形データや画像データ等、レースゲームに必要なデータが記憶される。なお、図9では、第1ゲーム装置10aのRAM24に記憶されるデータを例として説明するが、他のゲーム装置10bおよび10cにおいても同様のデータがRAM24に記憶される。
【0063】
操作データ62は、ゲーム装置10の操作スイッチ部14に対して行われたゲーム操作に関する情報を示すデータである。操作データ62は、例えば、操作スイッチ部14の各スイッチの操作状態(各スイッチが押下されたか否か)を示すデータである。ここでは、操作データ62は、カートを加速するためのボタン(例えばAボタン14d)が押下されたか否かを示すデータであるとする。なお、他の実施形態においては、操作データ62には、カートの進行方向を変化させるボタン(例えば十字キー14a)の操作状態を示すデータが含まれていてもよい。
【0064】
時刻データ63は、ゲーム中における時刻を示すデータである。本実施形態では、時刻データ63は、レースが開始されてからの経過時間をフレーム時間単位で示すデータである。時刻データ63は、レースが開始されてから1フレーム経過する度に更新される。
【0065】
送信予測用データ64は、予測用データとしてゲーム装置10から他のゲーム装置へ送信されるデータである。送信予測用データ64には、位置データ64a、速度データ64b、時刻データ64c、および操作データ64cが含まれる。位置データ64aは、ゲーム装置10を用いて操作されるカート(自機カート)の位置を示すデータである。速度データ64bは、自機カートの速度を示すデータである。本実施形態では、カートの速度は、速度の大きさ(速さ)を示すスカラー値と、速度の方向を示す角度(ゲーム空間における所定方向を基準とした角度)の値とで表されるものとする。すなわち、速度データは、速さを示すスカラー値のデータと、速度の方向を示す角度のデータとからなる。時刻データ64cは、その送信予測用データ64が作成された時刻を示すデータである。操作データ64dは、時刻データ64cにより示される時刻における操作データ62である。つまり、送信予測用データ64が生成された時点では操作データ64dと操作データ62とは同じ内容である。
【0066】
受信予測用データ65は、他のゲーム装置からゲーム装置10へ送信されてきた予測用データである。ゲーム装置10は、受信予測用データ65を用いて他機カートの予測位置を算出する。受信予測用データ65は、他のゲーム装置の数と同数の予測用データを含む。本実施形態では、ゲームシステムは3つのゲーム装置で構成されるので、受信予測用データ65には、第1予測用データ65aおよび第2予測用データ65bが含まれる。第1ゲーム装置10aにおいては、第1予測用データ65aは、第2ゲーム装置10bから送信されてくる予測用データであり、第2予測用データ65bは、第3ゲーム装置10cから送信されてくる予測用データである。受信予測用データ65の内容は、他のゲーム装置から予測用データを受信する度に更新される。
【0067】
オブジェクトデータ66は、レースゲームに登場するオブジェクト(カート)に関する情報を示すデータである。オブジェクトデータ66には、プレイヤオブジェクトデータ67、第1他オブジェクトデータ68、および第2他オブジェクトデータ69が含まれる。
【0068】
プレイヤオブジェクトデータ67は、ゲーム装置10を用いて操作されるオブジェクトであるカート(自機カート)に関する情報を示すデータである。プレイヤオブジェクトデータ67には、位置データ67aおよび速度データ67bが含まれる。位置データ67aは、自機カートの位置を示すデータである。速度データ67bは、自機カートの速度を示すデータである。位置データ67aおよび速度データ67bは、送信予測用データに含まれて他のゲーム装置へ送信される。
【0069】
第1他オブジェクトデータ68および第2他オブジェクトデータ69は、ゲーム装置10以外の他のゲーム装置を用いて操作されるオブジェクトであるカート(他機カート)に関する情報を示すデータである。第1ゲーム装置10aにおいては、第1他オブジェクトデータ68は、第2カートに関する情報を示すデータであり、第2他オブジェクトデータ69は、第3カートに関する情報を示すデータである。第1他オブジェクトデータ68には、位置データ68aが含まれる。位置データ68aは、第1他オブジェクト(第1ゲーム装置10aにおいては第2カート)の位置を示すデータである。なお、図示していないが、第2他オブジェクトデータ69には第1他オブジェクトデータ68と同様、第2他オブジェクト(第1ゲーム装置10aにおいては第3カート)の位置を示す位置データが含まれる。
【0070】
予測位置データ70は、予測用データを用いて算出される上記予測位置を示すデータである。予測位置データ70には、第1予測位置データ70aおよび第2予測位置データ70bが含まれる。第1予測位置データ70aは、第1他オブジェクトの予測位置を示すデータであり、第2予測位置データ70bは、第2他オブジェクトの予測位置を示すデータである。
【0071】
次に、ゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を、図10〜図13を用いて説明する。図10は、ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置10の電源が投入されると、ゲーム装置10のCPUコア21は、図示しないブートROMに記憶されている起動プログラムを実行し、RAM24等の各ユニットが初期化される。そして、メモリカード17に格納されたゲームプログラムがRAM24に読み込まれ、CPUコア21によって当該ゲームプログラムの実行が開始される。図10に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図10〜図13においては、ゲーム処理のうち、他機カートの現在位置を決定する処理について詳細に示し、本願発明と関連しない他のゲーム処理については詳細な説明を省略する。
【0072】
図10のステップS1において、まず、初期設定処理が実行される。初期設定処理においては、CPUコア21は、ゲームシステムに含まれるゲーム装置を用いて操作されるカートの数を設定したり、各ゲーム装置に対して固有のIDを設定したりする。また、自機以外の他のゲーム装置に対して番号を設定する。ここでは、第1ゲーム装置10aを例として説明するものとすると、第1ゲーム装置10aにおいて、第2ゲーム装置10bは上記番号が“G1”に設定され、第3ゲーム装置10cは上記番号が“G2”に設定される。また、初期設定処理においては、上記番号を示すカウンタi(iは自然数)の値として“1”がRAM24に記憶され、他のゲーム装置の台数j(本実施形態ではj=2)がRAM24に記憶される。また、初期設定処理において、レースゲームのゲーム空間が構築され、自機カートおよび他機カートがレースコース内の初期位置に配置される。
【0073】
続くステップS2において、開始タイミング決定プログラム57が実行されることによって、開始タイミング決定処理が実行される。開始タイミング決定処理は、レースを開始するタイミングを各ゲーム装置間で一致させるための処理である。この処理は、レースを開始するタイミングを各ゲーム装置間である程度一致させることができる方法であればどのような方法であってもよい。例えば、各ゲーム装置間の通信における遅延時間を測定し、測定した遅延時間を考慮して所定のゲーム装置から他のゲーム装置に対してレース開始までの残り時間を通知する。なお、ステップS2の最後に、CPUコア21は、RAM24に記憶されている時刻データ63の内容を“0フレーム時間”に設定する。
【0074】
上記ステップS2によって各ゲーム装置においてほぼ一斉にレースが開始される、すなわち、ステップS3〜S11の処理ループの実行が開始される。ステップS3〜S11の処理が繰り返されることによって、プレイヤの操作に応じてカートが移動し、レースゲームが進行する。なお、ステップS3〜S11の処理ループは、1フレームにつき1回実行される。
【0075】
ステップS3においては、経過時間カウントプログラム52が実行されることによって、経過時間がカウントされる。すなわち、CPUコア21は、時刻データ63により示される値を、その値に1を加算した値に更新する。続くステップS4において、操作データが取得される。CPUコア21は、操作スイッチ部14の各スイッチの操作状態を示すデータを操作スイッチ部14から取得する。このとき、本実施形態では、カートを加速するためのボタン(例えばAボタン14d)が押下されたか否かを示すデータが操作データ62としてRAM24に記憶される。
【0076】
ステップS5において、予測用データを生成するための予測用データ生成処理が実行される。以下、図11を用いて予測用データ生成処理の詳細を説明する。
【0077】
図11は、図10に示すステップS5の詳細な処理の流れを示すフローチャートである。予測用データ生成処理においては、まずステップS21において、ステップS4で取得された操作データに基づいてプレイヤオブジェクト(自機カート)の加速度が算出される。加速度は、カートを加速するためのボタン(例えばAボタン14d)の押下状態に基づいて算出される。例えば、CPUコア21は、当該ボタンが押下されていれば加速度の値を予め定められた所定値に設定し、当該ボタンが押下されていなければ加速度の値を0に設定する。また、他の例では、当該ボタンが押下されている長さに応じて加速度の値を算出するようにしてもよいし、当該ボタンがアナログ量を検知することが可能であれば、検知されたアナログ量に応じて加速度の値を算出してもよい。
【0078】
続くステップS22において、ステップS21で算出された加速度に基づいて自機カートの速度が算出される。なお、速度の算出方法はどのような方法であってもよいが、本実施形態では例えば以下の方法で算出する。まず、本実施形態では、上述のように、自機カートの速度は、速度の大きさ(速さ)を示すスカラー値と、速度の方向を示す角度の値とで表される。今回のフレームにおける速さは、前回のフレームにおける速さと上記加速度(スカラー値)とを加算することによって得られる。また、今回のフレームにおける速度の方向は、前回のフレームにおける方向と、十字キー14aの左右方向のキーの押下状態とに基づいて算出される。ステップS22で算出された自機カートの速度を示すデータは、速度データ67bとしてRAM24に記憶される。
【0079】
続くステップS23において、自機カートの新たな位置が算出される。自機カートの位置は、ステップS22で算出された速度と、前回のフレームにおける位置とに基づいて算出される。すなわち、前回のフレームにおける位置から、当該速度の方向に当該速度の大きさだけ離れた位置が自機カートの新たな位置となる。ステップS23において算出された位置のデータは位置データ67aとしてRAM24に記憶される。
【0080】
続くステップS24において、予測用データが生成される。すなわち、CPUコア21は、ステップS22で得られた速度データ67bと、ステップS23で得られた位置データ67aと、現時点でRAM24に記憶されている時刻データ63と、操作データ62とを送信予測用データ64としてRAM24に記憶する。RAM24に記憶された送信予測用データ64は、以降のステップS6において他のゲーム装置へ送信されることとなる。以上のステップS24の後、CPUコア21は予測用データ生成処理を終了する。
【0081】
図10の説明に戻り、ステップS6において、データ送信プログラム53が実行されることによってデータ送信処理が実行される。データ送信処理は、ステップS5で生成された予測用データを他のゲーム装置へ送信するための処理である。以下、図12を用いてデータ送信処理の詳細を説明する。
【0082】
図12は、図10に示すステップS5の詳細な処理の流れを示すフローチャートである。データ送信処理においては、まずステップS31において、ステップS24で生成された予測用データがゲーム装置Giへ送信される。ここで、ゲーム装置Giとは、他のゲーム装置に対して設定される番号が“i”であるゲーム装置のことである。また、iは、上述したカウンタiの値である。例えば、RAM24に現在記憶されているカウンタiの値が“1”であれば、予測用データはゲーム装置G1に送信され、カウンタiの値が“2”であれば、予測用データはゲーム装置G2に送信される。
【0083】
ステップS32においては、CPUコア21は、RAM24に記憶されているカウンタiの値が、他のゲーム装置の台数j(本実施形態ではj=2)と等しいか否かを判定する。判定の結果、カウンタiの値がjと等しい場合、ステップS33の処理が実行される。すなわち、ステップS33において、カウンタiの値が“1”に設定される。一方、カウンタiの値がjと等しくない場合、ステップS34の処理が実行される。すなわち、ステップS34において、カウンタiの値が1だけインクリメントされる。ステップS33またはS34の後、CPUコア21はデータ送信処理を終了する。
【0084】
以上のステップS32〜S34の処理によって、次のフレームにおいては、今回のフレームで予測用データが送信されたゲーム装置とは異なるゲーム装置に予測用データが送信される。ステップS32〜S34の処理は、自機以外の他のゲーム装置が複数存在する場合に他のゲーム装置のそれぞれへ順番に予測用データを送信するための処理である。
【0085】
図10の説明に戻り、ステップS7において、データ受信プログラム54が実行されることによって、データ受信処理が実行される。具体的には、CPUコア21は、他のゲーム装置から予測用データを受信しているか否かをチェックする。そして、予測用データを受信した場合、受信した予測用データを受信データ65としてRAM24に記憶する。なお、予測用データは、送信元のゲーム装置毎に区別して記憶される。すなわち、第1ゲーム装置10aにおいては、第2ゲーム装置10bからの予測用データは、第1予測用データ65aとしてRAM24に更新して記憶され、第3ゲーム装置10cからの予測用データは、第2予測用データ65bとしてRAM24に更新して記憶される。なお、他のゲーム装置からの予測用データは、自機から送信する予測用データと同様、位置データ64a、速度データ64b、時刻データ64c、および操作データ64dを含む。
【0086】
ステップS8においては、他機カートの現在位置を算出するための位置算出処理が実行される。以下、図13を用いて位置算出処理の詳細を説明する。
【0087】
図13は、図10に示すステップS8の詳細な処理の流れを示すフローチャートである。位置算出処理においては、まずステップS41において、カウンタmの値が1に設定される。このカウンタmの値はRAM24に記憶される。続くステップS42において、CPUコア21は、今回のフレームにおけるステップS7においてゲーム装置Gmの予測用データが更新されたか否かを判定する。ここで、ゲーム装置Gmとは、他のゲーム装置に対して設定される番号が“m”であるゲーム装置のことである。また、mは、上述したカウンタmの値である。ステップS8において、例えば、RAM24に現在記憶されているカウンタmの値が“1”であれば、ゲーム装置G1の予測用データ(第1予測用データ)が更新されたか否かが判定され、カウンタmの値が“2”であれば、ゲーム装置G2の予測用データ(第2予測用データ)が更新されたか否かが判定される。判定の結果、ゲーム装置Gmの予測用データが更新されたと判定される場合、ステップS43の処理が実行される。一方、ゲーム装置Gmの予測用データが更新されたと判定される場合、ステップS43およびS44の処理が実行される。ゲーム装置Gmの予測用データが更新されていないと判定される場合、ステップS43およびS44の処理がスキップされ、ステップS45の処理が実行される。ステップS43およびS44の処理は、予測位置算出プログラム55によって実行される処理であり、予測用データに基づいて予測位置を算出する処理である。
【0088】
ステップS43においては、予測用データにより示される時刻と現在の時刻との時間差Δtが算出される。この予測用データは、ステップS8で新たに受信されたゲーム装置Gmからの予測用データである。具体的には、CPUコア21は、RAM24に記憶されている受信予測用データ65に含まれる時刻データにより示される時刻と、RAM24に記憶されている時刻データ63により示される時刻との差の時間を算出する。
【0089】
続くステップS44においては、ゲーム装置Gmを用いて操作されるカートの予測位置が算出される。カートの予測位置は、ステップS43で算出された時間差Δtと、予測用データに含まれる各データとを用いて算出される。なお、この予測用データは、ステップS8で新たに受信されたゲーム装置Gmからの予測用データである。本実施形態において、予測位置は、予測距離と予測方向とによって表される。予測距離とは、予測用データに含まれる位置データにより示される位置(基準位置。例えば図7に示す位置Pn)から予測位置(例えば図7に示す位置Qn+3)までの距離である。予測方向とは、基準位置から予測位置への方向である。
【0090】
予測距離Peは、予測用データに含まれる速度データにより示される速度の大きさVと、予測用データに含まれる操作データから算出される加速度aと、上記時間差Δtとに基づいて算出される。すなわち、CPUコア21は、次の式に従って距離Peを算出する。
Pe=V×Δt+(1/2)×a×(Δt)2
ここで、上式におけるaは、カートの加速度を表し、予測用データに含まれる操作データから算出される。加速度aの算出方法はステップS21の方法と同様である。一方、上記予測方向は、予測用データに含まれる速度データにより示される速度の方向に決定される。以上のように算出された予測距離および予測方向によって予測位置を決定することができる。すなわち、予測位置は、基準位置から予測方向へ予測距離だけ離れた位置に決定される。決定された予測位置のデータは予測位置データ70としてRAM24に記憶される。ステップS44の次にステップS45の処理が実行される。
【0091】
ステップS45においては、位置決定プログラム56が実行されることによって、ゲーム装置Gmを用いて操作されるカートの現在位置が決定される。現在位置(例えば図7に示す位置Rn+3)は、ステップS44で算出された予測位置(例えば図7に示す予測位置Qn+3)と、前回のフレームにおけるカートの位置(例えば図7に示す位置Rn+2)とに基づいて決定される。具体的には、現在位置は、前回のフレームにおけるカートの位置と予測位置とをk:1−k(kは0<k<1)に内分する位置に決定される。決定された現在位置のデータは、ゲーム装置Gmを用いて操作されるカートに対応するオブジェクトデータ68または69に含まれる位置データ68aまたは69aとしてRAM24に記憶される。
【0092】
位置算出処理においては、以上のステップS42〜S45の処理が他のゲーム装置毎に実行される。すなわち、ステップS46において、カウンタmの値が、他のゲーム装置の台数j(本実施形態ではj=2)と等しいか否かが判定される。判定の結果、カウンタmの値がjと等しくない場合、ステップS47の処理が実行される。すなわち、ステップS47において、カウンタmの値が1だけインクリメントされる。そして、ステップS47の次に再度ステップS42の処理が実行される。以降、カウンタmの値がjと等しくなるまでステップS42〜S45の処理が繰り返される。一方、ステップS46の判定においてカウンタmの値がjと等しい場合、CPUコア21は、位置算出処理を終了する。
【0093】
図10の説明に戻り、ステップS8の次のステップS9において、ゲーム進行処理が実行される。ゲーム進行処理においては、レースゲームの進行において必要となる処理が実行される。例えば、各カートがアイテムを用いた場合にはアイテムに関する処理が実行されたり、ゲーム装置10が動作を制御するカートが存在する場合には当該カートの位置を決定する処理が実行されたりする。
【0094】
続くステップS10において、ステップS5〜S9の処理結果に従ってゲーム画像が生成され、第2LCD12に表示される。続くステップS11において、レースゲームを終了するか否かが判定される。CPUコア21は、例えば、レースに参加した全てのカートがゴールしたか否かや、レース開始から予め定められた所定時間が経過したか否かによって、レースゲームを終了するか否かを判定する。判定の結果、レースゲームを終了すると判定される場合、CPUコア21は図10に示すゲーム処理を終了する。一方、レースゲームを終了しないと判定される場合、ステップS3の処理が再度実行される。以降、レースゲームを終了すると判定されるまで、ステップS3〜S11の処理が繰り返し実行されることによってレースゲームが進行する。以上で、本実施形態におけるゲーム処理の説明を終了する。
【0095】
なお、上記実施形態においては、予測位置は、他機カートの位置、他機カートが当該位置に存在する時点における時刻の他、他機カートの速度や他機カートに関する操作データに基づいて算出された。ここで、予測位置は、他機カートの過去の位置の履歴を用いれば、他機カートの位置とそのとき時刻とに基づいて算出することも可能である。したがって、ゲーム装置は、他機カートの速度や操作データを用いずに予測位置を算出してもよい。
【0096】
また、上記実施形態においては、予測位置と前回のフレームにおける位置とに基づいてカートの現在位置を決定するようにしたが、他の実施形態においては、予測位置をそのまま現在位置にするようにしてもよい。これによって、現在位置を算出するための処理量を軽減することができる。ただし、予測位置をそのまま現在位置にする場合、上述したように、予測用データが受信されなかったフレームにおいては現在位置が前回のフレームと同じ位置になり、他機カートが移動する様子が不自然に表示されてしまうおそれがある点に留意する。
【0097】
また、上記実施形態においては、予測用データに基づいて算出される予測位置は、当該予測用データが受信された時点における予測位置であった。ここで、他の実施形態においては、予測用データに基づいて算出される予測位置は、当該予測用データが受信された時点以降の所定の時点における予測位置であってもよい。例えば、図7を例にとって説明すると、時刻t=nの時点において、ゲーム装置は、時刻t=n+xの時点における予測位置Qn+xを算出するようにしてもよい。具体的には、ステップS43で算出された時間差Δtに上記xを加算してステップS44の処理を実行すればよい。なお、所定の時点は、予測用データが受信された時点以降の時点であって、予測用データが受信された時点に基づいて決められる時点であればよい。また、xの値は予め決められていてもよい。さらに、xの値は、他のゲーム装置毎に異なる値に設定されてもよい。例えば、自機と他のゲーム装置との通信に係る遅延時間が測定される場合には、当該遅延時間を考慮して他のゲーム装置毎にxの値を決定してもよい。なお、予測用データが受信された時点以降に上記所定の時点を設定する場合でも、ステップS45の処理は同様に行うことができる。
【0098】
また、上記実施形態においては、オブジェクト(カート)のゲーム空間における位置について予測を行うようにしたが、他の実施形態では、オブジェクトの位置に加えてオブジェクトの姿勢についても予測を行うようにしてもよい。このとき、ゲーム装置は、オブジェクトの姿勢を示す姿勢データを予測用データに含めて他のゲーム装置へ送信する。受信側のゲーム装置では、受信した予測用データに含まれている姿勢データを用いて、予測用データを受信した時点におけるオブジェクトの予測姿勢を算出する。なお、予測姿勢の算出方法としては、例えば、今回受信された予測用データとその前に受信された予測用データとを用いて姿勢の変化度合を算出し、当該変化度合と、今回受信した予測用データに含まれる姿勢データとに基づいて予測姿勢を算出する方法が考えられる。その他、送信側のゲーム装置が、姿勢の変化度合を示すデータを予測用データに含ませて送信するようにし、受信側のゲーム装置が、当該変化度合を示すデータと姿勢を示すデータとを用いて予測姿勢を算出する方法も考えられる。また、予測姿勢を算出したゲーム装置は、予測姿勢をそのまま現在の姿勢として決定してもよいし、1フレーム前の姿勢と予測姿勢とに基づいて現在の姿勢を決定するようにしてもよい。なお、オブジェクトの姿勢は、例えば、ワールド座標系における基準方向を0°とした角度で表現することができる。
【0099】
また、上記実施形態においては、本発明をレースゲームに適用した場合を例として説明したが、本発明は、ネットワークを介して接続される複数のゲーム装置のそれぞれを用いて操作される複数のオブジェクトが登場する任意のゲームに適用することが可能である。例えば、本発明は、ゲーム空間内を複数のキャラクタが移動するようなアクションゲーム等に対しても適用することが可能である。
【産業上の利用可能性】
【0100】
本発明は、他のゲーム装置を用いて操作されるオブジェクトの予測を確実に行うとともに、正確な予測を行うこと等を目的として、通信ゲームシステムや通信ゲームプログラム等として利用することが可能である。
【図面の簡単な説明】
【0101】
【図1】本実施形態に係るゲームシステムの構成を示すブロック図
【図2】本実施形態に係るゲームシステムに含まれるゲーム装置の外観図
【図3】ゲーム装置の内部構成図
【図4】本実施形態におけるゲームのゲーム画面を示す図
【図5】第2ゲーム装置10bが他のゲーム装置へ予測用データを送信する処理を示す図
【図6】第2カートの実際の移動の様子を示す図
【図7】n+3フレーム時間における時点で実行される予測処理を説明するための図
【図8】nフレーム時間からn+6フレーム時間の間における第2カートの移動の様子を示す図
【図9】ゲーム装置10のRAM24に記憶される主なデータを示す図
【図10】ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャート
【図11】図10に示すステップS5の詳細な処理の流れを示すフローチャート
【図12】図10に示すステップS5の詳細な処理の流れを示すフローチャート
【図13】図10に示すステップS8の詳細な処理の流れを示すフローチャート
【符号の説明】
【0102】
1 ネットワーク
10 ゲーム装置
12 第2LCD
17 メモリカード
21 CPUコア
24 RAM
33 無線通信部
51 ゲームプログラム
52 経過時間カウントプログラム
53 データ送信プログラム
54 データ受信プログラム
55 予測位置算出プログラム
56 位置決定プログラム
57 開始タイミング決定プログラム
【特許請求の範囲】
【請求項1】
ネットワークを介して複数のゲーム装置を接続してなる通信ゲームシステムに含まれるゲーム装置のコンピュータにおいて実行される通信ゲームプログラムであって、
他のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを当該他のゲーム装置から受信する受信ステップと、
前記受信ステップで受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点における前記オブジェクトの予測位置を算出する予測位置算出ステップと、
前記受信ステップで予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する位置決定ステップとを前記コンピュータに実行させる、通信ゲームプログラム。
【請求項2】
前記予測位置算出ステップは、前記受信ステップで予測用データが受信される度に実行され、
前記位置決定ステップは、所定時間毎に繰り返し実行され、
前記位置決定ステップにおいては、前記予測位置算出ステップで算出された最新の予測位置と、前回に実行された前記位置決定ステップで決定された前記オブジェクトの位置とに基づいて当該オブジェクトの位置が決定される、請求項1に記載の通信ゲームプログラム。
【請求項3】
前記位置決定ステップにおいては、前記受信ステップで予測用データを受信した時点における当該オブジェクトの位置は、当該オブジェクトの直前の位置と前記予測位置との間の位置に決定される、請求項1に記載の通信ゲームプログラム。
【請求項4】
前記位置決定ステップにおいては、前記受信ステップで予測用データを受信した時点における当該オブジェクトの位置は前記予測位置に決定される、請求項1に記載の通信ゲームプログラム。
【請求項5】
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差が算出され、当該予測用データを受信した時点における予測位置が当該時間差に基づいて算出される、請求項1に記載の通信ゲームプログラム。
【請求項6】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点における当該オブジェクトの位置の変化度を示す変化度データをさらに含み、
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる位置データと時刻データと変化度データとに基づいて、前記所定の時点における前記オブジェクトの予測位置が算出される、請求項1に記載の通信ゲームプログラム。
【請求項7】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点において行われたゲーム操作を示す操作データをさらに含み、
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる位置データと時刻データと操作データとに基づいて、前記所定の時点における前記オブジェクトの予測位置が算出される、請求項1に記載の通信ゲームプログラム。
【請求項8】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点における当該オブジェクトの姿勢を示す姿勢データをさらに含み、
前記受信ステップで受信した予測用データに含まれる姿勢データに基づいて、前記所定の時点における前記オブジェクトの姿勢を算出する姿勢算出ステップを前記コンピュータにさらに実行させる、請求項1に記載の通信ゲームプログラム。
【請求項9】
前記ゲームシステムに含まれる各ゲーム装置間で開始タイミングをそろえて所定のイベントを開始するイベント開始ステップをさらに実行させ、
前記時刻データは、前記所定のイベントが開始された時点からの経過時間を示す、請求項1に記載の通信ゲームプログラム。
【請求項10】
ネットワークを介して第1および第2のゲーム装置を接続してなる通信ゲームシステムであって、
前記第1のゲーム装置は、第1のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを前記第2のゲーム装置へ送信する送信手段を備え、
前記第2のゲーム装置は、
前記第1のゲーム装置から送信されてくる予測用データを受信する受信手段と、
前記受信手段によって受信された予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点における前記オブジェクトの予測位置を算出する予測位置算出手段と、
前記受信手段によって予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する位置決定手段とを備える、通信ゲームシステム。
【請求項1】
ネットワークを介して複数のゲーム装置を接続してなる通信ゲームシステムに含まれるゲーム装置のコンピュータにおいて実行される通信ゲームプログラムであって、
他のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを当該他のゲーム装置から受信する受信ステップと、
前記受信ステップで受信した予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点における前記オブジェクトの予測位置を算出する予測位置算出ステップと、
前記受信ステップで予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する位置決定ステップとを前記コンピュータに実行させる、通信ゲームプログラム。
【請求項2】
前記予測位置算出ステップは、前記受信ステップで予測用データが受信される度に実行され、
前記位置決定ステップは、所定時間毎に繰り返し実行され、
前記位置決定ステップにおいては、前記予測位置算出ステップで算出された最新の予測位置と、前回に実行された前記位置決定ステップで決定された前記オブジェクトの位置とに基づいて当該オブジェクトの位置が決定される、請求項1に記載の通信ゲームプログラム。
【請求項3】
前記位置決定ステップにおいては、前記受信ステップで予測用データを受信した時点における当該オブジェクトの位置は、当該オブジェクトの直前の位置と前記予測位置との間の位置に決定される、請求項1に記載の通信ゲームプログラム。
【請求項4】
前記位置決定ステップにおいては、前記受信ステップで予測用データを受信した時点における当該オブジェクトの位置は前記予測位置に決定される、請求項1に記載の通信ゲームプログラム。
【請求項5】
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる時刻データにより示される時刻と、当該予測用データを受信した時刻との時間差が算出され、当該予測用データを受信した時点における予測位置が当該時間差に基づいて算出される、請求項1に記載の通信ゲームプログラム。
【請求項6】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点における当該オブジェクトの位置の変化度を示す変化度データをさらに含み、
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる位置データと時刻データと変化度データとに基づいて、前記所定の時点における前記オブジェクトの予測位置が算出される、請求項1に記載の通信ゲームプログラム。
【請求項7】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点において行われたゲーム操作を示す操作データをさらに含み、
前記予測位置算出ステップにおいては、前記受信ステップで受信した予測用データに含まれる位置データと時刻データと操作データとに基づいて、前記所定の時点における前記オブジェクトの予測位置が算出される、請求項1に記載の通信ゲームプログラム。
【請求項8】
前記予測用データは、それに含まれる位置データにより示される位置に前記オブジェクトが存在する時点における当該オブジェクトの姿勢を示す姿勢データをさらに含み、
前記受信ステップで受信した予測用データに含まれる姿勢データに基づいて、前記所定の時点における前記オブジェクトの姿勢を算出する姿勢算出ステップを前記コンピュータにさらに実行させる、請求項1に記載の通信ゲームプログラム。
【請求項9】
前記ゲームシステムに含まれる各ゲーム装置間で開始タイミングをそろえて所定のイベントを開始するイベント開始ステップをさらに実行させ、
前記時刻データは、前記所定のイベントが開始された時点からの経過時間を示す、請求項1に記載の通信ゲームプログラム。
【請求項10】
ネットワークを介して第1および第2のゲーム装置を接続してなる通信ゲームシステムであって、
前記第1のゲーム装置は、第1のゲーム装置によって操作されるオブジェクトのゲーム空間における位置を示す位置データと、当該オブジェクトが当該位置に存在する時点における時刻を示す時刻データとを少なくとも含む予測用データを前記第2のゲーム装置へ送信する送信手段を備え、
前記第2のゲーム装置は、
前記第1のゲーム装置から送信されてくる予測用データを受信する受信手段と、
前記受信手段によって受信された予測用データに含まれる位置データと時刻データとに基づいて、当該予測用データを受信した時点に基づいて決められる当該時点以降の所定の時点における前記オブジェクトの予測位置を算出する予測位置算出手段と、
前記受信手段によって予測用データを受信した時点における前記オブジェクトのゲーム空間内における位置を前記予測位置に基づいて決定する位置決定手段とを備える、通信ゲームシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2007−97836(P2007−97836A)
【公開日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2005−291637(P2005−291637)
【出願日】平成17年10月4日(2005.10.4)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願日】平成17年10月4日(2005.10.4)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]