図1を参照して、この発明の限定しない一例であるシステム10は、サーバ12を含む。サーバ12は、LAN、WANまたはインターネットのようなネットワーク14を介して、複数のゲーム装置16およびパーソナルコンピュータ(PC)18と通信可能に接続される。この実施例では、ゲーム装置16は、テストプレイに使用される据え置き型のゲーム装置であり、テスト用のゲーム専用機またはテスト用のゲームプログラムを実行可能なコンピュータである。
サーバ12は、汎用のサーバであり、CPU12aおよびHDD12bを備え、RAMのような他のメモリおよび通信モジュール等の他のコンポーネントも備える。CPU12aは、サーバ12の全体制御を司る。HDD12bは、サーバ12の主記憶装置として機能するとともに、データベースとしても機能する。ただし、データベースは、サーバ12の外部に設けられ、サーバ12に直接またはネットワーク14を介して接続されてもよい。
たとえば、サーバ12は、制御プログラムを実行し、ゲーム装置16から送信される所定のデータを受信(取得)し、ゲーム装置16(プレイヤ)毎にHDD64に記憶および管理する。また、上記の所定のデータは、各ゲーム装置16から送信されたプレイ記録のデータである。
図2は、図1に示すゲーム装置16の電気的な構成の限定しない一例を示すブロック図である。図2に示すように、ゲーム装置16は、CPU30を含み、CPU30には、RAM32、フラッシュメモリ34、無線通信モジュール36、入力装置38、表示ドライバ40およびD/A変換器44が接続される。また、表示ドライバ40には、表示装置42が接続され、D/A変換器44には、スピーカ46が接続される。
CPU30は、ゲーム装置16の全体制御を司る。RAM32は、CPU30のワークメモリおよびバッファメモリとして使用される。フラッシュメモリ34は、ゲームのようなアプリケーションのプログラムおよび各種のデータを記憶(セーブ)するために使用さ
れる。
無線通信モジュール36は、無線LANに接続する機能を有する。したがって、ゲーム装置16は、他のゲーム装置16およびコンピュータ(サーバ12およびPC18など)とネットワーク14を介して通信することができる。ただし、ゲーム装置16は、他のゲーム装置16または/およびコンピュータとネットワーク14を介さずに直接通信することもできる。また、ゲーム装置16は、有線でネットワーク14に接続されてもよい。
入力装置38は、たとえば、ゲーム装置16に設けられる各種の押しボタンないしスイッチであり、ユーザないしプレイヤ(以下、単に「プレイヤ」という)によって、メニュー選択やゲーム操作などの各種の操作に用いられる。ただし、入力装置38としては、タッチパネルなどのポインティングデバイス、マイクおよびカメラなどの入力手段が、押しボタンないしスイッチに代えて、または、押しボタンないしスイッチとともに設けられてもよい。
表示ドライバ40は、CPU30の指示の下、表示装置42にアプリケーションの実行画面(たとえば、ゲーム画面)などの各種画面を表示するために使用される。図示は省略するが、表示ドライバ40は、GPUおよびVRAMを内蔵している。
D/A変換器44は、CPU30から与えられる音声データをアナログの音声信号に変換し、スピーカ46に出力する。たとえば、アプリケーションがゲームである場合には、音声信号は、ゲームキャラクタの擬制音、効果音および音楽(BGM)のようなゲームに必要な音に対応する音声信号を意味する。また、ゲーム以外のアプリケーションの場合には、音声信号は、効果音および音楽(BGM)のようなアプリケーションの実行に必要な音に対応する音声信号を意味する。
なお、図2に示すゲーム装置16の電気的な構成は単なる一例であり、これに限定される必要はない。
図3は、図1に示すPC18の電気的な構成の限定しない一例を示すブロック図である。PC18は、汎用のPCであり、図3に示すように、CPU60を含む。CPU60には、RAM62、HDD64、通信モジュール66、入力装置68および表示ドライバ70が接続される。また、表示ドライバ70には、表示装置72が接続される。
CPU60は、PC18の全体制御を司る。RAM62は、CPU60のワークメモリおよびバッファメモリとして使用される。HDD64は、PC18の主記憶装置であり、オペレーティングシステム(OS)および必要な制御プログラム(アプリケーションプログラム)を記憶するとともに、所定のデータを記憶するために使用される。たとえば、所定のデータは、複数のプレイヤのプレイ記録のデータである。また、後述するように、制御プログラムは、表示制御プログラムであり、表示制御プログラムは、複数のプレイヤのプレイ記録に基づいて、ゲーム内の各プレイヤキャラクタの状態をプレイ開始からの経過時間(「プレイ経過時間」に相当する)を揃えて表示する。
通信モジュール66は、LANに接続する機能を有する。したがって、PC18は、他のコンピュータ(サーバ12など)およびゲーム装置16とネットワーク14を介して通信することができる。ただし、PC18は、他のコンピュータまたは/およびゲーム装置16とネットワーク14を介さずに直接通信することもできる。
入力装置68は、たとえば、キーボードおよびコンピュータマウスなどである。表示ドライバ70は、CPU60の指示の下、表示装置72に各種画面を表示するために使用さ
れる。表示ドライバ70は、GPUおよびビデオRAM(VRAM)を内蔵している。
なお、図3に示すPC18の電気的な構成は単なる一例であり、これに限定される必要はない。
上述したようなゲーム装置16では、仮想空間内(仮想ゲーム空間内)で進行するゲームをプレイすることができる。図4には、この実施例のゲームにおいて、表示装置42に表示されるゲーム画面100の一例が表示される。詳細な説明は省略するが、仮想ゲーム空間内に、草木(花も含む)オブジェクト、地形オブジェクトおよび建物オブジェクトのような仮想オブジェクトが設けられるとともに、プレイヤキャラクタ102が配置される。また、仮想ゲーム空間内には、敵キャラクタ104および村人キャラクタ(図示せず)などのノンプレイヤキャラクタも配置される。さらに、仮想ゲーム空間内には、アイテムキャラクタ(図示せず)が配置される。ただし、ノンプレイヤキャラクタやアイテムキャラクタには、ゲームの本編とは直接的に関係の無い所定のキャラクタも含まれる。たとえば、所定のキャラクタは、ゲームの進行とは直接関係のないコレクション要素として、仮想ゲーム空間内に配置され(隠され)、プレイヤないしプレイヤキャラクタ102によって収集される。ノンプレイヤキャラクタやアイテムキャラクタは、所定の条件(イベント)に応じて発生(出現)するようにしてもよい。このような仮想ゲーム空間を仮想カメラ(図示せず)で撮影した画像がゲーム画面として表示装置42に表示される。具体的には、特定の視点(仮想カメラ)から見た3次元の仮想ゲーム空間画像が透視投影変換を用いて描画されて、ゲーム画面100として表示されるのである。
図4に示すように、ゲーム画面100には、プレイヤキャラクタ102、敵キャラクタ104および仮想のオブジェクト(地面オブジェクトおよび崖(壁)オブジェクト)が表示される。図4に示すゲーム画面100では、プレイヤキャラクタ102は、画面中央からやや右下寄りに表示される。この実施例のプレイヤキャラクタ102は、武器(たとえば、剣)および防具(たとえば、盾)を持っている。また、ゲーム画面100では、複数(ここでは、4体)の敵キャラクタ104が画面中央からやや上寄りに横一列に並んで表示される。このゲーム画面100では、敵キャラクタ104はプレイヤキャラクタ102に対峙(対面)している。
さらに、ゲーム画面100の左上部には、プレイヤキャラクタ102の体力値(生命力)を示す画像(ハート画像)110、プレイヤキャラクタ102が持つ盾の防御力を示す画像112および所定のアイテムの所持数を示す画像114が表示される。このように、プレイヤキャラクタ102のステータスの情報が表示される。ただし、ステータスの情報は一例であり、体力値、防御力および所持数のいずれか1つが表示されてもよい。また、プレイヤキャラクタ102(プレイヤ)のレベルなどの他のステータスの情報が上記のステータスの情報のいずれかに変えて、または、上記のステータスの情報に加えて表示されてもよい。
この実施例のゲームは、オープンワールドゲームであり、プレイヤキャラクタ102は、プレイヤの操作に従って、仮想のゲーム空間内に設定された広大なマップ内を自由に移動することができる。プレイヤキャラクタ102は、仮想のゲーム空間内において、敵キャラクタ104と闘ったり、アイテムを取得したり、目的の場所ないし位置に到達したりして、最終的な目的を達成する。
ただし、体力値が無くなる(0になる)と、ゲームオーバーになる。体力値は、プレイヤキャラクタ102が移動するなどの動作を行うことにより減少される。また、体力値は、寒かったり暑かったりすることにより減算されることもある。プレイヤキャラクタ102が敵キャラクタ104からの攻撃を受けた場合またはプレイヤキャラクタ102が谷底
に落ちるなどして仮想のゲーム空間外に出た場合(ミスした場合)にも、ゲームオーバーになる。一方、プレイヤキャラクタ102が食べ物を食べたり、薬を飲んだり、睡眠を取ったりすることにより、体力値は増加される。
なお、この実施例では、プレイヤキャラクタ102の体力値が無くなったり、プレイヤキャラクタ102が敵キャラクタ104に倒されたりした場合にはゲームオーバーになるようにしてあるが、これに限定される必要はない。たとえば、残機を設定して、一定回数のミスを許容するようにしてもよい。かかる場合には、プレイヤキャラクタ102の残機数が0になった場合に、ゲームオーバーになる。また、プレイヤキャラクタ102の体力値が無くなったり、プレイヤキャラクタ102が敵キャラクタ104に倒されたりした場合に、ゲームオーバーにせず、ゲーム内の所定の場所から即座に再開する(リスポーンする)ようにしてもよい。
このようなゲームを製作する場合には、ゲームの難易度を調整する作業が重要であり、発売前にゲームをテストプレイした場合の記録(プレイ記録)を分析することがある。たとえば、ゲームの開発者ないし提供者が意図する、総プレイ時間、プレイ時間に応じたゲームの進行度合いおよびプレイヤキャラクタ102の移動軌跡ないし移動経路(進行のさせ方)などでゲームがプレイされているかどうかが分析される。この分析のために、ゲームの開発者等は、テストプレイした多数のプレイヤからゲームに対する感想を聞いたり、多数のプレイヤに対してアンケートを実施したりする。
しかし、開発者等は、テストプレイした記録を把握するだけでも多大な労力を要する。しかも、上述したように、オープンワールドゲームでは特にマップが広大であり、ゲームプレイの方法もプレイヤ毎に様々である。また、一度のテストプレイでゲームを終えられることはなく、中断および再開を繰り返してゲームが進行される。このため、このような大規模なゲームのプレイ記録を俯瞰して理解するための手法が求められている。
したがって、この実施例では、テストプレイしたプレイ記録を各ゲーム装置16から収集し、収集したプレイ記録を分析するための情報(内容)を視認可能に表示するようにしてある。
この実施例では、テストプレイにおけるプレイ開始(ゲーム開始)からの経過時間毎のプレイヤキャラクタ102の位置と、イベントの発生履歴(各イベントが発生したときのプレイ開始からの経過時間とプレイヤキャラクタ102の位置)がプレイ記録(以下、「個別プレイ記録」と呼ぶことがある)として各ゲーム装置16で記憶(取得)され、サーバ12に送信される。
ただし、経過時間は、プレイ開始から、プレイヤが実際にゲームをプレイしている時間を累積した時間(現在までの総プレイ時間)であり、ゲームを中断している時間は除かれる。また、本実施例においてはプレイヤキャラクタ102を何ら動作させていない時間も除いたものを経過時間としている。
また、個別プレイ記録には、ゲーム装置16または当該ゲーム装置16のプレイヤを識別するための識別情報が付加される。たとえば、識別情報は、プレイヤの名称であり、ゲーム装置16に登録(設定)される。ただし、識別情報は、プレイヤの名称に限定される必要は無く、ゲーム装置16の製造番号または製品番号、ゲーム装置16が備える無線通信モジュール36に割り当てられたMACアドレスなどでもよい。また、これらの固有の情報を組み合わせた情報を識別情報として使用してもよい。
さらに、ゲーム開始(プレイ開始)は、仮想のゲームを最初(スタート位置)から開始
することを意味し、「プレイ開始」という場合には、セーブした時点(途中の地点)から開始することは含まない。
この実施例では、イベントは、プレイヤキャラクタ102の行動によって発生したイベントである。具体的には、イベントとしては、プレイヤキャラクタ102が敵キャラクタ104との戦闘に勝ったことまたは負けたこと、プレイヤキャラクタ102が所定のキャラクタに遭遇したこと、プレイヤキャラクタ102が馬などの移動手段に乗ったこと、プレイヤキャラクタ102がアイテムを取得したこと、プレイヤキャラクタ102が所定の場所(たとえば、ダンジョン)に侵入または到達したことなど、ゲーム内で所定の条件が満たされた場合に発生する各種事項が該当する。
ゲーム装置16は、プレイヤキャラクタ102がゲーム空間内を移動するとき、所定の周期(「単位プレイ時間毎」に相当する)で、プレイ開始からの経過時間に対応するプレイヤキャラクタ102の位置の情報を個別プレイ記録としてサーバ12に送信する。つまり、サーバ12は、所定の周期で、プレイヤキャラクタ102の位置の情報を収集する。また、ゲーム装置16は、イベントが発生したときに、経過時間に対応するプレイヤキャラクタ102の位置の情報およびイベントの情報を個別プレイ記録としてサーバ12に送信する。つまり、サーバ12は、イベントが発生したときに、イベントの情報を収集する。ただし、イベントの情報は、どのイベントが発生したかを示す情報である。また、この実施例では、所定の周期は1秒である。ゲーム処理では、単位時間(1フレーム)毎にゲーム画面が更新されるが、この実施例では、処理負荷に応じてフレームレートが変化される(可変フレームレート)。したがって、ゲーム装置16は、現在のフレームレートに応じた秒数をカウント(経過時間に加算)し、経過時間が1秒経過する毎に、経過時間に対応するプレイヤキャラクタ102の位置の情報(イベントの情報が追加される場合もある)を個別プレイ記録として取得(記憶)する。たとえば、フレームレートが60fpsの場合には、1フレームは1/60秒であり、フレームレートが30fpsである場合には、1フレームは1/30秒であり、フレームレートが20fpsである場合には、1フレームは1/20秒である。
ただし、これは一例であり、プレイ記録をゲーム装置16のメモリ(RAM32)に記憶(蓄積)しておき、ゲームを中断するときまたはゲームを終了するときなどの所定のタイミングで、一括してサーバ12に送信するようにしてもよい。
また、所定の周期は0.5秒、1フレームに相当する秒数、または、2秒以上であってもよく、ゲームの種類などに応じて適宜変更可能である。さらに、この実施例では、可変フレームレートのゲームの場合について説明するが、固定フレームレートの場合には、フレーム毎にフレームレートで決定される所定時間が経過時間に加算されるだけである。ただし、固定フレームレートの場合には、フレーム毎の時間が一定であるため、所定フレーム毎に情報を取得するようにすることでも所定時間毎の処理が実現できる。
サーバ12は、各ゲーム装置16から取得した個別プレイ記録を、ゲーム装置16またはプレイヤ毎に記憶および管理する。サーバ12は、ゲーム装置16からの個別プレイ記録を取得すると、これに付された識別情報からゲーム装置16またはプレイヤを特定し、特定したゲーム装置16またはプレイヤについての個別プレイ記録を記憶(更新)する。個別プレイ記録を更新する場合には、サーバ12は、プレイ開始からの経過時間に対応する、プレイヤキャラクタ102の位置およびイベントの情報が追加的に記憶する。
たとえば、ゲームの開発者等のユーザはPC18を操作して、サーバ12から各プレイヤの個別プレイ記録を取得する。つまり、PC18はネットワーク14から各プレイヤの個別プレイ記録を取得する。ただし、PC18は、ゲーム装置16からネットワーク14
を介して個別プレイ記録を取得するようにしてもよい。または、PC18は、サーバ12で収集された個別プレイ記録またはゲーム装置16に記憶された個別プレイ記録を、着脱可能な記憶媒体を用いて取得するようにしてもよい。
PC18は、ユーザの操作に従って、各個別プレイ記録を用いて各プレイヤキャラクタ102のゲーム内の状態(所定の情報)を視認可能に提示する。この実施例では、所定の情報は、或る時点(経過時間)における各プレイヤキャラクタ102の位置、プレイ開始から経過時間までの各プレイヤキャラクタ102の移動軌跡、マップを複数の領域に分割した場合に、プレイ開始から経過時間までに、各領域を通過したプレイヤキャラクタ102の数(通過数)、プレイ開始から経過時間までに所定のキャラクタと遭遇したプレイヤキャラクタ102の数(遭遇数)を選択的に表示することができる。
ただし、通過数には、各領域を通過したのみならず、各領域に到達(侵入)したプレイヤキャラクタ102の数も含まれる。
図5はPC18の表示装置72に表示されるマップ150の限定しない一例を示す図解図である。このマップ150は、上記ゲームのマップであり、3次元の仮想のゲーム空間を真上から見た場合の2次元の画像である。つまり、平行投影(直交投影或いは正射影とも呼ばれる)により、3次元の仮想ゲーム空間を真上の視点(仮想カメラ)から見た画像が2次元の仮想スクリーンに投影され、投影された2次元の画像(マップ150)が表示されるのである。この実施例では、このマップ150に重畳して、上記の位置、移動軌跡、通過数および遭遇数の少なくとも1つの情報が視認可能に表示される。平行投影で描画したマップ画像を使用することにより、各情報の分布や位置関係を把握し易く表示することができる。他の実施例では、マップとして表示する画像は、実際の仮想ゲーム空間を仮想カメラで撮影して描画するのではなく、実際の仮想ゲーム空間の地形等と対応させるように描かれた画像を別途用意して用いても良い。
図示は省略するが、マップ150の周囲には、経過時間を指定したり、個別にプレイヤを選択したり、マップ150上に表示したい情報(内容)を選択したりするための操作領域が設けられる(表示される)。また、図示は省略するが、マップ150の周囲には、操作領域とは別に、指定された経過時間において発生したイベントの情報をテキストで表示するためのテキスト表示領域が設けられる(表示される)。
図6はPC18の表示装置72に表示される位置表示画面200の一例を示す図解図である。たとえば、ユーザが入力装置68を用いて、操作領域で、経過時間を指定するとともに、各プレイヤキャラクタ102の位置を表示することを選択すると、図6に示すような位置表示画面200が表示装置72に表示される。
図6に示すように、位置表示画面200では、マップ150に重畳して、或る時点(時間)における各プレイヤのプレイヤキャラクタ102の位置が視認可能に表示される。或る時点は、ユーザが指定したプレイ開始からの経過時間である。経過時間は、所定の範囲内で、ユーザが任意に指定することができる。たとえば、経過時間を指定するためのスライドバーが操作領域に設けられ、ユーザは、スライドバーを操作することにより、経過時間を指定する。ただし、これは一例であり、経過時間を指定するためのグラフィック・ユーザ・インターフェイス(GUI)は限定されない。また、所定の範囲は、0時間0分0秒から開発者等が想定する総プレイ時間よりも長い時間(たとえば、総プレイ時間の1.2倍~1.5倍)に設定される。
位置表示画面200において、丸印が或る時点におけるプレイヤキャラクタ102の位置である。ここでは、複数のプレイヤの個別プレイ記録のそれぞれから、或る時点に対応
して記憶される位置の情報が取得され、マップ150に丸印が描画される。また、図6においては、黒丸印は対応するプレイヤキャラクタ102が地上に居ることを示し、白丸印は対応するプレイヤキャラクタ102がダンジョンに居ることを示す。つまり、個別プレイ記録において、或る時点に対応してダンジョンに居ることのイベントが発生している場合には、白丸印が描画される。ただし、或る時点に対応してダンジョンに居ることのイベントが発生していない場合には、黒丸印が描画される。これらのことは、図7の軌跡表示画面250においても同じである。
さらに、位置表示画面200では、指定された経過時間までに、プレイヤキャラクタ102が敵キャラクタ104に倒されるなどして、ゲームオーバーになった位置にバツ印が描画される。ここでは、複数のプレイヤの個別プレイ記録のそれぞれから、或る時点までに記憶されるイベントのうち、ゲームオーバーになったときのイベントおよびそのときの位置の情報が取得され、マップ150にバツ印が描画される。
図6では省略するが、各丸印の近傍には、プレイヤの識別情報(たとえば、プレイヤの名称)が表示され、どのプレイヤのプレイヤキャラクタ102が指定された経過時間(時点)において、何処に居るかを一目で知ることができる。
また、バツ印の位置を見ることにより、たとえば、プレイヤキャラクタ102を倒した敵キャラクタ104の配置位置、プレイヤキャラクタ102が落ちやすい場所などを知ることができる。このため、指定された経過時間(時点)までのゲームの進行状況に応じて、適切な位置に適切な種類および数の敵キャラクタ104が配置されているかどうかを知ることができる。また、仮想のゲーム空間の設計(仮想オブジェクトの配置)が適切であるかをどうかも知ることができる。
さらに、図6では省略するが、上述したように、位置表示画面200の周囲には、操作領域およびテキスト表示領域が設けられる。たとえば、テキスト表示領域には、指定された経過時間(時点)におけるイベントの情報として、「AさんがアイテムXを取得しました。」、「Bさんが敵キャラクタYを倒しました。」のようなテキスト文が表示される。ただし、「A」および「B」はプレイヤの名称である。これらのことは、後述する図7~図9の各画面においても同様である。
図7はPC18の表示装置72に表示される軌跡表示画面250の一例を示す図解図である。たとえば、ユーザが入力装置68を用いて、操作領域で、経過時間を指定するとともに、各プレイヤキャラクタ102の移動軌跡を表示することを選択すると、図7に示すような軌跡表示画面250が表示装置72に表示される。
図7に示すように、軌跡表示画面250では、マップ150に重畳して、或る時点までにおける各プレイヤのプレイヤキャラクタ102の移動軌跡252が視認可能に表示される。ここでは、複数のプレイヤの個別プレイ記録のそれぞれから、プレイ開始から或る時点までの間において、各経過時間に対応して記憶されるそれぞれの位置の情報が取得され、マップ150に各プレイヤキャラクタ102についての移動軌跡252が描画される。ただし、図7では、分かり易く示すために、4人のプレイヤのプレイヤキャラクタ102の移動軌跡252を示してある。実際には、ユーザが選択した一部または全部のプレイヤのプレイヤキャラクタ102の移動軌跡252を表示可能である。
なお、図7では、プレイ開始時のプレイヤキャラクタ102の位置(スタート位置)を星印で示してある。つまり、この実施例の仮想のゲームでは、スタート位置は一箇所に固定されている。ただし、これは一例であり、スタート位置を複数用意しておき、プレイヤがスタート位置を選択してもよいし、コンピュータ(CPU30)がスタート位置を任意
に選択してもよい。
このように、移動軌跡252を表示することにより、プレイヤ毎のプレイヤキャラクタ102の移動のさせ方(進め方)および或る時点までの各プレイヤキャラクタ102の進行の程度を知ることができる。たとえば、各プレイヤを、ゲームの上級者、中級者および初心者に予め分類しておき、分類毎に移動軌跡252を表示することにより、各分類でどのようにプレイヤキャラクタ102を移動させる傾向があるのかを知ることができる。これによって、プレイヤの誘導の仕方、敵キャラクタ104およびアイテムの配置および出現確率、敵キャラクタ104の種類、強さおよび数、アイテムの種類および数などの適切さを知ることができ、また、それらの内容について修正することもできる。
図8はPC18の表示装置72に表示される通過数表示画面300の一例を示す図解図である。たとえば、ユーザが入力装置68を用いて、操作領域で、経過時間を指定するとともに、プレイヤキャラクタ102の通過数を表示することを選択すると、図8に示すような通過数表示画面300が表示装置72に表示される。
図8に示すように、通過数表示画面300では、マップ150に重畳して、マップ150を複数の領域に分割した場合の各領域を或る時点までに通過したプレイヤキャラクタ102の数(通過数)が視認可能に表示される。たとえば、マップ150をグリッドに分割し、各グリッドに対応する領域を通過または当該領域に侵入(到達)したプレイヤキャラクタ102の数がカウントされる。ここでは、プレイ開始から或る時点までの間において、各経過時間に対応して記憶されるそれぞれの位置の情報が取得され、グリッドに対応する領域に含まれる位置の情報が有る場合に、カウント数が1加算される。このような処理が、複数のプレイヤの個別プレイ記録のそれぞれについて実行され、各グリッドについて通過数がカウントされる。
ただし、この実施例では、1つのプレイヤキャラクタ102が同じ領域を複数回通過したり、同じ領域に複数回侵入したりしても、カウントされるのは1回だけである。ただし、ゲームの種類によっては、延べ回数がカウントされてもよい。
各グリッドには、通過数に応じた色が付され、たとえば、ヒートマップが生成される。ヒートマップは、マップ150の前面に表示される。この実施例では、通過数が少ない方から多くなるに連れて、グリッドは、青色、緑色、黄色、橙色、赤色に色分けされる。つまり、通過数の大小(違い)が色の違いとして視認可能に表示される。ただし、図面の都合上、図8ではグレーの濃淡で通過数の大小を示してある。つまり、通過数が少ない程、グレーの輝度を高くし、通過数が多い程、グレーの輝度を低くしてある。
このように各グリッド(領域)の通過数をヒートマップで表示することにより、通過数の大小を一目で理解することができる。したがって、プレイ開始からの経過時間に従って、プレイヤがプレイヤキャラクタ102を移動させる経路の大まかな傾向を把握することができ、代表的な(通過数の多い)経路がゲームの開発者等の意図した経路に近いかどうかを確認することができる。たとえば、ゲームの開発者等が意図した経路と異なる経路を多数のプレイヤキャラクタ102が通過(移動)している場合には、プレイヤないしプレイヤキャラクタ102を誘導する要素を追加および修正することができる。
なお、この実施例では、或る時点までの各領域におけるプレイヤキャラクタ102の通過数をヒートマップで表示するようにしてあるが、通過数に限定される必要はない。たとえば、領域毎に発生したイベントの総数または領域毎に発生した所定のイベントの数などのイベントの発生頻度の違いをヒートマップで表示(色の違いで視認可能に表示)するようにしてもよい。ただし、このイベントも、個別プレイ記録に含まれるプレイヤキャラク
タ102の行動によって生じたイベントである。
図9はPC18の表示装置72に表示される遭遇数表示画面350の一例を示す図解図である。たとえば、ユーザが入力装置68を用いて、操作領域で、経過時間を指定するとともに、プレイヤキャラクタ102が所定のキャラクタと遭遇した遭遇数を表示することを選択すると、図9に示すような遭遇数表示画面350が表示装置72に表示される。
図9に示すように、遭遇数表示画面350では、マップ150に重畳して、所定のキャラクタと遭遇したプレイヤキャラクタ102(プレイヤ)の数が視認可能に表示される。ここでは、複数のプレイヤの個別プレイ記録のそれぞれから、プレイ開始から或る時点までの間において、所定のキャラクタと遭遇したイベントの情報および対応する位置の情報が取得され、所定のキャラクタ毎にプレイヤキャラクタ102の遭遇数がカウントされる。そして、所定のキャラクタ毎のカウント値に応じた棒グラフ352がマップ150上に描画される。ただし、各棒の画像は、プレイヤキャラクタ102が所定のキャラクタと遭遇した位置ないし領域に対応する位置に描画される。
このように、棒グラフ352を表示することにより、所定のキャラクタ毎に、プレイヤキャラクタ102と遭遇した数を把握することができるので、ゲームの開発者等が意図した遭遇の確率になっているかどうかを容易に確認することができる。たとえば、ゲームにおいてより見つけにくく設定したい(レアな)キャラクタの場合には、遭遇の確率を低くすることが考えられるし、より見つかりやすく設定したい(レアでない)キャラクタの場合には、遭遇の確率を高くすることが考えられる。具体的には、当該キャラクタの配置を変更したり、当該キャラクタを発見するためにゲーム内で提示するヒントの提示の仕方などを変更したりすることで、ゲームを意図した仕様に近づけることができる。
なお、図6~図9では、分かり易く示すために、プレイヤキャラクタ102の位置、移動軌跡、通過数または遭遇数のいずれかの情報がマップ150上に重畳して表示された場合について示してあるが、2つ以上の情報が選択的にマップ150上に表示されてもよい。
また、図示は省略するが、プレイヤキャラクタ102の位置、移動軌跡、通過数または遭遇数のいずれの情報も表示することを選択せずに、経過時間のみを選択した場合には、マップ150と操作領域と経過時間において発生したイベントのテキスト文が表示されたテキスト表示領域が表示装置72に表示される。かかる場合には、マップ150は表示されなくてもよい。
図10は図2に示したゲーム装置16のRAM32のメモリマップ500の限定しない一例を示す図解図である。RAM32は、プログラム記憶領域502およびデータ記憶領域504を含む。プログラム記憶領域502には、情報処理プログラムの一例であるゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム502a、通信プログラム502b、操作検出プログラム502c、画像生成プログラム502d、画像表示プログラム502e、プレイ記録記憶プログラム502fおよびプレイ記録送信プログラム502gなどを含む。
メイン処理プログラム502aは、この実施例のゲーム処理のメインルーチンを実行するためのプログラムである。通信プログラム502bは、他のゲーム装置16およびコンピュータと通信するためのプログラムである。操作検出プログラム502cは、入力装置38から入力された操作データを検出し、RAM32のデータ記憶領域504に記憶するためのプログラムである。
画像生成プログラム502dは、後述する画像生成データ504bを用いて、表示装置42に表示するゲーム画面などのゲーム画像に対応するゲーム画像データを生成するためのプログラムである。画像表示プログラム502eは、画像生成プログラム502dに従って生成されたゲーム画像データを表示装置42に出力するためのプログラムである。したがって、ゲーム画像が表示装置42に表示される。
プレイ記録記憶プログラム502fは、個別プレイ記録データ504eを取得し、データ記憶領域504に記憶するためのプログラムである。プレイ記録送信プログラム502gは、プレイ記録記憶プログラム502fに従って記憶された個別プレイ記録データ504eをサーバ12に送信するためのプログラムである。このとき、ゲーム装置16は、通信プログラム502bに従ってサーバ12と通信する。
図示は省略するが、プログラム記憶領域502には、ゲームに必要な音を生成および出力するためのプログラムおよびゲームデータをフラッシュメモリ34にセーブするためのプログラムなども記憶される。
データ記憶領域504には、操作データ記憶領域504aが設けられる。この操作データ記憶領域504aには、操作検出プログラム502cに従って検出された操作データが時系列に従って記憶される。ただし、CPU30の処理に使用された操作データは、操作データ記憶領域504aから消去される。
また、データ記憶領域504には、画像生成データ504b、ゲームデータ504c、経過時間データ504dおよび個別プレイ記録データ504eが記憶される。
画像生成データ504bは、ポリゴンデータおよびテクスチャデータなどのデータである。ゲームデータ504cは、この実施例のゲームをプレイした場合の途中データまたは結果データである。
経過時間データ504dは、この実施例のゲームをプレイした経過時間についてのデータである。上述したように、経過時間は、プレイ開始から現在までの総プレイ時間であるが、実際にプレイしていない時間を含まない。個別プレイ記録データ504eは、この実施例のゲームをプレイした場合に取得されるプレイ記録についてのデータである。プレイ記録は、プレイ開始からの経過時間に対応する、プレイヤキャラクタ102の位置の情報または/および発生したイベントの情報を含む。
図示は省略するが、データ記憶領域504には、ゲームプログラムの実行に必要な他のデータが記憶されたり、ゲームプログラムの実行に必要なカウンタ(タイマ)およびフラグが設けられたりする。
図11は図3に示したPC18のRAM62のメモリマップ600の限定しない一例を示す図解図である。RAM62は、プログラム記憶領域602およびデータ記憶領域604を含む。プログラム記憶領域602には、情報処理プログラムの一例である表示制御プログラムが記憶され、表示制御プログラムは、メイン処理プログラム602a、通信プログラム602b、操作検出プログラム602c、画像生成プログラム602d、画像表示プログラム602eおよび表示内容判断プログラム602fなどを含む。ただし、通信プログラム602bは、表示制御プログラムに含まれなくてもよい。
メイン処理プログラム602aは、この実施例の表示制御処理のメインルーチンを実行するためのプログラムである。通信プログラム602bは、他のコンピュータおよびゲーム装置16と通信するためのプログラムである。操作検出プログラム602cは、入力装
置68から入力された操作データを検出し、RAM62のデータ記憶領域604に記憶するためのプログラムである。
画像生成プログラム602dは、後述する画像生成データ604cを用いて、表示装置72に表示する各種の表示画像(200、250、300,350など)に対応する表示画像データを生成するためのプログラムである。画像表示プログラム602eは、画像生成プログラム602dに従って生成された表示画像データを表示装置72に出力するためのプログラムである。したがって、表示画像が表示装置72に表示される。表示内容判断プログラム602fは、マップ150に重畳して表示する内容(情報)を判断するためのプログラムである。
図示は省略するが、プログラム記憶領域602には、電子メール機能など、PC18が備える他の機能を実行するためのプログラムなども記憶される。
データ記憶領域604には、操作データ記憶領域604aおよび全プレイ記録データ記憶領域604bが設けられる。操作データ記憶領域604aには、操作検出プログラム602cに従って検出された操作データが時系列に従って記憶される。ただし、CPU60の処理に使用された操作データは、操作データ記憶領域604aから消去される。全プレイ記録データ記憶領域604bには、複数のプレイヤがこの実施例のゲームをそれぞれ独立してプレイした場合に取得された個別プレイ記録データ504eをプレイヤ毎に識別可能にしたデータ(全プレイ記録データ)が記憶される。
また、データ記憶領域604には、画像生成データ604c、マップデータ604d、指定時間データ604eおよび表示内容データ604fが記憶される。画像生成データ604cは、ポリゴンデータおよびテクスチャデータなどのデータである。マップデータ604dは、この実施例のゲームのマップ150の全体を上方から見た場合の画像データである。指定時間データ604eは、ユーザによって指定されたゲーム開始からの経過時間についてのデータである。表示内容データ604fは、マップ150に重畳して表示する内容(情報)を判断するためのデータである。たとえば、表示内容データ604fでは、プレイヤキャラクタ102の位置、プレイヤキャラクタ102の移動軌跡(移動経路)、各領域を通過したプレイヤキャラクタ102の数(通過数)の分布および所定のキャラクタと遭遇したプレイヤキャラクタ102の数(遭遇数)の各々について、表示するか表示しないかが記載される。
図示は省略するが、データ記憶領域604には、表示制御プログラムおよびPC18の他の機能の実行に必要な他のデータが記憶されたり、表示制御プログラムおよびPC18の他の機能の実行に必要なカウンタ(タイマ)およびフラグが設けられたりする。
図12ないし図14はゲーム装置16のCPU30のゲーム制御処理の限定しない一例を示すフロー図である。プレイヤがゲームをプレイすることを指示すると、図12に示すように、ゲーム装置16のCPU30は、ゲーム制御処理を開始し、ステップS1で、フラッシュメモリ34からセーブデータを読み出し、ステップS3で、経過時間を設定する。このステップS3では、CPU30は、セーブデータに含まれるゲームデータ504cおよび経過時間データ504dをRAM32のデータ記憶領域504に記憶する。ただし、ゲームを初めてプレイする場合には、セーブデータが記憶されていないため、ゲームデータ504cの初期値および経過時間データ504dの初期値(0時間0分0秒)が設定される。
次のステップS5では、図4に示したようなゲーム画面100を表示装置42に表示し、ステップS7で、操作入力を検出する。つまり、CPU30は、入力装置38からの操
作データを検出する。続いて、ステップS9では、セーブデータの保存が指示されたかどうかを判断する。ステップS9で“YES”であれば、つまり、セーブデータの保存が指示されれば、ステップS11で、セーブデータをフラッシュメモリ34に保存(更新)して、図14に示すステップS39に進む。
一方、ステップS9で“NO”であれば、つまり、セーブデータの保存が指示されていなければ、図13に示すように、ステップS13で、ゲーム処理を実行する。ここでは、プレイヤの操作に応じて、または、プレイヤの操作に拘わらず、ゲーム処理が実行される。たとえば、プレイヤの操作に応じて、プレイヤキャラクタ102を移動させるなどの任意の動作を実行させる。また、プレイヤの操作に拘わらず、敵キャラクタ104などのノンプレイヤキャラクタを移動させるなどの任意の動作を実行させる。さらに、プレイヤの操作に応じて、または、プレイヤの操作に拘わらず、プレイヤキャラクタ102に所定のアイテムを取得させる。また、プレイヤの操作に応じて、プレイヤキャラクタ102が移動されることにより、所定のキャラクタを出現(発生)させたり、所定のキャラクタに遭遇させたりする。これらは、ゲーム処理の一例であり、限定されるべきでない。
続くステップS15では、プレイヤキャラクタ102の行動によってイベントが発生したかどうかを判断する。ステップS15で“YES”であれば、つまり、プレイヤキャラクタ102の行動によってイベントが発生していれば、ステップS17で、経過時間に現在のフレームレートに応じた秒数を加算し、ステップS19で、経過時間に対応してイベントの情報およびプレイヤキャラクタ102の位置の情報をプレイ記録として記憶して、ステップS39に進む。つまり、ステップS19では、経過時間にイベントの情報および位置の情報を対応付けたプレイ記録に対応する個別プレイ記録データ504eがRAM32のデータ記憶領域504に記憶される。以下、プレイ記録を記憶する場合について同様である。一方、ステップS15で“NO”であれば、つまり、プレイヤキャラクタ102の行動によってイベントが発生していなければ、ステップS21で、プレイヤキャラクタ102が停止しているかどうかを判断する。たとえば、ステップS21では、CPU30は、プレイヤキャラクタ102の位置(座標)が一定時間同じである(座標が変化しない)場合に、プレイヤキャラクタ102が停止していると判断する。
ステップS21で“NO”であれば、つまり、プレイヤキャラクタ102が停止していなければ、図14に示すステップS31に進む。一方、ステップS21で“YES”であれば、つまり、プレイヤキャラクタ102が停止していれば、ステップS23で、プレイヤキャラクタ102が戦闘中または対話中かどうかを判断する。
ステップS23で“NO”であれば、つまり、プレイヤキャラクタ102が戦闘中および対話中でなければ、プレイヤキャラクタは停止しており、戦闘や会話といった行動もしていないことになるため、プレイヤが実際(実質的)にゲームをプレイしていない(プレイを中断している)と判断して、ステップS39に進む。
一方、ステップS23で“YES”であれば、つまり、プレイヤキャラクタ102が戦闘中または対話中であれば、プレイヤが実際にゲームをプレイしていると判断して、ステップS25で、経過時間に現在のフレームレートに応じた秒数を加算し、ステップS27で、経過時間が1秒経過したかどうかを判断する。ステップS27で“NO”であれば、つまり、経過時間が1秒経過していなければ、ステップS39に進む。一方、ステップS27で“YES”であれば、つまり、経過時間が1秒経過すれば、ステップS29で、経過時間とプレイヤキャラクタ102の位置の情報をプレイ記録として記憶し、ステップS39に進む。
図14に示すように、ステップS31では、プレイヤキャラクタ102が動作している
かどうかを判断する。ステップS31で“NO”であれば、つまり、プレイヤキャラクタ102が動作していなければ、プレイヤが実際にゲームをプレイしていないと判断して、ステップS39に進む。一方、ステップS31で“YES”であれば、つまり、プレイヤキャラクタ102が動作していれば、プレイヤが実際にゲームをプレイしていると判断して、ステップS33で、経過時間に現在のフレームレートに応じた秒数を加算し、ステップS35で、経過時間が1秒経過したかどうかを判断する。ステップS35で“NO”であれば、ステップS39に進む。一方、ステップS35で“YES”であれば、ステップS37で、経過時間と現在位置をプレイ記録として記憶して、ステップS39に進む。
ステップS39では、ゲーム終了かどうかを判断する。ここでは、プレイヤがゲーム終了を指示したり、ゲームオーバーになったりしたかどうかを判断する。ステップS39で“YES”であれば、つまり、ゲーム終了であれば、ゲーム制御処理を終了する。一方、ステップS39で“NO”であれば、つまり、ゲーム終了でなければ、ステップS41で、プレイ記録が有るかどうかを判断する。つまり、CPU30は、個別プレイ記録データ504eがRAM32に記憶されているかどうかを判断する。
ステップS41で“NO”であれば、つまり、プレイ記録が無ければ、図12に示したステップS5に戻る。一方、ステップS41で“YES”であれば、つまり、プレイ記録が有れば、ステップS43で、プレイ記録をサーバ12に送信してから、ステップS5に戻る。
なお、ステップS5-S43のスキャンタイムは1フレームであり、上述したように、フレームレートは可変であるため、ステップS17、S25およびS33で加算される時間は現在のフレームレートに応じた1フレームに相当する秒数である。
また、ゲームの種類によっては、ゲームのプレイ中に、プレイヤが指示することにより、ゲーム(ゲーム処理)が中断(ポーズ)されることもある。かかる場合にも、ステップS23では、プレイを中断していることが判断される。また、ゲーム中断中にゲームの再開が指示されると、ゲーム(ゲーム処理)が再開される。
図15および図16は、図3に示したPC18のCPU60の表示制御処理の限定しない一例を示すフロー図である。ユーザが表示制御処理の開始を指示すると、CPU60は、表示制御処理を開始し、ステップS71で、マップデータ604dを用いてマップ150を表示装置72に表示する。続くステップS73では、操作入力を検出する。つまり、CPU60は、入力装置68からの操作データを検出する。
そして、ステップS75では、経過時間が指定されたかどうかを判断する。ステップS75で“YES”であれば、つまり、経過時間が指定されれば、ステップS77で、指定された経過時間を設定して、ステップS83に進む。つまり、ステップS77では、ユーザによって指定された経過時間に対応する指定時間データ604eがRAM62のデータ記憶領域604に記憶(更新)される。
一方、ステップS75で“NO”であれば、つまり、経過時間が指定されていなければ、ステップS79で、表示内容が変更されたかどうかを判断する。ステップS79で“NO”であれば、つまり、表示内容が指定されていなければ、ステップS83に進む。一方、ステップS79で“YES”であれば、つまり、表示内容が指定されれば、ステップS81で、表示内容を設定して、ステップS83に進む。つまり、ステップS81では、ユーザによって指定された表示内容に対応する表示内容データ604fがRAM62のデータ記憶領域604に記憶(更新)される。
ステップS83では、位置を表示するかどうかを判断する。ここでは、CPU60は、表示内容データ604fを参照して、プレイヤキャラクタ102の位置を表示することが選択されているかどうかを判断する。このことは、後述するステップS87、S91、S95についても同じである。
ステップS83で“NO”であれば、つまり、位置を表示しない場合には、図16に示すステップS87に進む。一方、ステップS83で“YES”であれば、つまり、位置を表示する場合には、ステップS85で、設定された経過時間における各プレイヤキャラクタ102の位置をマップ150上に表示してから、ステップS87に進む。
図16に示すように、ステップS87では、移動軌跡252を表示するかどうかを判断する。ステップS87で“NO”であれば、つまり、移動軌跡252を表示しない場合には、ステップS91に進む。一方、ステップS87で“YES”であれば、つまり、移動軌跡252を表示する場合には、ステップS89で、プレイ開始から設定された経過時間までの各プレイヤキャラクタ102の移動軌跡252をマップ150上に表示してから、ステップS91に進む。
ステップS91では、通過数の分布を表示するかどうかを判断する。ステップS91で“NO”であれば、つまり、通過数の分布を表示しない場合には、ステップS95に進む。一方、ステップS91で“YES”であれば、つまり、通過数の分布を表示する場合には、ステップS93で、プレイ開始から設定された経過時間までに各領域を通過したプレイヤキャラクタ102の数(通過数)をヒートマップでマップ150上に表示してから、ステップS95に進む。
ステップS95では、遭遇数を表示するかどうかを判断する。ステップS95で“NO”であれば、つまり、遭遇数を表示しない場合には、ステップS99に進む。一方、ステップS95で“YES”であれば、つまり、遭遇数を表示する場合には、ステップS97で、プレイ開始から設定された経過時間までに所定のキャラクタに遭遇したプレイヤキャラクタ102の数を棒グラフ352でマップ150上に表示してから、ステップS99に進む。
ステップS99では、終了かどうかを判断する。ここでは、CPU60は、ユーザから終了の指示が入力されたかどうかを判断する。ステップS99で“NO”であれば、つまり、終了でなければ、図15に示したステップS71に戻る。一方、ステップS99で“YES”であれば、つまり、終了であれば、表示制御処理を終了する。
この実施例によれば、複数のプレイヤが所定のゲームをそれぞれ独立してプレイした場合のプレイ記録を、プレイ開始からの経過時間を揃えて表示するので、多数のプレイヤがプレイした情報を活用し易く提示できる。
また、この実施例によれば、マップ上に、プレイ開始からユーザによって設定された経過時間までの各プレイヤキャラクタの移動軌跡を表示するので、プレイ開始からどの程度の時間でプレイヤキャラクタがどの場所まで到達し、どの場所で詰まる傾向があるかということを視認することができる。
なお、この実施例では、プレイ開始から設定された経過時間までに所定のキャラクタと遭遇したプレイヤキャラクタの数を棒グラフでマップ上に表示するようにしたが、これに限定される必要はない。たとえば、所定のキャラクタに遭遇したことに代えて、または、所定のキャラクタに遭遇したことと共に、所定のアイテムを取得したプレイヤキャラクタの数をマップ上に表示するようにしてもよい。たとえば、所定のキャラクタに遭遇したプ
レイヤキャラクタの数と、所定のアイテムを取得したプレイヤキャラクタの数とは異なる色の棒グラフで表現される。
また、この実施例では、設定された経過時間において各プレイヤがプレイするゲームにおいて発生したイベントに対応するイベントの情報をテキスト文で表示するようにしたが、イベントの情報に代えて、または、イベントの情報と共に、各プレイヤのプレイヤキャラクタのステータスの情報を表示するようにしてもよい。
さらに、この実施例では、各ゲーム装置からサーバにプレイ記録を送信し、サーバでプレイ記憶を管理するようにしたが、サーバを省略し、PCで各ゲームからのプレイ記録を管理するようにしてもよい。
さらにまた、この実施例では、テストプレイする場合について説明したが、発売されたゲームソフトにおいても、本発明を適用し、各プレイヤのプレイ記憶を収集し、例えば、修正されるゲームプログラムまたは追加されるゲームプログラムに反映することができる。
また、この実施例では、プレイ開始からの経過時間をプレイ経過時間として、プレイ開始からの経過時間に対応するプレイヤキャラクタの位置の情報(イベントの情報が追加される場合もある)を個別プレイ記録として取得するようにしたが、これに限定される必要はない。プレイ経過時間は、ゲーム内の所定のポイント(進行状況)からの経過時間とすることが可能であり、たとえば、或る場所(位置)または或るタイミングである中間ポイントからの経過時間をプレイ経過時間として、当該中間ポイントの後における個別プレイ記録を取得するようにしてもよい。このようにした場合には、或る中間ポイントの後における各プレイヤのプレイ記録を俯瞰的に見ることができる。たとえば、ゲームの中盤に登場する敵のボスキャラクタを倒した後に、または、或る町(場所)に到達した後に、各プレイヤがどのように移動したかを知ることができる。
なお、この実施例では、ゲームプレイに据置型のゲーム装置を用いる場合について説明したが、デスクトップPCやアーケードゲーム装置のような他の機器を用いることができることは言うまでもない。また、ゲームの種類によっては、携帯型のゲーム装置または携帯端末を用いることもできるし、ノートPC、PDA、タブレットPCなどの他の携帯端末を用いることもできる。
また、この実施例では、PCを用いて、PCの表示装置にプレイ記録を可視可能に表示するようにしたが、PCに代えて、ゲーム装置自体をゲームの開発機材として利用することも可能である。かかる場合には、プレイ記録は、ゲーム装置に内蔵または接続された表示装置に可視可能に表示される。
また、この実施例で示したゲームの内容、ゲーム装置およびPCの構成は単なる例示であり、限定されるべきでなく、実際の製品に応じて適宜変更可能である。
さらに、同じ効果(結果)が得られる場合には、フロー図に示した各ステップの順番は適宜変更されてもよい。