以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
(第1の実施形態)
図1を参照して、本発明の一実施形態に係る情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は、据置型のゲーム装置本体3を含むゲームシステム1の外観図であり、図2はゲーム装置本体3のブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタを接続コードを介して接続する据置型のゲーム装置本体3とから構成される。モニタは、ゲーム装置本体3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置本体3は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタに表示出力させるためのコンピュータを搭載したゲーム装置本体3と、ゲーム画面に表示されたキャラクタなどの画像などのゲームに必要な操作情報をゲーム装置本体3に与えるためのコントローラ7とを備えている。
また、ゲーム装置本体3は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体3からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体3とは無線通信によって接続する。さらに、ゲーム装置本体3には、当該ゲーム装置本体3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体3の前部主面には、当該ゲーム装置本体3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体3の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
また、ゲーム装置本体3には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体3は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体3は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体3のユーザは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。また、ゲーム装置本体3内にはそのユニークなIDが不揮発的に記憶される。
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報などの送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤオブジェクト等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7内にはそのユニークなIDが不揮発的に記憶される。
ゲーム装置本体3(通信ユニット6)とコントローラ7(通信部75)は通信接続して、その間で種々のデータを通信することが可能である。具合的には、ゲーム装置本体3からコントローラ7に対して、制御データやゲームデータ(メインメモリ33上のゲームデータやフラッシュメモリ38上のゲームデータ)を送信することができ、コントローラ7からゲーム装置本体3に対して、操作部72の操作情報やゲームデータ(メモリ752上のゲームデータ)を送信することができる。なお、ゲーム装置本体3からコントローラ7に対してゲームデータを送信する場合、その旨を示す制御信号がゲーム装置本体3からコントローラ7に送信される。この制御信号にはそのゲームデータの格納先となるメモリ752のアドレスが指定される。また、コントローラ7からゲーム装置本体3に対してゲームデータを送信する場合、まず、ゲーム装置本体3からその旨を要求する制御信号がコントローラ7に送信され、その制御信号に応じてコントローラ7からゲーム装置本体3にゲームデータが送信される。この制御信号にはゲームデータを読み出すメモリ752のアドレスが指定される。また、コントローラ7は、ゲーム装置本体3の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
図2において、ゲーム装置本体3は、各種プログラムを実行する例えばCPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35などが接続される。また、メモリコントローラ31には、所定のバスを介して、通信ユニット6、ビデオI/F(インターフェース)37、フラッシュメモリ38、オーディオI/F39、およびディスクI/F41が接続され、それぞれのインターフェースにモニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。なお、メインメモリ33は揮発性のメモリであり、電力供給がなくなるとその記憶データを消失するものである。
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。通信ユニット6は、上記バスを介して、ゲーム装置本体3と接続される。上述したように通信ユニット6は、コントローラ7からの送信データを受信し、当該送信データをCPU30へ出力する。また、通信ユニット6は、CPU30から出力された送信データをコントローラ7の通信部75へ送信する。ビデオI/F37には、モニタ2が接続される。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置本体3のバスやオーディオI/F39に出力する。
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
図3および図4において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。ユーザが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばユーザが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
なお、十字キー72aは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、コントローラ7から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、ユーザがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するxyz軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をz軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をz軸正方向とする。また、コントローラ7の上下方向をy軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をy軸正方向とする。さらに、コントローラ7の左右方向をx軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をx軸正方向とする。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上ハウジング(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下ハウジング(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。マイコン751は本願発明のボタンデータ発生手段の一例として、操作ボタン72a等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触/切断をマイコン751が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン751が検出し、操作ボタンの種類に応じた信号を発生させている。
また、コントローラ7は、図示しない無線モジュール753(図7参照)およびアンテナ754によって、ワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子703が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置本体3等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているユーザの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、ユーザが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
コントローラ7は、3軸(x、y、z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であってもよい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きをそれぞれ推測することができる。このように、加速度センサ701をマイコン751(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を決定することができる。同様に、加速度センサ701を備えるコントローラ7が、例えばユーザの手で動的に加速されてそれぞれ動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置をそれぞれ算出または推測することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは通信部75に出力される。
他の実施形態の例では、コントローラ7の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体3から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。また、上記メモリ752は、後述するように、ユーザが作成したキャラクタデータ等を記憶するためにも用いられる。なお、メモリ752は不揮発性のメモリである。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(x、y、およびz軸方向加速度データ;以下、単に加速度データと記載する)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を通信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から通信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は例えば5msである。マイコン751は、通信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データが無線モジュール753で電波信号に変調されてコントローラ7から送信される。そして、ゲーム装置本体3の通信ユニット6でその電波信号を受信し、ゲーム装置本体3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
ゲーム装置本体3、コントローラ7は、それぞれ、多数存在する(それぞれ多数が販売される)。通常、各ユーザは、ゲーム装置本体3と少なくとも1つのコントローラ7を所有している。あるコントローラ7はいずれのゲーム装置本体3の入力装置として使用することも可能である。すなわち、あるユーザのコントローラ7は、他のユーザのゲーム装置本体3の入力装置として使用することが可能である。しかしながら、あるコントローラ7をあるゲーム装置本体3の入力装置として使用するためには、まず、それらの間で通信リンクを確立することが必要である。具体的には、コントローラ7からゲーム装置本体3に対してリンク要求が送信される(例えば、いずれのゲーム装置本体3とも通信リンクを確立していないコントローラ7において、操作部72のいずれかが操作されると、ゲーム装置本体3に対してリンク要求が送信される)。そして、当該リンク要求を受信したゲーム装置本体3と当該リンク要求を送信したコントローラ7との間で通信リンクが確立され、接続識別情報(例えば、ブルートゥースにおけるコネクションハンドル)が生成される。ここで、通信リンクを確立することができるのは、事前に登録したゲーム装置本体3とだけである。すなわち、コントローラ7(コントローラ7内のメモリ;不揮発であることが好ましい)に事前にゲーム装置本体3の識別情報を登録し、およびまたは、ゲーム装置本体3(本体3内のメモリ;不揮発であることが好ましい)に事前にコントローラ7の識別情報を登録する。そして、コントローラ7は事前に登録されたゲーム装置本体3にのみリンク要求を送信することができ(すなわち、コントローラ7は事前に登録された本体3の識別情報を含めてリンク要求を送信し)、およびまたは、ゲーム装置本体3は事前に登録(後述の本登録か仮登録のいずれでも良いから登録されていればよい)されたコントローラ7からのみリンク要求を受信できる(すなわち、コントローラ7は自己の識別情報をリンク要求に含めて送信し、本体3は事前に登録されたコントローラ7の識別情報を有するリンク要求のみを受信できる)。なお、事前登録の方法については後述する。
ここで、本実施例においては、ゲーム装置本体3は同時に複数(本実施例では4つ)のコントローラ7を入力装置として使用可能である。すなわち、ゲーム装置本体3(通信ユニット6)は、同時に、最大4つのコントローラ7(通信部75)と通信リンクを確立することができ、各通信リンクに対してコネクションハンドルが生成されて、ゲーム装置本体3とコントローラ7で共有される。また、ゲーム装置本体3は、各コネクションハンドルに、所定の識別番号(チャンネル番号と呼ぶ)を付与することにより、各通信リンクを区別することができる。コネクションハンドルとチャンネル番号との対応関係は、内部メモリ(例えば、メインメモリ33)上のチャンネル設定領域に記憶される。すなわち、当該チャンネル設定領域において、各チャンネル番号ごとのコネクションハンドルが記憶される。ゲーム装置本体3が複数のコントローラ7と通信リンクを確立したときに、どのコネクションハンドルをどのチャンネル番号に割り当てるかは任意であるが、例えば、最初に通信リンクを確立したコネクションハンドルにチャンネル番号1が付与され、その後通信リンクを確立するごとにチャンネル番号2、3、4と付与されるようにしてもよい。
そして、コントローラ7は操作部72の操作情報やメモリ752に記憶されるゲームデータをゲーム装置本体3に送信するときに、当該コネクションハンドルを付して送信し、ゲーム装置本体3は、上記のチャンネル設定領域に設定されたコネクションハンドルを有する通信データを受信する。また、ゲーム装置本体3は、コントローラ7に制御データやゲームデータを送信するときに、当該コネクションハンドルを付して送信する。
なお、接続識別情報(コネクションハンドル)を生成することなく、リンク確立時に、コントローラ7の識別情報をゲーム装置本体3に登録するようにしてもよい。そして、コントローラ7はデータ送信するときに自己のコントローラ識別情報7を付して送信し、ゲーム装置本体3は、当該登録された識別情報を有する通信データを受信し、また、ゲーム装置本体3は、コントローラ7に制御データやゲームデータを送信するときに、当該登録された識別情報を付して送信し、コントローラ7は自己の識別情報を有する通信データを受信するようにしてもよい。
次に、前述の事前登録の方法を説明する。登録には、2種類の方法がある。以下の説明において、1つ目の方法を「本登録」と呼び、2つ目の方法を「仮登録」と呼ぶ。まず、本登録の方法について説明する。本登録の処理のためのプログラム(ゲーム装置本体3側)は、ゲーム装置本体3内の不揮発メモリ(例えば、フラッシュメモリ38)に記憶され、CPUによって実行される。コントローラ7側のプログラムはコントローラ7側の不揮発メモリに記憶されコントローラ7内の処理部により実行される。本登録では、本体3が備える操作部a(図示せず)をユーザが操作すると、ゲーム装置本体3は、通信ユニット6を介して、周囲に存在するコントローラ7に所定のデータをブロードキャストしつつ、コントローラ7からの応答を待機し、当該応答があったときに、当該応答したコントローラ7との間で接続処理をおこなう。一方、コントローラ7が備える操作部b(図示せず、または、図示する操作部のうちのいずれか)をユーザが操作すると、コントローラ7は、周囲に存在するゲーム装置本体3からの当該所定のデータの送信を待機し、当該所定のデータを受信すると、当該所定のデータを送信したゲーム装置本体3に対して応答して接続処理をおこなう。このようにして、ゲーム装置本体3とコントローラ7は接続する。そして、互いの識別情報(ブルートゥースアドレスやマックアドレス)を交換する。具体的には、ゲーム装置本体3、コントローラ7が備える不揮発メモリにはそれぞれユニークな識別情報としてブルートゥースアドレスやマックアドレスなどが記憶されている。そして、ゲーム装置本体3は、接続したコントローラ7の識別情報を受信して、その識別情報を内部の不揮発メモリ(例えば、フラッシュメモリ38)のコントローラ登録領域に登録する。コントローラ登録領域は、自己に使用する可能性のあるコントローラの識別情報が複数登録可能な領域である。一方、コントローラ7は、接続したゲーム装置本体3の識別情報を受信して、その識別情報を内部の不揮発メモリ(例えば、メモリ752)の本体登録領域に登録する。本体登録領域は、自己が使用する可能性のある本体の識別情報が複数登録可能な領域である。ゲーム装置本体3は、複数のコントローラ7と上述の登録処理をおこなうことにより、自己のコントローラ登録領域に複数のコントローラ7の識別情報を登録可能であり、コントローラ7は、複数のゲーム装置本体3と上述の登録処理をおこなうことにより、自己の本体登録領域に複数のゲーム装置本体の識別情報を登録可能である。なお、通信方式によっては、ゲーム装置本体3の識別情報をコントローラ7に登録する処理は省略してもかまわない。
次に仮登録の方法について説明する。本体3において、所定のアプリケーション(光ディスク4に記憶されてディスクドライブにより読み取られて実行されるアプリケーション、または、フラッシュメモリ38に記憶されるアプリケーション)を実行すると、当該アプリケーションに含まれる所定の命令をCPUが実行することにより、上述の操作部aがユーザ操作されたときと同等の処理が実行される。また、コントローラ7が備える操作部c(操作部bでもよい)をユーザが操作すると、上述の操作部bがユーザ操作されたときと同等の処理が実行される。すなわち、その後は、上述と同等の処理がゲーム装置本体3とコントローラ7との間で実行され、ゲーム装置本体3にコントローラ7の識別情報が登録され、コントローラ7にゲーム装置本体3の識別情報が登録される。ただし、ここで、仮登録では、ゲーム装置本体3は、コントローラ7の識別情報を、揮発性メモリであるRAM33上のコントローラ登録領域に登録する。すなわち、仮登録で登録されたコントローラの識別情報は、ゲーム装置本体3の電源がオフになると消滅する。なお、仮登録で登録されたコントローラ識別情報を別途のタイミングで消滅させてもよい(アプリケーションを終了したときなど)。なお、コントローラ7に登録される本体3の識別情報は、仮登録においても、本登録の場合と同じ領域に登録される。
上述のようにして、あるゲーム装置本体3に使用可能なコントローラ7の識別情報が当該ゲーム装置本体3に登録され、あるコントローラ7が使用可能なゲーム装置本体3の識別情報が当該コントローラ7に登録される。なお、ゲーム装置本体3の識別情報をコントローラ7に登録する処理は省略してもかまわないことは、本登録の場合と同様である。
次に、第1の実施形態で想定する処理の概要について説明する。第1の実施形態においては、ユーザは、ゲーム装置本体3でエディタアプリケーション(以下、キャラエディタと呼ぶ)を実行することで、所定のゲーム内で用いられるキャラクタオブジェクトの顔画像(以下、キャラ画像)を作成できる。第1の実施形態にかかる処理は、主に、コントローラ7を介した複数のゲーム装置本体間における当該キャラ画像のやりとりに関する処理である。なお、当該エディタアプリケーションは、フラッシュメモリ38(または図示しない本体3内の不揮発性メモリ)に記憶されており、図示しないメニューアプリケーション(フラッシュメモリ38または図示しない本体3内の不揮発メモリに記憶される)により当該エディタアプリケーションの起動が指示されたときに、メインメモリ上に展開されて実行される。なお、エディタアプリケーションを、光ディスク4に記憶して、ディスクドライブにより読み取ってメインメモリ上に展開して実行してもよい。
ゲーム装置本体3のフラッシュメモリ38には、上記キャラ画像を記憶する領域として、2種類のデータベース領域が用意されている。1つめは、表キャラクタデータベース(以下、表DB)と呼ばれ、キャラ画像データ(以下、単にキャラ画像と呼ぶ)を100体分、保存可能である。2つめは、裏キャラクタデータベース(以下、裏DB)と呼ばれ、キャラ画像を1万体分、保存可能である。上記表DBに保存されるキャラ画像(以下、表キャラ画像)は、ユーザが自由に編集可能である。また、ユーザが新規作成したキャラ画像は、当該表DBに保存される。その他、キャラ画像の閲覧や削除も可能である。一方、上記裏DBに保存されるキャラ画像(以下、裏キャラ画像)については、ユーザは新規作成・編集はできない。閲覧もしくは削除だけが可能である。また、裏DBから表DBにキャラ画像を移動することも可能である。但し、この場合、他人が作成したキャラ画像については表DBに保存されても、編集はできない。つまり、表DBの保存されるキャラ画像のうち、編集可能なものは、自分が作成したキャラ画像だけである。また、プレイヤキャラクタを表示するための画像データとして、ユーザは、表DBに保存されるキャラ画像の一覧から所望のキャラ画像を選択することが可能である。また、ノンプレイヤキャラクタを表示するための画像データとして、裏DBに保存されるキャラ画像から自動的にランダムに選択される。
また、上述のように、コントローラ7にはメモリ752が内蔵されている。そのため、ユーザが作成したキャラ画像をゲーム装置本体3からコントローラ7に送信することによりメモリ752に保存し、さらに、当該メモリ752に記憶されたキャラ画像をコントローラ7から他のゲーム装置本体3に読み込ませて利用することができる。つまり、コントローラ7を介して、異なるゲーム装置本体3の間で、キャラ画像の移動・転送が可能となる。ここで、裏DBは上記のように1万体という多量のキャラ画像の保存ができるが、これをユーザの手動操作による移動に頼っているのでは、なかなかキャラ画像の数が増えない。そのため、本実施形態にかかる処理を行うことで、裏DBに保存される裏キャラ画像の数を増やすことが可能となる。
本実施形態では、以下のような動作が行われる。図8〜10は、本実施形態におけるキャラ画像の転送処理の概要を説明するための図である。図8〜10においては、コントローラ7が無線でゲーム装置本体3に接続されている。また、各ゲーム装置本体3は、表DB334と裏DB339を有している。
まず、ユーザAが、自己のゲーム装置本体3a(以下、ゲーム機A)で、エディタアプリケーション(以下、キャラエディタと呼ぶ)を実行してキャラクタの顔画像(表キャラ画像)を作成する。作成された顔画像データはフラッシュメモリ38の表DB領域に保存される。そして、フラッシュメモリ38の表DB領域に保存されたキャラ画像は一覧表示することができ、ユーザはこの中から任意のキャラ画像を選択して、当該キャラ画像をコントローラ7aのメモリ752にコピーすることができる。この際、図8に示すように、ゲーム装置Aの裏DB339に保存されている裏キャラ画像がユーザAのコントローラ7aのメモリ752にコピーされる。このとき、裏キャラ画像のうち、ランダムでいくつかの画像が選択されて、当該選択された画像がコピーされるようにしてもよい。また、表DB領域に保存されたキャラ画像のうち、ユーザに選択されなかったキャラ画像がコントローラ7aのメモリ752にコピーされるようにしてもよい。このときも、ユーザに選択されなかったキャラ画像のうちランダムでいくつかの画像を選択してコピーされるようにしてもよい。
次に、ユーザAは、コントローラ7aを所持して、友達(以下、ユーザB)の家にいく。そして、ユーザAの所持するコントローラ7aをユーザBのゲーム装置本体3b(以下、ゲーム機B)に接続し、ユーザBと、例えばテニスゲーム(後述のゲームプログラム332;このゲームプログラムは、光ディスク4に記憶されまたはフラッシュメモリ38に記憶される)で遊ぶ。当該テニスゲームでは、各ユーザの表キャラ画像が用いられたキャラクタオブジェクトを自己のプレイヤオブジェクトとして使用できるが、この際、当該ゲームプログラム内に含まれる命令をCPUが実行することにより、図9に示すように、ユーザAのコントローラ7a内のキャラ画像3つが、ゲーム機Bの裏DB339に自動的にコピーされる。具体的には、例えば、当該ゲームプログラムの起動時に、当該自動的にコピーする処理が実行され、または、当該ゲームプログラムにおいて、ユーザによる表キャラ画像の選択がおこなうためのプログラムルーチンにおいて当該自動的にコピーする処理が実行される。なお、このゲームプログラムをCPUが実行することにより、フラッシュメモリ38の表キャラクタデータベースのキャラ画像データを一覧表示して、コントローラ7の操作に基いて、ユーザに当該一覧から所望のキャラ画像データを選択させ、当該選択されたキャラ画像データを用いて、プレイヤキャラクタオブジェクト(コントローラ7の操作に基いて動作するキャラクタオブジェクト)を表示する。また、フラッシュメモリ38の裏キャラクタデータベースのキャラ画像データの中からランダムで選択したキャラ画像データを用いて、ノンプレイヤキャラクタオブジェクト(コンピュータ制御で動作するキャラクタオブジェクト)を表示する。
その後、ユーザAが帰っても、図10に示すように、ゲーム機Bの裏DB339にはユーザAのコントローラ7aからコピーされたキャラ画像が残っている。そして、ユーザBがゲーム機Bで、上記テニスゲームを一人用で遊ぶと、上記ユーザAの3体分のキャラ画像が使われたオブジェクトがノンプレイヤキャラクタ、例えば観客としてゲーム画面内に登場する。
このように、本実施形態では、ユーザが意図的に転送・登録のための操作を行わずとも、他人の作ったキャラである裏キャラ画像の数を増やすことが可能となる。その結果、他人の作ったキャラ画像を利用したキャラクタオブジェクトをゲーム内に登場させることができる。これにより、例えば、上記ユーザAが、自分の顔に似せてキャラ画像を作成していた場合などは、自分(ユーザB)の友達(ユーザA)の顔にそっくりなキャラクタオブジェクトがいつの間にかゲーム内に登場し、ゲームの楽しさを高めることができる。
次に、ゲーム装置本体3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際にコントローラ7のメモリ752、およびゲーム装置本体3のフラッシュメモリ38およびメインメモリ33に記憶されるデータについて説明する。
図11は、コントローラ7のメモリ752のメモリマップを示す図である。図11に示すように、メモリ752には、キャラクタデータ7521が10件まで格納される。各キャラクタデータ7521には、キャラクタID7522、自動コピー禁止フラグ7523、表裏識別フラグ7524、キャラ画像データ7525等が記憶される。キャラクタID7522は、各キャラクタの作成時に割り振られる固有のIDである。具体的には、当該IDは、前述のエディタアプリケーションによりキャラ画像が生成されたときに、当該エディタアプリケーションを実行するゲーム装置本体3の識別情報および当該ゲーム装置本体3においてキャラ画像が生成されるごとにインクリメントするカウンタ(当該カウンタ値はフラッシュメモリ38内に記憶される)に基いて、エディタアプリケーションを実行するCPUにより生成される(典型的には、当該識別情報+当該カウンタ値が当該IDとなる)。さらには、ゲーム装置本体3が備えるタイマ(図示せず)値を利用して、前述のエディタアプリケーションによりキャラ画像が生成されたときのタイマ値にも基くようにしてもよい。これにより、各キャラ画像にはユニークなIDが付与されることになる。自動コピー禁止フラグ7523は、各キャラ画像について、コピーを許可するか否かを示すためのフラグである。表裏識別フラグ7524は、各キャラクタデータが、表キャラであるか裏キャラであるかを識別するためのフラグである(より具体的には、転送元のゲーム装置本体3のフラッシュメモリ38において表DB領域に記憶されていたキャラ画像は、コントローラ7のメモリ752に転送されるときに、当該転送のプログラムを実行するCPUにより表キャラであることを示すフラグを付してコントローラ7に転送され、転送元のゲーム装置本体3のフラッシュメモリ38において裏DB領域に記憶されていたキャラ画像は、コントローラ7のメモリ752に転送されるときに、裏キャラであることを示すフラグを付して転送される)。画像データ7525は、各キャラ画像の具体的な画像データである。
また、メモリ752には、上述した各種データの他、ゲーム装置本体との通信に関するデータ等、各種処理に必要なデータが記憶される。
図12は、ゲーム装置本体3のフラッシュメモリ38のメモリマップを示す図である。フラッシュメモリ38には、表DB334、裏DB339、本体コピー禁止フラグ344が含まれる。
表DB334には、表キャラクタデータ335が100体分、記憶される。各表キャラクタデータ335には、キャラクタID336、自動コピー禁止フラグ337、表キャラ画像データ338等が記憶される。キャラクタID336は、各キャラクタの作成時に割り振られる固有のIDである。自動コピー禁止フラグ337は、各キャラ画像について、コピーを許可するか否かを示すためのフラグである。表キャラ画像データ338は、各表キャラ画像の具体的な画像データである。
裏DB339には、裏キャラクタデータ340が1万体分、記憶される。各裏キャラクタデータ340には、表キャラクタデータ335と同様に、キャラクタID341、自動コピー禁止フラグ342、裏キャラ画像データ343等が記憶される。これらの内容は、上記表キャラクタデータ340と同様であるので、説明は省略する。
本体コピー禁止フラグ344は、キャラ画像の転送処理そのものを許可するか否かを示すためのフラグである。当該フラグがオンに設定されているゲーム装置本体3では、キャラ画像の自動転送は一切行われない(ユーザの手動による転送は可能である)。このフラグはユーザの設定に応じてオンオフされる。なお、本体コピー禁止フラグ334およびこのフラグに基く処理は省略してもかまわない。
図13は、ゲーム装置本体3のメインメモリ33のメモリマップを示す図である。メインメモリ33には、プログラム記憶領域330およびデータ記憶領域333が含まれる。
プログラム記憶領域330は、光ディスク4に記憶されるプログラムまたはフラッシュメモリ38に記憶されるプログラムが展開される領域である。この領域は、CPU30によって実行される各種プログラムを記憶し、キャラクタエディタプログラム331と、ゲームプログラム332などによって構成される。キャラクタエディタプログラム331は、主に、ユーザ操作に基づいてゲームデータを作成するためのプログラムであり、CPUに以下の機能を実行させる。
・ユーザ操作に基いてゲームデータ(キャラ画像データ)を作成してフラッシュメモリ38に記憶する機能
・ゲーム装置本体2のフラッシュメモリ38に記憶されるゲームデータのうち、ユーザ操作に基いて所望のゲームデータをコントローラ7のメモリ752に移動またはコピーする機能
・コントローラ7のメモリ752に記憶されるゲームデータのうち、ユーザ操作に基いて所望のゲームデータをゲーム装置本体2のフラッシュメモリ38に移動またはコピーする機能
・ゲーム装置本体2のフラッシュメモリ38に記憶されるゲームデータを、ユーザ操作に関わらず、コントローラ7のメモリ752に移動またはコピーする機能
・コントローラ7のメモリ752に記憶されるゲームデータのうち、ユーザ操作に関わらず、ゲーム装置本体2のフラッシュメモリ38に移動またはコピーする機能
また、ゲームプログラム332は、キャラクタエディタプログラムによって作成されたゲームデータを利用してゲームプレイのための処理を実行するプログラムであって、CPUに以下の機能を実行させる。
・ゲーム装置本体3のフラッシュメモリ38またはコントローラ7のメモリ752に記憶されるゲームデータを利用して、かつ、コントローラ7の操作情報を利用して、ゲームプレイのための処理を実行する機能
・ゲーム装置本体2のフラッシュメモリ38に記憶されるゲームデータを、ユーザ操作に関わらず、コントローラ7のメモリ752にコピーする機能
・コントローラ7のメモリ752に記憶されるゲームデータのうち、ユーザ操作に関わらず、ゲーム装置本体2のフラッシュメモリ38にコピーする機能
なお、典型的には、キャラクタエディタプログラム331とゲームプログラム332は択一的にメインメモリに記憶される。
キャラクタエディタプログラム331は、キャラクタの作成・編集や転送を行うための上記キャラエディタに対応するプログラムである。当該プログラムで実行されるキャラエディタには、作成モード、編集モード、閲覧モード、転送モードの4つの処理モードが含まれている。作成モードでは、ユーザは、上記キャラ画像の作成を行うことができる。編集モードでは、ユーザが作成したキャラ画像の編集や削除を行うことができる。閲覧モードでは、表DB334および裏DB339に保存されているキャラ画像を閲覧、削除することができる。転送モードでは、後述するような処理によって、コントローラ7(メモリ752)とゲーム装置本体3(フラッシュメモリ38)との間で上記キャラ画像の転送(移動やコピー)を行うことができる。
ゲームプログラム332は、上記キャラエディタで作ったキャラ画像を用いたゲーム処理を行うためのプログラムである。
データ記憶領域333には、ゲーム処理等の必要に応じて、上記フラッシュメモリ38に記憶されているキャラクタデータが適宜コピーされる。また、その他、エディット処理や仮想ゲーム空間に関するデータ(画像データ等)等、各種処理に必要なデータが記憶される。
次に、図14〜図15を参照して、ゲーム装置本体3によって実行されるキャラクタデータ転送処理について説明する。なお、図14は、上記キャラエディタによるキャラクタデータ転送処理を示すフローチャートである。このフローチャートは、前述のキャラクタエディタプログラムをCPU30が実行することによる処理の流れを示したものである。また、説明の便宜上、ここでは既にキャラエディタでキャラ画像が作成されており、表DB334に格納されているものとする。また、裏DB339にも、既に数体分の裏キャラ画像が格納されているものとして説明する。
なお、キャラエディタにおいてキャラ画像が作成される処理を簡単に説明すると、キャラクタエディタプログラムには、基本パーツ画像データが各部位ごとに複数記憶されている。具体的には、顔の輪郭画像、口の画像、目の画像、・・・の基本パーツ画像データがそれぞれ複数記憶されている。そして、それらの基本パーツ画像データに基づいて基本パーツ画像がモニタに一覧表示され、ユーザが操作部72を操作することにより、当該操作情報に基づいて当該一覧の中から、各部位ごとに画像データを選択し、選択された各部位ごとの画像データを組合わせることによりキャラ画像が生成される。
まず、CPU30は、コントローラ7との間で通信リンクを確立する処理を行う。その後、ゲーム装置本体3において、CPU30は、ユーザの指示に基づいて上記キャラエディタを起動し、転送モードにする(ステップS1)。次に、CPU30は、コントローラ7のメモリ752に保存されているキャラクタデータ331のうち、表キャラのデータ(表裏識別フラグ7524で表キャラが示されているデータ)のみ読み込み、そのキャラ画像を画面に表示する(ステップS2)。なお、コントローラ7のメモリ752にキャラクタデータ331が1つも記憶されていない場合は、その旨が画面に表示される。
次に、CPU30は、コントローラ7内の各キャラクタデータ331の表裏識別フラグ7524を参照し、裏キャラが存在するか否かを判定する(ステップS3)。当該判定の結果、裏キャラがコントローラ7内に存在するときは(ステップS3でYES)、ゲーム装置本体3の本体コピー禁止フラグ344がオフであるか否かを判定する(ステップS4)。その結果、オフであれば、本体への自動コピーが許可されていることになるので、コントローラ7内の裏キャラクタデータ(表裏識別フラグ7524が裏キャラであることを示しているデータ)を、ゲーム装置本体3のフラッシュメモリ38の裏DB339にコピーする(ステップS5)。より具体的には、CPU30は、通信ユニット6を介してコントローラ7に当該裏キャラクタデータの送信要求を送信する。これに応じて、コントローラ7は、上記裏キャラクタデータをゲーム装置本体3に送信する。そして、CPU30は、これを当該データを受信して、裏DB339に書き込む。ステップS5の処理により、ユーザの操作の有無に関わらずコントローラ7のキャラクタデータがゲーム装置本体3に転送される。なお、コントローラ7のキャラクタデータを、表キャラ、裏キャラに関わらずゲーム装置本体3に転送して、裏DB339に書き込んでもかまわない。
次に、ユーザの操作に基づいて、表キャラのコントローラ7〜ゲーム装置本体3間の転送処理が行われる(ステップS6)。すなわち、ユーザ操作に基いて、ユーザが希望するキャラクタデータを選択して、コントローラ7からゲーム装置本体3への移動や、ゲーム装置本体3からコントローラ7へのキャラクタデータの移動処理が行われる。まず、コントローラ7のメモリ752に記憶される全領域のデータがゲーム装置本体3のメインメモリ33に転送される。具体的には、ゲーム装置本体3から、コントローラ7に対して、メモリ752のデータをすべて転送することを指示する制御データが送信され、それに応答してコントローラ7から当該データが転送されてメインメモリ33の所定領域(以下、コピー領域と呼ぶ)に記憶される。次に、ゲーム装置本体3は、当該コピー領域を参照して、当該領域に記憶されたキャラクタデータのうち、表裏識別フラグに「表キャラ」であることを示す値が設定されたキャラクタデータに基づいて、キャラ画像一覧Aをモニタに表示する。そして、コントローラ7の操作部72の操作に応じてカーソルを移動するなどして、当該キャラ画像一覧Aから所望のキャラクタデータを選択する処理を実行する。その後、当該選択されたキャラクタデータを、フラッシュメモリ33の表キャラクタデータベースの空き領域に記憶し、コピー領域の当該キャラクタデータを消去する。また、ゲーム装置本体3は、フラッシュメモリ38の表キャラクタデータベースのキャラクタデータに基づいて、キャラ画像一覧Bをモニタに表示する。そして、コントローラ7の操作部72の操作に応じて、当該キャラ画像一覧Bから所望のキャラクタデータを選択する処理を実行する。その後、当該選択されたキャラクタデータをコピー領域のキャラクタデータ領域の空き領域に記憶し(このとき、表裏識別フラグは「表キャラ」であることを示す値が設定される)、フラッシュメモリ33の表キャラクタデータベースから消去する。選択が終了したら、コピー領域のデータがコントローラ7に転送されて、コントローラ7においてメモリ752の全領域のデータが上書きされる。
また、本実施例においては、ゲーム装置本体3には同時に複数のコントローラ7が通信リンク可能であるが、現在接続しているすべてのコントローラ7(メモリ752)とゲーム装置本体3(フラッシュメモリ38)との間で上述の移動処理を実行可能であるようにしてもよい。すなわち、現在接続しているコントローラが2つあり、それぞれ、7a、7bとしたときに、コントローラ7aのメモリ752とフラッシュメモリ38の間、コントローラ7bのメモリ752とフラッシュメモリ38の間、それぞれについて上述の移動処理を実行してもよい。このとき、接続しているコントローラ7ごとに上述の移動処理をおこなってもよく(方法1)、または、接続しているコントローラ7のすべてについて一度に上述の移動処理をおこなってもよい(方法2)。
方法1の場合、まず、接続しているコントローラ7のうちから対象となるコントローラ7をモニタ上で選択する(例えば、接続しているコントローラ7のうちの特定のコントローラ(例えば、チャンネル番号1のコントローラ)からの操作情報に基づいて当該選択をおこなう)。そして、選択されたコントローラ7のチャンネル番号をメインメモリ33上に記憶する(図示しない「選択チャンネル番号データ」)。次に、選択チャンネル番号データを参照し、かつ、チャンネル設定領域を参照することにより、当該選択チャンネル番号データが示すコントローラ7に対して、メモリ752に記憶される全領域のデータを転送する制御データを送信し、それに応答して当該コントローラ7からメモリ752のデータが転送されてメインメモリ33のコピー領域に記憶される。次に、ゲーム装置本体3は、当該コピー領域を参照して、上述の移動処理をおこなう。このとき、キャラ画像一覧から所望のキャラ画像を選択する処理を実行するときに、接続しているコントローラ7のうちの特定のコントローラ(例えば、チャンネル番号1のコントローラ)からの操作情報に基づいて選択してもよいし、選択チャンネル番号データが示すコントローラ7からの操作情報(選択チャンネル番号データが示すチャンネル番号に対応するコネクションハンドルを有する操作情報)に基づいて選択してもよい。選択が終了したら、コピー領域のデータが、選択チャンネル番号データで指定されるコントローラ7に転送されて、当該コントローラ7においてメモリ752の全領域のデータが上書きされる。
方法2の場合、接続しているすべてのコントローラ7に対して、メモリ752に記憶される全領域のデータを転送する制御データを送信し、それに応答して各コントローラ7からメモリ752のデータがそれぞれ転送されてメインメモリ33のコピー領域に記憶される。このとき、各コントローラ7から受信したメモリ752のコピーデータは、当該コントローラ7のチャンネル番号を付して記憶される。具体的には、チャンネル設定領域のデータを参照して、各コントローラ7から受信したデータに付されるコネクションハンドルをチャンネル番号に変換して、当該チャンネル番号を付してメインメモリ33のコピー領域に記憶される。すなわち、メインメモリ33のコピー領域には、接続しているコントローラ7のそれぞれについて、コントローラ7のメモリ752のコピーデータが当該コントローラのチャンネル番号とともに記憶される。なお、チャンネル番号の代わりに、コントローラ7の識別情報(例えばブルートゥース)、または、コネクションハンドルを付しても良い。次に、ゲーム装置本体3は、当該コピー領域を参照して、上述の移動処理をおこなう(モニタ上には接続しているコントローラごとのキャラ画像一覧を順番に表示してもよいし一度に表示してもよい)。このとき、キャラ画像一覧から所望のキャラ画像を選択する処理を実行するときに、接続しているコントローラ7のうちの特定のコントローラ(例えば、チャンネル番号1のコントローラ)からの操作情報に基づいて選択してもよいし、接続しているコントローラ7のうちあるコントローラ7のチャンネル番号が付されたコピーデータに基づくキャラ画像一覧に対する選択について、当該コントローラ7の操作情報に基づいて選択してもよい。選択が終了したら、コピー領域のコピーデータのそれぞれについて、あるチャンネル番号が付されたコピーデータが、当該チャンネル番号に対応するコントローラ7に対して送信される。具体的に言うと、リンクしているコントローラ7が2つあって、それぞれ、7a、7bであって、コントローラ7aのチャンネル番号が1で、コントローラ7bのチャンネル番号が2のときに、コントローラ7aから受信したコピーデータaにはチャンネル番号1が付されてコピー領域に記憶され、コントローラ7bから受信したコピーデータbにはチャンネル番号2が付されてコピー領域に記憶される。そして、コピーデータaに基いてキャラ画像一覧aが表示され、コピーデータbに基いてキャラ画像一覧bがモニタに表示される。そして、キャラ画像一覧aに対する選択はコントローラ7aから受信した操作情報に基づいておこなわれ、キャラ画像一覧bに対する選択はコントローラ7bから受信した操作情報に基づいておこなわれる(キャラ画像一覧bに対する選択も、コントローラ7aから受信した操作情報に基づいておこなってもよい)。そして、更新されたコピーデータaはチャンネル番号1に対応するコントローラ7aに転送され、更新されたコピーデータbはチャンネル番号1に対応するコントローラ7bに転送される。
なお、本実施例では、無線通信による通信の負荷を考慮して、予め、コントローラ7のメモリ752のデータをメインメモリ33上にコピーして、当該コピーデータを用いて上述の処理をおこなった。しかしながら、他の例として、ゲーム装置本体3の処理でコントローラ7のメモリ752上のデータが必要になったときに、その必要になったデータのアドレスをその都度指定して転送要求するようにしてもかまわない。
ここで、表キャラについて、コントローラ7(メモリ752)からゲーム装置本体3(フラッシュメモリ38)へキャラクタデータの転送がされる場合、「コピー」ではなく「移動」が行われる。また、ユーザ操作に応じてコントローラ7からゲーム装置本体3へ表キャラを移動する際に、当該移動しようとする表キャラのキャラクタIDと同じIDを有するキャラクタがフラッシュメモリ38の裏DB339に存在した場合は、裏DB339から当該IDを有するキャラクタデータを削除する。つまり、表DB334と裏DB339との間において、IDが重複するキャラクタは存在しない。また、ゲーム装置本体3からコントローラ7へ表キャラを移動する際に、ユーザは、自動コピー禁止フラグ337をオンに設定して移動することが可能である。但し、本体コピー禁止フラグ344がONであれば、自動コピー禁止フラグ337は必ずOFFに設定される。
次に、CPU30は、転送モードの終了指示がユーザによって出されたか否かを判定する(ステップS7)。判定の結果、終了指示が出ていれば(ステップS7でYES)、続いて、CPU30は、コントローラ7に保存された表キャラのデータ件数が10件か否かを判定する(ステップS8)。10件であれば(ステップS8でYES)、CPU30は、そのまま転送モードを終了する(ステップS11)。
一方、コントローラ内の表キャラ数が10件でないときは(ステップS8でNO)、ゲーム装置本体3側で、キャラクタのコピーが許可されているか否かを判定するため、本体コピー禁止フラグ344がオフか否かを判定する(ステップS9)。判定の結果、当該フラグがオフ、つまりコピー許可がされていれば(ステップS9でYES)、フラッシュメモリ38の裏DB339から、(10−表キャラ数)の分だけ裏キャラクタデータ340をランダムで選択し、表裏識別フラグを「裏キャラ」を示す値に設定して、上述のメインメモリ上のコピーデータを更新する(その後、コピーデータは、コントローラ7に転送されて、コントローラ7は転送されたデータをメモリ752に記憶する(ステップS10)。このとき、コントローラ7のメモリ752内に既に記憶されている裏キャラについては、上書きコピーされる。そして、裏キャラのコピーが終われば、CPU30は、転送モードを終了する。
一方、ステップS9の判定の結果、本体コピー禁止フラグ344がオンであるときは(ステップS9でNO)、自動コピーが一切禁止されていることになるため、CPU30は、裏キャラのコピーは行わずに転送モードを終了する(ステップS11)。このように、ユーザがキャラエディタで表キャラの転送操作を行う際に、裏キャラについても自動的にコントローラ7にコピーされる。以上で、キャラエディタによるキャラクタデータ転送処理が終了する。
次に、ゲーム装置本体3によって実行されるゲーム処理(前述のプログラム332に基いて実行される処理)に際してのキャラ画像転送処理について説明する。なお、図15はゲーム装置本体3によって実行されるゲーム処理の際のキャラ画像転送処理を示すフローチャートである。
図15に示す処理の前提として、まず、上述した処理でコントローラ7に表キャラとしてキャラ画像を保存したユーザAが、当該コントローラ7を持って、友達であるユーザBの家に移動したものと仮定する。そして、ユーザBが所有するゲーム装置本体3において、キャラ画像を使用するゲーム(以下、キャラ画像対応ゲームと呼ぶ)を起動することで、図15に示す処理が行われる。図15はプログラム332をCPUが実行することにより実行される処理の流れである。
まず、キャラ画像対応ゲームが起動すれば、CPU30は、コントローラ7と通信リンクを確立する処理を行う(ステップS21)。すなわち、各コントローラ7にそれぞれ設定されているコントローラ種別(以下、コントローラIDと呼ぶ)が、上記通信ユニット6に送信されるので、当該コントローラIDを用いて、各ユーザのコントローラを認識、識別することができる。ここでは、ユーザAのコントローラ7aとユーザBのコントローラ7bの2つを認識したものとして説明を進める。
次に、CPU30は、各コントローラに保存されているキャラクタデータ331を読み込む(ステップS22)。具体的には、各チャンネル番号に対応するコネクションハンドルを有する各コントローラ7に対して、当該コントローラ7のメモリ752内のキャラクタデータ331を転送する制御データを送信し、当該コントローラ7からキャラクタデータ331を受信する。そして、当該受信したキャラクタデータにそれを受信したチャンネル番号を付してメインメモリの所定領域に記憶する。
ここでは、ユーザAのコントローラ7aからキャラクタデータを読み込む場合を例として説明を続ける。すなわち、コントローラ7aに保存されている10体分のキャラクタデータ331がメインメモリ33に読み込まれる。
次に、CPU30は、本体コピー禁止フラグ344がオフか否かを判定する(ステップS23)。その結果、当該フラグがオフ、つまりコピー許可がされていれば(ステップS23でYES)、メインメモリ33に読み込まれたコントローラ7a内のキャラクタデータのうち、自動コピー禁止フラグ337がオフに設定されているキャラクタデータのみを、フラッシュメモリ38の裏DB339にコピーする。つまり、コントローラ7a内の、コピー許可がされているキャラクタについてのみ、表キャラであるか裏キャラであるかに関わらず、一律にゲーム機の裏DB339にコピーする。一方、本体コピー禁止フラグ344がオンのときは(ステップS23でNO)、ユーザBのゲーム装置本体3では自動コピーが禁止されていることになるため、コントローラ7aからのコピーは行われずに、処理を次のステップS25に進める。
コントローラ7からのキャラクタデータの読み込みや転送が終われば、次に、CPU30は、各キャラクタデータのキャラ画像を用いて、ゲーム内で使用するキャラクタの選択画面を表示する(ステップS25)。なお、ここでユーザが選択できるのは、ユーザBのゲーム装置本体3の表DB334に格納されているキャラクタ、および各ユーザのコントローラ7に記憶されている表キャラのみである。
ここで、複数のコントローラ7が接続されている場合、接続しているコントローラ7ごとにキャラクタの選択画面を表示して当該選択の処理をおこなってもよく(方法1)、または、接続しているコントローラ7のすべてについて一度にキャラクタの選択画面を表示して当該選択の処理をおこなってもよい(方法2)。
方法1の場合、まず、接続しているコントローラ7のうちから対象となるコントローラ7をモニタ上で選択する(例えば、せつぞくしているコントローラ7のうちの特定のコントローラ(例えば、チャンネル番号1のコントローラ)からの操作情報に基づいて当該選択をおこなう)。または、接続しているコントローラ7を順番に対象にしてもよい。そして、対象となったコントローラ7のチャンネル番号をメインメモリ33上に記憶する(図示しない「選択チャンネル番号データ」)。次に、選択チャンネル番号データを参照し、かつ、チャンネル設定領域を参照することにより、当該選択チャンネル番号データが示すコントローラ7に対して、メモリ752に記憶される全領域のデータを転送する制御データを送信し、それに応答して当該コントローラ7からメモリ752のデータが転送されてメインメモリ33のコピー領域に記憶される。次に、ゲーム装置本体3は、当該コピー領域に記憶される表キャラのキャラクタデータおよびフラッシュメモリ38に記憶される表キャラのキャラクタデータを参照して、それらのキャラクタのキャラ画像一覧を表示して、選択チャンネル番号データが示すコントローラ7からの操作情報(選択チャンネル番号データが示すチャンネル番号に対応するコネクションハンドルを有する操作情報)に基づいて、当該キャラ画像一覧から所望のキャラ画像を選択する処理を実行する。選択が終了したら、選択したキャラクタデータが当該選択チャンネル番号データに対応するキャラクタデータとして設定される(図示しないが、この設定情報がメインメモリ上に記憶される)。
方法2の場合、接続しているすべてのコントローラ7に対して、メモリ752に記憶される全領域のデータを転送する制御データを送信し、それに応答して各コントローラ7からメモリ752のデータがそれぞれ転送されてメインメモリ33のコピー領域に記憶される。このとき、各コントローラ7から受信したメモリ752のコピーデータは、当該コントローラ7のチャンネル番号を付して記憶される。具体的には、チャンネル設定領域のデータを参照して、各コントローラ7から受信したデータに付されるコネクションハンドルをチャンネル番号に変換して、当該チャンネル番号が付される。すなわち、メインメモリ33のコピー領域には、接続しているコントローラ7のそれぞれについて、コントローラ7のメモリ752のコピーデータが当該コントローラのチャンネル番号とともに記憶される。次に、ゲーム装置本体3は、当該コピー領域を参照して、上述のキャラクタ選択処理をおこなう(モニタ上にはリンクしているコントローラごとのキャラ画像一覧を順番に表示してもよいし一度に表示してもよい)。このとき、キャラ画像一覧から所望のキャラ画像を選択する処理を実行するときに、接続しているコントローラ7のうちあるコントローラ7のチャンネル番号が付されたコピーデータに基づくキャラ画像一覧に対する選択について、当該コントローラ7の操作情報に基づいて選択してもよい。選択したキャラクタデータがそれぞれのチャンネル番号に対応するキャラクタデータとして設定される(図示しないが、この設定情報がメインメモリ上に記憶される)。
具体的に言うと、接続しているコントローラ7が2つあって、それぞれ、7a、7bであって、コントローラ7aのチャンネル番号が1で、コントローラ7bのチャンネル番号が2のときに、コントローラ7aから受信したコピーデータaにはチャンネル番号1が付されてコピー領域に記憶され、コントローラ7bから受信したコピーデータbにはチャンネル番号2が付されてコピー領域に記憶される。そして、コピーデータaに基いてキャラ画像一覧aが表示され、コピーデータbに基いてキャラ画像一覧bがモニタに表示される。そして、キャラ画像一覧aに対する選択はコントローラ7aから受信した操作情報に基づいておこなわれ、キャラ画像一覧bに対する選択はコントローラ7bから受信した操作情報に基づいておこなわれる。キャラ画像一覧aに対する選択により選択されたキャラクタデータはコントローラ7a(チャンネル番号1)に対応するキャラクタデータである旨の設定がメインメモリ上で記憶、キャラ画像一覧bに対する選択により選択されたキャラクタデータはコントローラ7b(チャンネル番号2)に対応するキャラクタデータである旨の設定がメインメモリ上で記憶される。
その後、ゲームが開始されれば、各ユーザが選択したキャラクタがゲーム画面に表示され、ゲーム処理(例えば、テニスゲーム)が行われることになる(ステップS26)。以上で、第1の実施形態にかかるキャラクタデータ転送処理は終了する。より具体的には、チャンネル番号1,2に設定されたコントローラ7の操作情報に基づいて、それぞれ、チャンネル番号1,2に対応するキャラクタデータとして設定されたキャラクタデータを用いたゲーム処理が実行される。より具体的には、チャンネル番号1,2に対応するキャラクタデータとして設定されたキャラクタ画像を用いてプレイヤオブジェクトをそれぞれ仮想空間に表示し、チャンネル番号1、2に設定されたコントローラ7の操作情報に基づいて、それぞれのプレイヤオブジェクトの動作を制御する。
このように、第1の実施形態では、ユーザAが作成した表キャラが、コントローラ7を介してユーザBのゲーム装置本体3に裏キャラとして自動的に格納される。更に、他人の作ったキャラである裏キャラもコントローラ7を介して、更に別の他人のゲーム装置本体へとコピーされる。例えば、ユーザAが作成した表キャラが、ユーザAのコントローラ7を介して、ユーザBのゲーム装置本体3の裏DBへとコピーされる。次に、ユーザBが、自己の作成した表キャラをコントローラ7に保存する際に、ユーザAの作ったキャラも裏キャラとして当該コントローラ7に保存される。そして、ユーザBがユーザCのゲーム装置本体に自己のコントローラ7を接続すれば、ユーザCの裏DBには、ユーザAおよびBが作成したキャラクタが自動的に裏キャラとしてコピーされる。このように、コントローラ7を所持して他人のゲーム装置本体3と接続して遊んでいくことで、自分あるいは他人が作成したキャラクタが他のゲーム装置本体にどんどんコピーされ、あたかも裏キャラがユーザの意識しないうちに増殖しているかのごとき効果を得ることができる。そして、これらの裏キャラのキャラ画像をゲーム内に登場するキャラクタに用いることで、各ユーザがそれぞれ作成した千差万別の個性を持つキャラ画像をゲーム内に表示させることができ、他人とのコミュニケーションによるゲームの新しい楽しさをユーザに提供することが可能となる。
なお、コントローラ7からゲーム装置本体3へのキャラクタデータの転送について、上記実施形態では専用のエディタアプリケーション(キャラエディタ)を使用していた。このような専用のアプリケーションを用いずに、ユーザの転送指示がなくとも転送できるようにしてもよい。例えば、ゲーム装置本体3で、バックグラウンドで転送プログラムを常駐させておき、定期的に送信要求の信号をコントローラ7に送信する。そして、この要求に応じて、コントローラ7からゲーム装置本体3へ、キャラクタデータの転送を行うようにしても良い(コントローラ7のメモリ752に記憶されるすべてのキャラクタデータを転送してもよいし、表キャラのみを転送してもよいし、裏キャラのみを転送してもよい)。コントローラ7から転送されたキャラクタデータは、フラッシュメモリ38の裏キャラ領域に記憶される。これにより、ユーザの特段の操作なしで裏キャラの転送を行うことが可能となる。
また、ゲーム装置本体3の起動処理の一環として、ゲーム装置本体3のフラッシュメモリ38とコントローラ7のメモリ752の間での上のキャラクタデータの送受信を行うようにしてもよい。すなわち、リンクしているコントローラ7の識別情報を不揮発的に記憶しておき、ゲーム装置本体3の電源を入れたときのブートアッププロセスにおいて、当該不揮発的に記憶されたコントローラ7とリンクを確立して、その時点で当該コントローラ7に上記送信要求を送る。これに応じて、コントローラ7からキャラクタデータが裏DB339に送信されるようにすればよい。そして、裏DBへのコピーが終われば、今度は、ゲーム装置本体3からコントローラ7に、上述のように、(10−表キャラ数)の裏キャラクタデータをランダムで選び、コントローラ7に上書きコピーするようにすればよい。これにより、ゲーム装置本体起動後に、所定のゲーム処理などにおいて新たに追加された裏キャラをすぐに反映して表示させることが可能となる。
コントローラ7がゲーム装置本体3と接続されたタイミングで、ゲーム装置本体3から上記送信要求を送信するようにしてもよい。本実施形態では無線によって接続されているため、ゲーム装置本体3とコントローラ7とのリンクが確立したときに上記のような転送処理を行うようにすればよい。また、有線接続式のコントローラであれば、物理的に接続されたときに上記のような転送処理を行えばよい。これにより、ユーザの利便性を高めることができる。
また、上記キャラエディタを使用していないときであっても、例えば、ゲーム処理における上記キャラクタ選択画面(図15のステップS25の処理)等において、ユーザによるキャラクタデータの転送指示操作に応じてキャラクタデータの転送を行うようにしてもよい。更に、この場合、複数のコントローラ7が接続されていれば、上記転送指示操作が行われたコントローラ7に対してのみ転送処理を行うようにしても良い。例えば、ゲーム装置本体にコントローラ7a、7b、7cの3つのコントローラが接続されていると仮定する。そして、コントローラ7bから上述のような転送指示が出されたとすると、当該コントローラ7bに対してのみ表キャラクタデータのやりとり、および裏キャラクタデータのやりとりを行い、他のコントローラとはキャラクタデータのやりとりを行わないようにしても良い。これにより、ユーザの意思に基づいたキャラクタデータのやりとりを行うことが可能となる。
また、コントローラ7のキャラクタデータをフラッシュメモリ38に移動またはコピーする場合に、コントローラ7内に複数のキャラクタデータが保存されていれば、このうち任意のキャラクタデータをユーザが選択して移動またはコピーするようにしてもよい。なお、この選択されたキャラクタデータはフラッシュメモリ38に表キャラとして記憶される。そして、このとき、選択されなかったキャラクタデータを含むキャラクタデータ(選択されたキャラクタを含んでも良い)を、フラッシュメモリ38に転送して裏キャラとして記憶してもよい。なお、この場合に、ユーザはコントローラ7の表キャラのみを選択可能にしてもよい。また、フラッシュメモリ38のキャラクタデータをコントローラ7に移動またはコピーする場合に、フラッシュメモリ38内に複数のキャラクタデータが保存されていれば、このうち任意のキャラクタデータをユーザが選択して移動またはコピーするようにしてもよい。なお、この選択されたキャラクタデータはコントローラ7に表キャラとして記憶される。そして、このとき、選択されなかったキャラクタデータを含むキャラクタデータ(選択されたキャラクタを含んでも良い)を、コントローラ7に転送して裏キャラとして記憶してもよい。なお、この場合に、ユーザはフラッシュメモリ38の表キャラのみを選択可能にしてもよい。
更に、上記キャラエディタに、フラッシュメモリ38上の表キャラのうちユーザが所望するキャラクタデータの削除機能を設けて、当該機能の実行中において、ユーザがフラッシュメモリ38上の表キャラの削除指示を出した場合、表DB334から表キャラを削除すると同時に、当該表キャラを裏キャラとして、裏DB339に登録するようにしてもよい。換言すれば、削除指示が出されたときは、当該削除指示の出された表キャラを表DB334から削除する代わりに、裏DB339に移動するようにしてもよい。これにより、裏キャラの数を増やすことができる。
(第2の実施形態)
次に、図16から図18を参照して、本発明の第2の実施形態について説明する。上述の第1の実施形態では、コントローラを介してキャラクタデータを別のゲーム装置本体に転送している。これに対して、第2の実施形態では、ネットワークを介してキャラクタデータを転送する。なお、本実施例では、常時接続型のネットワークを使用する。なお、当該実施形態に係るゲーム装置本体の機能ブロック図およびハードウェア構成を示すブロック図は、第1の実施形態と同様である(図1〜図7参照)。そのため、同一の参照符号を付して詳細な説明を省略する。
まず、本発明の第2の実施形態にかかるネットワークの環境について説明する。本実施形態においては、ゲーム装置本体は常時接続型のネットワークを介して、相互に接続されている。また、各ゲーム装置本体3も、スタンバイモード等への移行も含め、24時間稼働している状態である。
また、ゲーム装置本体3には、電子メールアプリケーション(以下、メールアプリと呼ぶ)が標準機能として実装されている(このアプリケーションプログラムは、ゲーム装置本体3内の不揮発メモリ(例えば、フラッシュメモリ38)に記憶されており、CPUにより実行される)。当該メールアプリでは、各ゲーム装置本体に保存されているアドレス帳(フラッシュメモリ38に記憶される)から送信先を選んで電子メールを送ることが可能である。なお、当該電子メールでは、例えば、Webメールシステムを用いて送受信が行われる。ここで、本メールアプリでは、メールに自分の作成した表キャラのキャラクタデータ(少なくとも、キャラクタID、キャラ画像データを含む)を添付することができる。例えば、自分に似せたキャラ画像のキャラクタデータを添付することで、自分の顔写真をつけて相手にメールを送ることが可能である。
次に、図16を用いて、本実施形態で想定する転送処理の概要について説明する。図16は、本実施形態で想定するネットワーク経由の転送処理の概要を説明するための図である。図16では、ゲーム装置本体3a〜3dが、ネットワークを介して接続されている。また、各ゲーム装置本体3は、表DB334と裏DB339を有している。ここでは、ゲーム装置本体3aの所持者であるユーザAがゲーム装置本体3bの所持者であるユーザBに電子メールを送信する場合を仮定して説明する。この場合、ユーザAが、上述の電子メールアプリケーションを起動して、ゲーム装置本体3aに保存されているアドレス帳データ(以下、アドレス帳と呼ぶ)からユーザBを宛先として選ぶ。そして、自分の作った表キャラを「顔写真」としてメールに添付、送信する。具体的には、当該電子メールアプリケーションを起動してCPUに実行させることにより、表DB339aに格納されているデータ(キャラ画像データ)に基づいて、モニタに表DB339aに格納されている表キャラの一覧表示をし、コントローラ7の操作情報に基づいて、当該一覧表示の中から所望のデータを選択して、当該選択されたキャラクタデータを添付する。ゲーム装置本体3bにおいては、メール受信アプリケーション(このアプリケーションプログラムは、ゲーム装置本体3内の不揮発メモリ(例えば、フラッシュメモリ38)に記憶されており、CPUにより実行される)が起動しており、CPU(または図示しないサブCPU)により当該アプリケーションが実行され、当該メールが受信され、受信ボックス(フラッシュメモリ38内に受信ボックス領域を設ける)に保存される。その後、ユーザBが電子メールアプリケーションを起動してCPUに実行させることにより、受信ボックスに保存されている電子メールを開けると、当該電子メールに添付されているキャラクタデータ(「顔写真」のキャラ画像とキャラクタID)が、ゲーム装置本体3bの裏DB339bにコピーされる。このように、電子メールによって表キャラのキャラ画像を送信すると、受信先において、裏キャラとして登録され、その結果、裏キャラの数が増えていくことになる。
図17は、第2の実施形態にかかるキャラクタデータの転送処理を示すフローチャートである。このフローチャートのうちS31からS33は、前述の電子メールアプリケーションをゲーム装置本体3aのCPUが実行することによる処理の流れである。また、S34は、前述のメール受信アプリケーションを、ゲーム装置本体3bのCPU(または図示しないサブCPU)が実行することによる処理の流れである。また、S35は、前述の電子メールアプリケーションをゲーム装置本体3bのCPUが実行することによる処理の流れである。
まず、第1のゲーム装置本体において、CPU30は、ユーザの指示操作に応じてアドレス帳から宛先を選び、メールの送信先として設定する(ステップS31)。
次に、ユーザの指示操作に応じて、CPU30は、当該電子メールに、ユーザが指定した表キャラのキャラクタデータを添付する(ステップS32)。
次に、ユーザの送信指示に従って、当該電子メールを送信する(ステップS33)。当該メールは、図示はしないが、所定のメールサーバに保持される。
次に、第2のゲーム機において、電子メールを受信する(ステップS34)。受信方法は、例えば定期的に上記メールサーバにアクセスして、新着メールのチェックを行う等の方法が考えられる。そして、受信したメールを、第2のゲーム機内の受信ボックスに保存する。
次に、第2のゲーム機においてユーザがメールアプリを起動する。このとき、CPU30は、受信ボックスにアクセスし、新しい電子メールが届いていることを画面に表示する。そして、ユーザが受信した電子メールを開封したとき、CPU30は、当該電子メールのキャラ画像とキャラクタIDとを対応づけて、自己の裏DB339にコピーする(ステップS35)。以上で、第2の実施形態にかかるキャラクタデータの転送処理が終了する。
このように、第1のユーザ(ユーザA)が、自己の作成した表キャラ画像をメールヘッダ情報に設定して、第2のユーザに送信することで、第2のユーザの所持するゲーム装置本体に、第1のユーザの表キャラが、第2のユーザの所持するゲーム装置本体において、裏キャラとして保存される。そのため、メールのやりとりを行うだけで、裏キャラの数を増やすことが可能となる。
なお、上述のようなユーザの意思による電子メールの送受信に限らず、ユーザの手を介さずに上述のような電子メールの送受信を行うようにしてもよい。例えば、所定のタイミングでCPU30が、自機のアドレス帳からランダムに送信先を選ぶ。そして、表DB334あるいは裏DB339からランダムにキャラ画像を選んでメールヘッダに設定し、本文が空白のメール(以下、ばらまき用メールと呼ぶ)を作成して送信するようにしてもよい。
図18は、ユーザの手を介さない場合の、上記ばらまき用メールの送受信のフローを示す図である。このフローのうちS41から45は、ばらまき用プログラム(このアプリケーションプログラムは、ゲーム装置本体3内の不揮発メモリ(例えば、フラッシュメモリ38)に記憶されている)を、送信元のゲーム装置本体のCPUまたは図示しないサブCPUにより実行される。また、S46は、送信先にゲーム装置本体のCPUまたは図示しないサブCPUにより前述のメール受信アプリケーションが実行されるものであり、S47は、ばらまき用プログラムを、送信先のゲーム装置本体のCPUまたは図示しないサブCPUにより実行されるものである。なお、ばらまき用プログラムは、ゲーム装置本体が起動しているときに、CPUまたはサブCPUによって常時実行されており、予め定めるスケジュールに基いて、設定時刻になったときに、S41以降の処理を実行する。なお、当該スケジュールデータは、フラッシュメモリ38に設定される。また、スリープモード時に、サブCPUに電力を供給し、スリープモード時にもばらまき用プログラムを動作させてもよい。
まず、第1のゲーム機において、CPU30は、送信対象とするキャラ画像を選出するために、表DB334から20件、裏DB339から100件のキャラ画像をランダムに選出する(ステップS41)。次に、CPU30は、選出した計120件のキャラ画像の中から、等確率で1件のキャラ画像を選ぶ(ステップS42)。
次に、CPU30は、送信先を選出するために、自機に保存されているアドレス帳から、宛先を8件、ランダムに選出する(ステップS43)。
次に、上記選出した8件の宛先に対するばらまき用メールを作成する(ステップS44)。具体的には、上記ランダムに選出した8件を送信先として設定する。そして、メールに上記ランダムに選出したキャラ画像のデータを、当該キャラクタのキャラクタIDと共に添付する。またメール本文は空白のままとする。なお、ばらまき用メールであることを示すフラグをメール本文またはヘッダに付しても良い。
次に、CPU30は、上記作成したばらまき用メールを送信する(ステップS45)。次に、送信先となったゲーム装置本体において、上記メールサーバ経由で受信処理を行い、受信バッファ(フラッシュメモリ)に記憶する(ステップS46)。ばらまき用プログラムは、受信バッファを参照して、ばらまき用メールがあるかをチェックし(前述のフラグによる)ばらまき用メールがあると、当該メールに添付されているキャラクタデータを裏DBにコピーする(ステップS47)。つまり、ユーザがメールを開封するか否かにかかわらず、送信先となったゲーム装置本体が電子メールを受信した時点で、裏DBへのコピー処理が行われる。
このように、第2の実施形態では、ユーザの送信操作がなくとも、自動的にキャラ画像の送受信を行い、更に、送信元が送るキャラクタが表キャラであるか裏キャラであるかに関わらず、送信先では、全て裏キャラとして登録される。そのため、各ゲーム装置本体の裏キャラの数を、ユーザの知らないうちに増やしていくことが可能となる。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。上述の第1の実施形態では、コントローラを介して、あるゲーム装置本体3のフラッシュメモリ38上のキャラクタデータを別のゲーム装置本体のフラッシュメモリ38に転送していた。第3の実施形態では、単に、コントローラ7に保存したキャラクタデータをゲーム処理に利用するものである。なお、第3の実施形態に係るゲーム装置本体の機能ブロック図およびハードウェア構成を示すブロック図は、第1の実施形態と同様である(図1〜図7参照)。そのため、同一の参照符号を付して詳細な説明を省略する。
次に、第3の実施形態にかかる処理について説明する。本実施形態で想定するゲームは、モンスターキャラクタによるチームバトル形式の対戦型ゲームである。この対戦型ゲームにおいて、まず、自己が使用するモンスタキャラクタデータ(キャラ画像、能力データなどを含む)を生成する処理をおこなう。この処理の具体的内容は任意であるが、例えば、複数のモンスタキャラクタデータをプログラムで用意しておき、ユーザが好みのデータを選択または所定条件を満たしたときにいずれかのキャラクタデータを選択するようにしてもよいし、乱数で決定してもよい。このモンスタキャラクタデータ(能力データ)はゲームプレイすることにより変化する。例えば、他のモンスターキャラクタと戦闘をすることにより変化する。このモンスタキャラクタデータはメインメモリ33またはフラッシュメモリ38に記憶される。そして、メインメモリ33またはフラッシュメモリ38に記憶されるモンスタキャラクタデータを、第1の実施形態と同様に、コントローラ7のメモリ752に移動又はコピーすることが可能である。そして、ユーザAがモンスターキャラクタデータが記憶されたコントローラ7を所持してユーザBの家に行き、ユーザBの所持するゲーム装置本体3に当該コントローラを接続する。また、ユーザBも、自身の所有するコントローラ7を接続する。そして、各ユーザのコントローラ7に記憶されているモンスターキャラクタデータをゲーム装置本体に読み込ませる。具体的には、ゲーム装置本体3はリンクをしている各コントローラに対して、モンスターキャラクタデータの送信指示するための制御データを送信し、各コントローラは、それに応じて自己のモンスターキャラクタデータをゲーム装置本体3に送信する。ゲーム装置本体3は、各コントローラから送信された各モンスターキャラクタデータをメインメモリ33上に記憶する。(なお、ユーザBに関しては、コントローラから読み込まずとも、自身の所有するゲーム装置本体に記憶されているチームデータを利用しても良い)。この際、ゲーム装置本体は、読み出し元のコントローラを識別するための情報(当該コントローラのチャンネル番号、接続識別情報、コントローラのユニークIDなど)と、読み出したモンスターキャラクタデータとを関連づけてメインメモリ33に記憶する。そして、その後、接続している各コントローラからの操作情報を使用して、対戦ゲームプレイをさせる処理を実行するが、当該処理において、各コントローラからの操作情報に基づいて動作するモンスタキャラクタのデータは、メインメモリ上で当該コントローラに関連づけて記憶されたモンスターキャラクタのデータが使用される。すなわち、メインメモリ上において、ユーザAのコントローラAから読み込まれたモンスターキャラクタデータにはコントローラAを識別するための識別情報Aが付与され、ユーザBのコントローラBから読み込まれたモンスターキャラクタデータにはコントローラBを識別するための識別情報Bが付与される。そして、コントローラAからの操作情報に基づいて、メインメモリ上の識別情報Aが付与されたモンスターキャラクタデータを用いてモンスターキャラクタAを動作させる処理が実行され、コントローラBからの操作情報に基づいて、メインメモリ上の識別情報Bが付与されたモンスターキャラクタデータを用いてモンスターキャラクタBを動作させる処理が実行される。
なお、コントローラ7に複数のモンスタキャラクタデータが記憶されている場合、当該複数のモンスタキャラクタデータをメインメモリ上に読み出して、対戦ゲームに利用するモンスタキャラクタとして、それらの中からユーザが所望のモンスタキャラクタデータを選択できるようにしてもよい。この場合においても、モンスタキャラクタデータには、上述のコントローラを識別するための情報が付してメインメモリ上に記憶され、各コントローラからの操作情報に基づいて選択されるモンスタキャラクタのデータは、メインメモリ上で当該コントローラに関連づけて記憶されたモンスターキャラクタのデータが使用される。すなわち、例えば、コントローラAからの操作情報に基づいて、メインメモリ上の識別情報Aが付与された複数のモンスターキャラクタデータの中から所望のモンスターキャラクタを選択する処理が実行される。
図19は、第3の実施形態に係るゲーム処理の詳細を示すフローチャートである。このフローチャートは、光ディスクに記憶され、または、フラッシュメモリ38に記憶されて、CPUによって実行される対戦ゲームプログラムがCPUに実行されるものである。図18において、まず、ユーザAが自己の所有するゲーム装置本体3で、対戦用のモンスタキャラクタデータを作成する(ステップS51)。例えば、ユーザAの指示操作に応じて、CPU30は所定のゲームプログラムを実行する。ユーザAは、仮想ゲーム空間内でモンスターキャラクタを収集するための「一人用モード」をプレイし、モンスターキャラクタを集める。このモンスターキャラクタデータはメインメモリ33またはフラッシュメモリ38に記憶される。
次に、CPU30は、メインメモリ33またはフラッシュメモリ38上のモンスタキャラクタデータを、コントローラ7にコピーする(ステップS52)。例えば、対戦用チームが5体のモンスターキャラで構成されている場合は、当該5体分のモンスターキャラクタのデータと、チーム名等、そのチームに関するデータがコントローラ7にコピーされる。
次に、ユーザAが当該モンスタキャラクタデータが記憶されたコントローラ7を所持して、他のユーザBの家に移動したと仮定する。そして、当該他のユーザBの所持するゲーム装置本体3で、対戦用のゲームプログラムが実行される。これに応じて、CPU30は、上記コントローラ7に保存されたモンスタキャラクタデータを読み込む(ステップS53)。次に、CPU30は、当該読み込んだデータと、読み込み元のコントローラを識別するための情報とを関連づけて、メインメモリ33に記憶する(ステップS54)。
次に、所定のゲーム処理が実行される(ステップS55)。このゲーム処理においては、上記モンスタキャラクタは、ユーザAの所持するコントローラ7からの操作しか受け付けない。例えば、モンスターキャラクタ選択画面として、ユーザAのモンスターキャラクタとユーザBのモンスターキャラクタが一覧表示されていると仮定する。この場合に、例えば、ユーザBが自己のコントローラ7を操作して、カーソルをユーザAのモンスターキャラクタに合わせ、選択決定ボタンを押したとする。しかし、CPU30は、選択決定ボタンを押したコントローラ7のコントローラIDを識別することで、当該決定入力を無効とする。このとき、画面に、当該キャラクタは選択できない旨の表示を行ってもよい。また、ユーザBが自己のコントローラ7を操作してもユーザAのモンスターキャラクタに合う位置にカーソルが移動しないようにしてもよい。以上で、第3の実施形態に係るゲーム処理は終了する。
このように、第3の実施形態では、コントローラと当該コントローラに記憶されていたデータとを関連づけた状態で利用することができる。また、データを保存するメモリとコントローラが一体化しているため、自己の所有するゲーム装置本体以外のゲーム装置本体に自己のデータを読み込ませた場合でも、そのまま当該他人のゲーム装置本体上で操作が可能となり、ユーザの利便性を高めることができる。
また、コントローラからデータが読み込まれた時点で上述のような関連づけがされているため、例えば、キャラクター選択画面を表示せずとも、すぐに対戦等のプレイが可能となり、ユーザの利便性を向上させることができる。すなわち、従来であれば、読み込ませたモンスターデータを一覧表示して、各ユーザがそれぞれ選択するという操作が必要となっていた。しかし、上述のように、コントローラと当該コントローラから読み出されたデータを対応づけてゲーム装置本体に記憶しておくことにより、一覧表示〜選択操作をユーザに実行させることなく、速やかに対戦を開始することができる。
また、自己の使い慣れたコントローラ7をそのまま使用できるため、各ユーザに応じた利便性を保持することが可能となる。例えば、キーコンフィグ等で、各ユーザが自分の使いやすいようにキー配置のカスタマイズや必殺技コマンドの登録を行っていれば、自宅の操作環境を、友達の家にそのまま持ち込んでプレイすることが可能となる。
なお、上述したようなコントローラ内に記憶されている複数のモンスターキャラクタのうち、任意のモンスターキャラクタだけを選択してゲーム装置本体に読み込ませるようにしてもよい。例えば、コントローラ内のデータの読み込み画面を表示し、当該画面において、コントローラ内のモンスターキャラクタ一覧を画面に表示する。そして、ユーザの選択操作に応じて、選択されたモンスターキャラクタだけをゲーム装置本体に読み込むようにしても良い。これにより、ゲーム装置本体のメモリ領域を節約することができる。
また、コントローラ7に記憶されているデータについて、ゲーム装置本体にはコピーしないようにしてゲーム処理を行うようにしても良い。例えば、対戦キャラクターのデータを読み込む際に、コントローラ内のデータをゲーム装置本体のメインメモリに記憶し、当該メインメモリにアクセスしてキャラクタを表示などするのではなく、直接コントローラ7のメモリにアクセスしてデータを読み込み、キャラクタを画面に表示するようにしても良い。これにより、ゲーム装置本体のメモリ領域を節約することができる。