説明

プログラム、情報記憶媒体及びゲーム装置

【課題】a)通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決すること、b)ゲームサーバを必要とせずにネットワークゲームシステムを構築可能とすること。
【解決手段】ネットワークを介して接続され、他のゲーム装置12a〜12dとの間で、他キャラクタを制御するための受信データ152を授受し、受信データ154に基づいて他キャラクタの移動を制御するゲーム装置12a〜12dにおいて、受信データ154のデータ送信時刻から描画対象フレームに対する遅延時間を算出し、算出した遅延時間及び受信データ152に基づいて、遅延時間における他キャラクタの位置、速度、姿勢等の変化を予測する。そして、実時間に基づいて移動計算された自キャラクタの移動制御と、遅延時間分の変位量を予測することで移動計算された他キャラクタの移動制御とを同時に行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信対戦レースゲームを実行するためのプログラム等に関する。
【背景技術】
【0002】
インターネット等の通信網を介したネットワークゲームと呼ばれる通信ゲームが数多く開発されている。一口にネットワークゲームと言っても、MMORPG(Massively Multiplayer Online Role Playing Game)と呼ばれる数千人規模のユーザーがゲームサーバに接続して同時にプレイするネットワークゲームから、囲碁等の2人で対戦するネットワークゲームまで様々なネットワークゲームが存在する。
【0003】
ネットワークゲームは、好きな時間に他のプレーヤとゲームを楽しむことができる点で人気が高いが、次のような問題がある。即ち、ネットワークゲームはネットワークを介するが故に、通信遅延が必然的に発生する。特に、インターネット等の公衆通信網を介する場合にあってはその通信遅延時間が不規則に変動する上に、その変動幅も不確定である。一方で、ネットワークゲームでは、各ゲーム機間で同一のゲーム空間が共有される必要があるため、同一の事象が同一順に発生・展開される必要がある。従って、各プレーヤが操作入力した結果の整合性が求められる。ところが、整合性を重視した場合、各プレーヤの操作結果をいつの時点でゲーム画面に反映できるかというレスポンスの問題が表れてくる。
【0004】
1)整合性と2)レスポンスの問題はトレードオフの関係にあり、一方の問題解決を優先すると他方の問題が表面化する。何れの問題も通信遅延が原因であるため、通信遅延を解決すれば済む問題ではあるが、通信遅延を解消することは物理的に極めて困難である。例えば特許文献1には通信遅延を解消することを目的とした技術として、各ゲーム機の操作対象キャラクタの位置情報をゲームサーバを介してやり取りする技術が記載されている。
【特許文献1】特開2004−105671号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1の技術によりネットワークゲームシステムを構築した場合、各ゲーム機からゲームサーバにデータを送信する際(以下、「上り」という。)の通信遅延と、ゲームサーバから各ゲーム機にデータを配信する際(以下、「下り」という。)の通信遅延との2重の通信遅延が発生する。このため、ゲームサーバが、各ゲーム機から受信したデータを加工・補正等することで何らかの方法で通信遅延を解消させることができたとしても、それは「上り」に係る通信遅延の解消であって、各ゲーム機にデータを配信する「下り」の段階において新たな通信遅延が生じてしまう。従って、特許文献1の技術では通信遅延を解消することはできない。また、特許文献1の技術に従ってネットワークゲームシステムを構築するためには、実行中のゲームに関与するゲームサーバが必須となる。このため、需要に応じた台数分のゲームサーバが必要となり、実用化において問題となり得る。
【0006】
さて、上述したトレードオフの関係にある1)整合性と2)レスポンスとの問題であるが、問題の比重がネットワークゲームの種類によって異なる。例えば、囲碁や将棋、チェスといったターン制のゲームにあっては、レスポンスは殆ど問題とならないが、各プレーヤが操作した結果の整合性は極めて重要である。具体的には、相手プレーヤの操作結果が自ゲーム機の画面に反映されるまでにいくら時間を要しようとも、操作した確かな結果を画面に反映させることが重要である。
【0007】
この点は、整合性を重視する程度が異なるが、MMORPG等においても同様である。即ち、各プレーヤの操作結果が各ゲーム機の画面に反映されるまでのレスポンスが多少悪くなろうとも、共有している同一のゲーム空間において発生する事象の順番等が正確である必要がある。
【0008】
ところが、通信対戦レースゲームにおいては、整合性よりもレスポンスが重視される。逆の場合を想定すれば、その理由は明白である。例えば、車レースゲームにおいて、自キャラクタがカーブに差し掛かったために、自プレーヤがハンドルを操作する操作入力をした場面において、レスポンスよりも整合性を重視した場合を考える。この場合、レスポンスが悪いため、当該プレーヤのハンドル操作がなかなかゲーム画面に反映されない。その結果、自キャラクタの進行方向を変えようとして、更にハンドル操作がなされるであろう。ゲーム画面において、自キャラクタの進行方向が徐々に変わっていき、自キャラクタの進行方向が丁度良いと思って自プレーヤがハンドル操作を止めたとする。しかし、既に入力されているハンドル操作によって、更に自キャラクタの進行方向が曲げられてしまう場合があるであろう。このように、通信対戦レースゲームにおいては、レスポンスが重視される。
【0009】
一方、通信対戦レースゲームであっても、整合性を無視するわけにいかないのは勿論である。例えば、他のゲーム機からデータを受信する度に他のゲーム機の操作対象キャラクタである他キャラクタの位置を更新するが、データを受信できない間は他キャラクタの位置を更新しないとした場合、データの受信ができない間、他キャラクタはゲーム空間中に停止し、データを受信した途端に移動するような表示がなされてしまう。
【0010】
また、他キャラクタのデータを一定間隔で受信できたとしても次のような問題が生じる。即ち、自キャラクタについては良好なレスポンスで表示更新するため、操作入力に応じてリアルタイムに自キャラクタの表示位置が更新されていくが、他キャラクタの表示位置は通信遅延時間分遅れた過去の位置となる。具体的には、他のゲーム機から、通信遅延無く、リアルタイムにデータを受信することができないため、自ゲーム機で受信されるまでの通信遅延時間分の時差だけ、他キャラクタの表示位置が遅れる(即ち、後方に位置する)こととなる。従って、通信遅延時間が大きい場合には、各キャラクタが、実際からかけ離れた位置に表示され得る。
【0011】
本発明は以上の課題に鑑みてなされたものであり、その目的とするところは、a)通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決すること、b)ゲームサーバを必要とせずにネットワークゲームシステムを構築可能とすること、である。
【課題を解決するための手段】
【0012】
上記課題を解決するために、第1の発明は、
所定の通信網(例えば、図1のネットワークN)を介して他機と通信を行う通信手段(例えば、図18の通信部160)を備えたコンピュータ(例えば、図1のゲーム装置12a)に、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画させるとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行させるためのプログラムであって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段(例えば、図18の自キャラクタ移動制御部1224,図26のステップS2)、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段(例えば、図18の移動体制御情報送受信部1228,図26のステップS4)、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段(例えば、図18の自キャラクタ移動制御部1224、図26のステップS2)、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段(例えば、図18の移動体制御情報送受信部1228,図26のステップS4)、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段(例えば、図18の他キャラクタ移動制御部1226、図26のステップS6)、
として前記コンピュータを機能させるためのプログラムである。
【0013】
また、ゲーム装置の発明として、所定の通信網を介して他機と通信を行う通信手段を備え、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画するとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行するゲーム装置(例えば、図1のゲーム装置12a)であって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段(例えば、図18の自キャラクタ移動制御部1224)と、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段(例えば、図18の移動体制御情報送受信部1228)と、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段(例えば、図18の自キャラクタ移動制御部1224)と、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段(例えば、図18の移動体制御情報送受信部1228)と、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段(例えば、図18の他キャラクタ移動制御部1226)と、
を備えたゲーム装置である。
【0014】
第1の発明等によれば、操作入力に基づいて自キャラクタの移動制御情報が更新され、その更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動が制御される。従って、操作入力に対する自キャラクタの移動制御がレスポンス良くなされる。また、他キャラクタについては、他機から受信した最新の他キャラクタ移動制御情報に基づいて、通信遅延時間分の移動が予測されて制御される。従って、通信遅延時間が変化しようとも、通信遅延時間分の移動が予測されて他キャラクタの移動制御がなされる上、常に自機が知り得る最新の他キャラクタ移動制御情報に基づいて移動予測が行われるため、可及的に整合のとれたゲーム画像を生成・表示することができる。
【0015】
また、自機と他機との間の通信によって各操作対象キャラクタの制御やゲーム画像の生成がなされるため、ゲーム実行中においてゲームサーバを必要としない。
【0016】
第2の発明は、第1の発明のプログラムであって、
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの形状を加味して前記通信遅延時間分の他キャラクタの移動を予測する(例えば、図27のステップS22)ように前記コンピュータを機能させるためのプログラムである。
【0017】
この第2の発明によれば、コース形状が加味されて他キャラクタの移動予測がなされる。従って、例えば、コース形状に沿った移動となるように他キャラクタの移動を予測するといったことが可能となる。
【0018】
第3の発明は、第1又は第2の発明のプログラムであって、
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの所定場所に、当該場所を通過する際の移動基準情報(例えば、図18のコースデータ138,図40の履歴データ158)として予め定められた速度基準情報及び/又は当該場所通過基準位置情報を加味して前記通信遅延時間分の他キャラクタの移動を予測する(例えば、図27のステップS22,S24、図43のステップS106)ように前記コンピュータを機能させるためのプログラムである。
【0019】
ここで、所定場所とは、例えば第1コーナといった一定の広さを持った概念である。
第3の発明によれば、他キャラクタが所定場所を通過する場合に、速度基準情報及び/又は当該場所通過基準位置情報である移動基準情報が加味されて、移動予測がなされる。
【0020】
具体的には、例えば、第4の発明として、移動基準情報を、所定の高速キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報として予め設定された情報(例えば、図18のコースデータ138)としてもよい。
【0021】
この第4の発明によれば、例えば所定の高速キャラクタが所定場所を通過した際の速度及び/又は通過位置に近づけるような移動予測をすることで他キャラクタが高速キャラクタのような移動をするようにするといったことができる。高速キャラクタとしては、例えば、当該レースコースを最短時間で移動したキャラクタが考えられる。
【0022】
第5の発明は、第3の発明のプログラムであって、
他キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段(例えば、図40のゲーム進行制御部1222,図42のステップS104)として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記記録された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測する(例えば、図40の他キャラクタ移動制御部1230,図43のステップS106)ように前記コンピュータを機能させる、
ためのプログラムである。
【0023】
この第5の発明によれば、他キャラクタが所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報が移動履歴情報として記録され、再度所定場所を通過する際に、記録しておいた移動履歴情報を加味した移動予測がなされる。従って、所定場所を通過する際の他キャラクタの過去の傾向(癖とも言い得る。)に従った移動予測を行い得ることとなり、より精度の高い予測となり得る。
【0024】
第6の発明は、第3の発明のプログラムであって、
自キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段(例えば、図18のゲーム進行制御部1222)、
前記記録された移動履歴情報を他機に送信する制御を行う履歴送信制御手段(例えば、図18のゲーム進行制御部1222)、
他キャラクタの移動履歴情報を他機から受信する制御を行う履歴受信制御手段(例えば、図18のゲーム進行制御部1222)、
として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記履歴受信制御手段により受信された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ためのプログラムである。
【0025】
第5の発明では、自機において、他キャラクタが所定場所を通過した際の他キャラクタの速度情報及び/又は当該場所通過基準位置情報を記録することとした。即ち、他キャラクタが所定場所を通過した際の情報は自機内におけるものであるため、自機内で予測した結果の情報を記録する構成である。この第6の発明によれば、自機及び他機それぞれの装置において、当該装置の操作対象キャラクタの速度情報及び/又は当該場所通過基準位置情報が記録される。そして互いの装置間で送受信される。この結果、他キャラクタの情報は、他機における操作入力に応じて他機においてリアルタイムに算出・制御された情報となる。従って、所定場所を実際に通過した際の他キャラクタの実際の傾向に従った移動予測を行い得ることとなり、より精度の高い予測となり得る。
【0026】
第7の発明は、第1〜第6の何れかの発明のプログラムであって、
前記他キャラクタ予測制御手段が、前回予測時に求めた表示位置を、少なくとも今回予測時の予測位置に基づいて調節する位置調節手段(例えば、図18の他キャラクタ移動制御部1226、図27のステップS28)を有し、前記調節した前回の表示位置を今回の表示位置とすることにより、最新の他キャラクタ移動制御情報が変わることによる他キャラクタの瞬間移動的な移動変動を抑制するように前記コンピュータを機能させるためのプログラムである。
【0027】
今回予測時の予測位置の基礎は、受信した最新の他キャラクタ移動制御情報であるが、前回予測時の表示位置の基礎は、最新の他キャラクタ移動制御情報よりも過去の他キャラクタ移動制御情報である。つまり、基礎とする他キャラクタ移動制御情報が変わっている。そこで、最新の他キャラクタ移動制御情報と過去の他キャラクタ移動制御情報との間で急操作がなされていた場合、その操作が今回予測時の予測位置に反映されることで、他キャラクタの位置が瞬間移動的に大きく変わる場合があり得る。しかし、第7の発明によれば、前回予測時に求めた表示位置が、少なくとも今回予測時の予測位置に基づいて調節されて今回の表示位置となる。従って、今回予測時の基礎とする他キャラクタ移動制御情報が、前回予測時の基礎となった他キャラクタ移動制御情報から変わった場合であっても、前回予測時の表示位置と今回予測時の予測位置との間で調節が図られるため、瞬間移動的に他キャラクタの位置が大きく変わるような事態を回避し得る。
【0028】
第8の発明は、第7の発明のプログラムであって、
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想バネを設定し、少なくとも前記設定した仮想バネ(例えば、図31のステップT26)の仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるためのプログラムである。
【0029】
この第8の発明によれば、前回予測時の表示位置と今回予測時の予測位置との間に仮想バネが設定され、この仮想バネの仮想力に基づいて前回の表示位置が調節される。このため、前回予測時の表示位置が今回予測時の予測位置の方向に修正される結果、前回予測時の表示位置から相当離れた位置に、突然に他キャラクタが移動するような事態を回避し得る。
【0030】
第9の発明は、第8の発明のプログラムであって、
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想ダンパ(例えば、図31のステップT28)を更に設定し、前記設定した仮想バネ及び仮想ダンパによる総合的な仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるためのプログラムである。
【0031】
この第9の発明によれば、仮想バネに加えて仮想ダンパが設定される。これにより、仮想バネによる仮想力が大きいために、前回予測時の表示位置の調節が過度の調節となる事態を回避し、仮想バネによる仮想力を徐々に作用させることができるようになる。
【0032】
第10の発明は、第1〜第9の何れかの発明のプログラムであって、
前記自キャラクタ制御情報更新手段が、操作入力に基づいて自キャラクタの姿勢制御情報を更に更新していき、
前記送信制御手段が、前記更新される自キャラクタ姿勢制御情報(例えば,図24の受信データ152)を併せて送信し、
前記自キャラクタ制御手段が、前記更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢を制御する自キャラクタ姿勢制御手段(例えば、図18の自キャラクタ移動制御部1224、図26のステップS2)を有し、
前記受信制御手段が、他キャラクタの姿勢制御情報を更に受信し、
前記他キャラクタ予測制御手段が、少なくとも前記受信された他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報のうちの最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づき、当該最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御の送信時刻情報に基づく通信遅延時間分の他キャラクタの姿勢を予測することで他キャラクタの姿勢を制御する他キャラクタ姿勢予測制御手段(例えば、図18の他キャラクタ移動制御部1226、図27のステップS26)を有する、
ように前記コンピュータを機能させるためのプログラムである。
【0033】
第10の発明によれば、操作入力に基づいて自キャラクタの姿勢制御情報が更新され、その更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢が制御される。従って、操作入力に対する自キャラクタの姿勢制御がレスポンス良くなされる。また、他キャラクタについては、他機から受信した最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づいて、通信遅延時間分の姿勢が予測されて制御される。従って、通信遅延時間が変化しようとも、通信遅延時間分の姿勢が予測されて他キャラクタの姿勢制御がなされる上、常に自機が知り得る最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づいて予測が行われるため、可及的に整合のとれたゲーム画像を生成・表示することができる。
【0034】
第11の発明は、第10の発明のプログラムであって、
前記他キャラクタ姿勢予測制御手段が、移動中に取りうる限界の姿勢として予め定められた限界姿勢を超える姿勢をしない(例えば、図18の他キャラクタ移動制御部1226,図30のステップT8〜T14)ように他キャラクタの姿勢の変化を抑制する姿勢変化抑制手段を有するように前記コンピュータを機能させるためのプログラムである。
【0035】
第11の発明によれば、例えば、移動中の姿勢として想定外の姿勢である異常な姿勢や矛盾する姿勢を他キャラクタが取らないようにすることができるようになる。
【0036】
第12の発明は、第10又は第11の発明のプログラムであって、
前記他キャラクタ姿勢予測制御手段が、前回予測時に求めた表示姿勢を、少なくとも今回予測時の予測姿勢に基づいて調節する姿勢調節手段(例えば、図18の他キャラクタ移動制御部1226,図27のステップS30)を有し、前記調節した前回の表示姿勢を今回の表示姿勢とすることにより、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わることによる他キャラクタの急激な姿勢変動を抑制するように前記コンピュータを機能させるためのプログラムである。
【0037】
今回予測時の予測姿勢の基礎は、受信した最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報であるが、前回予測時の表示姿勢の基礎は、最新の他キャラクタ移動制御情報よりも過去の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報である。つまり、基礎とする他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わっている。そこで、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報と過去の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報との間で急操作がなされていた場合、その操作が今回予測時の予測姿勢に反映されることで、他キャラクタの姿勢が急激に変動する場合があり得る。しかし、第12の発明によれば、前回予測時に求めた表示姿勢が、少なくとも今回予測時の予測姿勢に基づいて調節されて今回の表示姿勢となる。従って、今回予測時の基礎とする他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が、前回予測時の基礎となった情報から変わった場合であっても、前回予測時の表示姿勢と今回予測時の予測姿勢との間で調節が図られるため、他キャラクタの姿勢が急激に変動するような事態を回避し得る。
【0038】
第13の発明は、第12の発明のプログラムであって、
前記姿勢調節手段が、前回予測時に求めた表示姿勢と今回予測時の予測姿勢との間の変位に対して、両姿勢の変位量が大きくなる程近似力を大きくする、両姿勢を近づけるための姿勢近似バネ(例えば、図32のステップT46)を設定し、少なくとも前記設定した姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるためのプログラムである。
【0039】
この第13の発明によれば、前回予測時の表示姿勢と今回予測時の予測姿勢とを近づけるための姿勢近似バネが設定され、この姿勢近似バネの近似力に基づいて前回の表示姿勢が調節される。このため、前回予測時の表示姿勢が今回予測時の姿勢に近づくこととなる結果、今回予測時の他キャラクタが、前回予測時の表示姿勢から急激に変化した姿勢を取るような事態を回避し得る。
【0040】
第14の発明は、第13の発明のプログラムであって、
前記姿勢調節手段が、前記姿勢近似バネの近似力を減殺させる姿勢近似ダンパ(例えば、図32のステップT48)を設定し、前記設定した姿勢近似ダンパによる減殺を加味した前記姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるためのプログラムである。
【0041】
この第14の発明によれば、姿勢近似バネに加えて姿勢近似ダンパが設定される。このため、姿勢近似バネによる近似力が大きく、前回予測時の表示姿勢の調節が過度の調節となる事態を回避し、姿勢近似バネの近似力を徐々に作用させることができるようになる。
【0042】
第15の発明は、第1〜第14の何れかの発明のプログラムであって、
前記通信対戦レースゲームは、前記ゲーム空間に設定された地上を前記操作対象キャラクタが走行するレースゲーム(例えば、図3のバイクレースゲーム)であり、
前記他キャラクタ予測制御手段の予測に従った他キャラクタの前記ゲーム空間への配置により、他キャラクタが前記ゲーム空間の地中に潜る場合又は地面から浮く場合を検出する検出手段(例えば、図18の他キャラクタ移動制御部1226,図27のステップS32)、
前記検出手段による検出に応じて、他キャラクタを前記ゲーム空間に設定された地面に接地させるように、他キャラクタの前記ゲーム空間の高さ方向の位置を補正する高さ位置補正手段(例えば、図18の他キャラクタ移動制御部1226,図33のステップT66)、
として前記コンピュータを機能させるためのプログラムである。
【0043】
この第15の発明によれば、通信対戦レースゲームは操作対象キャラクタが地上を走行するレースゲームである。予測に従って他キャラクタをゲーム空間に配置することとした場合、その予測やコースの形状等によっては、他キャラクタが地中に潜る場合又は地面から浮く場合が起こり得るため、検出手段が他キャラクタが地中に潜る場合又は地面から浮く場合を検出し、当該検出に応じて高さ位置補正手段が他キャラクタの高さ方向の位置を補正する。この結果、他キャラクタが地中に潜ってしまう、或いは地面から浮いてしまうといった奇異な状態を回避し得る。
【0044】
第16の発明は、第1〜第5の発明の何れかのプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体(例えば、図18の記憶部130)である。
【0045】
第16の発明によれば、記憶されたプログラムがコンピュータによって読み取られて実行されることにより、第1〜第15の発明と同様の作用効果を奏する情報記憶媒体を実現し得る。
【発明の効果】
【0046】
本発明によれば、通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決することができる。また、通信対戦レースゲームの実行中においてゲームサーバを必要としない。
【発明を実施するための最良の形態】
【0047】
以下、図面を参照して、本発明を実施するための最良の形態を説明する。なお、以下では、家庭用ゲーム装置において、周回コースを走行してラップタイムやゴール順位を競うバイクレースゲームを実行する場合について説明するが、本発明の適用がこれに限定されるものではない。
【0048】
[第1実施形態]
1−1.システム概要
図1は、第1実施形態におけるゲームシステム10の概略構成を示す図である。同図に示すように、ゲームシステム10は、4台のゲーム装置12a〜12dを備えて構成される。各ゲーム装置12a〜12dは、例えば、無線通信回線、専用線、ツイストペアケーブル、光通信ケーブル等の通信回線を介し、インターネット等の公衆回線網で構成されるネットワークNを利用して接続されている。尚、ゲームシステム10を構成するゲーム装置の台数が一例であるのは勿論である。
【0049】
ネットワークゲームを実現するシステム構成として様々な構成があるが本実施形態では、ゲームサーバを用いることなく複数のゲーム端末同士が通信回線を介して接続されるいわゆるピアツーピアの構成を例にとって説明する。勿論、複数のゲーム端末が物理的に結合した、全体として1台のシステム(例えば業務用ゲーム機)となっている構成等他の構成へも本発明を適用することができる。
【0050】
ゲーム装置12a〜12dは、プレーヤがネットワークゲームをプレイする端末装置であって、例えば家庭用・業務用の各種ゲーム装置や、パソコンなどによって実現される。第1実施形態において、ゲーム装置12a〜12dは、他のゲーム装置12a〜12dとの間でデータの送受を行うことにより、ネットワークゲームのゲームプレイに係るゲームデータを取得し、取得したゲームデータに基づいてゲーム画像を生成して表示する。
ゲーム装置12a〜12dは何れも同じ構成を有している。以下では、このうちのゲーム装置12aを中心に説明する。
【0051】
具体的には、例えば、ゲーム装置12aは、自ゲーム装置の操作対象である移動体オブジェクト(相対的な表現であるが、当該ゲーム装置の操作対象の移動体オブジェクト(以下、「キャラクタ」と呼ぶ)を、当該ゲーム装置の立場から見た場合、以下、「自キャラクタ」と呼ぶ)に関するゲームデータとしてデータ(1)を他のゲーム装置12b〜12dに送信する。ゲーム装置12b〜12dは、受信したデータ(1)に基づいて、ゲーム装置12b〜12dにとって他のゲーム装置12aの操作対象である移動体オブジェクト(自キャラクタと反対に、当該ゲーム装置以外のゲーム装置の操作対象の移動体オブジェクトを、当該ゲーム装置の立場から見た場合、以下、「他キャラクタ」と呼ぶ)の位置や姿勢等を演算し、該他キャラクタを表示制御する。
【0052】
データ(1)には、キャラクタを移動制御するために必要な情報(以下、「移動体制御情報」と呼ぶ)を含んでいる。具体的には、図24に示すように、キャラクタを特定するための識別番号、該キャラクタの転倒の有無を示す転倒フラグ、プレーヤから入力される操作データであるアクセル量Ia、ブレーキ量Ib、ハンドル値Ih、該キャラクタの位置座標P、速度V、角度Θ、角速度Ω、データ(1)がゲーム装置12aから送信された時刻を示すデータ送信時刻といったデータを含んでいる。
【0053】
1−2.ゲーム装置の外観例
図2は、ゲーム装置12a〜12dに家庭用ゲーム装置1200を適用した場合の概略外観図である。同図に示すように、家庭用ゲーム装置1200は、本体装置1210と、プレーヤがゲーム操作を入力するための方向キー1204やボタンスイッチ1206を有するゲームコントローラ1202と、スピーカ1222を有するディスプレイ1220と、を備える。ゲームコントローラ1202は本体装置1210に接続され、ディスプレイ1220は、画像信号及び音信号を伝送可能なケーブルK1,K2によって本体装置1210に接続されている。
【0054】
本体装置1210がゲーム処理を行うために必要なプログラムやデータ等を含むゲーム情報等は、例えば本体装置1210に着脱自在な情報記憶媒体であるCD−ROM1212やメモリカード1214、ICカード1216等に格納されている。或いは、ゲーム情報等は、本体装置1210が具備する通信装置1218を介してネットワークNに接続し、外部装置から取得することとしても良い。ここで、ネットワークNとは、データ授受が可能な通信路を意味する。即ち、ネットワークNとは、直接接続のための専用線(専用ケーブル)やイーサネット(登録商標)等によるLANの他、電話通信網やケーブル網、インターネット等の通信網を含む意味であり、また、通信方式については有線/無線を問わない。
【0055】
また、本体装置1210は、例えばCPUの他、ROMやRAM等のメモリを搭載した制御ユニット、CD−ROM1212等の情報記憶媒体の読取装置を具備する。本体装置1210は、CD−ROM1212等から読み出したゲーム情報と、ゲームコントローラ1202からの操作信号とに基づいて種々のゲーム処理を実行し、ゲーム画面の画像信号及びゲーム音の音信号を生成する。そして、生成した画像信号及び音信号をディスプレイ1220に出力して、ディスプレイ1220にゲーム画面を表示させるとともに、スピーカ1222からゲーム音を出力させる。プレーヤは、ディスプレイ1220に表示されたゲーム画面を見、スピーカ1222から出力されるゲーム音を聞きながら、ゲームコントローラ1202を操作してゲームを楽しむ。
【0056】
1−3.ゲームの概要
図3は、第1実施形態におけるゲーム画面の一例を示す図である。ゲーム画面は、仮想現実(VR)のコンピュータグラフィックス(CG)として描かれる。同図に示すように、プレーヤが操作するキャラクタであるバイク4a、他のプレーヤが操作するキャラクタであるバイク4b〜4dは、予め定められたサーキットのコース2上を走行するように表示される。コース2の周回数や一周のラップタイムは、タイム表示部6に表示される。プレーヤは、運転技術(ゲーム操作技術)を駆使して最速のラップタイムを競い、他のプレーヤにより操作されるバイク4b〜4dと着順を競う。
【0057】
また、ゲーム画面は、ディスプレイ1220の仕様に従った所定時間レート(例えば、1/60秒。この時間のことを「1フレーム」という。即ち、1/60秒間隔で描画されるタイミングのことをいう。)で繰り返し描画される。描画の都度、制御ユニットは、仮想空間中にコース2を含むサーキットを構成するオブジェクトとバイク4a〜4d等のオブジェクトを配置する。具体的には、プレーヤによる操作入力に基づいて、バイク4aの速度・加速度・車体の姿勢等をシミュレートする。また、他のゲーム装置12b〜12dから受信した移動体制御情報に基づいて、他プレーヤの操作するバイク4b〜4dの速度・加速度・車体の姿勢等をシミュレートする。シミュレート結果に従ってバイク4a〜4dをコース2上で移動(再配置)させる。そして、例えばバイク4aの進行方向に対して後方に配置された仮想視点から見た画像を生成し、ゲーム画面としてディスプレイ1220に表示させる。
【0058】
プレーヤは、ディスプレイ1220に表示されるゲーム画面を見ながら、ゲームコントローラ1202を操作してバイクレースゲームを楽しむ。
【0059】
1−4.原理
次に、他のゲーム装置12b〜12dから受信したゲームデータに基づいて、他キャラクタの移動計算を行い、自ゲーム装置12aに表示制御させるための原理について説明する。以下では、他キャラクタの走行状況に応じて通常走行時、転倒時に分けてそれぞれ説明する。
【0060】
まず、キャラクタの方向について定義する。図4(a)は、バイク4のモデル座標系であるローカル座標系(x,y,z)を説明するための図である。なお、仮想三次元空間(ゲーム空間)の座標系であるワールド座標系を(X,Y,Z)と大文字で表し、ローカル座標系と区別する。バイク4のローカル座標系は、バイク4の重心位置を原点とし、バイク4の前後方向をz軸とし、前後方向の前方方向をz軸正方向とする左手座標系であり、高さ方向がy軸、横方向がx軸である。
【0061】
図4(b)は、バイク4の回転角を説明するための図である。バイク4が仮想三次元空間(ゲーム空間)に配置される際の姿勢を決定づけるのがこの回転角である。バイク4は、図4(a)のローカル座標系でモデリングされた後、図4(b)に示すそれぞれの軸回りに回転されて姿勢が決定されて、ゲーム空間に配置される。即ち、ゲーム空間においては、バイク4を配置すべき配置点が設定され、この配置点にバイク4の代表点(例えば重心位置)が位置するように、ローカル座標系においてモデリングされたバイク4が配置されるが、その配置時の姿勢は、図4(b)に示すそれぞれの軸回りの回転によって決定されることとなる。x,y,z軸それぞれの軸回りの回転方向はピッチング方向、ヨー方向、ロール方向である。
【0062】
また、ピッチング方向の正負は、ゲーム空間において、バイク前方部が後方部より上方に位置するように回転させる場合の回転角を+、下方に位置するように回転させる場合の回転角を−とする。ロール方向の正負は、ゲーム空間において、重心位置(ローカル原点)からみて、バイク上部が下部より右側に位置するように回転させる場合の回転角を+、左側に位置するように回転させる場合の回転角を−とする。また、ヨー方向の正負は、ゲーム空間において、バイク4の速度ベクトルの方向に対して、バイク4の前方部が後方部より右側に位置するように回転させる場合の回転角を+、左側に位置するように回転させる場合(すなわち、速度ベクトルの方向に沿った向きにバイク4を配置させるように回転させる場合)の回転角を−とする。
【0063】
[通常走行時]
1−4−1.位置の予測
通常走行時における他キャラクタの位置の予測原理について説明する。他ゲーム装置12b〜12dから受信した移動体制御情報(以下、「受信データ」と呼ぶ)は、他ゲーム装置12b〜12dが送信してから受信されるまでの通信に係る遅れを持っている。例えば、図5に示すように、送信時刻が時刻t0である受信データに基づいて、時刻t3における他キャラクタの位置の予測を行う。尚、同図においては一例として、通信遅延時間を3フレームとしているが、実際には3フレーム以外の場合もあることはいうまでもない。以下では、通信遅延時間の代表例として、通信遅延時間が3フレームだった場合について説明する。
【0064】
時刻t3における他キャラクタの位置を予測するには、まず、時刻t0の移動体制御情報である受信データに基づいて、1フレーム後の時刻t1における移動体制御情報を予測する。次いで、時刻t1の移動体制御情報に基づいて、1フレーム後の時刻t2における移動体制御情報を予測する。そして、時刻t2の移動体制御情報に基づいて、1フレーム後の時刻t3の移動体制御情報を予測する。このように、1フレーム毎の移動体制御情報を累積的に求めていくことで、描画対象フレームにおける他キャラクタの位置を予測する。
【0065】
具体的に、図6を参照して、1フレーム後の位置を予測する方法について説明する。まず、時刻t0における位置の近傍(例えば、制御点Q0)に設定されているカーブの曲率を後述するコースデータ138(図20参照)から取得する。次いで、時刻t0における速度Vt0と、曲率rtと、定数kとを乗算して、速度ベクトルをヨー方向(ここではゲーム空間におけるヨー方向)にどのくらい回転させれば円弧を近似できるか、すなわち、カーブに沿った速度ベクトルを求める。また、この円弧を近似した傾きがヨー方向の予測角度θyt1となる。図6に示すように、時刻t0におけるヨー方向の角度θyt0とヨー方向の予測角度θyt1との差分から、回転させるべき角度(θyt1―θyt0)を求めることができる。
【0066】
そして、速度ベクトルをヨー方向に求めた角度(θyt1―θyt0)だけ回転させ、この速度ベクトルの単位時間あたりの位置変化量を時刻t0における位置Pt0に加算することにより、時刻t1における位置Pt1を求めることができる。
【0067】
1−4−2.速度の予測
次に、速度の予測について説明する。速度の予測は、上述した位置の予測と同様に、1フレーム毎の速度を累積的に求めていくことで、描画対象フレームにおける他キャラクタの速度Vを予測する。速度Vの変化量(即ち、加速度)は、プレーヤ操作により入力されるアクセル量Ia、ブレーキ量Ib、バイクの傾きによる抵抗、空気抵抗、エンジンロス等に基づいて算出される。
【0068】
具体的に、図7を参照して、1フレーム後の速度を予測する方法について説明する。先ず、時刻t1における予測位置の目標速度V0を取得する。目標速度V0とは、例えば、上級プレーヤにより操作される高速キャラクタが当該コースを走行した場合(例えば、走行ラインLT)において、制御点近傍の通過時点の速度を基準として設定される速度であり、後述するコースデータ138に格納されている。目標速度V0と時刻t0における速度Vt0とを比較し、速度Vt0が該位置における目標速度V0より高速となる場合は、一時的にブレーキを踏んでいるかのように、目標速度V0と速度Vt0とに基づいてブレーキ量Ibを補正ブレーキ量Ibfに補正する。
【0069】
時刻t1における予測速度は、時刻t0における速度Vt0に、単位時間加速度にアクセル量Iaを乗算した値を加算し、単位時間減速度にブレーキ量Ib(又は補正ブレーキ量Ibf)を乗算した値を減算し、補正係数αを加算することで求める。単位時間加速度は、アクセル量Iaに応じた単位時間あたりの加速度を算出するための係数であり、単位時間減速度は、ブレーキ量Ibに応じた単位時間あたりの減速度を算出するための係数である。また、補正係数αは、バイクの傾きによる抵抗、空気抵抗、エンジンロス等による影響を補正するための係数である。
【0070】
1−4−3.角度の予測
次に、角度の予測について説明する。なお、ヨー方向の角度(y成分)については、上述した位置の予測において求められた速度ベクトルの方向にバイク4の前方方向が向くようにバイク4が配置されるものであるため、以下では、ピッチング方向の角度(x成分)と、ロール方向の角度(z成分)の予測について図8、図9を参照して説明する。尚、図8、図9において、1点鎖線は、ワールド座標系のY軸方向及び水平方向(X−Z平面)を示しており、実線は、ローカル座標を示している。
【0071】
ピッチング方向の角度の予測は、上述の位置、速度の予測と異なり、複数フレームの変化を纏めて計算する。具体的には、図8の式に示すように、ピッチング方向の予測角度θxt3は、時刻t0におけるピッチング方向の角度θxt0に、時刻t0におけるピッチング方向の角速度ωxt0と遅延時間(t3−t0)とを乗算した値を加算して求める。遅延時間とは、データの送信時刻t0と描画対象となる時刻との差分であり、図5の例として描画対象の時刻をt3としている。図9〜図12においても同様である。
【0072】
ここで、ピッチング方向の角度変化の前後において、θxの正負が入れ替わっているか否かによって、予測角度を0に設定する。ゲーム実行中におけるピッチング方向の角度変化としては、例えば、図8に示すように、バイクの後輪を基軸として前輪を持ち上げたような姿勢(いわゆる、ウィリー)や、バイクの前輪を基軸として後輪を持ち上げたような姿勢(いわゆる、ジャックナイフ)などがある。例えば、時刻t0において、バイクの姿勢がウィリーから地面に戻る途中であった場合(即ち、角速度の向きがマイナス方向であった場合)、バイクの前輪が路面に着地した後は、それ以上同じピッチング方向へは回転しない。つまり、角度変化の前後で正負の符号が入れ替わることがないと考えられる。従って、受信データにおけるピッチング方向の角度と予測角度の符号が入れ替わってしまった場合は、予測角度を0に設定することで、バイクが地中に潜り込まない又は地面に浮かないようにする。
【0073】
また、通常走行時では、ピッチング方向の角度は、バイクが走行可能な姿勢を取り得るように、適性範囲(例えば、−60°≦θx≦60°)が設定されている。従って、予測角度θxt3が設定されている適性範囲を超えてしまうか否かを判定し、適性範囲を超えてしまう場合には、予測角度θxt3を適性範囲の上限又は下限の何れか近いほうに補正する。
【0074】
ロール方向の角度の予測は、ピッチング方向の角度の予測と同様に複数フレームの変化を纏めて計算する。つまり、図9に示すように、ロール方向の予測角度θzt3は、時刻t0における角度のz成分θzt0に、時刻t0における角速度のz成分ωzt0と、遅延時間(t3−t0)とを乗算した値を加算して求める。
【0075】
また、通常走行時では、ロール方向の角度は、ピッチング方向の角度と同様に、バイクが走行可能な姿勢を取り得るように、適性範囲(例えば、−60°≦θx≦60°)が設定されている。従って、予測角度θzt3が設定されている適性範囲を超えてしまう場合には、予測角度θzt3を適性範囲の上限又は下限の何れか近い方に補正する。
【0076】
[転倒時]
1−4−4.位置の予測
次に、転倒時における位置の予測について説明する。転倒時であるか否かの判定は、受信データに含まれる転倒フラグ152b(図24参照)に基づいて行う。ゲーム実行中にバイクが転倒した場合、バイクはプレーヤの操作入力に無関係に移動制御される。つまり、バイク転倒時は、プレーヤがバイクの挙動を制御することができず、バイクは基本的に
等速運動を行うこととして制御されるため、転倒時の速度、角速度、重力加速度等に基づいて位置、速度、姿勢が制御される。従って、転倒時における位置の予測は、複数フレームの変化を纏めて計算することにより行う。
【0077】
具体的には、図10の式に示すように、転倒時の予測位置Pt3は、時刻t0における位置Pt0に、時刻t0における速度Vt0と遅延時間(t3−t0)とを乗算した値を加算して求める。
【0078】
1−4−5.速度の予測
次に、転倒時の速度の予測について説明する。上述のように転倒時は、プレーヤからの操作入力が無効となるため、バイクは等速運動を行うとして制御される。しかし、バイクが転倒中に路面から離れた場合、例えば、空中でバウンドしているような場合、バイクには重力加速度が作用する。そこで、速度のy成分の変化についてのみ予測を行う。
【0079】
具体的には、図10の式に示すように、転倒時の予測速度Vyt3は、時刻t0における速度の成分Vyt0に、重力加速度gと遅延時間(t3−t0)とを乗算した値を加算して求める。
【0080】
1−4−6.角度の予測
次に、転倒時の角度の予測について説明する。角度の予測は、位置の予測と同様に複数フレームの変化を纏めて計算することにより行う。例えば、図10に示すように、ヨー方向の予測角度θyt3は、時刻t0におけるヨー方向の角度θyt0に、ヨー方向の角速度ωyt0と遅延時間(t3−t0)とを乗算した値を加算して求める。また、図10の式に示すように、ピッチング方向、ロール方向も同様に求める。
【0081】
1−4−7.位置補間
次に、位置補間について説明する。図11は、時刻t0〜t2の間に実際にゲーム画面に表示されたキャラクタの表示位置と、時刻t0の受信データに基づく時刻t3における予測位置とをそれぞれ示す図である。同図に示すように、時刻t0〜時刻t2における表示位置と、時刻t3における予測位置とを結ぶ軌跡(1点鎖線)は、時刻t2における表示位置から予測位置の個所で急激に変化している。これは、時刻t0〜t2における表示位置が、最新の受信データよりも古い受信データに基づいて予測された位置だからである。つまり、予測の基礎となる受信データが異なっている。このため、最新の受信データと古い受信データとの間でプレーヤにより急操作がなされていた場合、この操作が予測位置に反映され、キャラクタの瞬間移動的な位置変化として現れることとなる。
【0082】
このように得られた予測位置をそのまま次フレーム(時刻t3)に描画した場合、バイクの挙動が不自然になり、プレーヤにはブレやチラツキとして視認される。そこで、ブレやチラツキを解消するため、予測位置を現フレームの表示位置に近づけるように、位置、速度について補間処理を行う。なお、位置、速度の補間処理については、通常走行時、転倒時とも同様の処理を行うため、以下では、通常走行時についてのみ説明し、転倒時についての説明は省略する。
【0083】
具体的には、図12に示すように、時刻t3の予測位置Pdatと現フレーム(時刻t2)の表示位置Pdisとの差分から相対位置を求め、相対位置に定数Mを乗算することにより、単位時間当たりの位置変化量をバネ補正速度として求める。つまり、予測位置Pdatと表示位置Pdisとを結ぶ仮想バネを設定し、仮想バネの仮想力により、表示位置Pdisが予測位置Pdatの方向に調節されるように、バネ補正速度に基づく補間を行う。定数Mは、予測位置Pdatと表示位置Pdisとを結ぶ仮想バネのバネ係数に相当し、例えば、図13(a)に示すように、相対位置が大きくなる程、バネ補正速度が大きくなるように設定されている。
【0084】
また、予測速度Vdatと現フレームの表示速度Vdisとの差分から相対速度を求め、相対速度に定数Nを乗算して単位時間当たりの変化量をダンパ補正速度として求める。つまり、予測位置Pdatと表示位置Pdisとを結ぶ仮想バネの仮想力を緩衝するような仮想ダンパを設定することにより、仮想力の大きさによって、表示位置Pdisが過度に調節されないように、ダンパ補正速度に基づく補間を行う。定数Nは、予測位置Pdatと現フレームの表示位置Pdisとを結ぶ仮想バネを緩衝するための仮想ダンパの粘性係数に相当し、例えば、図13(b)に示すように、相対速度が大きくなる程、ダンパ補正速度は逆向きで絶対値が大きくなるように設定されている。
【0085】
さらに、図12の式に示すように、現フレームの表示速度Vdisにバネ補正速度を加算し、ダンパ補正速度を減算することにより、補間速度Vcorを算出する。そして、現フレームの表示位置Pdisに、補間速度Vcorの1フレーム分の位置変化量を加算して、補間位置Pcorを求める。この補間位置Pcorを、次フレーム(時刻t3)の表示位置Pdisとすることで、他キャラクタの自然な移動制御を実現することができる。
【0086】
1−4−8.角度補間
次に、角度の補間処理について説明する。位置補間で説明したように、予測角度Θdatと表示角度Θdisについても、基礎とする受信データが異なる場合、その間に行われたプレーヤの操作により、バイクの急激な姿勢変化を生じさせることとなる。そこで、位置補間の場合と同様に、バイクの角度についても、予測角度Θdatと表示角度Θdisに基づく補間を行う。尚、角度の補間処理は、通常走行時と転倒時で異なる処理を行う。まず、通常走行時における角度の補間処理について説明する。
【0087】
[通常走行時]
図14は、通常走行時における角度の補間原理について説明するための図である。なお、図14の式において、角度Θ、角速度Ωは、xyz各成分の値を含むことを意味している。同図に示すように、時刻t3における予測角度Θdatと現フレーム(時刻t2)における表示角度Θdisとの差分から相対角度を求め、相対角度に定数Oを乗算して、単位時間当たりの角度変化量をバネ補正角速度として求める。つまり、予測角度Θdatと表示角度Θdisとの間に仮想バネを設定し、仮想バネの仮想力により、表示角度Θdisが予測角度Θdatの方向に調節されるように、バネ補正角速度に基づく補間を行う。
【0088】
また、時刻t3における予測角速度Ωdatと現フレーム(時刻t2)の表示角速度Ωdisとの差分から相対角速度を求め、相対角速度に定数Uを乗算して、単位時間当たりの角度変化量をダンパ補正角速度として求める。つまり、予測角度Θdatと表示角度Θdisとを結ぶ仮想バネの仮想力を緩衝するような仮想ダンパを設定することにより、仮想力の大きさによって、表示角度Θdisが過度に調節されないように、ダンパ補正角速度に基づく補間を行う。
【0089】
さらに、図14の式に示すように、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算することにより、補間角速度Ωcorを算出する。そして、現フレームの表示角度Θdisに補間角速度Ωcorの1フレーム分の角度変化量を加算して補間角度Θcorを求める。この補間角度Θcorを、次フレーム(時刻t3)の表示角度Θdisとすることで、通常走行時における他キャラクタの自然な姿勢制御を実現することができる。
【0090】
[転倒時]
図15は、転倒時における角度の補間処理について説明するための図である。同図に示すように、予測角度Θdatと現フレームの表示角度Θdisとの差分から相対角度を求め、予測角速度Ωdatと現フレームの表示角速度Ωdisとの差分から相対角速度を求める。
【0091】
続いて、相対角度の各成分から相対角度の大きさAを求める。また、現フレームの表示角速度Ωdisの各成分から表示角速度Ωdisの大きさBを求める。そして、表示角速度Ωdisの大きさBを相対角度の大きさAで除算して、比率Cを求める。ここで、比率Cは、上限を1、下限を0の値とする。
【0092】
次に、相対角度に比率Cを乗算して、単位時間あたりの角度変化量をバネ補正角速度として求める。また、相対角速度に定数Dを乗算してダンパ補正角速度を求める。尚、バネ補正角速度及びダンパ補正角速度は、上述した通常走行時におけるバネ補正角速度及びダンパ補正角速度と同様の概念である。さらに、図15の式に示すように、現フレームの表示角速度Ωdisに、バネ補正角速度を加算し、ダンパ補正角速度を減算することにより、補間角速度Ωcorを算出する。そして、現フレームの表示角度Θdisに補間角速度Ωcorの1フレーム分の角度変化量を加算して補間角度Θcorを求める。この補間角度Θcorを、次フレーム(時刻t3)の表示角度Θdisとすることで、転倒時における他キャラクタの自然な姿勢制御を実現することができる。
【0093】
1−4−9.接地処理
次に、接地処理について説明する。接地処理は、上述した位置予測、角度予測に従ったバイクをゲーム空間に配置させた場合に、バイクが地中に潜ってしまう、或いは地面から浮いてしまうといった不自然な状況を検出し、このような場合は高さ方向の位置を補正することにより、バイクの接地点を適切に路面に接地させるために行う処理である。尚、接地処理は、通常走行時と転倒時で異なる処理を行うため、まず、通常走行時における接地処理について説明する。
【0094】
[通常走行時]
図16は、通常走行時における接地処理を説明するための図である。接地処理は、同図に示すように、先ず、キャラクタの接地角度を求める。接地角度は、ロール方向の角度に置き換えられるため、接地角度θzとして求まる。次に、重心車高hgを求める。重心車高hgは、ロール方向の角度が0°の時、即ち、バイクの垂直姿勢時における重心から路面までの距離である。さらに、重心車高hgにsin|θz|を乗算して、ゲーム空間における路面から重心までの距離である重心の高さHを求める。また、バイクが接地する路面のゲーム空間における高さhrを求める。そして、重心の高さHに路面の高さhrを加算し、これを補間位置Pcorのy座標に設定することにより、バイクの接地点を適切に路面に接地させることができる。
【0095】
[転倒時]
図17は、転倒時における接地処理を説明するための図である。同図に示すように、先ず、キャラクタの接地角度θGを求める。次いで、求めた接地角度θGに応じて、後述する接地点テーブル154(図25参照)から、接地点となる可能性の最も高い座標Az(xLA,yLA,zLA)を求める。そして、接地角度θGに基づき、ローカル座標Azをワールド座標系に変換する。
【0096】
ゲーム空間において、路面からの重心の高さHと、座標Azからの重心の高さhaを求める。そして、路面からの重心の高さHが、座標Azからの重心の高さhaより高いか否かを判定し、高さHの方が高い場合には、路面からの重心の高さHに路面の高さhrを加算した値を補間位置Pcorのy座標に設定する。一方、高さHの方が低い場合、高さHを高さhaに一致するように補正し、補正した高さHに路面の高さhrを加算した値を、補間位置Pcorのy座標に設定する。これにより、キャラクタの接地点を適切に路面に接地させることができる。
【0097】
1−5.機能構成
次に、第1実施形態におけるゲーム装置12の機能構成について説明する。図18は、本実施形態のゲーム装置12における内部構成の一例を示すブロック図である。図18に示すように、ゲーム装置12は、操作部110、処理部120、記憶部130、表示部140、音出力部150、通信部160等を備えて構成され、バイクレースゲームであるビデオゲームを実行してゲーム画像を生成し、生成したゲーム画像を表示部140に表示させる。
【0098】
操作部110は、プレーヤによる操作指示を受け付け、操作に応じた操作信号を処理部120に出力する。この機能は、例えばボタンや操作スティック、ダイヤル、マウス、キーボード、各種センサ等を備えた操作器によって実現される。
【0099】
処理部120は、ゲーム装置12全体の制御やゲームの進行、画像生成等の各種演算処理を行う。この機能は、例えばCPU(CISC型、RISC型)、ASIC(ゲートアレイ等)等の演算装置やその制御プログラムにより実現される。
【0100】
また、処理部120は、主にゲームに係る演算処理を行うゲーム演算部122と、ゲーム演算部122の処理によって求められた各種のデータに基づき、仮想カメラ等の所与の視点から見た仮想三次元空間(ゲーム空間)の画像の生成及びゲーム画面を表示させるための画像信号の生成を実行する画像生成部124と、効果音やBGM等のゲーム音の生成及びゲーム音を出力させるための音信号の生成を実行する音生成部126と、を含んでいる。
【0101】
ゲーム演算部122は、主な機能部として、ゲーム進行制御部1222、自キャラクタ移動制御部1224、他キャラクタ移動制御部1226、移動体制御情報送受信部1228を含む。ゲーム進行制御部1222は、ゲーム進行処理プログラム1322に従ってゲーム進行処理を実行し、プレーヤの指示操作に基づいて、キャラクタのゲーム空間中での移動の制御等を行う。自キャラクタ移動制御部1224は、自キャラクタ移動計算プログラム1324に従って、自キャラクタ移動計算処理を実行し、プレーヤから入力される各種操作に基づいて、自キャラクタを移動制御する。
【0102】
他キャラクタ移動制御部1226は、他キャラクタ移動計算プログラム1326に従って、他キャラクタ移動計算処理を実行し、受信データ等に基づき他キャラクタの移動計算を行い、他キャラクタを移動制御する。移動体制御情報送受信部1228は、移動体制御情報送受信プログラム1348に従って移動体制御情報送受信処理を実行し、ゲーム実行に係る移動体制御情報を他のゲーム装置12に送信したり、他のゲーム装置12から送信された移動体制御情報を受信する。
【0103】
画像生成部124は、例えばCPUやDSP等の演算装置やその制御プログラム、フレームバッファ等の描画フレーム用ICメモリ等によって実現される。画像生成部124は、ゲーム演算部122による演算結果に基づき、幾何変換処理やシェーディング処理等を実行してゲーム画面を表示するためのゲーム画像(3DCG画像)を生成し、生成した画像の画像信号を表示部140に出力する。
【0104】
表示部140は、画像生成部124からの画像信号に基づいて、例えば1/60秒毎に1フレームの画面を再描画しながらゲーム画面を表示する。この機能は、例えばCRT、LCD、ELD、PDP、HMD等のハードウェアによって実現される。
【0105】
音生成部126は、例えばCPUやDSP等の演算装置及びその制御プログラムによって実現され、ゲーム中に使用される効果音やBGM等のゲーム音を生成し、生成したゲーム音の音信号を音出力部150に出力する。
【0106】
音出力部150は、音生成部126からの音信号に基づいて、BGMや効果音等のゲーム音声を出力する。この機能は、例えばスピーカ等によって実現される。
【0107】
通信部160は、所定の通信回線(無線通信回線WやLAN等)に接続して外部装置(例えば、他のゲーム装置12)とのデータ通信を行う。
【0108】
記憶部130は、処理部120にゲーム装置12を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なプログラムやデータ等を記憶する。また、処理部120の作業領域として用いられ、処理部120が各種プログラムに従って実行した演算結果や操作部110から入力される入力データ等を一時的に記憶する。この機能は、例えば各種ICメモリやハードディスク、CD−ROM、DVD、MO、RAM、VRAM等によって実現される。
【0109】
また、記憶部130は、処理部120をゲーム演算部122として機能させるためのゲームプログラム132及びゲームデータ134を記憶する。具体的には、ゲームプログラム132として、ゲーム進行処理プログラム1322、自キャラクタ移動計算プログラム1324、他キャラクタ移動計算プログラム1326、位置予測プログラム1328、速度予測プログラム1330、角度予測プログラム1332、位置補間プログラム1334、角度補間プログラム1336、接地プログラム1338、転倒時位置速度予測プログラム1340、転倒時角度予測プログラム1342、転倒時角度補間プログラム1344、転倒時接地プログラム1346、移動体制御情報送受信プログラム1348、を記憶している。また、ゲームデータ134として、ステージデータ136、コースデータ138、移動体オブジェクトデータ142、移動体オブジェクトパラメータ144、最新データ予測データ146、補間データ148、受信データ152、接地点テーブル154、を記憶している。
【0110】
ゲーム進行処理プログラム1322は、ゲーム演算部122をゲーム進行制御部1222として機能させるためのプログラムである。自キャラクタ移動計算プログラム1324は、ゲーム演算部122を自キャラクタ移動制御部1224として機能させるためのプログラムである。他キャラクタ移動計算プログラム1326、位置予測プログラム1328、速度予測プログラム1330、角度予測プログラム1332、位置補間プログラム1334、角度補間プログラム1336、接地プログラム1338、転倒時位置速度予測プログラム1340、転倒時角度予測プログラム1342、転倒時角度補間プログラム1344、転倒時接地プログラム1346は、ゲーム演算部122を他キャラクタ移動制御部1226として機能させるためのプログラムである。移動体制御情報送受信プログラム1348は、ゲーム演算部122を移動体制御情報送受信部1228として機能させるためのプログラムである。
【0111】
ステージデータ136は、バイクレースゲームにおけるゲームステージを設定するためのデータを格納する。具体的には、ゲーム空間中にコース2を含むサーキットを配置するためのモデリングデータ及びテクスチャデータを格納している。
【0112】
コースデータ138は、コース2上に設定される各データを格納する。図19,20を参照して、コースデータ138について説明する。図19は、コースデータ138に格納される各データをコース2上に明示した図であり、図20は、コースデータ138のデータ構成例を示す図である。
【0113】
図19に示すように、コース2上には、コース2の中心線CLと、コース2を最短時間で走行するための目標ラインTLとが設定されている。中心線CL上には、スタート地点3を始点として、所定間隔おきに制御点Qが配置・設定されている。
【0114】
また、図20に示すように、各制御点Qには、距離RR、目標位置wt、目標速度V0、曲率rtが設定されている。距離RRは、中心線CLに沿ったスタート位置3から制御点Qまでの距離を格納している。目標位置wtは、目標ラインLTの位置を定義するための位置であり、各制御点Qにおける左右の変位が格納されている。即ち、各制御点Qから、それぞれの制御点Qの目標位置wt分左右に変位する地点を結んでいくことで目標ラインLTが定義される。また、目標位置wtの値は、目標ラインTLが進行方向に向かって中心線CLの左右どちらに位置するかに応じて正負の値をとる。例えば、目標ラインTLが進行方向に向かって中心線CLの左に位置する場合には正となり、右に位置する場合には負となる。
【0115】
目標速度V0は、例えば、高速キャラクタが目標ラインTLを最短時間で走行する場合の各制御点通過時の速度に基づいて定められる。つまり、プレーヤは、目標ラインLT上を、目標速度V0に従ってバイク4を走行させることで、コース2を最短時間で走行することができる。
【0116】
曲率rtは、中心線CLの当該位置における曲率を格納している。この値は、目標ラインTLが進行方向に向かって左右どちらに屈曲(カーブ)しているかに応じて正負の値を取るようにする。例えば、目標ラインTLの左カーブの部分では正の値とし、右カーブの部分では負の値とし、直線部分では「0」とする。また、その絶対値は、「0以上1未満(0≦rt<1)」となる。なお、曲率rtは、目標ラインTLの制御点に対応する各位置における曲率を格納する構成であっても良い。この場合は、バイク4の走行ラインを近似した曲率に基づいて、各種移動計算を行わせることができる。
【0117】
移動体オブジェクトデータ142は、仮想空間中にバイク4を配置するためのモデリングデータ及びテクスチャデータを格納する。
【0118】
移動体オブジェクトパラメータ144は、ゲーム実行中のバイク4a〜4dの各種パラメータを、各バイク毎に格納する。図21に移動体オブジェクトパラメータ144のデータ構成例を示す。同図に示すように、移動オブジェクトパラメータ144は、バイク4a〜4dを特定するための識別番号(144a)、転倒フラグ(144b)、アクセル量Ia(144c)、ブレーキ量Ib(144d)、ハンドル値Ih(144e)、位置座標P(144f)、速度V(144g)、角度Θ(144h)、角速度Ω(144i)、周回数(144j)、ラップタイム(144k)の各パラメータを格納する。
【0119】
移動体オブジェクトパラメータ144は、自キャラクタ移動制御処理、他キャラクタ移動制御処理の実行に伴い更新される。また、ゲーム進行処理においては、移動体オブジェクトパラメータ144に格納される各パラメータに基づいて、ゲーム画像の描画・生成が行われる。つまり、移動体オブジェクトパラメータに格納される各パラメータ、位置座標P(144f)、速度V(144g)、角度Θ(144h)、角速度Ω(144i)は、上述した表示位置、表示速度、表示角度、表示角速度にそれぞれ対応している。
【0120】
最新データ予測データ146は、他のゲーム装置12から受信した最新の受信データに基づいて算出された各種予測データを格納する。図22に最新データ予測データ146のデータ構成例を示す。同図に示すように、最新データ予測データ146は、転倒フラグ(146b)、予測位置Pdat(146c)、予測速度Vdat(146d)、予測角度Θdat(146e)、予測角速度Ωdat(146f)を他キャラクタ毎に他キャラクタの識別番号(146a)と対応付けて記憶している。
【0121】
転倒フラグ(146b)は、キャラクタの転倒の有無示すON,OFFフラグを格納している。予測座標Pdat(146c)は、最新の受信データに基づいて算出された予測位置Pdatを格納している。予測速度Vdat(146d)は、最新の受信データに基づいて算出された予測速度Vdatを格納している。予測角度Θdat(146e)は、最新の受信データに基づいて算出された予測角度Θdatを格納している。予測角速度Ωdatは、最新の受信データに基づいて算出された予測角速度Ωdatを格納している。この最新データ予測データ146は、他キャラクタ移動制御処理の実行に伴い各データが更新記録される。
【0122】
補間データ148は、補間処理において算出された各種補間データを格納している。図23に補間データ148のデータ構成例を示す。同図に示すように、補間データ148は、バイク4a〜4dの識別番号(148a)に対応付けて、転倒フラグ(148b)、補間位置Pcor(148c)、補間角度Θcor(148d)、補間速度Vcor(148e)、補間角速度Ωcor(148f)を格納している。
【0123】
通常走行時における補間処理が行われた場合、転倒フラグ(148b)は「OFF」に設定される。補間位置Pcor(148c)、補間速度Vcor(148e)には、位置補間処理により算出された補間位置Pcor、補間速度Vcorがそれぞれ格納される。また、補間角度Θcor(148d)、補間角速度Ωcor(148f)には、角度補間処理により算出された補間角度Θcor、補間角速度Ωcorがそれぞれ格納される。
【0124】
一方、転倒時における補間処理が行われた場合、転倒フラグ(148b)は「ON」に設定される。そして、補間位置Pcor(148c)、補間速度Vcor(148e)には、位置補間処理により算出された補間位置Pcor、補間速度Vcorが格納され、補間角度Θcor(148d)、補間角速度Ωcor(148f)には、転倒時角度補間処理により算出された補間角度Θcor、補間角速度Ωcorがそれぞれ格納される。
【0125】
受信データ152は、他のゲーム装置12から受信したデータのうち最新のデータを他キャラクタ毎に格納している。図24に受信データ152のデータ構成例を示す。同図に示すように、受信データ152は、キャラクタを特定するための識別番号(152a)、転倒フラグ(152b)、アクセル量Ia(152c)、ブレーキ量Ib(152d)、ハンドル値Ih(152e)、位置座標P(152f)、速度V(152g)、角度Θ(152h)、角速度Ω(152i)、データ送信時刻(152j)の各パラメータを格納している。
【0126】
接地点テーブル154は、バイクの接地点と、接地角度θGとの対応関係を定義する情報を、各キャラクタ毎に格納している。図25に接地点テーブル154のデータ構成例を示す。同図に示すように、接地点テーブル154は、キャラクタを特定するための識別番号(154a)、接地点(154b)、ローカル位置座標(154c)、接地角度θG(154d)を格納している。
【0127】
ローカル位置座標(154c)は、キャラクタが路面と所与の接地角度θGを成す場合において、路面との当接(接地)すべきバイクの部分のローカル座標を格納する。接地角度θGは、キャラクタの姿勢に応じて、キャラクタと路面とが成す角を接地角度θGとして格納している。
【0128】
1−6.処理の流れ
本第1実施形態における処理の流れについて図26〜図37を参照して説明する。
図26は、ゲーム進行制御部1222がゲーム進行プログラム1322を実行することで実現されるゲーム進行処理を示すフローチャートである。処理中のループは、ゲーム中、フレーム毎に繰り返し実行されるループである。
【0129】
1−6−1.ゲーム進行処理
先ず、ゲーム進行制御部1222は、自キャラクタ移動制御部1224に、自キャラクタ移動計算プログラム1324に従った自キャラクタの移動計算処理を実行させる(ステップS2)。具体的には、自キャラクタ移動制御部1224は、自キャラクタの位置座標、速度、角度、角速度、プレーヤから入力される操作データ(例えば、アクセル量Ia、ブレーキ量Ib、ハンドル量Ih)等から、次フレームにおける自キャラクタの位置座標、速度、姿勢等を算出し、移動体オブジェクトパラメータ144を更新する。即ち、プレーヤの操作入力に対してレスポンス良く、リアルタイム(実時間)に移動体オブジェクトパラメータ144を更新することとなる。
【0130】
次いで、ゲーム進行制御部1222は、移動体制御情報送受信部1228に、移動体制御情報送受信プログラムに従った移動体制御情報送受信処理を実行させる(ステップS4)。具体的には、移動体制御情報送受信部1228は、更新された移動体オブジェクトパラメータ144に含まれるデータを、移動体制御情報として、同一ゲームに参加しているプレーヤが操作する他のゲーム装置12に送信する。また、同一ゲームに参加しているプレーヤが操作する他のゲーム装置12から送信された移動体制御情報を受信する。
【0131】
続いて、ゲーム進行制御部1222は、他キャラクタ移動制御部1226に、他キャラクタ移動計算プログラム1326に従って、後述する他キャラクタ移動計算処理を実行させ、次フレームにおける他キャラクタの位置座標、速度、姿勢等を算出させる(ステップS6)。そして、計算結果に基づき自キャラクタ及び他キャラクタをゲーム空間に配置して(ステップS8)描画処理を行い、ゲーム画像を生成して、表示部140にゲーム画像を表示する(ステップS10)。
【0132】
1−6−2.他キャラクタ移動計算処理
次に、ゲーム進行処理のサブルーチンとして実行される他キャラクタ移動計算処理について説明する。図27は、他キャラクタ移動制御部1226が他キャラクタ移動計算プログラム1326を実行することで実現される他キャラクタ移動計算処理を示すフローチャートである。尚、処理中のループAは、他キャラクタ毎に繰り返される処理であり、処理中のループBは、ステップS20で算出されたループ回数に従って繰り返される処理である。
【0133】
同図において、先ず、他キャラクタ移動制御部1226は、他のゲーム装置12から最新の移動体制御情報を受信したか否かを判定し(ステップS12)、最新の移動体制御情報を受信した場合(ステップS12;YES)、受信データ152を新たに受信した移動体制御情報に基づいて更新する(ステップS14)。具体的には、他ゲーム装置12から受信した移動体制御情報のデータ送信時刻と、受信データ152に格納されているデータ送信時刻142jとを比較し、受信した移動体制御情報のデータ送信時刻の方が新しい場合、受信データ152を受信した移動体制御情報に基づいて更新する。
【0134】
次いで、受信データ152の転倒フラグを参照して、他キャラクタが転倒しているか否かを判定する(ステップS16)。他キャラクタが転倒していない場合(ステップS16;NO)、受信データ152のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める(ステップS18)。続いて、遅延時間から他キャラクタの予測位置、予測速度を算出するためのループ回数Nを求める(ステップS20)。具体的には、遅延時間を1フレーム、即ち1/60秒で除算して求まる回数である。
【0135】
そして、求めたループ回数に従ってループBを繰り返して実行する。ループBでは、先ず、受信データ152に基づいて、他キャラクタの予測位置を算出する位置予測処理を実行する(ステップS22)。次いで、受信データ152に基づいて、他キャラクタの予測速度を算出する速度予測処理を実行する(ステップS24)。
【0136】
続いて、ループBを終了すると、受信データ152に基づいて他キャラクタの予測角度を算出する角度予測処理を実行する(ステップS26)。そして、現フレームの表示位置と、受信データ152に基づく予測位置とから補間位置を求める位置補間処理を実行する(ステップS28)。また、現フレームの表示角度と、受信データ152に基づく予測角度とから補間角度を求める角度補間処理を実行する(ステップS30)。さらに、他キャラクタをゲーム空間の正しい位置に配置するための接地処理を実行し(ステップS32)、本他キャラクタ移動計算処理を終了する。
【0137】
一方、ステップS16において、他キャラクタが転倒していると判定した場合(ステップS16;YES)、受信データ152に基づいて、転倒時における他キャラクタの予測位置、予測速度を算出する転倒時位置速度予測処理を実行する(ステップS34)。次いで、受信データ152に基づいて、転倒時における他キャラクタの予測角度を算出する転倒時角度予測処理を実行する(ステップS36)。
【0138】
そして、現フレームの表示位置と、受信データ152に基づく予測位置とから、補間位置を求める位置補間処理を実行する(ステップS38)。また、現フレームの表示角度と、受信データ152に基づく予測角度とから、転倒時における補間角度を求める転倒時角度補間処理を実行する(ステップS40)。さらに、他キャラクタをゲーム空間の正しい位置に配置するための転倒時接地処理を実行し(ステップS42)、本他キャラクタ移動計算処理を終了する。
【0139】
1−6−3.位置予測処理
次に、他キャラクタ移動計算処理のサブルーチンとして実行される各種処理について説明する。図28は、他キャラクタ移動制御部1226が位置予測プログラム1328を実行することで実現される位置予測処理を示すフローチャートである。
【0140】
同図において、先ず、他キャラクタ移動制御部1226は、他キャラクタ移動計算処理において最新データの受信による受信データ152の更新(図27のステップS14)が行われたか否かを判定する(ステップS51)。受信データ152の更新が行われていた場合(ステップS51;YES)、ループ回数が1回目であるか否かを判定する(ステップS52)。ループ回数が1回目である場合(ステップS52;YES)、受信データ152から位置座標P、ヨー方向の角度(y成分)θy、速度Vを取得する。一方、受信データ152の更新が行われていなかった場合(ステップS51;NO)、又はループ回数が1回目でない場合(ステップS52;NO)、最新データ予測データ146から位置座標P、ヨー方向の角度(y成分)θy、速度Vを取得する(ステップS56)。
【0141】
次いで、取得した位置座標Pに対応する制御点の曲率をコースデータ138から取得し(ステップS58)、速度ベクトルと曲率に基づいてヨー方向の予測角度θyを算出する(ステップS60)。そして、最新データ予測データの角度のy成分を算出した予測角度θyに更新する(ステップS62)。また、取得した速度Vのベクトルの向きが予測角度θyと一致するようにヨー方向に回転する(ステップS64)。
【0142】
続いて、ベクトルの向きを修正した速度Vから1フレーム分の移動距離を算出する。そして、取得した位置座標Pに移動距離を加算して、予測位置を算出する(ステップS66)。そして、最新データ予測データ146の位置座標と速度を予測位置、算出した速度に更新して(ステップS68)、本位置予測処理を終了する。
【0143】
1−6−4.速度予測処理
次に、速度予測処理について説明する。図29は、他キャラクタ移動制御部1226が速度予測プログラム1330を実行することで実現される速度予測処理を示すフローチャートである。
【0144】
同図において、先ず、他キャラクタ移動制御部1226は、最新データ予測データ146から位置座標P、速度Vを取得する(ステップS76)。次いで、取得した位置座標Pに対応する目標速度V0をコースデータ138から取得し(ステップS78)、速度Vが目標速度V0より高速であるか否かを判定する(ステップS80)。速度Vが目標速度V0より高速である場合(ステップS80;YES)、目標速度V0と速度Vとに基づいて、ブレーキ量Ibを補正する(ステップS82)。
【0145】
続いて、速度Vと、アクセル量Ia、ブレーキ量Ib、補正係数αに基づいて、予測速度を算出する(ステップS84)。そして、最新データ予測データ146の速度を、予測速度に更新して(ステップS86)、本速度予測処理を終了する。
【0146】
1−6−5.角度予測処理
次に、角度予測処理について説明する。図30は、他キャラクタ移動制御部1226が角度予測プログラム1332を実行することで実現される角度予測処理を示すフローチャートである。
【0147】
同図において、先ず、他キャラクタ移動制御部1226は、受信データ152のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める(ステップT2)。次いで、受信データ152に格納されるピッチング方向の角度及び角速度と、遅延時間とに基づいてピッチング方向の予測角度θxを算出する(ステップT4)。また、受信データ152に格納されるロール方向の角度及び角速度と、遅延時間とに基づいてロール方向の予測角度θzを算出する(ステップT6)。
【0148】
続いて、受信データ152のピッチング方向の角度の符号と、予測角度θxの符号とが入れ替わっているか否かを判定し(ステップT8)、符号が入れ替わっている場合は(ステップT8;YES)、キャラクタが路面に接地したと判定して、予測角度θxを0°とする(ステップT10)。
【0149】
また、予測角度θx,θzが基準範囲内であるか否かを判定し(ステップT12)、基準範囲内にない場合は(ステップT12;NO)、基準範囲外にある予測角度θx、θzを基準範囲の上限値又は下限値の何れか近い方の値とする(ステップT14)。そして、最新データ予測データ146の角度のx、z成分を予測角度θx、θzにそれぞれ更新して(ステップT16)、本角度予測処理を終了する。
【0150】
1−6−6.位置補間処理
次に、位置補間処理について説明する。図31は、他キャラクタ移動制御部1226が位置補間プログラム1334を実行することで実現される位置補間処理を示すフローチャートである。
【0151】
同図に示すように、先ず、他キャラクタ移動制御部1226は、予測位置の位置座標と、表示位置の位置座標との差分を相対位置として求める(ステップT22)。次いで、予測速度と表示速度との差分を相対速度として求める(ステップT24)。続いて、相対位置に定数Mを乗算してバネ補正速度を求め(ステップT26)、相対速度に定数Nを乗算してダンパ補正速度を求める(ステップT28)。
【0152】
さらに、表示速度にバネ補正速度を加算し、ダンパ補正速度を減算して補間速度を算出する(ステップT30)。そして、現フレームの表示位置に補間速度による1フレーム分の距離を加算して補間位置を算出する(ステップT32)。次いで、補間データ148の補間位置、補間速度を更新すると共に(ステップT34)、移動体オブジェクトパラメータの位置座標、速度を補間位置、補間速度に更新して(ステップT36)、本位置補間処理を終了する。
【0153】
1−6−7.角度補間処理
次に、角度補間処理について説明する。図32は、他キャラクタ移動制御部1226が角度補間プログラム1336を実行することで実現される角度補間処理を示すフローチャートである。尚,処理中のループは、角度の各成分(xyz成分)毎に繰り返される処理である。
【0154】
同図において、先ず、他キャラクタ移動制御部1226は、予測角度と表示角度の差分から相対角度を求める(ステップT42)。また、予測角速度と表示角速度との差分から相対角速度を求める(ステップT44)。続いて、相対角度に定数Aを乗算してバネ補正角速度を求め(ステップT46)、相対角速度に定数Bを乗算してダンパ補正角速度を求める(ステップT48)。
【0155】
さらに、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算して、補間角速度を演算する(ステップT50)。そして、表示角度に補間角速度による1フレーム分の角度を加算して補間角度を算出する(ステップT52)。次いで、補間データ148の補間角度、補間角速度を更新すると共に(ステップT54)、移動体オブジェクトパラメータ144の角度、角速度を補間角度、補間角速度に更新して(ステップT56)、ループ処理を終了する。
【0156】
1−6−8.接地処理
次に、接地処理について説明する。図33は、他キャラクタ移動制御部1226が接地プログラム1338を実行することで実現される接地処理を示すフローチャートである。
【0157】
同図において、先ず、他キャラクタ移動制御部1226は、補間角度のz成分から車体(キャラクタ)の接地角度θzを求める(ステップT62)。次いで、重心車高hg、接地角度θz、サスペンションの縮み具合等に基づきキャラクタの重心から路面までの高さHを算出する(ステップT64)。そして、路面までの高さHに路面の高さhrを加算した値を算出し、移動体オブジェクトパラメータ144の位置座標のy成分を算出された値に更新する(ステップS66)。
【0158】
1−6−9.転倒時位置速度予測処理
次に、転倒時位置速度予測処理について説明する。図34は、他キャラクタ移動制御部1226が転倒時位置速度予測プログラム1340を実行することで実現される転倒時位置速度予測処理を示すフローチャートである。
【0159】
同図において、先ず、他キャラクタ移動制御部1226は、受信データ152のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める(ステップT72)。次いで、受信データ152に格納される速度と、遅延時間とから予測位置を算出する(ステップT74)。
【0160】
続いて、受信データ152に格納される速度のy成分に、重力加速度gと遅延時間を乗算した値を加算して、予測速度を算出する(ステップT76)。また、最新データ予測データ146の転倒フラグをONに設定する(ステップT78)。そして、最新データ予測データ146の位置座標、速度を、予測位置、予測速度に更新して(ステップT80)、本転倒時位置速度予測処理を終了する。
【0161】
1−6−10.転倒時角度予測処理
次に、転倒時角度予測処理について説明する。図35は、他キャラクタ移動制御部1226が転倒時角度予測プログラム1342を実行することで実現される転倒時角度予測処理を示すフローチャートである。尚,処理中のループは、角度の各成分(xyz成分)毎に繰り返される処理である。
【0162】
同図において、先ず、他キャラクタ移動制御部1226は、受信データ152のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める(ステップT82)。次いで、ループ処理を開始し、受信データ152に格納される角度及び角速度と、遅延時間とから予測角度を算出する(ステップT84)。そして、最新データ予測データ146の角度、角速度を更新し(ステップT86)、本転倒時角度予測処理を終了する。
【0163】
1−6−11.転倒時角度補間処理
次に、転倒時角度補間予測処理について説明する。図36は、他キャラクタ移動制御部1226が転倒時角度補間プログラム1346を実行することで実現される転倒時角度補間処理を示すフローチャートである。
【0164】
同図において、先ず、他キャラクタ移動制御部1226は、予測角度と表示角度との差分から相対角度を求める(ステップST2)。また、予測角速度と表示角速度との差分から相対角速度を求める(ステップST4)。
【0165】
次いで、相対角度の大きさAと、表示角速度の大きさBを求め(ステップST6,8)、表示角速度の大きさBと相対角度の大きさAの比率Cを求める(ステップST10)。さらに、相対角度に比率Cを乗算してバネ補正角速度を求める(ステップST12)。また、相対角速度に定数Dを乗算してダンパ補正角速度を求める(ステップST14)。
【0166】
続いて、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算して、補間角速度を算出する(ステップST16)。そして、表示角度に補間角速度による1フレーム分の角度を加算して補間角度を演算する(ステップST18)。続いて、補間データ146の角度、角速度を、補間角度、補間角速度に更新すると共に(ステップST20)、移動体オブジェクトパラメータ144の角度、角速度を、補間角度、補間角速度に更新して(ステップST22)、本転倒時角度補間処理を終了する。
【0167】
1−6−12.転倒時接地処理
次に、転倒時接地処理について説明する。図37は、他キャラクタ移動制御部1226が転倒時接地プログラム1346を実行することにより実現される転倒時接地処理を示すフローチャートである。
【0168】
同図において、先ず、他キャラクタ移動制御部1226は、補間角度から車体の接地角度θGを求める(ステップST32)。次いで、接地角度θGに応じて、接地点テーブル154から車体(キャラクタ)の接地点となる可能性が最も高い接地点Azのローカル座標を求める(ステップST34)。さらに、接地点Azのローカル座標をワールド座標系に変換する(ステップST36)。
【0169】
続いて、路面からキャラクタの重心までの高さHを算出すると共に(ステップST38)、接地点Azの位置座標からキャラクタの重心までの高さhaを算出する(ステップST40)。そして、高さHが高さhaより低いか否かを判定する(ステップST42)。高さHが高さhaより低い場合(ステップST42;YES)、車体(キャラクタ)の一部が路面に潜ることとなるため、高さHが高さhaに一致するように補正し、補正した高さHに路面の高さhrを加算する。そして、移動体オブジェクトパラメータ144の位置座標のy座標を更新する(ステップST44)。
【0170】
一方、高さHが高さhaより低くない場合(ステップST42;NO)、車体(キャラクタ)は、路面に適正に接地可能であるため移動体オブジェクトパラメータ144の位置座標を更新せずに本転倒時接地処理を終了する。
【0171】
1−7.ハードウェア構成
次に、本実施の形態におけるゲーム装置12を実現するためのハードウェア構成の一例について図38を参照して説明する。図38に示す電子機器100は、CPU1000、ROM1002、RAM1004、情報記憶媒体1006、音生成IC1008、画像生成IC1010、VRAM1012、I/Oポート1014、1016を備え、各部がシステムバス1018により相互にデータ入出力可能に接続されている。I/Oポート1014には入力装置1024が、I/Oポート1016には通信装置1026が、それぞれ接続されている。
【0172】
CPU1000は、情報記憶媒体1006に格納されるプログラム、ROM1002に格納されるシステムプログラム(装置本体の初期化情報等)、入力装置1024によって入力される信号等に従って、機器全体の制御や各種データ処理を行う。このCPU1000は、図18に示す処理部120に相当する。
【0173】
RAM1004は、CPU1000の作業領域等として用いられる記憶部であり、情報記憶媒体1006やROM1002内の所与の内容、CPU1000の演算結果等が格納される。このRAM1004は、図18に示す記憶部130の一部を構成するものである。
【0174】
情報記憶媒体1006は、プログラム、画像データ、音データ、プレイデータ等が主に格納されるものである。この情報記憶媒体1006は、図18に示す記憶部130の一部を構成するものである。本実施の形態を実現するものがコンピュータシステムである場合には、情報記憶媒体1006は、ゲーム進行処理プログラム1322などを格納する情報記憶媒体としてのCD−ROM、DVD或いはハードディスク等が用いられる。
【0175】
また、この装置に設けられている画像生成IC1010と音生成IC1008により、音や画像の好適な出力が行えるようになっている。
【0176】
画像生成IC1010は、CPU1000の命令によって、ROM1002、RAM1004、情報記憶媒体1006等から送られる情報に基づいて画素情報を生成する集積回路であり、生成される表示信号は表示装置1022に出力される。表示装置1022は、CRT、LCD、ELD、PDP、HMD等により実現され、図2に示すディスプレイ1220、図18に示す表示部140に相当する。
【0177】
また、音生成IC1008は、CPU1000の命令によって、情報記憶媒体1006やROM1002に記憶される情報、RAM1004に格納される音データに応じた音信号を生成する集積回路であり、生成される音信号はスピーカ1020によって出力される。スピーカ1020は、図2に示すスピーカ1222、図18に示す音出力部150に相当する。
【0178】
VRAM1012は、表示装置1022に表示される画像データを一時的に格納する記憶装置であり、図18に示す記憶部130の一部を構成するものである。このVRAM1012は、画像生成IC1010によって生成される、1フレーム分の画像データを格納するためのフレームバッファを備える。
【0179】
入力装置1024は、各種操作を入力するための装置であり、その機能は、キーボード、マウス、タッチパネル等のハードウェアにより実現される。この入力装置1024は、図2に示すコントローラ1202、図18に示す操作部110に相当する。
【0180】
通信装置1026は装置内部で利用される情報を外部とやりとりするものであり、他の装置と通信回線を介して接続されてプログラムに応じた所与の情報を送受すること等に利用される。この通信装置1026は、図2に示す通信装置1218、図18に示す通信部160に相当する。
【0181】
1−8.作用・効果
以上のように、第1実施形態によれば、ネットワークを介して接続され、他のゲーム装置12b〜12dとの間で、他キャラクタを制御するための受信データ152を授受し、受信データ152に基づいて他キャラクタの移動を制御するゲーム装置12aにおいて、受信データ152のデータ送信時刻に基づいて、描画対象フレームに対する遅延時間を算出し、算出した遅延時間及び受信データ152に基づいて、遅延時間における他キャラクタの位置、速度、姿勢等の変化を予測する。一方で、自キャラクタの移動制御については、入力された操作データに基づき実時間で自キャラクタの位置、速度、姿勢等の変化を算出する。そして、実時間に基づいて移動計算された自キャラクタの移動制御と、遅延時間分の変化を予測することで移動計算された他キャラクタの移動制御とを同時に行うことにより、良好なレスポンスを保ちつつ、各ゲーム装置12a〜12dに表示するゲーム結果の整合性を保つことができる。
【0182】
従って、次のような不都合が生じない。即ち、各ゲーム装置12a〜12d間のゲーム結果の整合性を優先することで、次キャラクタのレスポンス性が損なわれた結果、プレーヤの意に反して自キャラクタが移動制御されてしまうといった事態が発生しない。また、レスポンスを向上させることで、自キャラクタの移動制御はリアルタイムに実行されるものの、他キャラクタは通信遅延時間分遅れた過去の位置に移動制御され、この結果、各キャラクタが実際からはかけ離れた位置に表示されるといった、ゲーム結果の不整合が発生しない。
【0183】
また、ネットワークの輻輳状況に応じて、他のゲーム装置12a〜12dから送信される受信データの受信間隔は一定とならず変動する場合がある。このような場合であっても、通信遅延時間分の変位量を予測することで、受信間隔の変動の影響を可及的に抑制することができ、ネットワークの輻輳状況がゲーム結果に反映されるといった事態を回避することができる。例えば、データの受信が大幅に遅れた結果、他キャラクタがゲーム空間中に停止し、データを受信した途端に移動するというような表示を防ぐことができる。
【0184】
また、他キャラクタの予測位置を算出する場合に、当該予測位置のコースの曲率を近似するように速度ベクトルの向きを回転させ、この速度ベクトルに基づいて予測位置を算出することで、コース形状に即した位置予測を行うことができる。更に、コースデータ138に、当該コースを最速で走行するためのベストラインについての制御点毎の曲率が記憶されている場合は、よりプレーヤの走行ラインに近い曲率を近似して、コース形状に適した位置予測を行うことができる。これにより、他キャラクタの位置移動を精度良く予測することができ、実時間で当該他キャラクタを操作しているプレーヤのゲーム結果と、他のプレーヤのゲーム結果とを整合させることができる。
【0185】
また、他キャラクタの予測速度を算出する場合に、予測位置における目標速度を参照し、予測前の速度が目標速度を超えている場合には、予測前の速度を目標速度に基づいて補正し、補正後の速度に基づいて速度予測を行う。これにより、予測速度が現実的でない値となるのを防止し、精度良く速度予測を行うことができる。また、プレーヤにより入力された操作データに基づき実時間で自キャラクタの移動計算を行う際に、自キャラクの表示速度を表示位置における目標速度に基づき速度補正を行っているような場合には、自キャラクタ及び他キャラクタに対して同様の処理を行うことで、ゲーム結果の整合を図ることができる。
【0186】
また、他キャラクタの予測角度を算出する場合に、通常走行が可能となるキャラクタの姿勢の限界値を定め、この限界値を超える場合には、予測角度を限界値の範囲内に収まるように補正することにより、他キャラクタが現実的でない姿勢で走行するといったことを防止することができる。
【0187】
具体的には、ピッチング方向の予測角度を算出する場合に、受信データの角度と、予測角度との符号の入れ替わりを判定し、符号が入れ替わっている場合には、予測角度を0°に設定する。これにより、例えば、ウィリーやジャックナイフといった姿勢から戻る過程において、キャラクタがウィリーから戻る勢いでジャックナイフをしてしまう、或いはジャックナイフから戻る勢いでウィリーをしてしまうといった現実には起こり得ない挙動を防止することができる。また、ピッチ方向の予測角度やロール方向の予測角度を一定の範囲とすることにより、通常走行が不可能な姿勢で他キャラクタが走行するといった不自然な挙動を防止することができる。
【0188】
また、予測位置と表示位置とに基づいて補間位置を算出し、他キャラクタを補間位置に基づいて描画することにより、他キャラクタの瞬間移動的な位置変化によるズレやチラツキを抑え、他キャラクタの自然な移動制御を実現することができる。つまり、予測位置は最新の受信データに基づき予測された位置であり、表示位置は最新の受信データより古いデータに基づき予測された位置である場合は、基礎となる受信データが異なることとなる。このような場合において、最新の受信データと古い受信データとの間で他プレーヤにより急操作が行われていた場合、その操作が予測位置に反映されると、表示位置と予測位置とは大きく異なることとなる。そこで、この予測位置をそのまま次フレームの表示位置とすると、他キャラクタが急激に位置変化し、これがズレやチラツキとしてプレーヤに視認され得る。しかし、予測位置と表示位置とに基づいて補間処理を行い、表示位置を予測位置の方向に調節することで、これらの瞬間移動的な位置変化を緩和し、他キャラクタの自然な移動制御を行うことができる。
【0189】
この補間位置を算出する際に、予測位置と表示位置との間に仮想バネを設定し、仮想バネによる仮想力(例えば、仮想バネ補正速度)によって、表示位置が予測位置に調節されるように補間位置を算出することができる。従って、他キャラクタの位置変化が自然な変化となるような移動制御を実現することができる。
【0190】
さらに、補間位置を算出する際に、予測位置と表示位置との間に設定される仮想バネの仮想力を緩衝するような仮想ダンパを設定し、仮想バネによる仮想力と仮想ダンパによる緩衝力(例えば、ダンパ補正速度)とに基づいて表示位置が予測位置に調節されるように補間位置を算出することができる。従って、仮想バネによる仮想力が徐々に働くようにすることができ、他キャラクタの位置変化がより自然な変化となるような移動制御を実現することができる。
【0191】
また、予測角度と表示角度とに基づいて補間角度を算出し、他キャラクタを補間角度に基づいて描画することにより、同様に他キャラクタの瞬間的な姿勢変化によるズレやチラツキを抑え、他キャラクタの自然な移動制御を実現することができる。
【0192】
この補間角度を算出する際に、バネ補正角速度といった仮想力に基づいて、表示角度が予測角度に調節されるように補間角度を算出することにより、他キャラクタの姿勢変化がより自然な変化となるような移動制御を実現することができる。また、補間角度を算出する際に、ダンパ補正角速度といった仮想的な緩衝力に基づいて、バネ補正角速度による調節が過度な調節とならないような補間角度を算出することができる。これにより、仮想バネによる他キャラクタへの仮想力を徐々に働かせて、他キャラクタのより自然な姿勢制御を実現することができる。
【0193】
また、接地処理を実行し、通常走行時のキャラクタの姿勢に従って、ワールド座標系におけるY成分(つまり、高さ方向)の位置を補正することにより、キャラクタの一部が地面の下に配置されるといった不自然な状況を回避することができる。さらに、転倒時接地処理を実行して、転倒時のキャラクタの姿勢に従って、接地点テーブルから接地点となり得る車体の座標Azを取得し、当該座標Azから重心までの高さと、路面から重心までの高さとを比較することにより、ワールド座標系における高さ方向の位置を補正する。これにより、キャラクタが転倒により種々の姿勢を取り得た場合でも、適切に高さ方向の位置を補正することができ、キャラクタの一部が地面の下に配置されるといった不自然な状況を回避することができる。
【0194】
[第2実施形態]
次に、第2実施形態について説明する。
第1実施形態においては、最新の受信データに基づいて予測位置及び予測速度を算出し、算出した予測位置及び予測速度と、現フレームの表示位置とに基づいて、位置補間処理を行う場合について説明した。第2実施形態においては、最新の受信データに基づいて算出した予測位置、予測速度を、当該キャラクタを操作するプレーヤの過去の履歴データに基づいて補正し、補正後の予測位置、予測速度と、現フレームの表示位置に基づいて位置補間処理を行う場合について説明する。
【0195】
尚、プレーヤの過去の履歴を加味して有効な予測が行えるのは通常走行時であり、転倒時には余り有効でないと考えられる。そこで、第2実施形態では、通常走行時における予測位置、予測速度をプレーヤの過去の履歴を加味して補正する場合について説明する。
【0196】
2−1.原理
履歴データに基づいて、予測位置、予測速度を補正する原理について説明する。履歴データは、プレーヤが過去に行ったレースゲームにおける制御点毎の、当該制御点における位置座標Pav、速度Vav、アクセル量Ia、ブレーキ量Ibの平均値を記録したデータである(図41参照)。レースゲームにおいては、ゲームステージ毎に異なるコース形状が設定され、プレーヤは各コース毎に自己のベストライン(最も早く当該コースを走るためのライン)を想定し、ベストラインをトレースするようにコースを周回する。また、同一ラインをトレースすることで、各位置(例えば、ストレート、コーナー入口、コーナー出口)における速度、アクセル量、ブレーキ量は、一定の値を取り得る。従って、過去に同一コースを経験しているプレーヤの履歴データは、制御点毎の位置座標、速度が一定範囲の値に収束するものと考えられる。そこで、受信データに基づいて算出した予測位置、予測速度を、制御点毎の位置座標、速度といった履歴データに基づいて補正する。
【0197】
具体的には、図39に示すように、予測位置Pdatに対応する制御点から、当該制御点に対応する履歴データの位置座標を取得し、これを履歴位置Pavとする。また、当該制御点に対応する履歴データの速度を取得し、これを履歴速度Vavとする。そして、予測位置Pdatと履歴位置Pavとの差分から相対位置を求め、予測速度Vdatと履歴速度Vavとの差分から相対速度を求める。ここで、予測位置Pdatと履歴位置Pavとの差分が所定範囲以上である場合、プレーヤが普段どおりの走行からかけ離れた走行をしている判断できるため、履歴データによる補正を行わないとしても良い。
【0198】
続いて、相対位置に定数SHを乗算して、単位時間あたりのバネ補正速度を求める。また、相対速度に定数SIを乗算してダンパ補正速度を求める。ここで、定数SH,SIは、上限を1、下限を0の値とする。
【0199】
さらに、予測速度Vdatに、バネ補正速度を加算し、ダンパ補正速度を減算することにより、履歴補正予測速度Vacを算出する。そして、予測位置Pdatに履歴補正予測速度Vacの1フレーム分の速度変化量を加算して履歴補正予測位置Pacを求める。
【0200】
2−2.機能構成
次に、図40を参照して、第2実施形態におけるゲーム装置12の機能構成について説明する。尚、本第2の実施の形態は、上述した第1実施形態におけるゲーム装置12を用いて実現されるものであるため、第2実施形態に特徴的な部分については太線で示し、第1実施形態と同一の機能、構成については同一の符号で表し、詳細な説明は省略する。
【0201】
同図において、他キャラクタ移動制御部1230は、他キャラクタ移動計算プログラム1350に従って、他キャラクタ移動計算処理Bを実行し、受信データ等に基づき他キャラクタの移動計算を行い、他キャラクタを移動制御する。
【0202】
また、他キャラクタ移動計算プログラム1350は、ゲーム演算部122を他キャラクタ移動制御部1230として機能させるためのプログラムであり、サブルーチンに履歴補正プログラム1352を含むプログラムである。履歴補正プログラム1352は、ゲーム演算部122を他キャラクタ移動制御部1226として機能させるためのプログラムであり、他キャラクタ移動計算処理Bのサブルーチンとして履歴補正処理を実行するためのプログラムである。
【0203】
履歴取得データ156は、他キャラクタの移動軌跡である走行ラインの情報、速度、アクセル量、ブレーキ量の各データをプレーヤ毎、コース毎に累積的に格納する。具体的には、走行ラインの情報として、各制御点に対応する走行ラインの位置、例えば、キャラクタが通過した位置の位置座標を記憶する。また、速度として、制御点Q近傍を通過した際のキャラクタの速度を記憶し、アクセル量、ブレーキ量として、制御点Q近傍を通過した際にプレーヤから入力されたアクセル量、ブレーキ量を記憶する。
【0204】
履歴データ158は、履歴取得データ156に格納された走行ラインの情報、速度、アクセル量、ブレーキ量の制御点毎の平均値を、プレーヤ及びコース毎に記憶している。図41に履歴データ158のデータ構成例を示す。同図に示すように、履歴データ158は、プレーヤ毎、コース毎に、各種データを格納している。
【0205】
具体的には、履歴データ158は、プレーヤを特定するための識別番号(158a)、コースを特定するためのコース番号(158b)を記憶する。また、制御点Q(158c)毎に、位置座標Pav(158d)、速度Vav(158e)、アクセル量Ia(158f)、ブレーキ量Ib(158g)を記憶する。
【0206】
制御点Q(158c)は、コース上に所定間隔で配置・設定される基準点である。位置座標Pav(158d)は、プレーヤが過去に走行した走行ラインを定義するための位置であり、図20を参照して説明したコースデータ138dの目標位置wtと同様の手法で定義されている。具体的には、上述した履歴取得データ156に格納された複数周回分のデータの、同一制御点における位置座標の平均値を記憶している。速度Vav(158e)は、プレーヤが過去に走行した際の制御点Q毎の速度を記憶している。具体的には、履歴取得データ156の速度の制御点Q毎の平均値を記憶している。アクセル量Ia(158f)は、プレーヤが過去に走行した際の制御点Q毎のアクセル量を記憶している。具体的には、履歴データ156のアクセル量Iaの制御点Q毎の平均値を制御点Q毎に記憶している。ブレーキ量Ib(158g)は、プレーヤが過去に走行した際の制御点Q毎のアクセル量を記憶している。具体的には、履歴取得データ156のブレーキ量の制御点Q毎の平均値を記憶している。履歴データ158は、例えば、1回のゲームが終了するごとに、履歴取得データ156から生成され、更新されるデータである。
【0207】
2−3.処理の流れ
次に、第2実施形態の処理の流れについて説明する。
図42は、第1実施形態のゲーム進行処理における他キャラクタ移動計算処理に代えて、他キャラクタ移動計算処理Bを実行し、他キャラクタの履歴更新データを記憶する工程を更に追加したゲーム進行処理Bの流れを示すフローチャートである。
【0208】
同図において、他キャラクタ移動制御部1230は、移動体制御情報送受信処理を実行後(ステップS4)、他キャラクタ移動計算処理Bを実行する(ステップS102)。そして、他キャラクタ移動計算処理Bにより算出された計算結果、具体的には、移動体オブジェクトパラメータに記憶された位置情報、速度、アクセル量、ブレーキ量を履歴取得データ156に記憶する(ステップS104)。
【0209】
図43は、第1実施形態の他キャラクタ移動計算処理に、第2実施形態に特徴的な履歴補正処理を追加した他キャラクタ移動計算処理Bの流れを示すフローチャートである。同図において、他キャラクタ移動制御部1230は、ループBにおいて、位置予測処理(ステップS22)、速度予測処理を実行後(ステップS24)、更に、履歴補正処理を実行する(ステップS106)。
【0210】
図44,45は、履歴補正処理の流れを示すフローチャートである。図44において、他キャラクタ移動制御部1230は、履歴データ158から予測位置に対応する履歴位置を取得する(ステップS112)。次いで、予測位置と履歴位置との差分を相対位置として求め(ステップS114)、相対位置の距離が一定範囲内であるか否かを判定する(ステップS116)。
【0211】
相対位置の距離が一定範囲内でない場合(ステップS116;NO)、プレーヤが普段どおりの走行をしてないと判定して、履歴補正処理を終了する。相対位置の距離が一定範囲内である場合(ステップS116;YES)、履歴データ158から対応する履歴速度を取得して(ステップS118)、予測速度と履歴速度との差分から相対速度を求める(ステップS120)。
【0212】
続いて、相対位置に定数SHを乗算して、単位時間あたり位置変化量をバネ補正速度として求める(ステップS128)。また、相対速度に定数SIを乗算してダンパ補正速度を求める(ステップS130)。さらに、予測速度にバネ補正速度を加算し、ダンパ補正速度を減算して、履歴補正予測速度を算出する(ステップS132)。
【0213】
そして、履歴補正予測速度から1フレーム分の移動距離を算出し、予測位置に移動距離を加算して履歴補正予測位置を算出する(ステップS134)。次いで、最新データ予測データの位置座標、速度を履歴補正予測位置、履歴補正予測速度に更新して(ステップS136)、本履歴補正処理を終了する。
【0214】
2−4.作用・効果
以上のように、第2実施形態によれば、他のゲーム装置12から受信した最新の受信データに基づいて予測した予測位置及び予測速度を、履歴データ158の基づいて更に補正することで、プレーヤの癖や習性といった要素を加味して、キャラクタの移動予測を行うことができる。つまり、走行ラインの情報、速度、アクセル量、ブレーキ量といった、コース形状に応じて一定の値に収束し得る情報に基づいて、他キャラクタの予測位置、予測速度を補正することにより、他キャラクタが将来的に行うであろう挙動を予測して、より精度の高い予測を行うことができる。
【0215】
また、履歴補正処理において、予測位置と履歴位置との差分が所定範囲以上となる場合は、履歴データによる補正を行わないこととしたため、例えば、トラブルの発生により、キャラクタが通常どおりの走行をしていない場合には、受信データに基づく予想位置により、位置補間処理を実行して、補間予測位置を次フレームの表示位置とすることができる。これにより、ゲーム中のキャラクタの状況に応じて履歴データによる補正を適切に行うことができる。
【0216】
2−5.変形例
以上、本発明についての好適な実施形態の一例について説明したが、本発明は、上記した第1実施形態、第2実施形態に限らず、発明の趣旨を逸脱しない限りにおいて適宜変更可能である。以下、変形例について説明する。
【0217】
2−5−1.分割
第1実施形態では、予測位置、予測速度を算出する場合、1フレーム毎に累積的に予測位置、予測速度を算出するものとして説明を行ったが、この形態に限らず、予測位置、予測速度の算出を複数フレーム毎に分割して行う構成であっても良い。
【0218】
例えば、図46に示すように、遅延時間が30フレーム単位時間であった場合、上述した方法では30回のループ処理を行う必要がある。そこで、例えば、30フレームを3フレーム毎に分割(以下、このフレーム数の単位のことを「分割単位フレーム数」と呼ぶ。)して、予測位置、予測速度を算出することにより、ループ回数を10回まで減らすことができる。
【0219】
具体的には、ある位置から3フレーム後の位置の曲率rtを取得して、3フレーム後の位置における予測角度を算出する。次いで、予測角度に応じて、ある位置の速度ベクトルをヨー方向に回転させる。そして、この速度ベクトルの3フレーム分の移動距離をある位置に加算して、3フレーム後の予測位置を算出する。同様に、予測速度も3フレーム毎に算出する。
【0220】
この構成によれば、処理時間を短縮することができるため、リアルタイムに動画像を生成する際の時間的な制約を解消し、いわゆる処理落ちの発生を防止することができる。一方で、1フレーム毎に予測位置、予測速度を算出する場合と比較して、予測精度が低くなる可能性がある。例えば、各位置における曲率が一定でない場合に、3フレーム毎に計算を行った場合、3フレーム間の曲率の違いが誤差として計算結果に含まれることとなる。この結果、3フレーム間の誤差がそれぞれ蓄積されることにより予測精度の低下が見込まれる。
【0221】
なお、分割単位フレーム数の一例として、遅延時間が30フレームの場合に3フレームの分割単位フレーム数として説明したが、この数は適宜設計変更してもよい。
また、分割単位フレーム数は、一定である必要はなく、可変としてもよい。例えば、遅延時間のフレーム数に応じて、分割単位フレーム数を変更してもよい。具体的には、遅延時間が30フレームの場合には分割単位フレーム数を3フレームとし、遅延時間が20フレームの場合には分割単位フレーム数を2フレームとするといった、ループ回数が一定となるような分割単位フレーム数にするとしてもよい。ゲームにおいては1フレーム(1/60秒)以内に1枚のゲーム画像を生成する必要があるため、予測にかけることのできる時間には限りがあり、上限がある。従って、その上限に当たるループ回数(例えば10回)を元に、分割単位フレーム数を決定することで、できる限り予測精度を高めつつ、予測にかかる処理時間を一定以内にといったことを実現できる。
【0222】
また、1つのゲームを実行するためのプログラムには、サブルーチンとして機能する様々な処理ルーチンが含まれているのが通常である。例えば、上述したバイクレースゲームにおいて、バイクと、壁オブジェクトとの衝突を判定するための壁衝突判定ルーチンがそれである。壁衝突判定ルーチンでは、例えば、衝突判定の対象とするバイクと、壁オブジェクトとを引数として、当該バイクの現在位置、1フレーム時間後の移動位置、及び壁オブジェクトの位置等に基づいて、当該バイクが当該壁オブジェクトに衝突するか否かが判定される。
【0223】
しかし、こういった処理ルーチンは、想定される範囲内で作成されているのが通常である。上述した壁衝突判定ルーチンの例では、バイクが時速1000kmで走行することは想定外であり、時速400kmを想定の上限(想定最高速度)とするといった具合である。時速400kmであれば、1フレーム時間当たり約1.852mの移動となるため、現在のバイク位置から、移動方向に向かって1.852m以内に当該壁オブジェクトが存在しなければ、次のフレーム時間までの間に、バイクが当該壁オブジェクトと衝突することはない。
【0224】
ところが、分割単位フレーム数ごとに纏めて予測位置、予測速度を算出するとした場合、分割単位フレーム数を1フレームとみなした演算がなされているため、各種の処理ルーチンにおいて不都合が発生し得る。具体的に説明する。仮に、バイクの速度が時速300kmとする。このとき、分割単位フレーム数が3フレームであれば、3フレームが1フレームとみなされるため、実質、時速900kmとして壁衝突判定ルーチンが実行されることとなる。従って、壁オブジェクトとの衝突判定を正確に行えない不具合が生じ得る。
【0225】
そこで、こういった場合も、分割単位フレーム数を変更することとすればよい。具体的には、壁衝突判定ルーチンの想定最高速度をもとに、バイクの現在速度から分割単位フレーム数を決定する。例えば、想定最高速度が時速400kmであり、現在速度が時速100kmであった場合、400/100=4フレームを分割単位フレーム数とするといった具合である。
【0226】
2−5−2.履歴データの取得
第2実施形態では、自ゲーム装置12a〜12dにおいて、ゲーム進行処理において、他キャラクタの履歴取得データ156を記録し、履歴データ158を生成する場合を例として説明したが、履歴データの取得はこの方法に限らない。
【0227】
例えば、ゲーム進行処理において、ゲーム進行制御部111は、自キャラクタ移動制御部1224による移動計算の結果を自キャラクタの履歴取得データとして逐次記録し、履歴取得データから自キャラクタの履歴データを生成する。そして、例えばゲーム開始前に、対戦するプレーヤ間で、自キャラクタの履歴データをネットワークNを介して授受することにより、他キャラクタの履歴データ156を記憶部130に記憶する構成であっても良い。
【0228】
この構成によれば、自ゲーム装置12においてプレーヤの操作入力に従ってリアルタイムに処理された計算結果を履歴データ156として取得することができるため、正確な履歴データを取得することができる。そして、この履歴データ156に基づき、予測位置、予測速度の補正を行うことにより、他キャラクタの位置予測、速度予測を正確に行うことができる。
【0229】
更に、履歴データは、各キャラクタが実際に走行した際の履歴データに限定されない。例えば、上級者、中級者、初級者の代表例のデータを履歴データとして予め記憶しておき、各プレーヤのレベルに応じて、上級者、中級者、初級者の何れかの履歴データに基づいて、履歴補正処理を行う構成であっても良い。或いは、ラップタイム毎に履歴データを備え、各プレーヤの中間ラップタイムに応じて、対応するラップタイムの履歴データに基づき履歴補正処理を行う構成であっても良い。
【0230】
2−5−3.ゲーム装置
また、上述した実施形態では、ゲーム装置12の一例として家庭用ゲーム装置を例に挙げて説明したが、本発明を適用可能な装置は、これに限られない。例えば、図47に示すようなゲームセンターやアミューズメント施設等に設置される業務用のゲーム端末1100であっても良い。更には、携帯型のゲーム装置、PDA等の装置であってもよいことは勿論である。
【0231】
2−5−4.他のゲームへの適用
上述した実施形態は、本発明をバイクレースゲームに適用した場合について説明を行ったが、本発明を適用可能なゲームはバイクレースゲームに限定されるものではない。例えば、図48に示すようなカーレースゲームに適用しても良く、その他、飛行機ゲームなどに適用しても良い。
【図面の簡単な説明】
【0232】
【図1】ゲームシステムの概略構成を示す図。
【図2】ゲーム装置の外観構成を示す図。
【図3】ゲーム概要を説明する図。
【図4】キャラクタの方向を説明するための図。
【図5】位置予測、速度予測を説明するための図。
【図6】位置予測を説明するための図。
【図7】速度予測を説明するための図。
【図8】ピッチング方向の角度予測を説明するための図。
【図9】ロール方向の角度予測を説明するための図。
【図10】転倒時の位置予測、速度予測、角度予測を説明するための図。
【図11】位置補間を説明するための図。
【図12】位置補間を説明するための図。
【図13】(a)バネ補正速度を説明するための図、(b)ダンパ補正速度を説明するための図。
【図14】通常走行時の角度補間を説明するための図。
【図15】転倒時の角度補間を説明するための図。
【図16】通常走行時の接地処理を説明するための図。
【図17】転倒時の接地処理を説明するための図。
【図18】第1実施形態のゲーム装置の機能ブロック図。
【図19】コースデータを説明するための図
【図20】コースデータのデータ構成例を示す図。
【図21】移動体オブジェクトパラメータのデータ構成例を示す図。
【図22】最新データ予測データのデータ構成例を示す図。
【図23】補間データのデータ構成例を示す図。
【図24】受信データのデータ構成例を示す図。
【図25】接地点テーブルのデータ構成例を示す図。
【図26】ゲーム進行処理を示すフローチャート。
【図27】他キャラクタ移動計算処理を示すフローチャート。
【図28】位置予測処理を示すフローチャート。
【図29】速度予測処理を示すフローチャート。
【図30】角度予測処理を示すフローチャート。
【図31】位置補間処理を示すフローチャート。
【図32】角度補間処理を示すフローチャート。
【図33】接地処理を示すフローチャート。
【図34】転倒時位置速度予測処理を示すフローチャート。
【図35】転倒時角度予測処理を示すフローチャート。
【図36】転倒時角度補間処理を示すフローチャート。
【図37】転倒時接地処理を示すフローチャート。
【図38】ハードウェア構成の一例を示す図。
【図39】履歴補正を説明するための図。
【図40】第2実施形態のゲーム装置の機能ブロック図。
【図41】履歴データのデータ構成例を示す図。
【図42】ゲーム進行処理Bを示すフローチャート。
【図43】他キャラクタ移動計算処理Bを示すフローチャート。
【図44】履歴補正処理の一部を示すフローチャート。
【図45】履歴補正処理の一部を示すフローチャート。
【図46】変形例を説明するための図。
【図47】他のゲーム装置に適用した場合を示す図。
【図48】他のゲームに適用した場合を示す図。
【符号の説明】
【0233】
12 ゲーム装置
110 操作部
120 処理部
122 ゲーム演算部
1222 ゲーム進行制御部
1224 自キャラクタ移動制御部
1226 他キャラクタ移動制御部
1228 移動体制御情報送受信部
130 記憶部
132 ゲームプログラム
1322 ゲーム進行処理プログラム
1324 自キャラクタ移動計算プログラム
1326 他キャラクタ移動計算プログラム
1328 位置予測プログラム
1330 速度予測プログラム
1332 角度予測プログラム
1334 位置補間プログラム
1336 角度補間プログラム
1338 接地プログラム
1340 転倒時位置速度予測プログラム
1342 転倒時角度予測プログラム
1344 転倒時角度補間プログラム
1346 転倒時接地プログラム
1348 移動体制御情報送受信プログラム
134 ゲームデータ
136 ステージデータ
138 コースデータ
142 移動体オブジェクトデータ
144 移動体オブジェクトパラメータ
146 最新データ予測データ
148 補間データ
152 受信データ
154 接地点テーブル
140 表示部
150 音出力部
160 通信部

【特許請求の範囲】
【請求項1】
所定の通信網を介して他機と通信を行う通信手段を備えたコンピュータに、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画させるとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行させるためのプログラムであって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項2】
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの形状を加味して前記通信遅延時間分の他キャラクタの移動を予測するように前記コンピュータを機能させるための請求項1に記載のプログラム。
【請求項3】
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの所定場所に、当該場所を通過する際の移動基準情報として予め定められた速度基準情報及び/又は当該場所通過基準位置情報を加味して前記通信遅延時間分の他キャラクタの移動を予測するように前記コンピュータを機能させるための請求項1又は2に記載のプログラム。
【請求項4】
前記移動基準情報は、所定の高速キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報として予め設定された情報であることを特徴とする請求項3に記載のプログラム。
【請求項5】
他キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記記録された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ための請求項3に記載のプログラム。
【請求項6】
自キャラクタが前記所定場所を通過した際の速度情報及び/又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段、
前記記録された移動履歴情報を他機に送信する制御を行う履歴送信制御手段、
他キャラクタの移動履歴情報を他機から受信する制御を行う履歴受信制御手段、
として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記履歴受信制御手段により受信された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ための請求項3に記載のプログラム。
【請求項7】
前記他キャラクタ予測制御手段が、前回予測時に求めた表示位置を、少なくとも今回予測時の予測位置に基づいて調節する位置調節手段を有し、前記調節した前回の表示位置を今回の表示位置とすることにより、最新の他キャラクタ移動制御情報が変わることによる他キャラクタの瞬間移動的な移動変動を抑制するように前記コンピュータを機能させるための請求項1〜6の何れか一項に記載のプログラム。
【請求項8】
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想バネを設定し、少なくとも前記設定した仮想バネの仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるための請求項7に記載のプログラム。
【請求項9】
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想ダンパを更に設定し、前記設定した仮想バネ及び仮想ダンパによる総合的な仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるための請求項8に記載のプログラム。
【請求項10】
前記自キャラクタ制御情報更新手段が、操作入力に基づいて自キャラクタの姿勢制御情報を更に更新していき、
前記送信制御手段が、前記更新される自キャラクタ姿勢制御情報を併せて送信し、
前記自キャラクタ制御手段が、前記更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢を制御する自キャラクタ姿勢制御手段を有し、
前記受信制御手段が、他キャラクタの姿勢制御情報を更に受信し、
前記他キャラクタ予測制御手段が、少なくとも前記受信された他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報のうちの最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づき、当該最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御の送信時刻情報に基づく通信遅延時間分の他キャラクタの姿勢を予測することで他キャラクタの姿勢を制御する他キャラクタ姿勢予測制御手段を有する、
ように前記コンピュータを機能させるための請求項1〜9の何れか一項に記載のプログラム。
【請求項11】
前記他キャラクタ姿勢予測制御手段が、移動中に取りうる限界の姿勢として予め定められた限界姿勢を超える姿勢をしないように他キャラクタの姿勢の変化を抑制する姿勢変化抑制手段を有するように前記コンピュータを機能させるための請求項10に記載のプログラム。
【請求項12】
前記他キャラクタ姿勢予測制御手段が、前回予測時に求めた表示姿勢を、少なくとも今回予測時の予測姿勢に基づいて調節する姿勢調節手段を有し、前記調節した前回の表示姿勢を今回の表示姿勢とすることにより、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わることによる他キャラクタの急激な姿勢変動を抑制するように前記コンピュータを機能させるための請求項10又は11に記載のプログラム。
【請求項13】
前記姿勢調節手段が、前回予測時に求めた表示姿勢と今回予測時の予測姿勢との間の変位に対して、両姿勢の変位量が大きくなる程近似力を大きくする、両姿勢を近づけるための姿勢近似バネを設定し、少なくとも前記設定した姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるための請求項12に記載のプログラム。
【請求項14】
前記姿勢調節手段が、前記姿勢近似バネの近似力を減殺させる姿勢近似ダンパを設定し、前記設定した姿勢近似ダンパによる減殺を加味した前記姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるための請求項13に記載のプログラム。
【請求項15】
前記通信対戦レースゲームは、前記ゲーム空間に設定された地上を前記操作対象キャラクタが走行するレースゲームであり、
前記他キャラクタ予測制御手段の予測に従った他キャラクタの前記ゲーム空間への配置により、他キャラクタが前記ゲーム空間の地中に潜る場合又は地面から浮く場合を検出する検出手段、
前記検出手段による検出に応じて、他キャラクタを前記ゲーム空間に設定された地面に接地させるように、他キャラクタの前記ゲーム空間の高さ方向の位置を補正する高さ位置補正手段、
として前記コンピュータを機能させるための請求項1〜14の何れか一項に記載のプログラム。
【請求項16】
請求項1〜15の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項17】
所定の通信網を介して他機と通信を行う通信手段を備え、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画するとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行するゲーム装置であって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段と、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段と、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段と、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段と、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段と、
を備えたゲーム装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate


【公開番号】特開2006−320502(P2006−320502A)
【公開日】平成18年11月30日(2006.11.30)
【国際特許分類】
【出願番号】特願2005−145887(P2005−145887)
【出願日】平成17年5月18日(2005.5.18)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】