説明

ネットワークシステム,情報処理装置および情報処理プログラム

【課題】チャット相手に対応するキャラクタがどの方向にいるのかを把握させる。
【解決手段】ネットワークシステム(120)は、複数の情報処理装置(12,12,…)を含む。各情報処理装置は、チャット相手の情報処理装置を特定して、この相手の情報処理装置との間でメッセージの送受信を行う。また、自身の情報処理装置に対応する自キャラクタAおよび相手の情報処理装置に対応する相手キャラクタBを仮想空間内に配置して、仮想空間を任意の位置から見た画像を生成し、この画像をモニタ(34)に出力する。また、自キャラクタAから相手キャラクタBへの方向を算出して、この方向を示すように指標Mを生成し、仮想空間内に定義された所定範囲(E)内に相手キャラクタが含まれているか否かを判別し、メッセージを送信中または受信中であるか否かを判別し、そして所定範囲外でありかつ送信中または受信中であると判別したとき指標Mをモニタに出力する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ネットワークシステム,情報処理装置および情報処理プログラムに関し、特にたとえば、ネットワークを介してチャットを行う、ネットワークシステム,情報処理装置および情報処理プログラムに関する。
【背景技術】
【0002】
この種の従来の背景技術としては、たとえば特許文献1に開示されたチャットシステムが知られている。この背景技術では、送話者や受話者(チャットを行う相手)を表すオブジェクト(相手キャラクタ)の頭上位置に矢印が付される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−304350号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記の背景技術では、送話者や受話者を表すオブジェクトが画面外に出れば、これを識別する矢印も消失するので、ユーザは、チャット相手がどの方向にいるのかわからなくなる。
【0005】
それゆえ、この発明の主たる目的は、新規な、ネットワークシステム,情報処理プログラムおよび情報処理装置を提供することである。
【0006】
また、この発明の他の目的は、チャット相手に対応するキャラクタがどの方向にいるかを把握させることができる、ネットワークシステム,情報処理装置および情報処理プログラムを提供することである。
【課題を解決するための手段】
【0007】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0008】
第1の発明は、複数の情報処理装置の間でネットワークを介してチャットを行うネットワークシステムであって、各情報処理装置は、チャットを行う相手の情報処理装置を特定するチャット相手特定手段、自身の情報処理装置とチャット相手特定手段によって特定された相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段、自身の情報処理装置に対応する自キャラクタおよび相手の情報処理装置に対応する相手キャラクタを仮想空間内に配置するキャラクタ配置手段、仮想空間を任意の位置から見た画像を生成する画像生成手段、自キャラクタから相手キャラクタへの方向を算出する方向算出手段、方向算出手段によって算出された方向を示すように指標を生成する指標生成手段、仮想空間内に定義された所定範囲の内部に相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段、メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段、および画像生成手段によって生成された画像を表示手段に出力する表示出力手段を備え、表示出力手段は、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中であると判別されたとき、指標生成手段によって生成された指標を所定の態様で表示手段に出力する。
【0009】
第1の発明のネットワークシステム(120)では、複数の情報処理装置(12,12,…)の間でネットワーク(122)を介してチャットを行う。各情報処理装置は、チャット相手特定手段(S3,S5)、メッセージ送受信手段(S1,S35〜S39,S53〜S55,S41a〜S43a,204)、キャラクタ配置手段(S9)、画像生成手段(S69,S59a,S63a)、方向算出手段(S45,S49a)、指標生成手段(S67,S57a)、相手キャラクタ判別手段(S41,S45a)、送受信判別手段(S53,S41a)および表示出力手段(S71,S61a,S65a)を備える。チャット相手特定手段は、チャットを行う相手の情報処理装置を特定する。メッセージ送受信手段は、自身の情報処理装置とチャット相手特定手段によって特定された相手の情報処理装置との間でメッセージの送信または受信を行う。キャラクタ配置手段は、自身の情報処理装置に対応する自キャラクタ(A)および相手の情報処理装置に対応する相手キャラクタ(B)を仮想空間内に配置する。画像生成手段は、仮想空間を任意の位置から見た画像を生成する。方向算出手段は、自キャラクタから相手キャラクタへの方向を算出する。指標生成手段は、方向算出手段によって算出された方向を示すように指標(M)を生成する。相手キャラクタ判別手段は、仮想空間内に定義された所定範囲(E)の内部に相手キャラクタが含まれているか否かを判別する。送受信判別手段は、メッセージ送受信手段によって送信中または受信中であるか否かを判別する。表示出力手段は、画像生成手段によって生成された画像を表示手段(34)に出力する。表示出力手段はまた、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中であると判別されたとき、指標生成手段によって生成された指標を所定の態様で表示手段に出力する。
【0010】
第1の発明によれば、チャット相手に対応するキャラクタが所定範囲外で発言したとき、この相手キャラクタへの方向を所定の態様の指標で示すので、相手キャラクタが画面外に出てしまっても、ユーザは、相手キャラクタがどの方向にいるのかを視覚的に容易に把握することができる。なお、ここでいう発言は、音声によるメッセージの伝達(音声チャット)と、文字によるメッセージの伝達(文字チャット)との少なくとも一方を含む。
【0011】
第2の発明は、第1の発明に従属するネットワークシステムであって、指標生成手段(S67)は、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中ではないと判別されたとき、第1の態様で指標を生成し、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中であると判別されたとき、第2の態様で指標を生成する。
【0012】
第2の発明によれば、チャット相手に対応するキャラクタが所定範囲外にいれば、たとえ相手が発言中でなくても指標を生成するので、ユーザは、相手キャラクタがどの方向にいるのかを常時把握することができる。さらには、相手が発言中か否かで指標の態様を異ならせるので、ユーザは、相手が発言中かどうかも容易に把握できる。
【0013】
第3の発明は、第1または第2の発明に従属するネットワークシステムであって、メッセージは音声データであり、送受信判別手段は、メッセージ送受信手段によって送信または受信した音声データの音量が、所定値以上であるとき送信中または受信中であると判別する一方、所定値未満であるとき送信中または受信中でないと判別する。
【0014】
第3の発明によれば、メッセージは音声で、その音量が、所定値以上のとき送信中または受信中であると判別する一方、所定値未満であるとき送信中または受信中でないと判別するので、ユーザは、音声による興趣性の高いチャットを楽しむことができる。また、音声の音量が所定値以上か否かを容易に認識させることができるので、ユーザに大きな声で話すように促すことができる。
【0015】
第4の発明は、第1ないし第3のいずれかの発明に従属するネットワークシステムであって、各情報処理装置は、自キャラクタを中心とする所定の大きさの球を生成する球生成手段をさらに備え、方向算出手段は、自キャラクタと相手キャラクタとを結ぶ線を生成し、指標生成手段は、球の表面と線との交点に指標を生成する。
【0016】
第4の発明では、各情報処理装置は、球生成手段(S43,S47a)をさらに備える。球生成手段は、自キャラクタを中心とする所定の大きさの球(S)を生成し、方向算出手段は、自キャラクタと相手キャラクタとを結ぶ線(L)を生成し、そして指標生成手段は、球の表面と線との交点に指標を生成する。
【0017】
第4の発明によれば、球面と線分の交点に指標を生成するので、自キャラクタと指標との位置関係によって方向を示すことができる。また、指標はどの方向を示す場合であっても自キャラクタからの距離が同じになる位置に表示されるため、ユーザは、指標の位置をより容易に把握することができる。
【0018】
第5の発明は、第1ないし第4のいずれかの発明に従属するネットワークシステムであって、各情報処理装置は、自キャラクタと相手キャラクタとの間の距離を算出する距離算出手段をさらに備え、指標生成手段は、距離算出手段によって算出された距離に基づいて指標の態様を変化させる。
【0019】
第5の発明では、各情報処理装置は、距離算出手段(S47,S51a)をさらに備える。距離算出手段は、自キャラクタと相手キャラクタとの間の距離を算出し、指標生成手段は、距離算出手段によって算出された距離に基づいて指標の態様を変化させる。ここで態様は、形状,色,大きさ,輝度,濃淡,点滅周期などを含み、これらの少なくとも1つが変化の対象となる。
【0020】
第5の発明によれば、自キャラクタと相手キャラクタとの間の距離に応じて指標の態様が変化するので、両者の間の距離を視覚的に容易に把握することができる。
【0021】
第6の発明は、第5の発明に従属するネットワークシステムであって、態様は大きさを含む。
【0022】
第6の発明によれば、指標の少なくとも大きさを変化させることで、距離を直感的に把握できる。
【0023】
第7の発明は、第6の発明に従属するネットワークシステムであって、指標生成手段は、距離に比例して指標が大きくなるように生成する。
【0024】
第7の発明によれば、指標の大きさは距離に比例するので、距離を的確に把握することができる。
【0025】
第8の発明は、第6または第7の発明に従属するネットワークシステムであって、指標には、大きさの最大値と最小値が設定され、指標生成手段は、距離が第1設定値以上であれば最大値に対応する大きさの指標を生成し、当該距離が第2設定値以下であれば最小値に対応する大きさの指標を生成する(S81〜S87)。
【0026】
第8の発明によれば、指標の大きさに最大値、最小値といった制限を設けることで、指標を適度な大きさで表示することができ、視認性を良好に保つことができる。
【0027】
第9の発明は、第1ないし第8のいずれかの発明に従属するネットワークシステムであって、指標生成手段は、方向算出手段によって算出された方向を示す形状の指標を生成する。
【0028】
第9の発明によれば、方向は指標の形状で示されるので、指標の位置にかかわらず、チャット相手に対応するキャラクタがどの方向にいるのかを視覚的に容易に把握することができる。言い換えると、指標の位置の自由度が増す。
【0029】
第10の発明は、第1ないし第9のいずれかの発明に従属するネットワークシステムであって、指標生成手段は、方向算出手段によって算出された方向を示す位置に指標を生成する。
【0030】
第10の発明によれば、方向は指標の位置で示されるので、指標の形状にかかわらず、チャット相手に対応するキャラクタがどの方向にいるのかを視覚的に容易に把握することができる。言い換えると、指標の形状の自由度が増す。なお、方向を形状および位置の両方で示せば、方向の視覚的な把握がいっそう容易になる。
【0031】
第11の発明は、ネットワーク(122)を介してチャットを行う情報処理装置(12)であって、チャットを行う相手の情報処理装置を特定するチャット相手特定手段(S3,S5)、自身の情報処理装置とチャット相手特定手段によって特定された相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段(S1,S35〜S39,S53〜S55,S41a〜S43a,204)、自身の情報処理装置に対応する自キャラクタ(A)および相手の情報処理装置に対応する相手キャラクタ(B)を仮想空間内に配置するキャラクタ配置手段(S9)、仮想空間を任意の位置から見た画像を生成する画像生成手段(S69,S59a,S63a)、自キャラクタから相手キャラクタへの方向を算出する方向算出手段(S45,S49a)、方向算出手段によって算出された方向を示すように指標(M)を生成する指標生成手段(S67,S57a)、仮想空間内に定義された所定範囲(E)の内部に相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段(S41,S45a)、メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段(S53,S41a)、および画像生成手段によって生成された画像を表示手段(34)に出力する表示出力手段(S71,S61a,S65a)を備え、表示出力手段は、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中であると判別されたとき、指標生成手段によって生成された指標を所定の態様で表示手段に出力する。
【0032】
第12の発明は、ネットワーク(122)を介してチャットを行う情報処理装置(12)のコンピュータ(40)を、チャットを行う相手の情報処理装置を特定するチャット相手特定手段(S3,S5)、自身の情報処理装置とチャット相手特定手段によって特定された相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段(S1,S35〜S39,S53〜S55,S41a〜S43a,204)、自身の情報処理装置に対応する自キャラクタ(A)および相手の情報処理装置に対応する相手キャラクタ(B)を仮想空間内に配置するキャラクタ配置手段(S9)、仮想空間を任意の位置から見た画像を生成する画像生成手段(S69,S59a,S63a)、自キャラクタから相手キャラクタへの方向を算出する方向算出手段(S45,S49a)、方向算出手段によって算出された方向を示すように指標(M)を生成する指標生成手段(S67,S57a)、仮想空間内に定義された所定範囲(E)の内部に相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段(S41,S45a)、メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段(S53,S41a)、および画像生成手段によって生成された画像を表示手段(34)に出力する表示出力手段(S71,S61a,S65a)として機能させ、表示出力手段は、相手キャラクタ判別手段によって所定範囲内に相手キャラクタが含まれていないと判別され、かつ送受信判別手段によって送信中または受信中であると判別されたとき、指標生成手段によって生成された指標を所定の態様で表示手段に出力する、情報処理プログラム(202)である。
【0033】
第11,第12の発明でも、第1の発明と同様に、相手キャラクタが画面外に出てしまっても、ユーザは、相手キャラクタがどの方向にいるのかを視覚的に容易に把握することができる。
【発明の効果】
【0034】
この発明によれば、チャット相手に対応するキャラクタがどの方向にいるのかを把握させることができる、ネットワークシステム,情報処理プログラムおよび情報処理装置が実現される。
【0035】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0036】
【図1】この発明のゲームシステムの一実施例を示す図解図である。
【図2】ゲームシステムの電気的な構成を示すブロック図である。
【図3】コントローラの外観を説明するための図解図である。
【図4】コントローラの電気的な構成を示すブロック図である。
【図5】音声入力装置の電気的な構成を示すブロック図である。
【図6】複数のゲーム装置を含むネットワークシステムを示すブロック図である。
【図7】コントローラおよび音声入力装置を用いて仮想ゲームをプレイするときの状態を概説するための図解図である。
【図8】マーカおよびコントローラの視野角を説明するための図解図である。
【図9】コントローラによる撮像画像の一例を示す図解図である。
【図10】3次元仮想空間の一部を示す図解図である。
【図11】3次元仮想空間を仮想カメラから見た映像の一例を示す図解図である。
【図12】ゲーム画面の一例を示す図解図である。
【図13】ゲーム画面の他の一例を示す図解図である。
【図14】ゲーム画面のその他の一例を示す図解図である。
【図15】ゲーム画面のさらにその他の一例を示す図解図である。
【図16】メモリマップの一例を示す図解図である。
【図17】CPU動作の一部を示すフロー図である。
【図18】CPU動作の他の一部を示すフロー図である。
【図19】CPU動作のその他の一部を示すフロー図である。
【図20】CPU動作のさらにその他の一部を示すフロー図である。
【図21】CPU動作の他の一部を示すフロー図である。
【図22】視野範囲の一例を示す図解図である。
【図23】他の実施例におけるCPU動作の一部を示すフロー図である。
【図24】他の実施例におけるCPU動作の他の一部を示すフロー図である。
【発明を実施するための形態】
【0037】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という)12、コントローラ22および音声入力装置36を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ(22)と通信可能に設計されている。また、ゲーム装置12と各コントローラ(22)とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。一方、ゲーム装置12と音声入力装置36との接続には、有線方式(たとえばUSB方式)が用いられる。詳しくは、音声入力装置36は音声入力装置本体36aおよびこれとは別体のマイク36bからなり、音声入力装置本体36aとマイク36bとはケーブル36cで固定的に接続されている。そして音声入力装置本体36aとゲーム装置12とが、ケーブル36dで着脱可能に接続される。
【0038】
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。ディスクスロット16の周囲には、LEDと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【0039】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【0040】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0041】
ゲーム装置12のハウジング14の後面には、AVコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aは、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)340m,340nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ340m,340nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
【0042】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0043】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0044】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられる。このCPU40は、ゲームプロセッサとして機能する。このCPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0045】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラムデータやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0046】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【0047】
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【0048】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0049】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。なお、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0050】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0051】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0052】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0053】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0054】
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置やサーバと通信することができる。ネットワークの一例を図6に示す。このネットワーク122は、たとえばインターネットやLANで構成され、サーバ124および複数のゲーム装置12,12,…などが接続されている。サーバ124は、各ゲーム装置12にデータをダウンロードしたり、ネットワーク122にゲーム装置12を接続しているオンラインユーザの管理を行ったりする。なお、以下では、ユーザのゲーム装置12を単に“ゲーム装置12”と記し、他のゲーム装置12をたとえば“相手のゲーム装置(12)”などのように記す。
【0055】
ただし、ゲーム装置12は、ネットワーク122を介さずに、直接的に他のゲーム装置(12)と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワーク122へ送信する必要があるデータ(送信データとする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワーク122に送信する。また、入出力プロセッサ42aは、他のゲーム装置(12)から送信されるデータ(受信データとする)を、ネットワーク122、アンテナ50aおよび無線通信モジュール50を介して受信し、受信データをフラッシュメモリ44に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ42aは、サーバ124からダウンロードしたデータ(ダウンロードデータとする)をネットワーク122、アンテナ50aおよび無線通信モジュール50を介して受信し、ダウンロードデータをフラッシュメモリ44に記憶する。
【0056】
また、入出力プロセッサ42aは、コントローラ22から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40のゲーム処理によって利用された後、バッファ領域から消去される。
【0057】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格にしたがってコントローラ22との間で通信を行う。
【0058】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、音声入力装置36や、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0059】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a、リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42は、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、システムLSI42は、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)を設定する。この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、CPU40によってアプリケーションの実行が行われないモードである。
【0060】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【0061】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0062】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0063】
また、通常モードとスタンバイモードの切り替えは、コントローラ22の電源スイッチ26hのオン/オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52への電源供給を行わない設定にしてもよい。
【0064】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0065】
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
【0066】
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a、1ボタン26b、2ボタン26c、Aボタン26d、−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
【0067】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0068】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0069】
Aボタン26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0070】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0071】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0072】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指示したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0073】
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、点灯LEDに対応するコントローラ22の識別情報(コントローラ番号)を示したり、点灯させるLEDの個数によってコントローラ22の電源残量を示したりすることができる。
【0074】
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0075】
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0076】
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0077】
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0078】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0079】
また、加速度センサ74は、コントローラ22の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0080】
たとえば、加速度センサ74は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
【0081】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0082】
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0083】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ70に出力する。
【0084】
図5は音声入力装置本体36aの電気的な構成を示すブロック図である。図5を参照して、音声入力装置本体36aは、コントローラ100,DSP102,ADC104およびASIC106を含む。コントローラ100は、たとえば8ビットのマイクロコントローラで構成され、ゲーム装置12との間の通信を制御する。また、コントローラ100には、DSP102,ADC104およびケーブル36cを介してマイク36bが接続されている。マイク36bは、たとえば4個のエレクトレットコンデンサーマイクロホン(ECM)で構成され、ユーザの発話を含む音声を4chの音声信号に変換する。ADC104は、たとえば4個のA/Dコンバータ(サンプリング周波数:16kHz)で構成され、マイク36bからの4chの音声信号を4chの音声データに変換する。DSP102は、たとえば16ビットの固定小数点DSPで構成され、ADC104からの4chの音声データにエコーキャンセル,エコーサプレス,ノイズサプレス等の処理を施す。この処理によって、スピーカ34aからの出力をマイク36bが拾うことで生じるエコーやハウリングが抑制される。DSP102による処理後の音声データは、コントローラ100によってゲーム装置12へと送信される。
【0085】
ASIC106は、たとえばゲートアレーICで構成されており、コントローラ100,DSP102およびADC104の各々の動作タイミングを制御して、ゲーム装置12と音声入力装置36とを互いに同期させる。このほか、電源オン/オフ時のリセットシーケンス制御なども、ASIC106によって行われる。なお、コントローラ100,ASIC106などが動作するための電源は、ゲーム装置12からケーブル36d(たとえばUSBケーブル)を通して音声入力装置36に供給される。
【0086】
上述のようにして音声入力装置36(コントローラ100)から送信された音声データは、拡張コネクタ60を通して入出力プロセッサ42aにより受信される。受信された音声データは、内部メインメモリ42eに一時記憶された後、入出力プロセッサ42aによって無線通信モジュール50に与えられる。無線通信モジュール50は、与えられた音声データをアンテナ50aからネットワーク122経由で相手のゲーム装置(12)に送信する。
【0087】
相手のゲーム装置(12)では、ゲーム装置12からの音声データは、アンテナ(50a)および無線通信モジュール50を通して入出力プロセッサ(42a)により受信される。受信された音声データは、内部メインメモリ(42e)に一時記憶された後、AV IC(56)に与えられる。AV IC(56)は、与えられた音声データをD/A変換し、これにより得られた音声信号をAVコネクタ(58)を介してスピーカ(34a)に出力する。こうして、ユーザの発話音声が、相手のスピーカ(34a)から出力される。
【0088】
図7は、コントローラ22および音声入力装置36を用いて「水中遊泳ゲーム」(後述)などの仮想ゲームをプレイするときの状態を概説する図解図である。図7に示すように、ビデオゲームシステム10でコントローラ22および音声入力装置36を用いて仮想ゲームをプレイする際、プレイヤは、モニタ34(マイク36b)から数メートルたとえば1〜3mの範囲に位置し、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態で、コントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したり、マイク36bに向けて発話したりすることによって、ゲーム操作を行う。
【0089】
図8は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図8に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中に少なくとも一方のマーカ340mおよび340nが存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0090】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【0091】
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図9は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0092】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nの画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ340mおよび340nの画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0093】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0094】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0095】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によって入力データに含まれ、ゲーム装置12に送信される。
【0096】
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(座標位置)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22とマーカ340mおよび340nとの間の距離を把握できる。
【0097】
以上のように構成されたゲームシステム10で「水中遊泳ゲーム」をプレイする場合、ユーザはゲーム装置12をネットワーク122に接続する(図6参照)。サーバ124には、現時点でゲーム装置12をネットワーク122に接続しているユーザがオンラインユーザとして登録されており、ユーザはこれらオンラインユーザの中から相手を選択する。応じて、ユーザのゲーム装置12と相手のゲーム装置(12)とが接続され、ゲーム処理のためのデータ通信を行うことができるようになる。こうして、図6に示すような、サーバ124および複数のゲーム装置12(ゲームシステム10)を含むネットワークシステム120が確立される。
【0098】
ゲーム装置12(CPU40)は、コントローラ22からの入力データに含まれる操作データおよび/またはマーカ座標データと、音声入力装置36からの入力データつまり音声データと、相手のゲーム装置12からの受信データに含まれる位置データおよび音声データに基づいて、次のようなゲーム処理を実行する。なお、コントローラ22からの入力データに含まれる加速度データは、「水中遊泳ゲーム」では特に利用されない。
【0099】
ゲーム処理では、操作データおよび/またはマーカ座標データから自キャラクタAの位置を計算し、計算結果に基づいて3次元の仮想空間(以下“仮想空間”)内で自キャラクタAを移動させると共に、受信した位置データに基づいて相手キャラクタBも仮想空間内で移動させる。また、入力した音声データを相手のゲーム装置(12)に送信すると共に、受信した音声データに基づいて相手の音声を出力する。これにより、図10に示すように、ユーザ(自キャラクタA)は、相手(相手キャラクタB)とチャットしながら仮想空間内で水中遊泳を楽しむことができる。
【0100】
このとき、ユーザ側では、図11〜図15に示すような、仮想空間を自キャラクタAの背後から仮想カメラVCで捉えた映像が、ゲーム画面としてモニタ34に表示される。スピーカ34aからは、相手の音声が出力される。一方、相手側では、仮想空間を相手キャラクタBの背後から別の仮想カメラVCで捉えた映像がモニタ(34)に表示され、かつスピーカ(34a)からユーザの音声が出力される。
【0101】
ところで、ユーザは自キャラクタAを自由に移動させ、相手もまた相手キャラクタBを自由に移動させるので、相手キャラクタBが常に自キャラクタAの視野の範囲内にいるとは限らない。相手キャラクタBが自キャラクタAの視野外にいれば、自キャラクタAつまりユーザは、相手キャラクタBつまり相手の位置がわからず、相手からの音声だけが聞こえる状態となる。
【0102】
ここで視野範囲は、仮想空間内において、たとえば図22のように定義される。図22に示す視野範囲Eは、自キャラクタA(を示す点A)からの距離が所定値r0以下であるような範囲(つまり点Aを中心とする半径r0の球の内部)のうち、自キャラクタAの前方にある部分(つまり球の前方半分:これを“半球”と呼ぶ)。なお、この半径r0の球は、完全な球体でなくてもよく、たとえば奥行き方向に伸びたラグビーボール状でも、奥に行くにつれて断面が広がるように変形されてもよい。または、自キャラクタAの前方に配置された多面体(直方体や四角錐など)でもよく、仮想空間内において自キャラクタAの前方に配置された物体や地表に沿うような任意の形状の三次元領域でもよい。他の実施例では、視野範囲は、自キャラクタAを追跡する仮想カメラVCの撮影範囲(つまり図12〜図15のようなゲーム画面そのもの)であってもよい(後述)。
【0103】
そこで、ゲーム装置12は、相手キャラクタBが自キャラクタAの視野範囲の内部(視野内)にいるか否かを判別する。そして、視野内にいると判別した場合、ゲーム装置12は、自キャラクタAの位置および相手キャラクタBの位置に基づいて、自キャラクタAから見た相手キャラクタBの方向および両キャラクタ間の距離を計算し、計算結果を視覚的に示す指標オブジェクトMを画面に表示する(図10参照)。ここで、方向は、自キャラクタAおよび相手キャラクタBの位置をそれぞれ示す2点ABを通る直線Lの方向(言い換えると点Aから点Bに向かうベクトルABの方向)として計算され、距離は2点AB間の距離(ベクトルABの大きさ)として計算される。
【0104】
指標オブジェクトMは、たとえば、図14および図15に示されるように、点線で示す円錐Cの側面に沿う複数のリングで構成され、円錐Cは、計算された方向(直線Lの方向)を向き、かつ計算された距離(2点AB間の距離)に応じた高さ(ここでは距離に比例する高さH)を有する。したがって、自キャラクタAおよび相手キャラクタBの位置関係によって円錐Cの方向および高さが変化し、ひいては円錐Cに沿う複数のリングの方向および高さも変化する。
【0105】
指標オブジェクトMの表示位置は、たとえば次のように決定される。図10を参照して、まず、自キャラクタAを中心として所定の半径を有する球Sを仮想空間内に生成し、次に、球Sの表面と直線Lとの交点を求める。そして指標オブジェクトMを、その先端(円錐Cの頂点)がこの交点の位置で球Sの表面と内接するような位置に表示する。したがって、指標オブジェクトMは、常に球Sの内部にある。
【0106】
なお、カメラアングル等によっては、球Sがゲーム画面からはみ出すことがあり、したがって指標オブジェクトMもまた、ゲーム画面からはみ出す可能性がある。しかし、このような場合には、たとえば、指標オブジェクトMを直線Lに沿って自キャラクタAに接近させるなど、指標オブジェクトMがゲーム画面からはみ出すことのないように位置調整が行われる。
【0107】
このように、指標オブジェクトMは、相手キャラクタBがゲーム画面の外部に位置する状態で、相手キャラクタBがどの辺りに位置するか(自キャラクタAから見た方向および距離)を示すべく表示されるので、相手キャラクタBがゲーム画面の内部に位置する状態では、ゲーム画面から消去される。なお、図10,図11に示した直線Lおよび球Sは、この実施例では、表示用のゲーム画面には描画されない(図12〜図15参照)。他の実施例では、直線Lおよび/または球Sを描画してもよい。
【0108】
また、指標オブジェクトMは、相手の発話状態(発話中か否か)によって形状が変化する。上述したリング状の指標オブジェクトM(図14および図15参照)は、相手が発話中に表示されるものあり、相手が発話していない状態では、たとえば、図12および図13に示すような、四角推の指標オブジェクトMが表示される。この四角推の指標オブジェクトMは、上述したリング状の指標オブジェクトMを規定する円錐Cに対応するもので、その頂点によって相手キャラクタBの方向を、その高さ(H)によって相手キャラクタBまでの距離を、それぞれ表現している。なお、指標オブジェクトMの形状は、方向および距離を表現可能であれば、どのような形状でもよい(たとえば矢印や手指の形状など)。
【0109】
したがって、図12〜図15では、指標オブジェクトMが右斜め前方を指していることから、相手キャラクタBは自キャラクタAの右斜め前方に位置することがわかる。また、図12および図14では、指標オブジェクトMの高さHが比較的高いことから、相手キャラクタBは自キャラクタAから遠く離れた場所に位置することがわかる一方、図13および図15では、指標オブジェクトMの高さHが比較的低いことから、相手キャラクタBは自キャラクタAからあまり離れていない場所(視野範囲Eのすぐ外)に位置することがわかる。また、図14および図15では、指標オブジェクトMがリング状であることから、相手は発話中であることがわかる一方、図12および図13では、指標オブジェクトMが四角錐であることから、相手は発話中でないことがわかる。
【0110】
なお、図12〜図15には表現されていないが、相手が発話中か否かで指標オブジェクトMの表示色も異なっている。他の実施例では、指標オブジェクトMの形状は変えずに表示色だけを変えてもよく、一般には、相手が発話中か否かで指標オブジェクトMの表示態様を変更すればよい。ここで表示態様は、形状,色,大きさ,輝度,濃淡,点滅,動揺などを含み、これらの少なくとも1つが変更対象となる。
【0111】
以下、「水中遊泳ゲーム」を実現するための具体的なゲーム処理について、図16のメモリマップおよび図17〜図21のフローチャートにより説明する。「水中遊泳ゲーム」をプレイするとき、内部メインメモリ42eおよび/または外部メインメモリ46には、図16に示すように、プログラム記憶領域200およびデータ記憶領域210が形成され、プログラム記憶領域200には、ゲームプログラム202および通信制御プログラム204などが格納される。
【0112】
ゲームプログラム202は、CPU40を介してハードウェア全体(図2参照)を制御することにより「水中遊泳ゲーム」を実現するソフトウェアであり、図17〜図21のフローチャートに対応する。通信制御プログラム204は、主として入出力プロセッサ42aおよび無線通信モジュール50を制御して、他のゲーム装置(12)やサーバ124との間でネットワーク122を通じたデータ通信を行うためのソフトウェアであり、ゲームプログラム202によって利用される。
【0113】
データ記憶領域210は、受信データ領域212,送信データ領域214,仮想カメラ情報領域216,視野範囲情報領域217,球情報領域218,直線情報領域220,および指標オブジェクト情報領域222などを含む。受信データ領域212には、相手のゲーム装置12からの受信データが記憶される。受信データは、相手の音声を示す音声データおよび相手キャラクタBの位置を示す位置データを含む。送信データ領域214には、相手のゲーム装置12への送信データが記憶される。送信データは、ユーザの音声を示す音声データおよび自キャラクタAの位置を示す位置データを含む。仮想カメラ情報領域216には、自キャラクタAに追従する仮想カメラVCについて位置および撮影範囲を示す仮想カメラ情報が記憶される。視野範囲情報領域217には、自キャラクタAの視野範囲Eを示す視野情報が記憶される。球情報領域218には、球Sに関して中心位置および半径を示す球情報が記憶される。直線情報領域220には、直線Lに関して2点AB間の距離および方向を示す直線情報が記憶される。指標オブジェクト情報領域222には、指標オブジェクトMについて位置,方向,高さ,形状および色を示す指標オブジェクト情報が記憶される。なお、各領域212〜222の記憶内容は、ゲームプログラム202や通信制御プログラム204によって、たとえば1フレーム毎に更新される。
【0114】
CPU40は、図16のメモリマップに示したプログラムやデータに基づいて、図17〜図21のフローチャートに従う処理を実行する。図17を参照して、「水中遊泳ゲーム」が開始されると、CPU40は、まずステップS1で通信制御プログラム204を起動する。ステップS3では、通信制御プログラム204を利用して、サーバ124から、ゲーム装置12に予め登録してある各ユーザのオンライン状況を表す、オンラインユーザのリスト(図示せず)を取得し、これをモニタ34に表示する。ステップS5では、ユーザがリストから相手を選択したか否かを判別し、NOであればステップS3に戻る。たとえばコントローラ22で画面上のリストからいずれかのオンラインユーザを選択する操作が行われると、ステップS5でYESと判別して、ステップS7に進む。ステップS7では、このゲーム装置12(CPU40自身)を、ネットワーク122を介して相手のゲーム装置(12)と接続する。これにより、このゲーム装置12と相手のゲーム装置(12)との間でデータ(音声データおよび位置データなど)の送受信を行える状態となると、ステップS8に進んで位置データの送受信を行う。すなわち、送信データ領域214に記憶されている自キャラクタAの位置データを相手のゲーム装置(12)に送信すると共に、相手のゲーム装置(12)から相手キャラクタBの位置データを受信してこれを受信データ領域212に書き込む。
【0115】
ステップS9では、送信データ領域214の位置データおよび受信データ領域212の位置データに基づいて仮想空間内に自キャラクタAと相手キャラクタBとを配置し、ステップS11では、自キャラクタAから所定距離だけ後方に仮想カメラVCを配置し、そしてステップS13で、相手のゲーム装置(12)との間でデータの送受信を行いつつ、チャット処理(後述)を実行する。なお、各キャラクタA,Bの初期位置や所定距離などを示す情報(プリセットデータ)は、図16では省略しているが、データ領域210に記憶されている。チャット処理が完了すると、「水中遊泳ゲーム」は終了される。
【0116】
なお、この実施例では、接続確立後に相手との間で自キャラクタの位置を通知し合い、通知した位置に自キャラクタAを、通知された位置に相手キャラクタBをそれぞれ配置したが(S8〜S9)、他の実施例では、自キャラクタAおよび相手キャラクタBを第1初期位置および第2初期位置に配置してもよい。ここで、第1初期位置は、たとえばスタンドアロン(1P)モードの初期位置と同じ位置であり、第2初期位置は、たとえば第1初期位置に向かい合う位置である。したがって、ユーザのゲーム装置12つまり親機では、第1初期位置に自キャラクタAが、第2初期位置に相手キャラクタBがそれぞれ配置され、相手のゲーム装置(12)つまり子機では、第2初期位置に自キャラクタAが、第1初期位置に相手キャラクタBがそれぞれ配置される。各初期位置を示すデータは、データ記憶領域210に記憶される。
【0117】
また、N人(Nは3以上の整数)でチャットをする場合には、自キャラクタAを第1初期位置に、第1相手キャラクタBを第2初期位置に、…そして第(N−1)相手キャラクタを第N初期位置に、それぞれ配置してもよい。第1初期位置は、たとえばスタンドアロンモードの初期位置と同じ位置であり、第2〜第N初期位置は、たとえば第1初期位置を取り囲むように配置される。
【0118】
上記ステップS13のチャット処理は、図18〜図20のサブルーチンに従って実行される。なお、このサブルーチン(S21〜S75)は、所定周期で(たとえば1フレーム毎に)実行される。図18を参照して、ステップS21では、相手から位置を受信したか否かを通信制御プログラム204からの通知に基づいて判別し、NOであればステップS27に進む。通信制御プログラム204から位置受信の通知を受けると、ステップS21でYESと判別し、ステップS23およびS25を経てステップS27に進む。ステップS23では、受信データ領域212に受信した位置つまり相手キャラクタBの新たな位置を書き込み、ステップS25では、仮想空間内で相手キャラクタBをこの新たな位置に移動させる。
【0119】
ステップS27では、ユーザがコントローラ22を操作したか否かを判別し、NOであればステップS33に進む。ステップS27でYESであれば、ステップS29およびS31を経てステップS33に進む。ステップS29では、操作による指示に従って仮想空間内で自キャラクタAを移動させ、ステップS31では、自キャラクタAの新たな位置を送信データ領域214に書き込んで、通信制御プログラム204を利用して相手にこれを送信する。ステップS33では、仮想カメラVCを自キャラクタAから所定距離だけ後ろの位置に移動する。
【0120】
ステップS35では、ユーザからの音声入力があったか否かを判別し、NOであればステップS41に進む。ステップS35でYESであれば、ステップS37およびS39を経てステップS41に進む。ステップS37では、音声入力装置36から入力音声を取得し、ステップS39では、取得した音声つまりユーザの音声を送信データ領域214に書き込んで、通信制御プログラム204を利用して相手にこれを送信する。
【0121】
ステップS41では、受信データ領域212の情報(相手キャラクタBの位置)と視野範囲情報領域217の情報とに基づいて、相手キャラクタBの位置が自キャラクタAの視野範囲E(図22参照)の内部(ここでは境界面を含む)であるか否かを判別し、YESであればステップS69(後述)に進む。相手キャラクタBが視野範囲Eの外部にあれば、ステップS41でNOと判別してステップS43に進む。なお、境界面は、視野範囲Eの外部に含めてもよい。
【0122】
ステップS43では、自キャラクタAを中心として所定半径を有する球Sを仮想空間内に生成する(図10参照:前述)。ステップS45では、自キャラクタAと相手キャラクタBとを結ぶ直線Lの方向(AからBに向かうベクトルの方向)を算出し、算出結果を直線情報領域220に書き込む。ステップS47では、自キャラクタAと相手キャラクタBとの間の距離(AからBに向かうベクトルの大きさ)を算出し、算出結果を直線情報領域220に書き込む。ステップS49では、算出した距離に基づいて指標オブジェクトMの高さ(H:図12〜図15参照)を算出し、算出結果を指標オブジェクト情報領域222に書き込む。ステップS51では、算出した高さHに対して制限処理(図21参照:後述)を施す。この高さ制限処理は、図21のサブルーチンに従って実行される。
【0123】
ここで図21を参照して、ステップS81では、高さHが予め決められた最大値Hmaxよりも大きいか否かを判別し、YESつまりHmax<Hであれば、ステップS83でH=Hmaxとした後、上位層のルーチンに復帰する。ステップS81でNOつまりHmax≧Hであれば、ステップS85に進む。ステップS85では、高さHが予め決められた最小値Hminよりも小さいか否かを判別し、YESつまりH<Hminであれば、ステップS87でH=Hminとした後、上位層のルーチンに復帰する。ステップS85でNOつまりH≧Hminであれば、算出した高さHが一定範囲内であるので、高さ制限処理を施さず、直ちに上位層のルーチンに復帰する。これによって、高さHは一定範囲内(Hmin≦H≦Hmax)に制限され、指標オブジェクトMを表示した状態でも視認性が確保される。
【0124】
再び図19を参照して、ステップS53では、受信データ領域212の情報(相手の音声)に基づいて、相手から一定音量以上の音声を受信中であるか否かを判別する。ここでYESであればステップS55〜S59を経てステップS67に進み、NOであればステップS63〜S65を経てステップS67に進む。
【0125】
ステップS55では、受信した音声つまり相手の発話音声をスピーカ34aから出力する。ステップS57では、指標オブジェクトMの形状をリング状のものに設定し、設定結果を指標オブジェクト情報領域222に書き込む。ステップS59では、指標オブジェクトMの色を会話中を表す色(たとえば赤)に設定し、設定結果を指標オブジェクト情報領域222に書き込む。
【0126】
ステップS63では、指標オブジェクトMの形状を四角錐に設定し、設定結果を指標オブジェクト情報領域222に書き込む。ステップS65では、指標オブジェクトMの色を標準の色(たとえば青)に設定し、設定結果を指標オブジェクト情報領域222に書き込む。
【0127】
図20を参照して、ステップS67では、指標オブジェクト情報領域222の情報に基づいて指標オブジェクトMを仮想空間内に生成する。この指標オブジェクトMは、上記のようにして算出ないし設定した方向,高さ,形状および色を有し、かつ、その先端(円錐Cや四角錐の頂点)が、球Sの表面と直線Lとの交点の位置で球Sの表面に内接するような位置に配置される(図10参照)。ステップS69では、仮想空間を仮想カメラVCから見た映像を生成し、そしてステップS71で、こうして生成した映像と指標オブジェクトMとをモニタ34に表示出力する。
【0128】
このような処理によって、相手キャラクタBが自キャラクタAの視野範囲Eの外部にいるとき、図12〜図15に示すようなゲーム画面がモニタ34に表示される結果となる。ゲーム画面内の指標オブジェクトMは、その頂点の方向および高さHによって、相手キャラクタBのいる方向および相手キャラクタBまでの距離を示している。指標オブジェクトMはまた、相手が発話中か否かを、その形状および色によって表現している。図12〜図13のような青色の四角錐で表現された指標オブジェクトMは、相手が発話中でないことを示し、図14〜図15のような赤色のリングで表現された指標オブジェクトMは、相手が発話中であることを示す。なお、図示は省略するが、相手キャラクタBが自キャラクタAの視野範囲内にいるときには、指標オブジェクトMは非表示とされる(つまりゲーム画面から消去される)。
【0129】
その後、チャット終了が指示されたか否かをステップS73で判別し、NOであればステップS21に戻って同様の処理を繰り返す。ステップS73でYESであれば、上位層のルーチンに復帰する。
【0130】
以上から明らかなように、この実施例のゲーム装置12(CPU40)は、チャットを行う相手のゲーム装置(12)を特定して(S3,S5)、この相手のゲーム装置(12)との間でメッセージの送受信を行う(S1,S35〜S39,S53〜S55,204)。また、自己に対応する自キャラクタAおよび相手のゲーム装置に対応する相手キャラクタBを仮想空間内に配置し(S9)、仮想空間を任意の位置から見た映像を生成し(S69)、自キャラクタAから相手キャラクタBへの方向を算出し(S45)、自キャラクタAの近傍に定義された所定範囲Eの内部に相手キャラクタBが含まれているか否かを判別し(S41)、そして含まれていない(所定範囲外)と判別したとき、算出した方向を示す指標オブジェクトMを生成する(S67)。生成された映像および指標オブジェクトMは、モニタ34に出力される(S71)。こうして、チャット相手に対応するキャラクタが視野範囲外に出てもどの方向にいるのかを把握させることができる。
【0131】
ゲーム装置12はさらに、メッセージを受信中か否かを判別して(S53)、受信中であると判別したとき、上記のようにして生成した指標の態様を変化させる。これにより、相手キャラクタが画面外に出てしまっても、相手キャラクタがどの方向にいるのかだけでなく、相手が発言中かどうかも、容易に把握させることができる。
【0132】
なお、上記の実施例では、指標オブジェクトMは、相手キャラクタBが視野範囲Eの外部にいる限り常に表示されているが、他の実施例では、相手キャラクタBが視野範囲Eの外部にいる状態で相手が発話したときだけ表示するようにしてもよい。このような実施例について、次に説明する。
(他の実施例)
この実施例のハードウェア構成は上記の実施例と共通でよく(図1〜図9参照)、ソフトウェア構成も基本的には共通でよい(図16〜図21)。
【0133】
ただし、ゲームプログラム202の一部(チャット処理)は、次のように変更される。すなわち、図18〜図21に示すチャット処理において、ステップS41〜S71の部分が、図23〜図24に示すステップS41a〜S65aに置き換わる。したがって、図23〜図24には、図18のステップS39に続く処理が示されている。また、指標オブジェクト領域222に記憶される形状および色は、上記の実施例では変数であったが、ここでは発話中か否かを形状および色で示す必要がないので、定数でよい。
【0134】
図23〜図24を参照して、CPU40は、最初のステップS41aで、図19のステップS53と同様の処理を実行する。すなわち、受信データ領域212の情報(相手の音声)に基づいて、相手から一定音量以上の音声を受信中であるか否かを判別する。ここでYES、すなわち一定音量以上の音声を受信中であれば、ステップS43a〜S61aを経てステップS73に進む。一方、ステップS41aでNO、すなわち何ら音声を受信していないか、または相手から音声を受信中であってもそれが一定音量に満たない場合には、ステップS63a〜S65aを経てステップS73に進む。
【0135】
まず、ステップS41aでYESの場合、ステップS43aで受信した音声つまり相手の発話音声をスピーカ34aから出力する。そしてステップS45aで、図19のステップS41と同様の処理を実行する。すなわち、受信データ領域212の情報(相手キャラクタBの位置)と視野範囲情報領域217の情報とに基づいて、相手キャラクタBの位置が自キャラクタAの視野範囲E(図22参照)の内部であるか否かを判別し、YESであればステップS63a(後述)に進む。相手キャラクタBが視野範囲Eの外部にあれば、ステップS45aでNOと判別してステップS47aに進む。
【0136】
ステップS47a〜S49aでは、図19のステップS43〜S45と同様の処理を実行する。すなわち、ステップS47aで、自キャラクタAを中心として所定半径を有する球Sを仮想空間内に生成する(図10参照:前述)。ステップS49aでは、自キャラクタAと相手キャラクタBとを結ぶ直線Lの方向(AからBに向かうベクトルの方向)を算出し、算出結果を直線情報領域220に書き込む。
【0137】
S51a〜S55aでは、図19のステップS47〜S51と同様の処理を実行する。すなわち、ステップS51aでは、自キャラクタAと相手キャラクタBとの間の距離(AからBに向かうベクトルの大きさ)を算出し、算出結果を直線情報領域220に書き込む。ステップS53aでは、算出した距離に基づいて指標オブジェクトMの高さ(H:図12〜図15参照)を算出し、算出結果を指標オブジェクト情報領域222に書き込む。ステップS55aでは、算出した高さHに対して制限処理を施す。この高さ制限処理もまた、図21のサブルーチンに従って実行される。
【0138】
ステップS57aでは、指標オブジェクト情報領域222の情報に基づいて指標オブジェクトMを仮想空間内に生成する。この指標オブジェクトMは、上記のようにして算出した方向および高さを有し、かつ、その先端(円錐Cや四角錐の頂点)が、球Sの表面と直線Lとの交点の位置で球Sの表面に内接するような位置に配置される(図10参照)。指標オブジェクトMの形状および色については、予め決められた形状および色が採用される。ステップS59aでは、仮想空間を仮想カメラVCから見た映像を生成し、そしてステップS61aで、こうして生成した映像と指標オブジェクトMとをモニタ34に表示出力する。
【0139】
一方、ステップS41aでNO、またはステップS45aでYESの場合には、ステップS63aで仮想空間を仮想カメラVCから見た映像を生成し、そしてステップS65aで、こうして生成した映像をモニタ34に出力する。指標オブジェクトMについては、生成も表示もされない。
【0140】
このような処理によって、キャラクタBが視野範囲Eの外部にいる状態で相手が発話したときだけ、指標オブジェクトMを表示することができるようになる。
【0141】
以上から明らかなように、この実施例のゲーム装置12(CPU40)は、チャットを行う相手のゲーム装置(12)を特定して(S3,S5)、この相手のゲーム装置(12)との間でメッセージの送受信を行う(S1,S35〜S39,S41a〜S43a,204)。また、自己に対応する自キャラクタAおよび相手のゲーム装置に対応する相手キャラクタBを仮想空間内に配置し(S9)、仮想空間を任意の位置から見た映像を生成し(S59a)、自キャラクタAから相手キャラクタBへの方向を算出し(S49a)、自キャラクタAの近傍に定義された所定範囲Eの内部に相手キャラクタBが含まれているか否かを判別し(S45a)、メッセージを受信中であるか否かを判別し(S41a)、そして所定範囲外でありかつ送信中または受信中であると判別したとき、算出した方向を示す指標オブジェクトMを生成する(S57a)。生成された映像および指標オブジェクトMは、モニタ34に出力される(S61a,S65a)。こうして、チャット相手の発言中に、チャット相手に対応するキャラクタが視野範囲外であってもどの方向にいるのかを把握させることができる。
【0142】
なお、上記の実施例または他の実施例(以下“実施例”)において、一部の要素を次のように変更してもよい。いくつかの変形例を次に説明する。
(変形例)
各ゲーム装置12は、据置ゲーム機に限らず、携帯ゲーム機でもよい。一般には、ゲーム機,PC,PDA等々の情報処理装置でよく、送信側と受信側とで違った種類の情報処理装置を用いてもよい。
【0143】
複数のゲーム装置12,12,…の間の関係は、ピア・ツー・ピアに限らず、サーバ・クライアントであってもよい。
【0144】
実施例では発話音声を送受信しているが、音声以外のメッセージを送受信してもよい(文字によるチャットなど)。
【0145】
実施例では、自キャラクタAと相手キャラクタBとの間の距離から指標オブジェクトMの高さ(H)を決める際に、上限(Hmax)と下限(Hmin)を設定し、その間では距離ABに比例するように高さHを設定しているが、これに限らない。たとえば、上限と下限を設定しなくてもよいし、比例関係ではない演算方法を用いてもよいし、また、距離と高さの対応関係を表したテーブルによって段階的に決定する方法をとってもよい。
【0146】
実施例では、指標オブジェクトMは、四角錐(図12,図13参照)や、円錐Cに沿う複数のリング(図14,図15参照)であるが、方向を示すことが可能な形状であればよい(たとえば矢印,指差し形状など)。または、指標オブジェクトMの位置で方向を示すことも可能であり(自キャラクタAから指標オブジェクトMに向かうベクトルが相手キャラクタBの位置を示している)、この場合、指標オブジェクトMは、方向性を持つような形状である必要はない。つまり、単なる円,球,立方体などでもよいし、相手キャラクタを示すアイコンであってもよい。逆に、形状で方向を把握することができるような指標オブジェクトMであれば、位置が変化する必要はない(たとえば、常に自キャラクタの頭上に矢印があって、相手キャラクタの方向を向き続ける場合など)。要するに、実施例では位置および形状の両方で方向を示しているが、どちらか1つで方向を示すようにしてもよい。
【0147】
実施例では、発話中か否かの判断を音量に基づいて行っているが、トランシーバーのように所定のボタンが押下されている状態(たとえばコントローラ22のAボタン26dが押下されている状態)を発話中と判断してもよい。文字チャットの場合には、発言(メッセージの送受信,表示等)のための指示の有無に基づいて、このような判断を行うことができる。たとえば、送受信,表示等の指示を受けてから数秒間を発話中と判断してもよい。あるいは、送受信された文字の表示を開始してから終了するまでの時間を発話中と判断してもよい。
【0148】
実施例では、相手キャラクタBまでの距離に応じて指標オブジェクトMの高さHを変化させたが、これに代えて、またはこれに加えて、面積,体積,高さ以外の長さ(リングの円周や四角錐の奥行きなど)を変化させてもよい。あるいは、こうして指標オブジェクトMの大きさを変化させるのに代えて、またはこれに加えて、形状,色,輝度,濃淡,点滅周期などを距離に応じて変化させてもよい。要するに、相手キャラクタBまでの距離に応じて指標オブジェクトMの表示態様を変化させれば、距離の把握が可能になる。
【0149】
指標オブジェクトMは、相手からの音声を受信中のみならず、ユーザ自身の音声を送信中に表示してもよい。すなわち、発話しているのがユーザか相手かにかかわらず、指標オブジェクトMを表示してもよい。その場合、ユーザおよび相手のどちらが発話中であるかが分かるように指標オブジェクトMの向きを変えてもよい。あるいは、相手が発話していても指標オブジェクトMを表示せず、ユーザが発話している場合にのみ指標オブジェクトMを表示してもよい。
【0150】
実施例では2人で会話したが、3人以上の会話にも応用できる。この場合、複数の相手キャラクタBが登場するので、これと同数の指標オブジェクトMを生成して、互いに異なる態様で(たとえば互いに異なる色で)表示するのが好ましい。また、指標オブジェクトMを表示する相手と表示しない相手を選択できるようにしてもよい。また、チャット中の相手にだけ指標オブジェクトMを表示し、チャット中でない相手には指標オブジェクトMを非表示としたり、または、どの指標オブジェクトMも常時表示しておいて、チャット中か否かで表示態様を変化させたりしてもよい。
【0151】
実施例では、送信時に所定音量以上の入力であってもなくても、とりあえず音声を送信し、受信側で所定音量以上か否かをみて音声入力があったかを判別しているが、送信時に音量をみて、所定音量以上であるときだけ送信し、受信側ではデータを受信したときはすなわち音声入力があるものと判別するような方法にしてもよい。要するに、音量の閾値をみて音声入力の有無を判別する処理は、送信側で行っても、受信側で行ってもよい。
【0152】
実施例では、球Sは所定の半径を有するが、必ず画面内に収まるようにその半径を動的に変化させてもよい。例えば、自キャラクタAから画面の輪郭線に至る最短の距離を算出し、その最短距離よりも球Sの半径を小さく設定する。このようにすれば、指標オブジェクトMは必ず画面内に表示されるようになるため、相手キャラクタBの方向を確実にユーザに示すことができる。
【0153】
実施例では、球Sおよび直線Lは非表示としたが、その一方または両方を表示してもよい。表示/非表示をコントローラ22の操作に応じて切り換えてもよい。
【0154】
実施例では、指標オブジェクトMの表示/非表示は、相手キャラクタBの位置が視野範囲E(図22参照)の内部か否かで判別した(S41,S45a)が、仮想カメラVCによって撮影されている範囲の現在または過去(数フレーム前など)の画像に他オブジェクトBが含まれているか否かによって判断してもよい。
【0155】
なお、実施例の場合、相手キャラクタBが真正面にいても、自キャラクタAからの距離が遠ければ、相手キャラクタBは視野範囲E内に含まれないので、指標オブジェクトMは表示される。また、相手キャラクタBが自キャラクタAのすぐ近くに存在するが壁に遮られて見えないという状況では、相手キャラクタBは視野範囲E内に含まれるので、指標オブジェクトMは表示されない結果となる。これに対して、仮想カメラVCによる画像に他オブジェクトBが含まれているか否かで判断する場合には、相手キャラクタBが自キャラクタAの真正面にいるときは、距離が遠くても画像に相手キャラクタBが含まれることになり、指標オブジェクトMは表示されない。また、壁で相手キャラクタBが見えないときは、画像に相手キャラクタBは含まれないため、指標オブジェクトMは表示される結果となる。
【0156】
このほか、視線チェックを行って判断する方法もある。たとえば、1フレーム毎に(または一定の間隔で)自キャラクタAから視線をとばし、この視線が相手キャラクタBと衝突したか否かで判断すればよい。このように、自キャラクタAからの視線の到達範囲内に相手キャラクタBが含まれるかで判断する場合も同様に、相手が真正面にいれば指標オブジェクトMは表示されず、壁に隠れていれば指標オブジェクトMは表示される、という結果になる。
【符号の説明】
【0157】
10 …ゲームシステム
12 …ゲーム装置
22 …コントローラ
34 …モニタ
34a …スピーカ
36 …音声入力装置
40 …CPU
42e …内部メインメモリ
46 …外部メインメモリ
120 …ネットワークシステム
122 …ネットワーク
A …自キャラクタまたはその中心点
B …相手キャラクタまたはその中心点
S …Aを中心とする球
L …ABを通る直線(AからBに向かうベクトル)
M …指標オブジェクト
VC …仮想カメラ

【特許請求の範囲】
【請求項1】
複数の情報処理装置の間でネットワークを介してチャットを行うネットワークシステムであって、
各情報処理装置は、
チャットを行う相手の情報処理装置を特定するチャット相手特定手段、
自身の情報処理装置と前記チャット相手特定手段によって特定された前記相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段、
前記自身の情報処理装置に対応する自キャラクタおよび前記相手の情報処理装置に対応する相手キャラクタを仮想空間内に配置するキャラクタ配置手段、
前記仮想空間を任意の位置から見た画像を生成する画像生成手段、
前記自キャラクタから前記相手キャラクタへの方向を算出する方向算出手段、
前記方向算出手段によって算出された方向を示すように指標を生成する指標生成手段、
前記仮想空間内に定義された所定範囲の内部に前記相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段、
前記メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段、および
前記画像生成手段によって生成された画像を表示手段に出力する表示出力手段を備え、
前記表示出力手段は、前記相手キャラクタ判別手段によって前記所定範囲内に前記相手キャラクタが含まれていないと判別され、かつ前記送受信判別手段によって送信中または受信中であると判別されたとき、前記指標生成手段によって生成された指標を所定の態様で前記表示手段に出力する、ネットワークシステム。
【請求項2】
前記指標生成手段は、前記相手キャラクタ判別手段によって前記所定範囲内に前記相手キャラクタが含まれていないと判別され、かつ前記送受信判別手段によって送信中または受信中ではないと判別されたとき、第1の態様で前記指標を生成し、前記相手キャラクタ判別手段によって前記所定範囲内に前記相手キャラクタが含まれていないと判別され、かつ前記送受信判別手段によって送信中または受信中であると判別されたとき、第2の態様で前記指標を生成する、請求項1記載のネットワークシステム。
【請求項3】
前記メッセージは音声データであり、
前記送受信判別手段は、前記メッセージ送受信手段によって送信または受信した音声データの音量が、所定値以上であるとき送信中または受信中であると判別する一方、前記所定値未満であるとき送信中または受信中でないと判別する、請求項1または2記載のネットワークシステム。
【請求項4】
前記各情報処理装置は、前記自キャラクタを中心とする所定の大きさの球を生成する球生成手段をさらに備え、
前記方向算出手段は、前記自キャラクタと前記相手キャラクタとを結ぶ線を生成し、
前記指標生成手段は、前記球の表面と前記線との交点に前記指標を生成する、請求項1ないし3のいずれかに記載のネットワークシステム。
【請求項5】
前記各情報処理装置は、前記自キャラクタと前記相手キャラクタとの間の距離を算出する距離算出手段をさらに備え、
前記指標生成手段は、前記距離算出手段によって算出された距離に基づいて、前記指標の態様を変化させる、請求項1ないし4のいずれかに記載のネットワークシステム。
【請求項6】
前記態様は大きさを含む、請求項5記載のネットワークシステム。
【請求項7】
前記指標生成手段は、前記距離の大きさに比例して前記指標が大きくなるように生成する、請求項6記載のネットワークシステム。
【請求項8】
前記指標には、大きさの最大値と最小値が設定され、
前記指標生成手段は、前記距離が第1設定値以上であれば前記最大値に対応する大きさの指標を生成し、当該距離が第2設定値以下であれば前記最小値に対応する大きさの指標を生成する、請求項6または7記載のネットワークシステム。
【請求項9】
前記指標生成手段は、前記方向算出手段によって算出された方向を示す形状の指標を生成する、請求項1ないし8のいずれかに記載のネットワークシステム。
【請求項10】
前記指標生成手段は、前記方向算出手段によって算出された方向を示す位置に指標を生成する、請求項1ないし9のいずれかに記載のネットワークシステム。
【請求項11】
ネットワークを介してチャットを行う情報処理装置であって、
チャットを行う相手の情報処理装置を特定するチャット相手特定手段、
自身の情報処理装置と前記チャット相手特定手段によって特定された前記相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段、
前記自身の情報処理装置に対応する自キャラクタおよび前記相手の情報処理装置に対応する相手キャラクタを仮想空間内に配置するキャラクタ配置手段、
前記仮想空間を任意の位置から見た画像を生成する画像生成手段、
前記自キャラクタから前記相手キャラクタへの方向を算出する方向算出手段、
前記方向算出手段によって算出された方向を示すように指標を生成する指標生成手段、
前記仮想空間内に定義された所定範囲の内部に前記相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段、
前記メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段、および
前記画像生成手段によって生成された画像を表示手段に出力する表示出力手段を備え、
前記表示出力手段は、前記相手キャラクタ判別手段によって前記所定範囲内に前記相手キャラクタが含まれていないと判別され、かつ前記送受信判別手段によって送信中または受信中であると判別されたとき、前記指標生成手段によって生成された指標を所定の態様で前記表示手段に出力する、情報処理装置。
【請求項12】
ネットワークを介してチャットを行う情報処理装置のコンピュータを、
チャットを行う相手の情報処理装置を特定するチャット相手特定手段、
自身の情報処理装置と前記チャット相手特定手段によって特定された前記相手の情報処理装置との間でメッセージの送信または受信を行うメッセージ送受信手段、
前記自身の情報処理装置に対応する自キャラクタおよび前記相手の情報処理装置に対応する相手キャラクタを仮想空間内に配置するキャラクタ配置手段、
前記仮想空間を任意の位置から見た画像を生成する画像生成手段、
前記自キャラクタから前記相手キャラクタへの方向を算出する方向算出手段、
前記方向算出手段によって算出された方向を示すように指標を生成する指標生成手段、
前記仮想空間内に定義された所定範囲の内部に前記相手キャラクタが含まれているか否かを判別する相手キャラクタ判別手段、
前記メッセージ送受信手段によって送信中または受信中であるか否かを判別する送受信判別手段、および
前記画像生成手段によって生成された画像を表示手段に出力する表示出力手段として機能させ、
前記表示出力手段は、前記相手キャラクタ判別手段によって前記所定範囲内に前記相手キャラクタが含まれていないと判別され、かつ前記送受信判別手段によって送信中または受信中であると判別されたとき、前記指標生成手段によって生成された指標を所定の態様で前記表示手段に出力する、情報処理プログラム。

【図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