(57)【特許請求の範囲】
【請求項１】
プレイヤーによる操作を検知するための検知部、
前記プレイヤーに提示すべき情報を出力するための出力部、
第１のゲームを実現するための第１のゲームプログラムならびに第２のゲームを実現するための第２のゲームプログラムが記憶される記憶部、
前記記憶部に記憶された第１のゲームプログラムに含まれる指令と、前記記憶部に記憶された第２のゲームプログラムに含まれる指令と、を、並行に実行する実行部
前記実行部による前記第２のゲームプログラムの実行に係る統計情報を報告する報告部
を備え、
前記実行部は、
（ａ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、前記出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、当該出力指令を無視する
ことを特徴とするゲーム装置。
【請求項２】
請求項１に記載のゲーム装置であって、
前記第１のゲームプログラムと、前記第２のゲームプログラムと、は、互いに異なるアドレスに配置され、
前記出力指令は、所定のライブラリ関数を呼び出す指令であり、
前記実行部は、前記ライブラリ関数が呼び出されると、当該関数の呼び出し元のアドレスに基づいて、当該出力指令が、前記第１のゲームプログラムと、前記第２のゲームプログラムと、のいずれに含まれるものかを判定する
ことを特徴とするゲーム装置。
【請求項３】
請求項１または２に記載のゲーム装置であって、
前記出力部は、モニターの画面に画像を表示することにより、前記プレイヤーに提示すべき情報を出力し、
前記第１のゲームプログラムは、第１のサーバ装置と通信することにより、前記第１のゲームを実現させ、
前記第２のゲームプログラムは、第２のサーバ装置と通信することにより、前記第２のゲームを実現させ、
前記報告部は、前記統計情報を前記第２のサーバ装置に送信することにより、当該統計情報を報告する
ことを特徴とするゲーム装置。
【請求項４】
請求項３に記載のゲーム装置であって、
前記実行部は、前記第２のゲームプログラムの実行において実行すべき指令が前記第２のゲームプログラムに含まれる出力指令である場合、前記第１のゲームプログラムの実行において前記第１のゲームプログラムに含まれる出力指令により、前記画面に情報が表示されるまで待機し、前記第１のゲームプログラムに含まれる出力指令の実行が終了した後に、前記第２のゲームプログラムの次の指令を実行することによって、前記第２のゲームプログラムに含まれる出力指令を無視する
ことを特徴とするゲーム装置。
【請求項５】
請求項３または４に記載のゲーム装置であって、
前記実行部は、実行すべき指令が、前記第１のゲームプログラムに含まれ、前記第１のゲームを中断すべき旨の中断指令である場合、前記出力部を制御して前記報告部により報告されるべき前記統計情報を前記モニターの画面に表示させる
ことを特徴とするゲーム装置。
【請求項６】
請求項４または５に記載のゲーム装置であって、
前記統計情報には、前記ゲーム装置と、前記第２のサーバ装置と、の間の通信品質に係る情報が含まれる
ことを特徴とするゲーム装置。
【請求項７】
請求項１から６のいずれか１項に記載のゲーム装置であって、
前記記憶部は、コンピュータ読取可能な情報記録媒体、もしくは、前記第１のゲームプログラムと前記第２のゲームプログラムとを記録したコンピュータ読取可能な情報記録媒体から読み出された当該第１のゲームプログラムと当該第２のゲームプログラムとが記憶されるランダムアクセスメモリである
ことを特徴とするゲーム装置。
【請求項８】
プレイヤーによる操作を検知するための検知部、前記プレイヤーに提示すべき情報を出力するための出力部、第１のゲームを実現するための第１のゲームプログラムならびに第２のゲームを実現するための第２のゲームプログラムが記憶される記憶部、実行部、報告部を有するゲーム装置を制御する制御方法であって、
前記実行部が、前記記憶部に記憶された前記第１のゲームプログラムに含まれる指令と、前記記憶部に記憶された前記第２のゲームプログラムに含まれる指令と、を、並行に実行する実行工程、
前記報告部が、前記実行工程による前記第２のゲームプログラムの実行に係る統計情報を報告する報告工程
を備え、
前記実行工程では、
（ａ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記実行部は、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、前記実行部は、前記出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記実行部は、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、前記実行部は、当該出力指令を無視する
ことを特徴とする制御方法。
【請求項９】
システムプログラムと、第１のゲームを実現するための第１のゲームプログラムと、第２のゲームを実現するための第２のゲームプログラムと、が記録されるコンピュータ読取可能な情報記録媒体であって、
前記システムプログラムは、プレイヤーによる操作を検知するための検知部、前記プレイヤーに提示すべき情報を出力するための出力部を備えるコンピュータを、
前記第１のゲームプログラムに含まれる指令と、前記第２のゲームプログラムに含まれる指令と、を、前記情報記録媒体から読み出して、並行に実行する実行部、
前記実行部による前記第２のゲームプログラムの実行に係る統計情報を報告する報告部、
として機能させ、
前記実行部は、
（ａ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、前記出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、当該出力指令を無視する
ように機能させることを特徴とする情報記録媒体。
【請求項１０】
システムプログラムと、第１のゲームを実現するための第１のゲームプログラムと、第２のゲームを実現するための第２のゲームプログラムと、からなるテストプレイ用プログラムであって、
前記システムプログラムは、プレイヤーによる操作を検知するための検知部、前記プレイヤーに提示すべき情報を出力するための出力部を備えるコンピュータを、
前記第１のゲームプログラムに含まれる指令と、前記第２のゲームプログラムに含まれる指令と、を、並行に実行する実行部、
前記実行部による前記第２のゲームプログラムの実行に係る統計情報を報告する報告部、
として機能させ、
前記実行部は、
（ａ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、前記第１のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、前記出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記プレイヤーによる操作を検知すべき旨の検知指令である場合、前記検知部を制御して前記プレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、前記第２のゲームプログラムに含まれ、前記情報を出力すべき旨の出力指令である場合、当該出力指令を無視する
ように機能させることを特徴とするテストプレイ用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告するのに好適なゲーム装置、その制御方法、これらをコンピュータにて実現するプログラムを記録したコンピュータ読取可能な情報記録媒体、ならびに、当該プログラムからなるテストプレイ用プログラムに関する。
【背景技術】
【０００２】
従来から、ネットワーク通信機能を持ったゲーム装置などを用いた通信ゲームが提供されている。このような通信ゲームを快適に提供できるか否かは、プレイヤーが利用している通信経路の通信品質に大きく依存する。
【０００３】
このほか、同じ種類のゲーム装置であっても、製造時期やオプションのハードウェアを装着しているか否かが異なることも多い。このような場合には、通信ゲームやスタンドアロンのゲームを快適にプレイできるか否かは、プレイヤーの利用するハードウェア資源の状況に依存する。
【０００４】
このような状況下で、ゲームを本格的に提供する前にβテストを行ったり、テスト用のゲームプログラムを提供して実行させたりして、ゲームを実行する環境の統計情報を分析し、快適なゲームのプレイが可能であるか否かを一般人にテストさせることもある。このようなテストプレイの技術については、下記の特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３１２０６２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プレイヤーがあるゲームのプレイを行いながら、他のゲームを同時にテストプレイすることは、通常できない。したがって、あるゲームのプレイと他のゲームのテストプレイを同時に行いたい場合には他のテストプレイヤーを用意しなければならない。一方で、テストプレイに参加できる人数には、限界がある。
【０００７】
また、ゲームの本格的な提供がなされる前にプレイヤーがテストプレイに参加したために、かえってゲームに対する興味を低減させてしまうという問題もある。
【０００８】
本発明は、上記のような課題を解決するもので、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告するのに好適なゲーム装置、その制御方法、これらをコンピュータにて実現するプログラムを記録したコンピュータ読取可能な情報記録媒体、ならびに、当該プログラムからなるテストプレイ用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１０】
本発明の第１の観点に係るゲーム装置は、検知部、出力部、記憶部、実行部、報告部を備え、以下のように構成する。
【００１１】
まず、検知部は、プレイヤーによる操作を検知するための構成要素である。
【００１２】
典型的には、検知部は、ゲーム用のコントローラにより実現される。当該コントローラには、各種のボタンやスイッチ、ジョイスティック等が設けられており、検知部は、これらのボタン等が、プレイヤーにより操作されている状態を検知する。
【００１３】
このほか、動画撮影が可能な可視光用のカメラ、赤外線センサ、赤外線カメラ、超音波センサ等を利用して、プレイヤーの身振りや姿勢の変化を操作入力として利用する態様に本発明を適用することも可能である。
【００１４】
一方、出力部は、プレイヤーに提示すべき情報を出力するための構成要素である。
【００１５】
典型的には、出力部は、テレビジョン装置や液晶ディスプレイ、タッチスクリーンなどの表示装置により実現される。この場合、プレイヤーに提示すべき情報は、文字や図形などを含む画像によって提示される。
【００１６】
このほか、出力部として、スピーカやヘッドフォンなどの音声出力装置を採用することとしても良い。この場合、プレイヤーに提示すべき情報は、楽曲や言葉を含む音声によって提示される。
【００１７】
さらに、これらを組み合わせることとしても良い。
【００１８】
さらに、記憶部には、第１のゲームを実現するための第１のゲームプログラムならびに第２のゲームを実現するための第２のゲームプログラムが記憶される。
【００１９】
本発明では、プレイヤーは、自らの意思で第１のゲームをプレイする。一方、第２のゲームは、テストプレイの対象となるゲームであり、プレイヤーは、第２のゲームをプレイしていることを意識する必要はない。
【００２０】
さらに、実行部は、記憶部に記憶された第１のゲームプログラムに含まれる指令と、記憶部に記憶された第２のゲームプログラムに含まれる指令と、を、並行に実行する。
【００２１】
典型的には、実行部は、コンピュータにおいて、ＣＰＵ（Central Processing Unit）がＲＡＭ（Random Access Memory）に第１のゲームプログラムと第２のゲームプログラムとをロードして、これらを並行に実行することにより実現される。
【００２２】
典型的には、これらのプログラムに含まれる指令は、ＲＡＭとの間の読み書きを行う指令や、各種の条件分岐を行う指令のほか、サブルーチンの呼び出し指令やシステムコールの呼び出し指令等がある。
【００２３】
さらに、報告部は、実行部による第２のゲームプログラムの実行に係る統計情報を報告する。
【００２４】
ここで、統計情報とは、たとえば、第２のゲームプログラムを実行している際にサブルーチンやシステムコールが、その種類ごとにどの程度の頻度で呼び出されたかなどの情報としても良いし、後述するように、サーバ装置等との通信状況などを統計情報として利用することとしても良い。
【００２５】
ここで、実行部は、
（ａ）実行すべき指令が、第１のゲームプログラムに含まれ、プレイヤーによる操作を検知すべき旨の検知指令である場合、検知部を制御してプレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、第１のゲームプログラムに含まれ、情報を出力すべき旨の出力指令である場合、出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、第２のゲームプログラムに含まれ、プレイヤーによる操作を検知すべき旨の検知指令である場合、検知部を制御してプレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、第２のゲームプログラムに含まれ、情報を出力すべき旨の出力指令である場合、当該出力指令を無視する。
【００２６】
典型的には、検知指令は、コントローラの状態を調べるためのサブルーチン呼び出し指令もしくはシステムコール呼び出し指令により実現され、出力指令は、モニターの画面に画像を表示するためもしくはスピーカ等に音声を出力するためのサブルーチン呼び出し指令もしくはシステムコール呼び出し指令により実現される。
【００２７】
すなわち、本発明においては、プレイヤーに対しては、第１のゲームにおける情報のみが提示される。したがって、プレイヤーは、第２のゲームの進行状況を知得することはできない。
【００２８】
しかしながら、プレイヤーによる操作は、第１のゲームと第２のゲームの両方に与えられるので、プレイヤーが第１のゲームをプレイしているのと並行して、その裏側で、プレイヤーは第２のゲームを同時にプレイしていることになる。
【００２９】
このため、第１のゲームの操作体系と第２のゲームの操作体系とを類似するものとしておけば、第２のゲームのテストプレイが実行されることになるのである。
【００３０】
また、第１のゲームの操作体系と第２のゲームの操作体系とが類似しないときであっても、プレイヤーが誤った操作を行った際に、第２のゲームプログラムが暴走しないことを確認する等のテストを行うことが可能である。
【００３１】
第２のゲームのテストプレイの様子は、統計情報として収集され、この統計情報は、第２のゲームプログラムのデバッグや、プレイヤーが所有するハードウェアなどのプレイ環境が第２のゲームプログラムを実行するだけの性能を有するかなどの判定に利用することができる。
【００３２】
本発明によれば、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告することができるようになる。
【００３３】
また、本発明のゲーム装置は、以下のように構成することができる。
【００３４】
すなわち、第１のゲームプログラムと、第２のゲームプログラムと、は、互いに異なるアドレスに配置される。
【００３５】
一般に、コンピュータにおいては、プログラムはハードディスク等の情報記録媒体からＲＡＭ内の異なる領域に読み出され、ＣＰＵは、実行すべき命令を読み出す領域を適宜切り替えることによって、プログラムを並行に動作させる。
【００３６】
さらに、出力指令は、所定のライブラリ関数を呼び出す指令である。
【００３７】
上記のように、サブルーチン呼び出し指令やシステムコール呼び出し指令は、ライブラリ関数の形式により実装されるのが一般的である。
【００３８】
そして、実行部は、ライブラリ関数が呼び出されると、当該関数の呼び出し元のアドレスに基づいて、当該出力指令が、第１のゲームプログラムと、第２のゲームプログラムと、のいずれに含まれるものかを判定する。
【００３９】
ライブラリ関数呼び出しの際には、ＣＰＵは、ライブラリ関数に渡すべき引き数をスタックに積み、さらに、次に実行すべき命令のアドレスを表すプログラムカウンタの値をスタックに積んでから、ライブラリ関数のアドレスをプログラムカウンタに代入する。したがって、スタックの中を調べれば、ライブラリ関数の呼び出し元のアドレスが判明する。
【００４０】
本発明では、呼び出し元のアドレスが、第１のゲームプログラムをロードした領域に含まれるものか、それとも第２のゲームプログラムをロードした領域に含まれるものか、に基づいて、当該出力指令が、いずれのゲームプログラムから呼び出されたものかを判定するのである。
【００４１】
本発明によれば、コンピュータの関数呼び出し機構を利用して、出力指令を実行しようとしているゲームプログラムがいずれであるかを容易に判定することができる。
【００４２】
また、本発明は、以下のように構成することができる。
【００４３】
すなわち、出力部は、モニターの画面に画像を表示することにより、プレイヤーに提示すべき情報を出力する。
【００４４】
上記のように、出力部によって出力されるのは、第１のゲームプログラムの情報のみである。したがって、モニターの画面には、第１のゲームの情報のみが表示されることになる。プレイヤーがプレイしようとしているゲームは第１のゲームであり、第２のゲームを、プレイヤーには見えない形式で進行させるためである。
【００４５】
一方、第１のゲームプログラムは、第１のサーバ装置と通信することにより、第１のゲームを実現させ、第２のゲームプログラムは、第２のサーバ装置と通信することにより、第２のゲームを実現させる。
【００４６】
本実施形態は、第１のゲーム、第２のゲームとも、いわゆる通信対戦ゲームに相当するものを想定しており、異なる通信相手を採用することにより、外部からゲーム装置が受信したパケットの振り分けを行う。
【００４７】
そして、報告部は、統計情報を第２のサーバ装置に送信することにより、当該統計情報を報告する。
【００４８】
上記のように、第２のゲームのテストプレイの様子が統計情報として収集されることになる。この統計情報には、上記のような情報のほか、当該ゲーム装置と第２のサーバ装置との間の通信状況、たとえば、パケットの送受に要する時間や通信経路のホップ数、パケット消失やパケット誤りの生じる割合等、プレイヤーが利用している通信環境に関する情報が含まれる。これによって、通信環境が第２のゲームプログラムを実行するだけの性能を有するかなどの判定に利用することができる。
【００４９】
また、ゲーム装置と第２のサーバとの間で通信が成立するため、第２のサーバで動作するサーバプログラムをデバッグしたり、第２のサーバ自体の計算能力や通信能力を検証することができる。
【００５０】
本発明によれば、第１の通信対戦ゲームをプレイヤーにプレイさせる裏側で第２の通信対戦ゲームを進行させ、当該プレイヤーが利用しているプレイ環境で第２の通信対戦ゲームを実行できるかどうかをテストしたり検証したりできるようになる。
【００５１】
また、本発明のゲーム装置において、実行部は、第２のゲームプログラムの実行において実行すべき指令が第２のゲームプログラムに含まれる出力指令である場合、第１のゲームプログラムの実行において第１のゲームプログラムに含まれる出力指令により、画面に情報が表示されるまで待機し、第１のゲームプログラムに含まれる出力指令の実行が終了した後に、第２のゲームプログラムの次の指令を実行することによって、第２のゲームプログラムに含まれる出力指令を無視するように構成することができる。
【００５２】
上記のように、出力指令は、典型的には画面への画像の表示指令である。画像を画面に表示する際には、ちらつきを防止するため、垂直同期割込周期ごとに画像の転送を行う必要がある。そのため、ゲームプログラムは、表示すべき画像を生成した後、垂直同期割込が生じるまで待機するのが通例である。
【００５３】
本発明は、垂直同期割込の待機を、プログラムの制御の切り替えに利用するものである。
【００５４】
すなわち、第２のゲームプログラムが画像を画面に表示しようとして垂直同期割込を待機すると、第１のゲームプログラムに制御が移る。
【００５５】
その後、第１のゲームプログラムにおいて画像を画面に表示しようとして垂直同期割込を待機し、垂直同期割込が生じてから画像を転送して画面に表示させると、第２のゲームプログラムに制御が戻る。
【００５６】
この際に、第２のゲームプログラムにおいては、画像の転送指令は実行せずに、その次の指令を実行する。このようなプログラムの制御の切り替えによって、第２のゲームプログラムによる画面表示は行わないこととするのである。
【００５７】
本発明によれば、ゲームプログラムにおいて、垂直同期割込待ちなど、特定の出力指令が行われる際にプログラムの制御の切り替えを行うことにより、プログラムの並行実行を簡易に行うことができるようになる。
【００５８】
また、本発明のゲーム装置において、実行部は、実行すべき指令が、第１のゲームプログラムに含まれ、第１のゲームを中断すべき旨の中断指令である場合、出力部を制御して報告部により報告されるべき統計情報をモニターの画面に表示させるように構成することができる。
【００５９】
中断指令とは、たとえば、第１のゲームの状態を保存して第１のゲームそのものを終了したり、第１のゲームのタイトル表示に戻ったりするような状況である。このような状況でプレイヤーに対して、第２のゲームを告知、広告すると、プレイヤーの興味を惹くことができる。
【００６０】
そこで本発明においては、プレイヤーのプレイ環境において第２のゲームがプレイ可能か否かの判定結果を提示することにより、プレイヤーに第２のゲームを紹介するのである。
【００６１】
本発明によれば、第１のゲームをプレイしたプレイヤーのプレイ環境に応じて、当該プレイヤーに第２のゲームを紹介することができるようになる。
【００６２】
また、本発明のゲーム装置において、統計情報には、ゲーム装置と、第２のサーバ装置と、の間の通信品質に係る情報が含まれるように構成することができる。
【００６３】
上記のように、通信品質としては、ゲーム装置と第２のサーバ装置の間の通信遅延、ホップ数、パケットの誤り率等の情報が含まれる。
【００６４】
本発明によれば、プレイヤーやゲームの提供者は、統計情報に基づいて、ゲーム装置のプレイ環境や第２のサーバ装置の能力等を知得し、適切に調整することが可能となる。
【００６５】
また、本発明のゲーム装置において、記憶部は、コンピュータ読取可能な情報記録媒体、もしくは、第１のゲームプログラムと第２のゲームプログラムとを記録したコンピュータ読取可能な情報記録媒体から読み出された第１のゲームプログラムと第２のゲームプログラムとが記憶されるランダムアクセスメモリであるように構成することができる。
【００６６】
本発明は、上記発明の好適実施形態に係るものであり、各プログラムが記録される媒体や装置を明らかにするものである。
【００６７】
本発明のその他の観点に係る制御方法は、プレイヤーによる操作を検知するための検知部、プレイヤーに提示すべき情報を出力するための出力部、第１のゲームを実現するための第１のゲームプログラムならびに第２のゲームを実現するための第２のゲームプログラムが記憶される記憶部、実行部、報告部を有するゲーム装置を制御する制御方法であって、実行工程、報告工程を備える。
【００６８】
ここで、実行工程では、実行部が、記憶部に記憶された第１のゲームプログラムに含まれる指令と、記憶部に記憶された第２のゲームプログラムに含まれる指令と、を、並行に実行する。
【００６９】
一方、報告工程では、報告部が、実行工程による第２のゲームプログラムの実行に係る統計情報を報告する。
【００７０】
さらに、実行工程では、
（ａ）実行すべき指令が、第１のゲームプログラムに含まれ、プレイヤーによる操作を検知すべき旨の検知指令である場合、実行部は、検知部を制御してプレイヤーによる操作を検知し、
（ｂ）実行すべき指令が、第１のゲームプログラムに含まれ、情報を出力すべき旨の出力指令である場合、実行部は、出力部を制御して当該情報を出力し、
（ｃ）実行すべき指令が、第２のゲームプログラムに含まれ、プレイヤーによる操作を検知すべき旨の検知指令である場合、実行部は、検知部を制御してプレイヤーによる操作を検知し、
（ｄ）実行すべき指令が、第２のゲームプログラムに含まれ、情報を出力すべき旨の出力指令である場合、実行部は、当該出力指令を無視する。
【００７１】
本発明のその他の観点に係るコンピュータ読取可能な情報記録媒体は、コンピュータを、上記のゲーム装置の各部として機能させるプログラムを記録するように、構成する。
【００７２】
また、上記の情報記録媒体は、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体とすることができる。
【００７３】
本発明のその他の観点に係るテストプレイ用プログラムは、上記のシステムプログラム、第１のゲームプログラム、第２のゲームプログラムからなるように構成する。
【００７４】
各プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００７５】
本発明によれば、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告するのに好適なゲーム装置、その制御方法、これらをコンピュータにて実現するプログラムを記録したコンピュータ読取可能な情報記録媒体、ならびに、当該プログラムからなるテストプレイ用プログラムを提供することができる。
【図面の簡単な説明】
【００７６】
【図１】典型的な情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係るゲーム装置とサーバ装置との関係を示す説明図である。
【図３】本実施形態に係るゲーム装置の概要構成を示す模式図である。
【図４】単一のゲームプログラムを実行する際のゲーム処理の制御の流れを示すフローチャートである。
【図５】本実施形態に係る２つのゲームプログラムの制御の流れを示すフローチャートである。
【図６】出力処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００７７】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
【００７８】
したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００７９】
（情報処理装置）
図１は、プログラムを実行することにより、本実施形態のゲーム装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００８０】
本図に示す情報処理装置１０１は、携帯可能なマルチメディア端末であり、ＣＰＵ（Central Processing Unit）１０２、ＲＡＭ（Random Access Memory）１０３、ＲＯＭ（Read Only Memory）１０４、入力装置１０５、画像処理部１０６、液晶ディスプレイ１０７、音声処理部１０８、ヘッドホン１０９、カセットリーダ１１０、ＲＯＭカセット１１１、外部メモリ１１２、ＲＴＣ（Real Time Clock）１１３、無線ＬＡＮ（Local Area Network）インターフェース１１４、カメラ１１５を備える。
【００８１】
本実施形態に係るプログラムが記録されたＲＯＭカセット１１１を、情報処理装置１０１のカセットリーダ１１０に装着することによって、本実施形態に係るゲーム装置が実現される。
【００８２】
ここで、ＣＰＵ  １０２は、情報処理装置１０１の各部を制御するとともに、各種の演算処理や判断処理を行う。
【００８３】
情報処理装置１０１に電源が投入されると、ＣＰＵ  １０２は、ＲＯＭ  １０４に記録されたＩＰＬ（Initial Program Loader）を実行し、その処理の過程で、カセットリーダ１１０を介して接続されたＲＯＭカセット１１１に記録されたプログラムに処理を移行する。
【００８４】
情報処理装置１０１で実行されるゲームプログラムやマルチメディア情報再生プログラムは、ＲＯＭカセット１１１によって提供されるのが一般的であるが、ＲＯＭ  １０４内にあらかじめ用意しておくことも可能である。
【００８５】
また、ＲＯＭ  １０４内には、ＢＩＯＳ（Basic Input Output System）と呼ばれるプログラム群が用意されており、入力装置１０５や画像処理部１０６、音声処理部１０８の制御を行うことができる。
【００８６】
ＲＡＭ  １０３は、一時的な情報を記憶するための領域であり、外部メモリ１１２は、不揮発な情報を記憶するための領域である。外部メモリ１１２としては、ハードディスクなど、主として情報処理装置１０１に内蔵されるもののほか、各種のメモリカードなど、情報処理装置１０１に抜挿されるものを利用しても良い。
【００８７】
入力装置１０５は、各種のボタンやキーボード、マウス、ジョイスティック等により実現されるのが一般的であるが、液晶ディスプレイ１０７と一体に形成されたタッチスクリーンを入力装置１０５として利用することも可能である。
【００８８】
画像処理部１０６は、ＣＰＵ  １０２の制御の下、各種の文字情報や画像情報を液晶ディスプレイ１０７に表示させるものであり、一般には、垂直同期割込周期（典型的には、３０分の１秒や６０分の１秒程度である。）ごとに、ＲＡＭ  １０３内に用意されたフレームバッファに記憶された画素情報を液晶ディスプレイ１０７の各画素に反映させる。
【００８９】
ユーザからの指示入力は、液晶ディスプレイ１０７に表示されたカーソルを入力装置１０５の移動ボタン操作により移動して、所望のメニュー項目にカーソルを合わせ、決定ボタン操作によって当該メニュー項目を選択するのが一般的であるが、タッチスクリーンを利用する場合にはカーソルは不要である。また、入力装置１０５の各ボタンに割り当てられる機能があらかじめ決まっている場合には、液晶ディスプレイ１０７に対する表示は、必ずしも必要ない。
【００９０】
音声処理部１０８は、ＲＡＭ  １０３やＲＯＭ  １０４、ＲＯＭカセット１１１、外部メモリ１１２に用意された音声データをヘッドホン１０９に出力する。音声データとしては、音声の波形データをディジタル化したＰＣＭ（Pulse Code Modulation）データや、ＰＣＭデータを圧縮してサイズを小さくしたＭＰ３（MPeg audio layer-3）データ等を利用することが可能であるほか、ＭＩＤＩ（Music Instruction Data Interface）データのように、音高、音長、音量、音色の種類を定義するデータを用意し、これにしたがって、あらかじめ用意された音源波形データを適宜選択・変形して再生する手法を採用しても良い。
【００９１】
ＲＴＣ  １１３は、現在の日時を計測するもので、情報処理装置１０１を初めて利用する際に時刻合わせを行うのが一般的であるが、無線ＬＡＮインターフェース１１４を介してＮＴＰ（Network Time Protocol）サーバに接続することで、自動的に時刻合わせを行うような態様を採用することも可能である。
【００９２】
また、アラーム割込を発生させる機能を持つＲＴＣ  １１３もある。設定された時刻になるとアラーム割込が発生して、ＣＰＵ  １０２は、現在実行中のプログラムを一時中断し、あらかじめ設定された割込ハンドラを実行してから、中断したプログラムを再開する。
【００９３】
無線ＬＡＮインターフェース１１４は、自宅や会社、街角に用意された無線ＬＡＮアクセスポイントを介してインターネットに接続したり、近傍に配置された他の情報処理装置１０１と、アドホックに通信路を確立し、１対１で通信を行うなどが可能である。
【００９４】
カメラ１１５は、情報処理装置１０１によってディジタルカメラの機能を実現するものであり、ＣＣＤ（Charge Coupled Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）撮像素子などの技術を適用することが可能である。撮影された画像は、一時的にＲＡＭ  １０３に展開された後、外部メモリ１１２等に保存される。
【００９５】
このほか、ビジネス用コンピュータ、携帯電話、ＰＤＡ（Personal Data Assistant）、携帯ゲーム装置、多機能テレビジョン装置、ＤＶＤ（Digital Versatile Disc）プレイヤー、携帯音楽プレイヤーなどを、本発明のゲーム装置が実現される情報処理装置として採用することもできる。
【００９６】
（ゲーム装置等の構成）
本実施形態においては、ＲＯＭカセット１１１に第１のゲームプログラムと第２のゲームプログラムの２つのプログラムが記録されており、これらのゲームプログラムが並行して動作する。
【００９７】
ここで、第１のゲームプログラムは、プレイヤーがプレイしようとしている第１のゲームを実現するためのものである。
【００９８】
典型的には、第１のゲームは、当該プレイヤーが購入したゲームであり、当該プレイヤーが自分の意思でプレイすることを選択したゲームである。
【００９９】
一方、第２のゲームプログラムは、裏側でテスト的に実行される第２のゲームを実現するためのものである。典型的には、第２のゲームは、第１のゲームと操作体系が類似する他のゲームであり、その実行中、プレイヤーは第２のゲームをプレイしていると感じることはない。
【０１００】
第２のゲームプログラムとしては、たとえば、β版のゲームプログラムや、プレイヤーの環境でプレイ可能か否かが不明なゲームプログラム、当該プレイヤーに対して購入を促す広告を提示したいゲームのゲームプログラムなどの態様が考えられる。
【０１０１】
図２は、本実施形態に係るゲーム装置とサーバ装置との関係を示す説明図である。以下、本図を参照して説明する。
【０１０２】
本実施形態においては、ゲーム装置２００は、第１のサーバ装置２１０、ならびに、第２のサーバ装置２２０と、インターネット２３０を介して通信可能に接続される。
【０１０３】
ここで、第１のサーバ装置２１０は、第１のゲームを実現するためのものであり、第２のサーバ装置２２０は、第２のゲームを実現するためのものである。
【０１０４】
ゲーム装置２００は、プレイヤーの指示に基づいて、第１のサーバ装置２１０と通信することによって、第１のゲームによる通信対戦を行い、第１のゲームの進行状況をプレイヤーに提示する。
【０１０５】
一方、ゲーム装置２００は、第１のゲームにおけるプレイヤーの指示を裏側で利用して、第２のサーバ装置２２０と通信することによって、第２のゲームによる通信対戦を行うが、第２のゲームの進行状況はプレイヤーには提示しない。
【０１０６】
したがって、本実施形態においては、第１のゲームプログラムの実行と、第２のゲームプログラムの実行と、を、適切なタイミングで切り替える並行処理を利用する。
【０１０７】
図３は、本実施形態に係るゲーム装置２００の概要構成を示す模式図である。以下、本図を参照して説明する。
【０１０８】
ゲーム装置２００は、検知部３０１、出力部３０２、情報記録媒体３０３、実行部３０４、報告部３０５を備える。
【０１０９】
なお、本実施形態は、サーバ装置２１０、２２０と通信することにより、第１のゲームならびに第２のゲームを進行させる態様を採用しているが、本発明は、このような通信ゲームのみに適用されるものではなく、スタンドアロン型のゲームにも適用可能である。たとえば、パーソナルコンピュータで動作するゲームの場合には、コンピュータそのものの計算能力が大きく異なる場合があり、第２のゲームプログラムのテストプレイを裏側で実行することには十分な意味がある。このため、本図においては、通信処理を担う要素の図示を省略している。
【０１１０】
ここで、情報記録媒体３０３には、第１のゲームを実現する第１のゲームプログラムならびに第２のゲームを実現する第２のゲームプログラムが記録され、本実施形態では、ＲＯＭカセット１１１により実現される。
【０１１１】
一方、検知部３０１は、プレイヤーによる操作を検知するための構成要素であり、本実施形態では、入力装置１０５により実現される。
【０１１２】
たとえば、ゲーム用の情報処理装置１０１では、検知部３０１は、コントローラにより実現される。このようなコントローラには、各種のボタンやスイッチ、ジョイスティック等が設けられているのが一般的である。検知部３０１は、これらのボタン等が、プレイヤーにより操作されている状態を検知する。
【０１１３】
このほか、動画撮影が可能な可視光用のカメラ、赤外線センサ、赤外線カメラ、超音波センサ等を利用して、プレイヤーの身振りや姿勢の変化を操作入力として利用する態様に本発明を適用することも可能である。
【０１１４】
本実施形態では、検知部３０１で検知された操作は、第１のゲームと第２のゲームとで共用される。
【０１１５】
さらに、出力部３０２は、プレイヤーに提示すべき情報を出力するための構成要素であり、本実施形態では、画像処理部１０６を介して制御される液晶ディスプレイ１０７によって実現される。
【０１１６】
このほか、テレビジョン装置や液晶ディスプレイ、タッチスクリーンなどの表示装置により実現される。この場合、プレイヤーに提示すべき情報は、文字や図形などを含む画像によって提示される。
【０１１７】
また、出力部３０２として、音声処理部１０８を介して制御されるヘッドフォン１０９やスピーカ等の音声出力装置を採用することとしても良い。この場合、プレイヤーに提示すべき情報は、楽曲や言葉を含む音声によって提示される。
【０１１８】
実行部３０４は、第１のゲームプログラムに含まれる指令と、第２のゲームプログラムに含まれる指令と、を、情報記録媒体３０３から読み出して、並行に実行するもので、本実施形態では、実行部３０４は、ＣＰＵ  １０２がＲＡＭ  １０３に第１のゲームプログラムと第２のゲームプログラムとをロードして、これらを並行に実行することにより実現される。
【０１１９】
典型的には、これらのプログラムに含まれる指令は、ＲＡＭ  １０３との間の読み書きを行う指令や、各種の条件分岐を行う指令のほか、サブルーチンの呼び出し指令やＢＩＯＳコールやシステムコールの呼び出し指令等がある。
【０１２０】
なお、本実施形態では、プレイヤーは、自らの意思で第１のゲームをプレイする。一方、第２のゲームは、テストプレイの対象となるゲームであり、プレイヤーは、第２のゲームをプレイしていることを意識する必要はない。
【０１２１】
このため、出力部３０２は、第１のゲームの進行情報のみを出力し、第２のゲームの進行情報は出力しない。このため、実行部３０４が２つのゲームプログラムを並行に実行する際に、後述する制御切り替えの技術を採用している。
【０１２２】
さらに、報告部３０５は、実行部３０４による第２のゲームプログラムの実行に係る統計情報を報告する。
【０１２３】
ここで、統計情報とは、たとえば、第２のゲームプログラムを実行している際にサブルーチンやシステムコールが、その種類ごとにどの程度の頻度で呼び出されたかなどの情報としても良いし、後述するように、サーバ装置等との通信状況などを統計情報として利用することとしても良い。
【０１２４】
統計情報は、第２のゲームを進行させるにあたってゲームの状態を表すゲーム情報の一部として、ＲＡＭ  １０３内に蓄積される。
【０１２５】
後述するように、統計情報は、ＣＰＵ  １０２が、第２のサーバ装置２２０へ無線ＬＡＮインターフェース１１４を介して送信しても良いし、第１のゲームを終了もしくは中断したプレイヤーに対して、液晶ディスプレイ１０７に表示することとしても良い。したがって、報告部３０５は、ＣＰＵ  １０２がＲＡＭ  １０３等と共働することにより実現される。
【０１２６】
以下、まず、単独でゲームプログラムが動作する場合の様子について説明し、次に、並行して２つのゲームプログラムが動作する場合の様子について説明する。
【０１２７】
図４は、単一のゲームプログラムを実行する際のゲーム処理の制御の流れを示すフローチャートである。これは、第１のゲームプログラム、もしくは、第２のゲームプログラムを単独で実行した場合に相当する。以下、本図を参照して説明する。
【０１２８】
まず、ＣＰＵ  １０２は、ＲＡＭ  １０３内にプログラムをロードするためのメモリ空間を確保する（ステップＳ４０１）。
【０１２９】
そして、ＣＰＵ  １０２は、ＲＯＭカセット１１１からプログラムを読み出して、ＲＡＭ  １０３内に確保したメモリ空間に書き込み（ステップＳ４０２）、当該メモリ空間の先頭のアドレスにジャンプする（ステップＳ４０３）ことによって、プログラムの実行を開始する。したがって、ＲＯＭカセット１１１が情報記録媒体３０３として機能することとなる。
【０１３０】
ビジネス用コンピュータでは、ステップＳ４０１〜Ｓ４０３の処理は、オペレーティングシステムが担う作業である。一方、携帯可能なマルチメディア端末として情報処理装置１０１が実装されている場合には、ＲＯＭ  １０４内に、このようなプログラムのロードおよび実行開始、ならびに、後述するようなプログラムの制御の切り替えのためのシステムプログラムを組み込んでおくのが通例である。
【０１３１】
プログラムの実行が開始されたら、当該プログラムの制御の元、ＣＰＵ  １０２は、ＲＡＭ  １０３内において、ゲーム情報の初期化を行う（ステップＳ４０４）。
【０１３２】
ゲーム情報には、たとえば、プレイヤーが操作するキャラクターや各種の敵キャラクターの体力パラメータ、所有するアイテム、当該キャラクターが配置される仮想空間内の位置、プレイヤーに提供されるゲームシナリオの弁別などが含まれる。
【０１３３】
これらの情報は、ゲームの進行に必要な情報であり、適宜外部メモリ１１２からロードしたり、無線ＬＡＮインターフェース１１４を介してサーバ装置と通信することによって取得したりすることができる。
【０１３４】
そして、ＣＰＵ  １０２は、画像処理部１０６を制御して、液晶ディスプレイ１０７に表示すべき画像をＲＡＭ  １０３内に生成する（ステップＳ４０５）。
【０１３５】
そして、ＣＰＵ  １０２は、液晶ディスプレイ１０７の垂直同期割込が生じるまで待機する（ステップＳ４０６）。この待機中には、ＣＰＵ  １０２は、コルーチン的に他のプログラムを実行することが可能である。
【０１３６】
垂直同期割込が生じたら、ＣＰＵ  １０２は、画像処理部１０６を制御して、ＲＡＭ  １０３内に生成された画像を液晶ディスプレイ１０７に転送して表示させる（ステップＳ４０７）。したがって、ＣＰＵ  １０２は、画像処理部１０６と共働して、出力部３０２として機能することとなる。
【０１３７】
その後、ＣＰＵ  １０２は、入力装置１０５の現在の操作状態を検知して、プレイヤーからの操作入力を取得する（ステップＳ４０８）。したがって、入力装置１０５は、ＣＰＵ  １０２の制御の下、検知部３０１として機能することとなる。
【０１３８】
そして、ＣＰＵ  １０２は、当該操作入力に基づいて、ＲＡＭ  １０３内に記憶されるゲーム情報を更新する（ステップＳ４０９）。
【０１３９】
さらに、ＣＰＵ  １０２は、無線ＬＡＮインターフェース１１４を介して、操作入力の状態や更新されたゲーム情報をサーバ装置へ送信する（ステップＳ４１０）。
【０１４０】
ここで、実行されているプログラムが第１のゲームプログラムである場合には、送信先のサーバ装置は、第１のサーバ装置２１０であり、第２のゲームプログラムである場合には、送信先のサーバ装置は、第２のサーバ装置２２０である。また、必ずしも毎回情報を送信する必要はなく、適宜間引きを行っても良い。
【０１４１】
そして、ＣＰＵ  １０２は、現在のゲーム情報に基づいて、液晶ディスプレイ１０７に表示すべき画像をＲＡＭ  １０３内に生成する（ステップＳ４１１）。
【０１４２】
そして、ＣＰＵ  １０２は、液晶ディスプレイ１０７の垂直同期割込が生じるまで待機する（ステップＳ４１２）。この待機中には、ＣＰＵ  １０２は、コルーチン的に他のプログラムを実行することが可能である。
【０１４３】
垂直同期割込が生じたら、ＣＰＵ  １０２は、画像処理部１０６を制御して、ＲＡＭ  １０３内に生成された画像を液晶ディスプレイ１０７に転送して表示させる（ステップＳ４１３）。
【０１４４】
ついで、ＣＰＵ  １０２は、無線ＬＡＮインターフェース１１４を介して、サーバ装置から、ゲームの進行に関する新たな指示を受信し（ステップＳ４１４）、当該指示に基づいて、ＲＡＭ  １０３内に記憶されるゲーム情報を更新して（ステップＳ４１５）、ステップＳ４０８に戻る。
【０１４５】
なお、ステップＳ４１４における通信相手のサーバ装置は、ステップＳ４１０における送信先のサーバ装置と同じである。また、インターネット２３０の通信遅延やゲームの仕様によっては、ステップＳ４１４において毎回指示が受信できるとは限らない。受信できない場合には、それに合わせて、ゲーム情報を更新することになる。
【０１４６】
ステップＳ４０９ならびにステップＳ４１５におけるゲーム情報の更新の際には、統計情報も適宜蓄積、更新される。そして、サーバ装置に統計情報を報告する態様では、ステップＳ４１０においてＣＰＵ  １０２が無線ＬＡＮインターフェース１１４と共働することにより、報告部３０５の機能が実現される。
【０１４７】
第１のゲームプログラム、第２のゲームプログラムとも、基本的には、このような制御の流れを実現するものであるが、本実施形態では、この２つのプログラムを並行に実行する。そして、並行に実行する際のプログラムの制御の切り替えのタイミングとして、垂直同期割込の待機を用いる。
【０１４８】
ステップＳ４０９ならびにステップＳ４１５におけるゲーム情報の更新によって、ゲームが進行され、以降で詳述するように、プログラムの制御を切り替えることによってプログラムの並行実行が実現される。したがって、これらの処理を行うＣＰＵ  １０２が、実行部３０４として機能することとなる。
【０１４９】
さて、一般にプログラムに含まれる指令は、ＣＰＵ  １０２が実行する機械語によって表現され、その中には、情報処理装置１０１の各部を制御するための指令が含まれる。一般には、これらの指令は、特定の入出力ポートへのアクセスや、ＢＩＯＳコール、システムコール、ライブラリ関数等、特定のアドレスに配置されるプログラム断片の呼び出しによって実現されるが、本実施形態では、この呼び出し機構を用いて、並行処理の制御の切り替えを行う。
【０１５０】
まず、ＣＰＵ  １０２では、以下のようなレジスタが用意されている。
（ａ）プログラムカウンタ。これから実行しようとする指令のＲＡＭ  １０３内におけるアドレスが格納される。ＣＰＵ  １０２が普通の指令を実行すると、自動的にインクリメントされるが、ジャンプ指令を実行すると、ジャンプ先に書き換えられる。
（ｂ）スタックポインタ。ＲＡＭ  １０３内の一時的な記憶域のアドレスを指すもので、値を一時的に保存する際にはプッシュ、保存した値を取り出す際にはポップと呼ばれる操作を行う。いわゆるＬＩＦＯ（Last In First Out）あるいはＦＩＬＯ（First In Last Out）形式の記憶装置を実現するものである。
【０１５１】
現在実行されている指令のあるアドレスに配置されるプログラム断片の呼び出しは、コール指令によって実現され、以下のような手順で行われる。
（１）現在のプログラムカウンタの値、すなわち、コール指令の次に配置されている指令のアドレスをスタックにプッシュする。
（２）プログラムカウンタの値を、コール指令に指定されたアドレスに変更する。
（３）当該プログラム断片のアドレスから、指令が順次実行される。
（４）リターン指令に到達すると、スタックから値をポップして、プログラムカウンタの値をポップした値に変更する。
（５）コール指令に引き続く指令が順次実行される。
【０１５２】
なお、上記（１）の前に、当該プログラム断片に渡すべき引数をスタックに積むことも可能である。この場合には、上記（４）（５）の際に、積んだ引数をポップする必要がある。
【０１５３】
また、複数のプログラムを並行にコルーチン的に動作させる場合には、それぞれのプログラム用にスタック領域を用意する。そして、プログラムカウンタとスタックポインタをまとめて、それぞれのプログラム用の値に書き換えることとすれば、プログラムの制御の切り替えを実現することができる。
【０１５４】
一般には、プログラムカウンタとスタックポインタをまとめたものをコンテキストと呼ぶ。コンテキストの切り替えは、一般には、以下のような処理を行う。
（１）現在のプログラムカウンタの値とスタックポインタの値を、コンテクスト管理領域に保存する。
（２）切り替え先のプログラムカウンタの値とスタックポインタの値をコンテクスト管理領域から取得する。
（３）取得した値にスタックポインタを設定して、取得したプログラムカウンタのアドレスにジャンプする。
【０１５５】
以下では、このようなコンテキスト切り替えに基づく並行処理により、図４に示すようなプログラムを並行に実行する際の制御の流れについて説明する。
【０１５６】
図５は、本実施形態に係る２つのゲームプログラムの制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１５７】
本図に示す各ステップは、図４に示す各ステップに対応するものであり、第１のゲームプログラムの各ステップの符号には添字として「ａ」を、第２のゲームプログラムの各ステップの符号には添字として「ｂ」を、それぞれ付している。
【０１５８】
本実施形態では、まず、第１のゲームプログラム用のメモリ確保およびロードと、第２のゲームプログラム用のメモリ確保およびロードを行う（ステップＳ４０１ａ〜Ｓ４０２ａ、Ｓ４０１ｂ〜Ｓ４０２ｂ）。上記のように、第１のゲームプログラムと第２のゲームプログラムとは、ＲＡＭ  １０３内の異なるアドレスのメモリ空間にロードされることになる。
【０１５９】
この際に、第１のゲームプログラムのコンテキストと第２のゲームプログラムのコンテキストの設定も行う。両者のコンテキスト内のプログラムカウンタの値は、各プログラムの先頭アドレスに設定され、両者のコンテキスト内のスタックポインタの値は、互いに重ならない一時記憶域を指すことになる。
【０１６０】
そして、第２のゲームプログラムのコンテキストに制御を切り替えることにより、ＣＰＵ  １０２は、第２のゲームプログラムの先頭にジャンプする。これによって、初期化ならびに画像生成が行われる（ステップＳ４０３ｂ〜Ｓ４０５ｂ）。
【０１６１】
さらに、第２のゲームプログラムの実行において垂直同期割込を待機しようとすると（ステップＳ４０６ｂ）、第１のゲームプログラムにコンテキストが切り替わる。また、実際には、ステップＳ４０６ｂにおいて垂直同期割込を待機するわけではないので、フローチャートのステップＳ４０６ｂは、破線で囲まれている。ステップＳ４０６ｂに相当する垂直同期待ちは、実際には、後述するステップＳ４０６ａにおいて実行される。
【０１６２】
制御が切り替わると、第１のゲームプログラムの先頭にジャンプして、第１のゲームが初期化され（ステップＳ４０３ａ〜Ｓ４０４ａ）、表示すべき画像が生成される（ステップＳ４０５ａ）。
【０１６３】
第１のゲームプログラムにおいて垂直同期割込の待機に至ると（ステップＳ４０６ａ）、ＣＰＵ  １０２は、液晶ディスプレイ１０７の垂直同期割込が生じるまで待機し、その後に、第１のゲーム用の画像が液晶ディスプレイ１０７に転送されて表示される（ステップＳ４０７ａ）。
【０１６４】
この後、プログラムの制御は、第２のゲームプログラムのステップＳ４０７ｂではなく、その次のステップＳ４０８ｂに戻る。このため、第２のゲーム用の画像は液晶ディスプレイ１０７には表示されないことになる。そこで、ステップＳ４０７ｂは、点線で囲んで図示している。
【０１６５】
ついで、第２のゲームプログラムにおいて、操作入力の取得（ステップＳＳ４０８ｂ）、ゲーム情報の更新（ステップＳ４０９ｂ）、第２のサーバ装置２２０への送信（ステップＳ４１０ｂ）、画像の生成（ステップＳ４１１ｂ）を実行し、垂直同期割込を待機しようとする（ステップＳ４１２ｂ）。すると、プログラムの制御は、第１のゲームプログラムに戻る。
【０１６６】
ここでもステップＳ４０７ａと同様に、実際には第２のゲームプログラムで垂直同期を待機するわけではないので、ステップＳ４１２は破線で囲んで図示している。なお、ステップＳ４１２に相当する垂直同期待ちは、実際には、後述するステップＳ４１２ａにおいて実行される。
【０１６７】
また、コンテキスト切り替えの原理に基づき、ステップＳ４１２ｂから初めて、第１のゲームプログラムに制御が戻る際には、ステップＳ４０８ａに戻るが、２回目以降、第１のゲームプログラムに制御が戻る際には、ステップＳ４１４ａに戻ることになる。
【０１６８】
ステップＳ４０８ａに制御が移ると、第１のゲームプログラムにおいて、操作入力の取得（ステップＳ４０８ａ）、ゲーム情報の更新（ステップＳ４０９ａ）、第１のサーバ装置２１０への送信（ステップＳ４１０ａ）、画像の生成（ステップＳ４１１ａ）を実行し、垂直同期割込の待機（ステップＳ４１２ａ）に至る。
【０１６９】
ここで、ステップＳ４０６ａと同様に、ＣＰＵ  １０２は、液晶ディスプレイ１０７の垂直同期割込が生じるまで待機し、その後に、第１のゲーム用の画像が液晶ディスプレイ１０７に転送されて表示される（ステップＳ４１３ａ）。
【０１７０】
この後、プログラムの制御は、第２のゲームプログラムのステップＳ４１３ｂではなく、その次のステップＳ４１４ｂに戻る。このため、第２のゲーム用の画像は液晶ディスプレイ１０７には表示されないことになる。このため、ステップＳ４１３ｂは、破線で囲むように図示している。
【０１７１】
そして、第２のゲームプログラムにおいて、第２のサーバ装置２２０からの受信（ステップＳ４１４ｂ）、ゲーム情報の更新（ステップＳ４１５ｂ）、操作入力の取得（ステップＳ４０８ｂ）、ゲーム情報の更新（ステップＳ４０９ｂ）、第２のサーバ装置２２０への送信（ステップＳ４１０ｂ）、画像の生成（ステップＳ４１１ｂ）を実行し、垂直同期割込を待機しようとする（ステップＳ４１２ｂ）。
【０１７２】
すると、プログラムの制御は、第１のゲームプログラムに戻り、第１のゲームプログラムにおいて、第１のサーバ装置２１０からの受信（ステップＳ４１４ａ）、ゲーム情報の更新（ステップＳ４１５ａ）、操作入力の取得（ステップＳ４０８ａ）、ゲーム情報の更新（ステップＳ４０９ａ）、第１のサーバ装置２１０への送信（ステップＳ４１０ａ）、画像の生成（ステップＳ４１１ａ）を実行する。
【０１７３】
以下同様に繰り返しが行われる。したがって、本実施形態では、垂直同期割込の待機（ステップＳ４１２ａ、Ｓ４１２ｂ）を契機に、プログラムの制御が切り替えられることになる。
【０１７４】
さて、本実施形態では、上記のように、第１のゲームプログラムと、第２のゲームプログラムと、は、ＲＡＭ  １０３内の異なるメモリ空間にロードされる。
【０１７５】
したがって、ＢＩＯＳコールやシステムコール、ライブラリ関数の実行が開始される段階で、ＣＰＵ  １０２は、スタックに保存される戻りアドレスを調べる。
【０１７６】
そして、戻りアドレスが、第１のゲームプログラムがロードされたメモリ空間に含まれる場合には、呼び出し元は、第１のゲームプログラムである、と判定される。一方、戻りアドレスが、第２のゲームプログラムがロードされたメモリ空間に含まれる場合には、呼び出し元は、第２のゲームプログラムである、と判定される。
【０１７７】
このように、本実施形態では、コンピュータのＣＰＵ  １０２の関数呼び出し機構を利用して、出力指令を実行しようとしているゲームプログラムがいずれであるかを判定する。
【０１７８】
さて、図５に示すフローチャートでは、第１のゲームプログラムならびに第２のゲームプログラムで入力装置１０５の状態を調べているが、第２のゲームプログラムにおける画面への転送はスキップしている。本実施形態では、このスキップを実現するために、以下のような手法を採用する。
【０１７９】
すなわち、本実施形態では、プレイヤーによる操作を検知すべき旨の検知指令や、情報を出力すべき旨の出力指令は、サーバ装置との通信のための通信指令は、ＢＩＯＳコール、システムコール、ライブラリ関数等により実現される。
【０１８０】
そこで、検知指令を実装するＢＩＯＳコール、システムコール、ライブラリ関数等は、その呼び出し元が、第１のゲームプログラムか、第２のゲームプログラムかにかかわらず、入力装置１０５の操作状態を調べることとする。
【０１８１】
また、通信指令を実装するＢＩＯＳコール、システムコール、ライブラリ関数等も、第１のゲームプログラムか、第２のゲームプログラムかにかかわらず、実行される。ただし、第１のゲームプログラムは、通信相手として第１のサーバ装置２１０を指定して呼び出しを行い、第２のゲームプログラムは、通信相手として第２のサーバ装置２２０を指定して呼び出しを行う。
【０１８２】
一方、出力指令により実行される出力処理を実装するＢＩＯＳコール、システムコール、ライブラリ関数等は、その呼び出し元が第１のゲームプログラムである場合には、ＲＡＭ  １０３内に生成された画像を液晶ディスプレイ１０７に転送する。一方、呼び出し元が第２のゲームプログラムである場合には、そのままリターンする。
【０１８３】
なお、本実施形態では、出力処理の呼び出しの際に、プログラムの制御の切り替えも行う。
【０１８４】
図６は、出力処理の詳細を示すフローチャートである。以下、本図を参照して説明する。
【０１８５】
本処理が呼び出されると、ＣＰＵ  １０２は、まず、呼び出し元のプログラムが、第１のゲームプログラムか、第２のゲームプログラムか、を判定する（ステップＳ６０１）。
【０１８６】
第２のゲームプログラムである場合には（ステップＳ６０１；第２）、コンテキストを第１のゲームプログラムに切り替える（ステップＳ６１１）。
【０１８７】
一方、第１のゲームプログラムである場合には（ステップＳ６０１；第１）、液晶ディスプレイ１０７を監視して、垂直同期割込が発生するまで待機する（ステップＳ６２１）。
【０１８８】
その後、垂直同期割込が実際に発生したら、画像処理部１０６を制御して、ＲＡＭ  １０３内に生成された画像を転送して、液晶ディスプレイ１０７に表示させる（ステップＳ６２２）。
【０１８９】
その後、第２のゲームプログラムにコンテキストを切り替える（ステップＳ６２３）。
【０１９０】
制御の切り替えは、いわゆるコルーチンによって実装されるので、ステップＳ６２３の制御切り替えによって、制御はステップＳ６１１に戻ることになり、ステップＳ６１１の制御切り替えによって、制御はステップＳ６２３に戻ることになる。
【０１９１】
ステップＳ６１１の後に、第１のゲームプログラムから制御が戻ってきた場合には、垂直同期割込の待機はすでにステップＳ６２１においてなされている。また、第２のゲームプログラムにより生成される画像は液晶ディスプレイ１０７には表示されない。したがって、そのまま出力処理の呼び出し元（これは、第２のゲームプログラムに含まれる。）にリターンして（ステップＳ６１２）、本処理を終了する。
【０１９２】
一方、ステップＳ６２３の後に、第２のゲームプログラムから制御が戻ってきた場合には、出力処理の呼び出し元（これは、第１のゲームプログラムに含まれる。）にリターンして（ステップＳ６２４）、本処理を終了する。
【０１９３】
出力処理は、いわゆるタスク切り替え、あるいは、コンテクスト切り替えの処理と、垂直同期割込待ちならびに画像転送処理を組み合わせたものとして実装される。
【０１９４】
なお、通信指令において、通信相手から各種の情報を受信しようとする際にも、ステップＳ６１１、ステップＳ６２３と同様に、プログラムの制御の切り替えを適宜行うこととしても良い。受信の際には、パケットが到着するか、ある程度のタイムアウト時間が経過するまで、待機することが多いからである。
【０１９５】
このように、本実施形態では、プレイヤーに対しては、第１のゲームにおける情報のみが提示される。したがって、プレイヤーは、第２のゲームの進行状況を知得することはできない。
【０１９６】
しかしながら、プレイヤーによる操作は、第１のゲームと第２のゲームの両方に与えられるので、プレイヤーが第１のゲームをプレイしているのと並行して、その裏側で、プレイヤーは第２のゲームを同時にプレイしていることになる。
【０１９７】
このため、第１のゲームの操作体系と第２のゲームの操作体系とを類似するものとしておけば、第２のゲームのテストプレイが実行されることになる。
【０１９８】
また、第１のゲームの操作体系と第２のゲームの操作体系とが類似しないときであっても、プレイヤーが誤った操作を行った際に、第２のゲームプログラムが暴走しないことを確認する等のテストを行うことが可能である。
【０１９９】
また、第２のゲームのテストプレイの様子は、統計情報として収集され、この統計情報は、第２のゲームプログラムのデバッグや、プレイヤーが所有するハードウェアなどのプレイ環境が第２のゲームプログラムを実行するだけの性能を有するかなどの判定に利用することができる。
【０２００】
このように、本実施形態では、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告することができるようになる。
【０２０１】
なお、本実施形態では、第１のゲームプログラムと第２のゲームプログラムとで、同じＢＩＯＳコール、システムコール、ライブラリ関数を利用することを前提としている。
【０２０２】
しかしながら、以下のような簡易な手法を採用することもできる。すなわち、第１のゲームプログラムでは、出力指令を、「ＲＡＭ  １０３内に生成された画像を液晶ディスプレイ１０７に転送する処理を実行するプログラム断片の呼び出し」により実装する。一方、第２のゲームプログラムでは、出力指令を、「何もしない関数の呼び出し」により実装する。
【０２０３】
具体的には、画面表示を行うためのライブラリと、画面表示を行わないライブラリと、の、２種類を用意する。そして、ゲームプログラムのコンパイル時には、前者を第１のゲームプログラムとリンクし、後者を第２のゲームプログラムとリンクするのである。
【０２０４】
なお、本実施形態では、出力部３０２の出力先として、液晶ディスプレイ１０７を例として取り上げたが、液晶ディスプレイ１０７とヘッドホン１０９の両方を出力先とすることもできる。
【０２０５】
携帯型のエンタテインメント装置においては、音声処理部１０８による音声処理も、垂直同期割込周期を単位として行うことが可能であり、その場合には、ステップＳ６２２における画像転送の前後に、音声処理部１０８の制御処理を追加すれば良い。
【０２０６】
また、単純に、第２のゲームプログラムから音声出力処理の呼び出しがあった場合には、直ちにリターンし、第１のゲームプログラムから音声出力処理の呼び出しがあった場合には、その旨の処理を行うような、ＢＩＯＳコール、システムコール、ライブラリ関数を利用することとしても良い。
【０２０７】
さて、本実施形態では、第２のゲームプログラムを実行することによって、第２のゲームの統計情報が蓄積することができる。ここで、ゲームの統計情報としては、以下のようなものが考えられる。
（１）実行中のＢＩＯＳコール、システムコール、ライブラリ関数の呼び出しの回数。
（２）実行中の第２のサーバ装置２２０との通信状況。ステップＳ４１４において、第２のサーバ装置２２０からの指示を含むパケットが受信できた回数や、受信しようとして受信できなかった回数のほか、パケットの送受に要する通信遅延時間、通信経路のホップ数、パケット消失やパケット誤りの生じる割合等。
（３）プレイヤーによる操作入力の履歴。
（４）ＣＰＵ  １０２の計算負荷。
【０２０８】
これらの情報は、第２のゲームプログラムの実行の際の送信（ステップＳ４１０ｂ）の際に、第２のサーバ装置２２０に通知される。
【０２０９】
第２のゲームを実現するための第２のサーバ装置２２０や第２のゲームプログラムの動作を検証する際には、これらの情報を利用することで、より一層の最適化を図ることができる。
【０２１０】
このほか、プレイヤーが、第１のゲームの状態をセーブして、プレイを終了したり、一時中断したりする際に、第２のゲームの広告を液晶ディスプレイ１０７に表示する態様も考えられる。
【０２１１】
このような終了や一時中断は、ＣＰＵ  １０２が中断指令を実行しようとすることによって開始される。終了や一時中断とは、たとえば、第１のゲームの状態を保存して第１のゲームそのものを終了したり、第１のゲームのタイトル表示に戻ったりするような状況である。このような状況でプレイヤーに対して、第２のゲームを告知、広告すると、プレイヤーの興味を惹くことができる。
【０２１２】
この際に、第２のゲームの統計情報に基づいて、プレイヤーの通信環境が第２のゲームのプレイに好適か否かを否かを判定する。その結果に基づいて、「第２のゲームのネット対戦に十分な通信速度がある」「第２のゲームをプレイするには通信速度が不足している」等の情報とともに、第２のゲームの広告を画面に表示するのである。
【０２１３】
このような態様を採用した場合には、顧客が第２のゲームの購入を検討する際のゲームのプレイ環境について、有益な判断材料を提供することができる。
【産業上の利用可能性】
【０２１４】
以上説明したように、本発明によれば、第１のゲームをプレイヤーに提供しつつ、当該プレイヤーの環境において第２のゲームを提供できるか否かを判定等するための統計情報を適切に収集して報告するのに好適なゲーム装置、その制御方法、これらをコンピュータにて実現するプログラムを記録したコンピュータ読取可能な情報記録媒体、ならびに、当該プログラムからなるテストプレイ用プログラムを提供することができる。
【符号の説明】
【０２１５】
１０１  情報処理装置
１０２  ＣＰＵ
１０３  ＲＡＭ
１０４  ＲＯＭ
１０５  入力装置
１０６  画像処理部
１０７  液晶ディスプレイ
１０８  音声処理部
１０９  ヘッドホン
１１０  カセットリーダ
１１１  ＲＯＭカセット
１１２  外部メモリ
１１３  ＲＴＣ
１１４  無線ＬＡＮインターフェース
１１５  カメラ
２００  ゲーム装置
２１０  第１のサーバ装置
２２０  第２のサーバ装置
２３０  インターネット
３０１  検知部
３０２  出力部
３０３  情報記録媒体
３０４  実行部
３０５  報告部
【図１】
0005386416.tif 000002
【図２】
0005386416.tif 000003
【図３】
0005386416.tif 000004
【図４】
0005386416.tif 000005
【図５】
0005386416.tif 000006
【図６】
0005386416.tif 000007