図1は、本実施の形態に係るゲーム装置10を含むネットワークシステムを示す図である。パーソナルコンピュータ等のユーザ端末12は、ISP(Internet Service Provider)16を介してインターネット24に接続される。ゲーム装置10もまた、ISP26を介してインターネット24に接続される。デジタルカメラ機能および通信機能を有する携帯電話18は、パケット網20、ゲートウェイ22を介してインターネット24に接続される。
ゲーム装置10には、ゲーム装置10が構成したゲーム画面を表示するディスプレイ28が接続される。ディスプレイ28に表示される、ゲームの開始や種々の設定を行う画面中の項目を選択したり、ゲーム画面に登場するメインキャラクタをユーザが操作したりするためのコントローラ30も、ゲーム装置10に接続される。コントローラ30は、一例ではメインキャラクタの操作や項目の選択をするための十字キーと各種ボタンを含むが、これに限定されない。デジタルカメラ36をゲーム装置10にUSB接続して、デジタルカメラ36にて撮影されたデジタル写真をゲーム装置10に取り込めるようにしてもよい。
次に、本実施の形態に係るゲーム装置10によって実現されるゲームの概要について説明する。図13は、ゲーム装置10によってディスプレイ28に表示されるゲームのメイン画面の一例を示す。このゲームは、ゲーム装置10に予め記憶されている画像や、ユーザがデジタルカメラ14やカメラ機能付きの携帯電話18などで撮影した任意のデジタル写真を取り込んで、ゲームの舞台として利用して遊戯するタイプのゲームである。図13には、その一例として、ゲームの舞台がトランポリンになっているトランポリン・アクションゲームを示している。
画面120には、トランポリンの外枠122が示され、その枠内にはトランポリン面124が示されている。取り込まれたデジタル写真は、トランポリン面124に貼り込まれる。このトランポリン面124は、現実のトランポリンの挙動を擬似的に再現するようにプログラムされている。図13では、メインキャラクタ126がトランポリン面124の中央に立っているため、メインキャラクタ126の仮想的な重さによって、トランポリン面124の中央部がわずかにたわんだ様子が示されている。後述するように、トランポリン面124は、ユーザがコントローラ30を介して操作するメインキャラクタ126の移動、跳躍の動作によって、トランポリン面124がメインキャラクタ126に与える反発力と、トランポリン面124が受ける反力を予め定められたアルゴリズムにしたがって演算し、演算結果を視覚的に画面120内に表現する。ユーザの操作によってメインキャラクタ126が跳躍すると、図14に示すように、トランポリンから受ける反発力にしたがって、メインキャラクタ126は空中に浮揚する。
後述するように、トランポリン面124に貼り込まれた画像(以下では、これを「ベース画像」とも呼ぶ)内には、予め定められたアルゴリズムにしたがって、1つまたは複数個の隠しキャラクタが埋め込まれる。このゲームの目的は、メインキャラクタ126を適切に操作することによって、トランポリン面124のベース画像に埋め込まれた隠しキャラクタを発見し、制限時間内に指定個数だけ獲得することである。
以下では、ゲーム装置10内に取り込まれたデジタル写真等の画像を舞台にするゲームが、図13に示すようなトランポリンゲームであるものとして説明するが、本実施形態のゲーム装置10により実現されるゲームはこれに限定されるものではない。例えば、パズルゲームやシューティングゲームにおいて、ベース画像に埋め込まれた隠しキャラクタを探すようなゲームであってもよい。
図2は、ゲーム装置10の全体構成を示す機能ブロック図である。ゲーム装置は、通信部32と、コントローラインタフェース34と、ベース画像作成部40と、ゲーム実行部60と、アルバム管理部90と、記憶部110と、外部記憶装置108とを含む。
この構成は、ハードウェア的には、CPU、メモリ、記憶装置、ネットワーク接続用インターフェースその他のデバイスで実現され、ソフトウェア的にはゲームの実行、デジタル写真の解析、アルバムの管理に関するプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックとして描かれている。したがって、これらの機能ブロックがハードウェアとソフトウェアの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。また、これらの機能ブロックは、ソフトウェアとしてCD−ROM、DVD−ROMまたはフラッシュメモリ等の記録媒体に格納され、ゲーム実行時に記録媒体に対応する読み取り機能を備えた外部記憶装置108から、図示しないメモリに読み出されてCPUにて処理されることで実現されてもよい。
通信部32は、インターネット24を介してユーザ端末12またはカメラ機能付き携帯電話18と通信する。これにより、ユーザは、デジタルカメラ14や、カメラ機能付き携帯電話18で撮影したデジタル写真を、ゲーム装置10に取り込むことができる。
コントローラインタフェース34は、ユーザによるコントローラ30の十字キーやボタンなどの操作情報を取得して、ゲーム実行部60およびアルバム管理部90に渡す。コントローラ30には、少なくとも、メインキャラクタをゲーム画面内で移動させる機能と、メインキャラクタを跳躍させる機能を含む。
ベース画像作成部40は、通信部32を介してゲーム装置10に送信されてきたデジタル写真を、所定のアルゴリズムにしたがって解析し、1つまたは複数の隠しキャラクタが埋め込まれたベース画像を作成する。埋め込まれる隠しキャラクタは、デジタル写真内の配色や物体の大きさによって決定される。本明細書において、「隠しキャラクタ」とは、ゲームの開始直後には表示されないが、ユーザがメインキャラクタを操作することによって所定の条件が満たされたときに、ベース画像上に表示されるキャラクタのことを指す。本実施の形態では、この隠しキャラクタを出現させ、指定された隠しキャラクタを獲得することがゲームのクリア条件となっている。
また、「埋め込み」とは、ベース画像内の特定の部分においてメインキャラクタが特定の動作をしたときに、隠しキャラクタ画像がベース画像上に表示されるように、ベース画像内の特定のピクセルと隠しキャラクタ画像とを関連付けしておくことをいう。
ベース画像作成部40により作成されたベース画像は、記憶部110内の画像記憶部112に記憶される。画像記憶部112には、予め隠しキャラクタが埋め込まれている画像を格納しておいてもよい。これによって、ユーザは、デジタル写真の取り込みなどの他の作業をすることなく、ゲーム装置10により直ちにゲームを楽しむことができる。
ゲーム実行部60は、トランポリンゲームを実現するためのプログラムを含む。トランポリン面に貼り込まれるベース画像は、画像記憶部112に記憶されているベース画像のなかから読み出される。ゲーム実行部60は、隠しキャラクタ記憶部114およびメインキャラクタ記憶部116にもアクセスして、ゲームの進行に応じた隠しキャラクタ画像およびメインキャラクタ画像をディスプレイ28に表示するように動作する。
アルバム管理部90は、ユーザの電子アルバムを作成する。アルバムには、ユーザが撮影したデジタル写真を記憶する画像アルバムと、ユーザがステージクリアにより獲得した隠しキャラクタを記憶する隠しキャラクタアルバムとが含まれる。これらのアルバムは、写真アルバムを模して作られた電子的なアルバムである。
画像アルバムには、予めゲーム装置10に記憶されている画像と、ユーザが撮影したデジタル写真から作成されたベース画像とが表示される。本実施の形態では、画像アルバムに表示されるベース画像は、トランポリンゲームにおいてクリアすべき「ステージ」にも対応している。ユーザが各ステージをクリアすると、画像アルバム内の対応するベース画像に、そのステージをクリアしたことを示す表示が付される。
また、隠しキャラクタアルバムは、予めすべての隠しキャラクタ数分のリザーブ枠が設けられており、ユーザがステージをクリアするたびに、そのステージで獲得した隠しキャラクタ画像がいずれかのリザーブ枠に貼付される。ここで、「貼付」とは、隠しキャラクタ記憶部114に記憶されている隠しキャラクタ画像とリザーブ枠をリンクすることで実行され、ユーザが隠しキャラクタアルバムを見るときに、このリンクをもとに隠しキャラクタ画像が対応するリザーブ枠に嵌め込まれた状態で表示される。
隠しキャラクタ記憶部114には、ベース画像内に埋め込むべき複数の隠しキャラクタ画像が予め記憶されている。隠しキャラクタは、色、サイズ、形状が異なる多種のものを準備しておくことが好ましい。隠しキャラクタは、予め赤、白、黄、緑などの複数の色属性グループに分類されており、各色属性グループには、配色の傾向が同じ複数の隠しキャラクタが準備されている。例えば、赤色属性グループには、「炎」、「タコ」、「太陽」、「怒った顔」のように、その色から連想される隠しキャラクタ画像が含まれる。一例では、隠しキャラクタは、8つの異なる色属性のグループに分類される。後述するデジタル写真と隠しキャラクタ画像とのマッチングのために、各色属性グループにはそのグループを特徴付ける「グループ特徴色」がRGB値で定義されている。
メインキャラクタ記憶部116には、ユーザの操作するメインキャラクタの種々の姿勢の画像が予め記憶されている。
外部記憶装置108は、本実施の形態を実現するプログラムが記録された記録媒体を読み込むことによって、ゲームを実行するほかに、画像記憶部112に記憶されたベース画像や獲得した隠しキャラクタ画像を記録媒体に保存したり、記録媒体内のデジタル写真をゲーム装置10に取り込むためにも使用される。
図3は、ベース画像作成部40の内部構成を示す。画像取得部42は、ネットワーク経由で送信されてきたデジタル写真を通信部32から受け取る。画像取得部42は、USB接続されたデジタルカメラ36からデジタル写真を受け取ってもよい。画像取得部42は、デジタル写真に適宜アフィン変換その他の非線形変換を施して、トランポリン面に貼り込むことのできるサイズに成形する。成形されたデジタル写真は、隠しキャラクタ配置部44に渡される。
隠しキャラクタ配置部44は、画像分割部46、領域統合部50、マッチング部52および隠しキャラクタ埋め込み部54を含み、この順でデジタル写真を処理して、隠しキャラクタ画像が埋め込まれたベース画像を作成する。以下、図4から図6のフローチャートを図3とともに参照して、隠しキャラクタをデジタル写真内に埋め込む方法を説明する。
画像分割部46は、成形されたデジタル写真を複数の領域に分割する。図4は、画像分割部46における処理のフローチャートである。まず、デジタル写真内の1ピクセルのデータを取得する(以下、このピクセルを「取得ピクセル」と呼ぶ)(S10)。このデータは、デジタル写真内でのそのピクセルの座標と、RGB値とから構成される。次に、この取得ピクセルと「代表点」のデータを比較する(S12)。最初は、代表点として、デジタル写真の左上のピクセルをとる。したがって、代表点も座標とRGB値とを有している。そして、取得ピクセルと代表点とが一致するか否かを判定する(S14)。一致しているか否かは、取得ピクセルの座標と代表点の座標の間の距離、および、取得ピクセルと代表点との色空間(R,G,B)上での距離の線形和を各代表点について計算し、所定のしきい値以下であれば、取得ピクセルが代表点に一致すると判定する。
そして、取得ピクセルが代表点と一致していた場合(S14のYES)、代表点の座標と色を補正する。具体的には、代表点の座標、色と、取得ピクセルの座標、色の平均をとったものを、新たな代表点の座標と色に設定する(S16)。取得ピクセルが代表点と一致しない場合、つまり、上述の線形和がしきい値より大きかった場合は(S14のNO)、その取得ピクセルを新たに別の代表点として設定する(S18)。つまり、取得ピクセルが既存の代表点のいずれにも一致しなかった場合、新たに代表点が1つ増加することになる。
以上の処理を、デジタル写真内の左上のピクセルから右端まで1ピクセルずつ実行し、さらに一段下に移動して、再び左端のピクセルから実行していく。この処理をデジタル写真の右下のピクセルまで繰り返すことによって、デジタル写真内のすべてのピクセルは、複数の代表点のいずれかと一致することになる。つまり、この処理によって、デジタル写真はいずれかの代表点を含む複数の領域に分割されたことになる。
画像分割部46による処理を受けたデジタル写真は、領域統合部50に渡される。図5は、領域統合部50における処理のフローチャートである。まず、画像分割部46で与えられた代表点情報に基づいて、デジタル写真を複数の領域に分割する(S20)。具体的には、同じ代表点に一致するとされたピクセルに同じ領域番号を割り当てていく。ただし、同じ代表点に一致するとされたピクセルでも互いに隣接していない場合がありうるので、この場合は、それぞれ別の領域番号を割り当てることになる。
次に、所定のピクセル数に満たない小さい領域を、隣接する領域と統合する(S24)。さらに、互いに隣接する領域のうち、色の差分が少ない領域を統合する(S26)。具体的には、各領域の代表点の色空間上での距離が所定のしきい値に満たない、つまり、色があまり変わらない領域を統合する。ただし、予め領域の最大ピクセル数が指定されていた場合は、それを超えないように統合する。そして、統合された全領域の数が、所定の領域数以下であるか否かを判定する(S28)。所定の領域数以下であれば(S28のYES)、この処理を終了し、所定の領域数よりも多ければ(S28のNO)、S26に戻り、しきい値を大きくして、色空間上での領域の統合を繰り返す。
次に、マッチング部52は、領域統合部50において統合された各領域と、隠しキャラクタ記憶部114内の隠しキャラクタ画像とのパターンマッチングを実行し、各領域について適当な隠しキャラクタ画像を選択する。図6は、マッチング部52における処理のフローチャートである。まず、いずれか1つの領域を選択し(以下、これを「選択領域」と呼ぶ)、その選択領域の代表点の色と色空間上で最も近い「グループ特徴色」を持つ色属性グループに含まれるすべての隠しキャラクタ画像を検索する(S40)。続いて、選択領域と隠しキャラクタ画像の間でパターンマッチングを実行する(S42)。このパターンマッチングでは、選択領域と隠しキャラクタ画像の重心を一致させたときに、隠しキャラクタ画像内の全ピクセルのうち、どの程度のピクセルが選択領域と重なるかを計算する。ここで、(選択領域と重なるピクセル数)/(隠しキャラクタ画像内の全ピクセル数)を、その隠しキャラクタ画像の「位置一致率」と定義する。このパターンマッチングを、同一色属性グループに含まれる全隠しキャラクタ画像について実行し、位置一致率が最大である隠しキャラクタ画像を、その選択領域の隠しキャラクタ画像として選択する(S44)。選択領域と隠しキャラクタ画像の重心を一致させる代わりに、それぞれの外接円を想定し、外接円の中心を一致させたときに、隠しキャラクタ画像内の全ピクセルのうちどの程度のピクセルが選択領域と重なるかを計算することで、位置一致率を算出しても良い。
マッチング部52は、位置一致率を算出するほか、「色一致率」を算出してもよい。ここで、色一致率は以下のようにして算出する。まず、選択領域と隠しキャラクタ画像の重心を一致させたとき、または、選択領域と隠しキャラクタ画像の外接円の中心を一致させたときに、選択領域と隠しキャラクタ画像とが重なり合う部分を決定する。次に、重なり合う部分において、ピクセル毎に選択領域のピクセルのRGB値と隠しキャラクタ画像のピクセルのRGB値との色空間上での絶対距離を算出し、さらに、すべてのピクセルについてこの絶対距離の相加平均を算出する。そして、この相加平均と、色空間上での最大距離(例えば、8bitのRGB値であれば、座標(0,0,0)と座標(255、255,255)の間の距離)との比率を、その隠しキャラクタ画像の色一致率と定義する。
色一致率を算出した場合、マッチング部52は、S44において、位置一致率と色一致率の線形和を同一色属性グループに含まれる全隠しキャラクタ画像について計算し、線形和が最大である隠しキャラクタ画像をその選択領域の隠しキャラクタ画像として選択する。
以上述べたS40からS44までの処理をすべての領域について実行することで、各領域について隠しキャラクタ画像が選択されることになる。
図3に戻り、ランダム値算出部48は、画像取得部42から受け取ったデジタル写真に基づいてランダム値を算出する。一例では、デジタル写真内の複数ピクセルのRGB値の平均を取ったものをランダム値として出力する。代替的に、デジタル写真とは無関係の乱数をランダム値として出力してもよいし、あるいは固定値を出力してもよい。
隠しキャラクタ埋め込み部54は、ランダム値算出部48から出力されたランダム値に基づいて、デジタル写真から作成されるベース画像に埋め込むべき隠しキャラクタ数を決定する。例えば、ランダム値と所定の複数のしきい値とを比較して、ランダム値が各しきい値を超えるごとに、隠しキャラクタ数を初期値から1つずつ増やすようにして、デジタル写真に埋め込むべき隠しキャラクタ数を決定する。そして、マッチング部52によって各領域について選択された隠しキャラクタのうち、上記した位置一致率の高いものから順に、決定された数の隠しキャラクタをデジタル写真に埋め込むようにする。マッチング部52が色一致率も算出して隠しキャラクタを選択した場合は、位置一致率と色一致率の線形和の大きいものから順に、決定された数の隠しキャラクタをデジタル写真に埋め込むようにしてもよい。
隠しキャラクタ埋め込み部54は、さらに、ランダム値に基づいて、そのベース画像のクリア条件となる隠しキャラクタの種類と数とを決定する。クリア条件となる隠しキャラクタの種類は、例えば、以下のようにして決定する。すなわち、隠しキャラクタ記憶部114に予め記憶されている隠しキャラクタには、予め通し番号が割り振られており、デジタル写真に埋め込まれた隠しキャラクタのうち最大の通し番号を持つ隠しキャラクタを獲得することをクリア条件とする。または、隠しキャラクタの8つの色属性グループに0〜7の番号を割り振っておき、また、ランダム値算出部48から出力されたランダム値を整数化し、この整数を8で除したときの余りの値と同じ番号の色属性の隠しキャラクタを獲得することをクリア条件としてもよい。クリア条件となる隠しキャラクタの数は、上述したと同様に、ランダム値と所定の複数のしきい値とを比較して、ランダム値が各しきい値を超えるごとに、獲得すべき隠しキャラクタ数を初期値から1つずつ増やすようにして決定してもよい。
隠しキャラクタ埋め込み部54は、メインキャラクタのベース画像内での移動を邪魔する敵キャラクタをベース画像内に配置するようにしてもよい。ベース画像内に配置すべき摘キャラクタの種類と数は、クリア条件となる隠しキャラクタの種類と数を決定する方法と同様である。この場合、敵キャラクタ画像は、図示しない敵キャラクタ記憶部に予め記憶させておく。
図11は、ベース画像内に隠しキャラクタ画像を埋め込むためのデータ構造の一例を示す。データ構造200には、隠しキャラクタ配置座標データ202と、隠しキャラクタ出現条件データ204と、隠しキャラクタ獲得条件データ206と、画像参照アドレス208とが含まれる。隠しキャラクタ配置座標データ202は、ベース画像内における隠しキャラクタの出現位置を規定する座標であり、隠しキャラクタ画像が埋め込まれている領域の重心の座標が記述される。隠しキャラクタ画像が埋め込まれている領域の外接円の中心座標を記述してもよい。隠しキャラクタ出現条件データ204は、ベース画像上で、メインキャラクタがどの位置に来た場合に隠しキャラクタ画像を出現させるかを記述したものであり、例えば、「上記の重心座標を中心とした半径20ピクセルの円内」のような条件が記述される。隠しキャラクタ獲得条件データ206は、メインキャラクタの跳躍によって、隠しキャラクタをベース画像上のどの程度の高さまで跳ね上げたときにその隠しキャラクタを獲得できるかを記述する。この獲得条件は、すべての隠しキャラクタについて一定であってもよいし、色属性グループ毎に異なるものとしてもよい。画像参照アドレス208は、その隠しキャラクタの画像を参照するためのアドレスデータが含まれる。これらのデータ202から208は、ベース画像内に埋め込まれた隠しキャラクタ数分だけ作られる。
図15を参照して、ベース画像作成部40の全体動作を説明する。まず、ユーザは、デジタル写真を撮影し、そのデジタル写真をネットワーク経由または記録媒体経由でゲーム装置10に取り込む。図15の(a)は、取り込んだデジタル写真148の一例を示す。デジタル写真148には、緑色部分150を有する樹木の画像と、黄色部分152を有する三日月の画像と、白色部分154を有する雲の画像が含まれている。このデジタル写真を図4および図5を参照して上述したような手順で処理することによって、緑色部分150、黄色部分152および白色部分154は、それぞれ別の領域として分割される。そして、図6とともに上述したように、これらの領域と隠しキャラクタ画像とのパターンマッチングを実行して、各領域について隠しキャラクタ画像を割り当てる。その一例を図15の(b)に示す。すなわち、緑色部分150には、「サボテン」の隠しキャラクタ画像160が割り当てられ、黄色部分152には、「ヒヨコ」の隠しキャラクタ画像162が割り当てられ、白色部分154には、「ソフトクリーム」の隠しキャラクタ画像164が割り当てられている。このようにして割り当てられた隠しキャラクタ画像がデジタル写真内に埋め込まれたベース画像は、ベース画像記憶部112に保存される。なお、図15(b)は説明のためのものであり、実際のゲーム画面においては、ゲーム開始当初から隠しキャラクタ画像がベース画像上に表示されているわけではないことに注意されたい。
以上説明したように、本実施形態によるベース画像作成部によれば、ユーザは、デジタルカメラまたはカメラ機能付き携帯電話で撮影したデジタル写真、ホームページからダウンロードしたデジタル画像、さらには、ペイントソフト等を使用して作成したデジタル画像を、ネットワーク経由または記録媒体経由でゲーム装置に取り込み、その画像がゲームの舞台として画面内に再現されたゲームを楽しむことができる。また、デジタル写真をゲーム装置に取り込む時点で、ベース画像作成部40によってデジタル画像の解析と隠しキャラクタの埋め込みが実行されるので、ユーザは、ゲームの開始前にそれらの処理によって待たされることがない。また、ゲーム装置に取り込まれるデジタル写真に応じて、ゲームの舞台となるベース画像は無数に存在することになるので、ユーザの興味を長時間持続させることができる。
次に、上述のようにしてデジタル写真内に隠しキャラクタが埋め込まれた画像をベース画像として使用したトランポリンゲームを実現するための構成について説明する。
図7は、ゲーム実行部60の構成を示す機能ブロック図である。ゲーム実行部60は、トランポリン面やメインキャラクタの挙動を実際のトランポリン上で人間が跳躍する際の動作に近似するように計算し、さらに、トランポリン面とメインキャラクタの動きを同期させた画像を生成する。
ベース画像ロード部70は、画像記憶部112から、ゲームのメイン画面でトランポリン面に貼り付けられるベース画像をゲーム実行部60にロードする。力算出部62は、メインキャラクタの位置と、コントローラ30によるユーザの操作に基づき、トランポリン面がメインキャラクタに与える反発力を算出する。跳躍算出部72は、トランポリンからの反発力に応じたメインキャラクタの跳躍動作を算出する。隠しキャラクタ表示部82は、メインキャラクタの跳躍動作にあわせた、隠しキャラクタの出現や動作などを制御する。画像合成部80は、力算出部62および跳躍算出部72でそれぞれ計算されたトランポリン面の画像とメインキャラクタの画像を合成して、1つのゲーム画像を構成する。
一実施形態では、力算出部62および跳躍算出部72は、反発力を実際に計算する代わりに、メインキャラクタおよびトランポリン面のゲーム画面内での高さ方向(z方向)の移動速度を増減させることで、あたかもメインキャラクタとトランポリン面の間で力のやり取りが行われているかのような画面表示を実現する。
ここで、トランポリン面の挙動を擬似的に表現する手法について説明する。トランポリン面は、四角形または三角形を単位とするセルで構成される。そして、力算出部62内の反発力演算部64は、既知のセルオートマトン手法により各セルの状態を計算する。セルオートマトンは、各セルの状態を、1つ前の離散時刻における自分自身と周囲のセルの状態によって決定する計算技法である。
具体的には、各セルには、高さ方向の座標zと高さ方向の移動速度dzが与えられている。そして、隣接するセルの高さの差を、このセルの移動速度に反映させる。そして、移動速度をセルの高さに加えて、セルの新しい座標とする。この際、移動速度については、抵抗やロスを考慮して減衰させる。
これを数式で表すと、以下のようになる。
dzk t=f(・・・,zk−1 t,zk t,zk+1 t,・・・) (1)
zk t+1=zk t+dzk t (2)
dzk t+1=c・dzk t (3)
ただし、k番目のセルの座標をzk、移動速度をdzk、現在の時刻をt、次の離散時刻をt+1、時刻tの座標をztと表しており、また、f( )は隣接するセルの高さの差を計算する関数、cは減衰係数である。隣接するセルは、一例では上下左右方向のセルであるが、それより多くのセルであってもよい。反発力演算部64は、上記計算をすべてのセルについて計算することで、トランポリン面の反発挙動を擬似的に再現することができる。ただし、関数fの計算式および減衰係数cの値は、トランポリン面の挙動が実際のトランポリンの挙動を近似するように、シミュレーションを通じて最適なものを予め選択しておく。
図8は、力算出部62と跳躍算出部72における処理の流れを示したシーケンス図である。図7と図8をともに参照して、処理の詳細を説明する。まず、跳躍算出部72内のメインキャラクタ演算部74は、コントローラインタフェース34からユーザによるコントローラの操作情報、例えば十字キーの操作方向の情報を受け取って、メインキャラクタの移動量を計算する(S50)。前回計算時のメインキャラクタの座標に今回の移動量を加算したメインキャラクタ座標は、反発力演算部64に渡される(S52)。反発力演算部64は、メインキャラクタのz座標とトランポリン面のセルのz座標とを比較して、メインキャラクタがトランポリン面に接触しているか否かを判定する(S54)。この判定は、トランポリン面からの反発力をメインキャラクタに与えるか否かを判定するために実行される。当然であるが、メインキャラクタがトランポリンに接触しておらず、空中にあるときには、反発力は与えられないからである。
メインキャラクタがトランポリン面と接触していなければ(S54のNO)、S56からS64はスキップする。メインキャラクタがトランポリン面と接触していれば(S54のYES)、反発力演算部64は、メインキャラクタに与える反発力を算出する(S56)。具体的には、メインキャラクタの接触しているセルのz方向の移動速度を、上述のセルオートマトン手法(式(1))により算出する。
メインキャラクタがトランポリン面と接触し、かつトランポリン面が沈み込んでいる場合、反発力演算部64は、メインキャラクタのz方向の移動速度を、トランポリン面のセルのz方向の移動速度と合わせる。逆に、トランポリン面が上昇している場合、反発力演算部64は、メインキャラクタの接触しているセルのz方向の移動速度を、メインキャラクタの移動速度としてメインキャラクタ演算部74に与える(S58)。
続いて、反発力演算部64は、ユーザのボタン等の操作が、所定のタイミングで行われたか否かを判定する(S60)。一例として、コントローラ30には、メインキャラクタをトランポリン面上で跳躍させるための押しボタンが設けられている。そして、本実施の形態のトランポリンゲームでは、2つのタイミングを規定している。すなわち、第1のタイミングは、図12(a)に示すように、メインキャラクタ126がトランポリン面124に接触したタイミングと、ユーザが押しボタンを押下したタイミングとの時間差が、所定のしきい値より小さいときに、メインキャラクタ126がトランポリン面124上で「踏ん張った」ものとして、トランポリン面124の沈み込みの移動速度をより大きく算出するようにする。一例として、前回値の1.2倍の移動速度を与えるようにする。第2のタイミングは、図12(b)に示すように、トランポリン面124が最も沈み込んだときのタイミングと、ユーザが押しボタンを離したタイミングとの時間差が、所定のしきい値より小さいときに、トランポリン面124が反発に転じる時点とメインキャラクタ126の跳躍が「ぴったり」一致したものとして、トランポリン面124の上昇の移動速度をより大きく算出するようにする。一例として、前回値の1.2倍の移動速度を与えるようにする。算出された移動速度は、メインキャラクタがトランポリン面の移動速度に追従するように、追加の反発力としてメインキャラクタ演算部74に与えられる(S64)。
そして、反発力演算部64は、トランポリン面のすべてのセルのz座標を式(2)により計算して(S66)、その結果を画像貼付部68に出力する(S68)。画像貼付部68は、ベース画像ロード部70から貼付すべきベース画像を受け取り、周知のテクスチャマッピング手法により、変位しているトランポリン面の三次曲面に座標変換する。
メインキャラクタ演算部74は、トランポリン面から受け取った反発力、すなわちセルのz方向の移動速度に基づいてメインキャラクタの座標を算出する(S70)。具体的には、メインキャラクタ演算部74は、この移動速度を初速度とし、予め定められているメインキャラクタの仮想的な質量を持つ物体をこの初速度で上方に発射したものとして、メインキャラクタの座標を算出する。最高到達点まで到達したメインキャラクタは、重力法則にしたがって自由落下するようにする。算出されたメインキャラクタの座標は、メインキャラクタ画像生成部76に出力される(S72)。メインキャラクタ画像生成部76は、メインキャラクタ記憶部116から、そのときのメインキャラクタの姿勢に合致する画像を読み出す。つまり、メインキャラクタが空中にあるときと、トランポリン面に接地したときとは、それぞれに対応した別の画像を用いる。また、メインキャラクタがトランポリン面に接触したタイミングと、ユーザによるボタン操作のタイミングとの時間差を計測し、メインキャラクタが「踏ん張った」状態だったり、メインキャラクタの跳躍とトランポリン面の反発とが「ぴったり」だったときは、メインキャラクタ画像生成部76は、それぞれに対応した画像をメインキャラクタ記憶部116から読み出して使用するようにしてもよい。
メインキャラクタ画像生成部76は、ユーザが所定の条件に合致するコントローラ操作をしたときには、通常とは異なる画像を表示するようにしてもよい。これによって、メインキャラクタに宙返りやひねりなどのアクションをさせた画像を表示することができる。また、敵キャラクタがベース画像上に配置されている場合には、メインキャラクタが敵キャラクタに触れたときにメインキャラクタがしびれたような画像を表示するようにしてもよい。
図7に戻り、隠しキャラクタ表示部82における処理について説明する。出現位置算出部83は、メインキャラクタ演算部74からメインキャラクタのトランポリン面上での座標を取得し、この座標と、データ構造200に格納されている隠しキャラクタ出現条件データ204とを比較して、隠しキャラクタが隠されているベース画像の上をメインキャラクタが通過したか否かを判定する。そして、メインキャラクタがその上を通過していれば、隠しキャラクタをベース画像上に出現させる。この出現は、隠しキャラクタは位置座標データに記述されている位置に、隠しキャラクタ画像の重心を配置することで実行される。出現位置算出部83は、メインキャラクタが隠しキャラクタが隠されているベース画像の上を通過したとき、隠しキャラクタの存在を、コントローラの振動や画面表示などでユーザに知らしめてもよい。
第2力算出部84は、反発力演算部64において計算された反発力を受け取り、トランポリンが隠しキャラクタに与える反発力を算出する。この反発力は、隠しキャラクタ画像の重心の位置するセルのz方向の移動速度として与えられる。跳ね返り算出部86は、この移動速度を初速度とし、隠しキャラクタ画像のピクセル数に比例した仮想的な質量を持つ物体をこの初速度で上方に発射したときの最高到達点の位置を計算して、隠しキャラクタの跳ね返り動作を算出する。このとき、隠しキャラクタは、最高到達点まで移動するようにしてもよいし、または、初期位置から一定の高さのところまで最高到達点から落下するようにしてもよい。代替的に、隠しキャラクタ画像ごとに、予めトランポリン面により跳ね上げられたときの最高到達点を設定しておき、自然法則にしたがった跳ね返り動作になるように、隠しキャラクタの移動速度を算出するようにしてもよい。いずれの場合も、跳ね返り算出部86は、画像描画時の隠しキャラクタの位置する高さに応じた移動速度を算出する。
そして、跳ね返り算出部86は、隠しキャラクタ記憶部114から対応する隠しキャラクタの画像を検索し、計算された跳ね返り動作に合わせた画像を生成する。これによって、隠しキャラクタは、メインキャラクタが跳躍する動作によりトランポリン面が反発したときに、その反発力を受けたかのように、トランポリン面上に上昇する。
隠しキャラクタ管理部88は、反発力に応じて隠しキャラクタが到達した高さが所定のしきい値を超えたとき、その隠れキャラクタをユーザが獲得したものとして記録する。獲得された隠しキャラクタ画像は、ベース画像上に表示しないようにする。獲得したキャラクタ画像を画面の一部に表示してもよい。獲得した隠しキャラクタの情報は、アルバム管理部90にも渡される。隠しキャラクタ管理部88は、メインキャラクタの跳躍によって隠しキャラクタに与えられた反発力が大きいほど、隠しキャラクタを速く獲得できるようにしてもよい。さらに、ベース画像内に埋め込まれた隠しキャラクタを指定個数よりも多く獲得した場合、隠しキャラクタ管理部88は、その情報をメインキャラクタ画像生成部76に通知するようにしてもよく、この場合、メインキャラクタ画像生成部76は、メインキャラクタが「進化」したものとして、通常のメインキャラクタ画像とは異なる画像を表示するようにしてもよい。
力算出部62、跳躍算出部72および隠しキャラクタ表示部82においてそれぞれ計算された、トランポリン画像、メインキャラクタ画像、隠しキャラクタ画像は、画像合成部80において1つのゲーム画面に構成される。
図9は、以上述べたようなゲーム実行部における、トランポリンゲームの開始から終了までの全体的な流れを示すフローチャートである。
まず、ユーザは、コントローラ30を用いて、遊戯をしたいベース画像を選択する(S100)。選択するベース画像は、ユーザが撮影したデジタル写真から作成されたベース画像でもよいし、予めゲーム装置10に記憶されていた画像でもよい。
次に、ゲーム画面が表示される(S102)。その例を図13に示す。既に説明したように、ユーザにより選択されたベース画像がトランポリン面124にはめ込まれ、またメインキャラクタ126が表示される。ゲーム画面120には、他にも、そのステージのクリアのために獲得すべき隠しキャラクタの外形を示す表示130、ステージのクリアのために獲得すべき隠しキャラクタの色を示す表示132、ゲームの得点を示す表示134、およびゲームの制限時間を示す表示136も表示される。ユーザは、コントローラ30により、メインキャラクタ126を動作させる(S104)。具体的には、十字キーなどによりメインキャラクタを移動させるか、またはボタンキーを押下することでメインキャラクタを跳躍させる。
メインキャラクタ126をトランポリン面124内で移動または跳躍させる間に、出現位置算出部83は、隠しキャラクタの出現条件が満たされたか否かを判定する(S106)。出現条件が満たされていれば(S106のYES)、隠しキャラクタが画面に表示される(S108)。その様子を図14に示す。ゲームの開始当初は、トランポリン面124内には何の隠しキャラクタも表示されていなかったのに対し、図14では、隠しキャラクタ140および142が表示されている。メインキャラクタ126が跳躍動作をすると、トランポリン面124の反発力が計算されて、メインキャラクタ126およびトランポリン面124がそれに合わせた挙動をする。当初はトランポリン面124の表面に出現した隠しキャラクタは、この反発力に応じて跳ね上げられて、次第に上方に浮き上がっていく。隠しキャラクタ144は、隠しキャラクタ140が空中に浮き上がっていった状態を表している。
隠しキャラクタ管理部88は、隠しキャラクタの獲得条件が満たされたか否かを判定する(S110)。獲得条件が満たされていれば(S110のYES)、隠しキャラクタが獲得され、画面にそのことをユーザに知らしめる表示がなされる。S106およびS110の判定は、ゲームの実行中、常に行われる。S106、S110においてNOと判定された場合は、次のユーザ操作(S104)を待つ。そして、所定のクリア条件が満たされたか否かを判定し(S114)、クリア条件が満たされていなければ(S114のNO)、次のユーザ操作(S104)を待ち、クリア条件が満たされていれば(S114のYES)、このステージを終了する(S116)。
以上説明したように、本実施形態によるゲーム実行部によれば、ユーザは、メインキャラクタの移動と跳躍というわずか2種類のコントローラ操作によって、リアリティのあるトランポリン・アクションゲームを楽しむことができる。操作の種類は2種類しかないが、上述のように、メインキャラクタの「踏ん張り」や「ぴったり」の動作を実現するためには、ゲーム画面とユーザ操作とのタイミングを一致させる慣れの要素が必要なので、ゲームの興味を長く持続させることができる。また、メインキャラクタに「踏ん張り」や「ぴったり」の動作をさせない限り、クリアすることができないようなステージを設けておけば、ユーザの興味をさらに惹くことができる。
図10は、電子アルバムの閲覧を可能にするためのアルバム管理部90の構成を示す図である。上述したように、アルバムには、ユーザが撮影したデジタル写真を記憶する画像アルバムと、ユーザがステージクリアにより獲得した隠しキャラクタを記憶する隠しキャラクタアルバムの二種類がある。
アルバム管理部90は、獲得した隠しキャラクタ画像を表示するための複数の枠がリザーブされた電子アルバムのフォーマットデータを保持するフォーマット保持部94と、ステージをクリアしたとき獲得した隠しキャラクタ画像を前記リザーブ枠の1つへ表示する画像貼付部96と、を含む。
画像貼付部96は、ユーザがあるベース画像についてのステージをクリアしたとき、そのステージで獲得した隠しキャラクタの情報を隠しキャラクタ管理部88から受け取る。そして、対応する隠しキャラクタの画像を隠しキャラクタ記憶部114から取得し、フォーマット保持部94から受け取った電子アルバムフォーマットの所定枠に貼付することで、隠しキャラクタアルバムを次第に完成させていく。したがって、ユーザがステージをクリアするごとに、隠しキャラクタアルバムに表示される隠しキャラクタ画像の数は増えていく。
図16は、画像貼付部96により表示される隠しキャラクタアルバムの一例を示す。アルバムは縦方向に同じ色属性の隠しキャラクタ画像が並ぶようになっており、横方向には、獲得の難易度が同程度の隠しキャラクタが並ぶようになっている。なお、隠しキャラクタの獲得の難易度は、隠しキャラクタ画像の外形の複雑さ、色の複雑さ、大きさなどによって決まる。図16では、隠しキャラクタ172、174、176は、同程度の難易度である。また、隠しキャラクタ172および178は赤属性の隠しキャラクタであり、隠しキャラクタ174および180は緑属性の隠しキャラクタであり、隠しキャラクタ画像176および182は黄色属性の隠しキャラクタである。
隠しキャラクタアルバム170には、未獲得の隠しキャラクタの存在をユーザに予感させる表示をしてもよい。この場合、隠しキャラクタ記憶部114には、隠しキャラクタ画像の外形のみを表した外形画像を予め記憶させておく。そして、画像貼付部96は、フォーマット保持部94から読み出した電子アルバムフォーマットのうち、未獲得の隠しキャラクタが表示される予定のリザーブ枠に、対応する外形画像を隠しキャラクタ記憶部114から取得して貼付する。図16には、未獲得の隠しキャラクタ178、180、182の外形のみが点線で表示されている。これによって、ユーザに未獲得の隠しキャラクタ画像収集のためのヒントを与えることができる。また、未獲得の隠しキャラクタがある場合に、ユーザにその隠しキャラクタ画像に似た形状、色の領域を含むデジタル写真を撮影させる動機付けとなる。なぜならば、ベース画像作成部40における画像処理によって、欲しい隠しキャラクタ画像がそのデジタル写真に埋め込まれる可能性があるからである。このように、ユーザは、ゲームの世界と現実世界での写真撮影とをリンクさせて楽しむことができる。
また、アルバム管理部90は、隠しキャラクタを獲得していくことによって、隠しキャラクタアルバム170内のある列または行が完成したときに、当該アルバムに当初表示されていなかったリザーブ枠の表示を許可することにより、新たな隠しキャラクタの存在をユーザに示唆する枠生成部98をさらに含んでもよい。枠生成部98によって、それまで存在していなかったリザーブ枠が現れるため、ユーザは秘密の隠しキャラクタがまだ存在していることがわかる。これによって、ユーザの好奇心がさらに刺激される。
図17は、画像アルバムの一例を示す。ユーザがクリアしたステージのベース画像192は、画像アルバム190に表示される。また、隠しキャラクタアルバムに貼付された隠しキャラクタ画像を、ユーザの操作によって各ベース画像192に貼り付けられるようにしてもよい。隠しキャラクタが貼り付けられたベース画像を、別途保存したり、または、インターネットを介して自分または他人のユーザ端末や携帯電話等に送信できるようにしてもよい。また、画像アルバム190内に所定の数のベース画像が表示されたときに、ベース画像記憶部112に予め記憶されていた特典画像が新たに表示されるようにしてもよい。
以上説明したように、アルバム管理部90によって、ユーザはゲームの進行とともに、自分の獲得した隠しキャラクタが貼付された隠しキャラクタアルバムを充実化させることができる。これによって、友人同士で獲得した隠しキャラクタの数や種類などを競ったり、自分の達成度を確認したりする楽しみが生じる。また、未獲得の隠しキャラクタを探すために、さらにデジタル写真を撮影、収集し、ゲーム装置10に取り込み、そのデジタル写真を使ってゲームを実行するというように、ゲームと写真撮影とを連携して楽しめる。また、ユーザにより隠しキャラクタが貼り付けられたベース画像は、上書きされた新たな画像となるので、この画像を再び解析することで、別のクリア条件を持つベース画像についてゲームを楽しむことができる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、これらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
第1の変形例は、ユーザが獲得した隠しキャラクタの取り扱いに関する。それぞれネットワークに接続された複数ユーザのゲーム装置間で、各ユーザの獲得した隠しキャラクタの交換ができるようにしてもよい。この場合、アルバム管理部90が表示する隠しキャラクタアルバム170のなかから、ユーザはコントローラ30を使用して他人に与える隠しキャラクタを選択する。図示しない通信設定部は、他人のゲーム装置のメールアドレス設定画面を表示し、ユーザが他人のゲーム装置のメールアドレスを入力できるようにする。そして、通信部32は、隠しキャラクタアルバムで指定された隠しキャラクタに対応する画像を隠しキャラクタ記憶部114から読み出してメールに添付し、インターネット24を介して他人のゲーム装置に送信する。
実施の形態では、家庭用のテレビゲームを想定したが、別の実施形態では、ゲームセンター等に設置するアーケードゲームとしてゲーム装置を構成してもよい。この場合、ユーザが手動操作するコントローラの代わりに、実際のトランポリンを準備し、トランポリン面上で跳躍するユーザの着地を感知する感圧センサと、トランポリン面の変位を検知する歪みセンサをトランポリン面に設置したものをコントローラとしてもよい。感圧センサの出力は、反発力演算部64およびメインキャラクタ演算部74に入力され、トランポリン面上で跳躍するユーザがトランポリン面と接触しているか否かを判定するために使用される。また、歪みセンサの入力は、画像貼付部68に入力され、画像貼付部68は、実際のトランポリン面の変位とゲーム画面におけるトランポリン面の変位が同一となるように、ベース画像を貼付する。これによって、ユーザの実際のトランポリン動作と、ゲーム画面におけるトランポリンおよびメインキャラクタの動作とを同期させて表示することができる。
上記の構成では、歪みセンサにより測定したトランポリン面の変位をそのままゲーム画像内のトランポリン面の変位として表示するので、ゲーム画面中のトランポリン面の座標や移動速度を逐一計算する必要がない。したがって、ゲーム装置のCPUの計算量が低減され、また実際のトランポリンの挙動とゲームのトランポリン画像とがずれて表示されることがなくなる。この場合、メインキャラクタのゲーム画面内での座標は、トランポリン面上でのユーザの位置をキャプチャすることによって表示する。
この場合、上述の「第1のタイミング」は、例えば、ユーザがトランポリン面に接触するときに、身体を沈みこませる踏ん張りの動作をすることで、トランポリン面への入力が大きくなるため、トランポリン面に設置された感圧センサの出力から判別することができる。また、「第2のタイミング」でも同様に、トランポリン面が最も沈み込んだときにユーザが跳躍することで、トランポリン面への入力が大きくなるため、感圧センサの出力から判別することができる。
上記のように、実際のトランポリンをゲーム装置のコントローラとすることによって、ユーザは、全身を動かしてゲームを楽しむことができる。また、実際のトランポリン上で跳躍のタイミングを合わせることで、メインキャラクタが「踏ん張った」り、「ぴったり」の跳躍をした表示がなされるので、トランポリンの跳躍タイミングを会得するための練習にもなる。
実際のトランポリンをコントローラとする代わりに、床に平面的に埋め込まれた感圧シートの上で、ユーザが跳躍するような構成をとってもよい。これによって、トランポリンのように大掛かりな設備を準備しなくても、感圧シートの上でユーザが飛び跳ねる動作をすることで、仮想現実的にトランポリンの感覚を楽しむことができる。
または、ユーザの身体動作を撮像してディスプレイに投影するカメラと、ディスプレイ内のユーザの動きを検知する動き検知部を別途設けて、ユーザの動きにより、メインキャラクタの操作指令や項目の選択指令を発するようにしてもよい。
実施の形態では、画像分割部における処理について、取得ピクセルと代表点のデータを比較していくことで、デジタル写真を代表点を含む複数の領域に分割することを述べたが、デジタル写真を例えば8色に減色したのち、同じ色でかつ連続するピクセルに同じ領域番号を与えることによって、デジタル写真を複数の領域に分割するようにしてもよい。この場合、領域統合部以下の処理は、上述の実施の形態と同様である。
実施の形態では、隠しキャラクタが隠されているベース画像の上をメインキャラクタが通過したか否かを判定して、隠しキャラクタ画像を出現させることを述べたが、メインキャラクタがトランポリン面上で跳躍したときに、トランポリン面が凹んだ部分のベース画像に隠されていた隠しキャラクタ画像を出現させるようにしてもよい。この場合、出現位置算出部83は、トランポリン面の各セルのz座標を反発力演算部64から取得し、z座標が所定のしきい値を下回っていたときに、そのセルに対応する部分のベース画像に隠されている隠しキャラクタ画像を出現させる。このようにすると、メインキャラクタがトランポリン面上で跳躍したときに、複数の隠しキャラクタを一度に出現させることができるようになる。また、メインキャラクタに上述したような「踏ん張り」や「ぴったり」の動作をさせることによって、トランポリン面の凹む範囲はより大きくなるので、この場合により多数の隠しキャラクタを一度に出現させることができる。
実施の形態では、隠しキャラクタの出現条件が満たされると、隠しキャラクタの画像がベース画像上に表示されることを述べたが、隠しキャラクタ画像が直ちに画面表示されないようにしてもよい。この場合、メインキャラクタの動作により隠しキャラクタ出現条件が満たされると、跳ね返り算出部86は、隠しキャラクタが埋め込まれている分割領域に対応するデジタル写真の部分がトランポリン面から跳ね上がるようにする。そして、隠しキャラクタ管理部88は、隠しキャラクタ獲得条件が満たされたときに初めて、埋め込まれていた隠しキャラクタ画像をゲーム画面に表示する。このようにすると、ユーザは、最終的に隠しキャラクタを獲得するまで、自分の獲得した隠しキャラクタが何であるかを知ることができないので、ユーザの興味を惹くことができる。
10 ゲーム装置、 30 コントローラ、 32 通信部、 34 コントローラインタフェース、 40 ベース画像作成部、 42 画像取得部、 44 隠しキャラクタ配置部、 60 ゲーム実行部、 62 力算出部、 64 反発力演算部、 68 画像貼付部、 70 ベース画像ロード部、 72 跳躍算出部、 74 メインキャラクタ演算部、 76 メインキャラクタ画像作成部、 80 画像合成部、 82 隠しキャラクタ出現位置算出部、 84 第2力算出部、 86 跳ね返り算出部、 90 アルバム管理部、 112 画像記憶部、 114 隠しキャラクタ記憶部、 116 メインキャラクタ記憶部。