以下、本願発明の好ましい実施の形態を、添付図面を参照して具体的に説明する。
図1は、本願発明に係るゲームシステムの一例を示す構成図である。このゲームシステムは、例えばインターネット等の通信回線1(以下、ネットワーク回線1という。)を介して複数のゲーム装置2がゲームサーバ3に接続されたものであり、各ゲーム装置を操作する複数のプレーヤが同一のゲーム空間を共有する、いわゆるオンラインゲーム(ネットワークゲーム)を構築するものである。
このゲームシステムは、オンラインゲームにおいてゲームプログラムを不当に改ざんしてオンラインゲームをプレイするプレーヤを検出し、当該プレーヤの本ゲームへの参加を防止することを目的としている。すなわち、オンラインゲームにおいては、不正を働くプレーヤがゲームに参加すると、当該プレーヤは他のプレーヤに比べ優位にオンラインゲームをプレイすることができるため、これによりゲームバランスがくずれ、他のプレーヤに迷惑が生じてしまうことになるからである。
この実施形態におけるオンラインゲームは、複数のプレーヤが各ゲーム装置を操作することによりゲーム画面上で動作するキャラクタ(以下、「ハンター」という。)同士が、互いに協力してゲーム(仮想空間)上の敵キャラクタ(例えば恐竜であり、以下「モンスター」という。)を倒すといった、いわゆるハンティングアクションゲームである。なお、本実施形態における発明は、上記ハンティングアクションゲームに適用されることに限るものではない。
ゲーム装置2は、ネットワーク回線1を介してゲームサーバ3と通信可能な機能を備えた、例えば家庭用テレビゲーム機、携帯型ゲーム機又はオンラインゲームのゲームソフトが搭載されているパーソナルコンピュータ等で構成されている。具体的には、ゲーム装置2は、本体11、操作コントローラ12、モニタ13、ネットワークアダプタ14、ディスク15、及びメモリカード16によって構成されている。
本体11は、制御部21、描画処理部22、音声処理部23、I/Oインターフェース部26、ディスクドライブユニット24、及びメモリカード接続ユニット25によって構成されている。制御部21には描画処理部22、音声処理部23、及びI/Oインターフェース部26が接続されており、I/Oインターフェース部26には、さらにディスクドライブユニット24、メモリカード接続ユニット25、操作コントローラ12、モニタ13及びネットワークアダプタ14が接続されている。
ゲーム装置2では、上記ハンティングアクションゲームのソフトウェアが記録されたディスク15がディスクドライブユニット24に装着され、このディスクドライブユニット24からディスク15内のゲームプログラム及びゲームデータが制御部21内のRAM21c(後述)に読み込まれ、CPU21a(後述)によってゲームプログラムが実行されることにより、プレーヤがゲーム内容を楽しむことができるようになっている。プレーヤは、操作コントローラ12の操作部材12a〜12c(後述)を操作することによりゲームを進行させることができる。
なお、ディスク15には、オンラインゲームとしてハンティングアクションゲームを実行できるオンラインモードと、ゲーム装置2単体でハンティングアクションゲームを実行できるオフラインモードとが用意されている。
制御部21は、本体11の全体動作を司るマイクロコンピュータを有しており、マイクロコンピュータは、CPU21a、ROM21b、及びRAM21c等からなり、各部は、それぞれバスラインで接続されている。CPU21aは、ディスクドライブユニット24によってディスク15からRAM21cに読み込まれるゲームプログラムを実行することより、ゲーム進行を統括的に制御する。
より具体的には、操作コントローラ12からプレーヤが操作することによる操作信号が入力されると、CPU21aは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行い、その処理結果をモニタ13に例えば三次元画像によって表示するとともに、モニタ13のスピーカ13a(後述)から効果音によって出力する。
ROM21bには、ディスクローディング機能等のゲーム装置2の基本的な機能やディスク15に記録されたゲームプログラム及びゲームデータを読み出す手順等を示す基本プログラムが記憶されている。CPU21aは、ディスクドライブユニット24にディスク15が装着されると、ROM21bの基本プログラムにしたがってディスクドライブユニット24を動作させ、ディスク15からゲームプログラム及びゲームデータをRAM21cに読み込み、ゲーム開始状態に設定する。
RAM21cは、ディスクドライブユニット24によってディスク15から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、CPU21aがゲームプログラムや処理プログラムを実行するためのワークエリアとを提供するものである。
上記ゲームプログラムは、複数のプログラムが組み合わされて構成されており、例えばモニタ13に表示されているハンターの動作を操作情報に基づいて制御したり、ハンターが「クエスト」と呼称される指令を受注したり、その「クエスト」を達成したりする等した場合のゲーム展開を制御するゲーム進行プログラム、プレーヤのオンラインゲームへの入場を制御するためのサーバ対応プログラム、ゲームサーバ3と間でデータ(例えば、他のプレーヤのゲーム装置2の操作データ等のデータ)の送受信を制御するためのネットワーク制御プログラム、及びモニタ13に表示すべき三次元画像を制御するグラフィック制御プログラム等によって構成されている。
上記ゲームプログラムは、ディスク15に記録されており、ゲームプログラムの各プログラムは、必要に応じてディスク15から読み出され、RAM21cに格納される。RAM21cは、図2(a)に示すように、各プログラムに応じてそれらを格納するエリアが決められている。例えば、ゲーム進行プログラムは、RAM21cのアドレス「0×0100000」〜「0×017ffff」に格納され、アドレス「0×0180000」〜「0×01bffff」には、ネットワーク制御プログラムが格納され、アドレス「0×01c0000」〜「0×01fffff」には、グラフィック制御プログラムが格納されるようになっている。
ゲーム進行プログラムは、さらに複数の個別プログラムによって構成されており、詳細は後述するが、各個別プログラムは、ゲーム進行にともなってモニタ13に切り替えられて表示される各場面に対応して設けられている。したがって、RAM21cのアドレス「0×0100000」〜「0×017ffff」には、場面が切り替えられることにともなって、各場面に対応した個別プログラムがディスク15から読み出されて格納され、実行されるようになっている。
また、ゲーム進行プログラムには、不正の検出対象となる不正検出対象プログラムが含まれている。この不正検出対象プログラムは、例えばハンターの所持金や体力を増減させるための演算を行う演算処理プログラム等であり、不正を行うプレーヤが改ざんを行う可能性の高いプログラムである。この実施形態では、改ざんが行われる可能性の高いプログラムを不正の検出対象として不正を検出するようにしている。
なお、サーバ対応プログラムは、図2(b)に示すように、ゲーム進行プログラムと同じアドレス「0×0100000」〜「0×017ffff」に格納され、必要に応じてゲーム進行プログラムと切り替えられるようになっている。また、図2には示していないが、他のプログラムやゲームデータは、上記以外のアドレスで示される領域にそれぞれ格納される。
CPU21aは、オフラインモードにおいては、操作コントローラ12からのプレーヤの操作信号に基づき、また、オンラインモードにおいては、操作コントローラ12からのプレーヤの操作情報とゲームサーバ3を介して入力される他のゲーム装置2の操作情報(ハンターに対するアクションの指令情報やハンターのゲーム画面上における位置の変化情報を含む)とに基づき、必要に応じてディスク15からゲームプログラムや画像データ等をRAM21cに読み込み、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ13に表示すべき三次元画像の内容を決定する。
描画処理部22は、描画処理に必要な各種の演算処理を行うものである。CPU21aは、モニタ13に表示すべき画像を決定し、その画像の描画に必要な画像データ(背景、ハンター及びモンスターのポリゴンデータ、テクスチャーデータ、及び光源データ等)をRAM21cから読み出して描画処理部22に供給する。また、CPU21aは、操作コントローラ12から入力される操作情報やゲームサーバ3を介して入力される他のゲーム装置2からの操作情報(オンラインモードの場合)を描画処理部22に供給する。
描画処理部22は、CPU21aから供給される画像データ及び操作情報に基づいて、描画に必要なデータ(ハンター、モンスター及び背景の位置関係、モニタ13の画面上におけるハンター、モンスター及び背景を構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性等のデータ)を演算し、その演算結果に基づいて描画処理部22内のVRAM(図示せず)に描画処理を行う。描画処理が行われた画像データは、モニタ13に出力されて表示される。
音声処理部23は、効果音等の音声を発生させる処理に必要な各種の演算処理を行うものである。CPU21aは、モニタ13のスピーカ13aから出力すべき効果音若しくはBGMの音響内容を決定すると、音声処理部23に音声指令を出力する。音声処理部23は、CPU21aからの音声指令に基づき、RAM21cから効果音もしくはBGMの音声データを読み出し、所定の加工処理とD/A変換処理とを施した後、スピーカ13aに出力する。
なお、このオンラインゲームのオンラインモードでは、オフラインモードと異なり、プレーヤは他の複数のプレーヤとチームを組んで同一の「クエスト」を受注し、協力し合ってその「クエスト」を達成するようなゲーム進行が可能になっている。また、このハンティングアクションゲームでは、「クエスト」を達成するまでの制限時間が設けられている。すなわち、ハンターは、制限時間を経過するまでに「クエスト」を達成しなければ、「クエスト」失敗とみなされる。
また、オンラインモードでは、チームを組むプレーヤ間で実際に意思の疎通を図る必要があるため、チャット機能が設けられている。このチャット機能は、ゲームサーバ3によって制御され、ゲーム上においてチームを組んだハンター間で会話をするというゲーム進行によって実現されるようになっている。したがって、CPU21aは、操作コントローラ12からのプレーヤの操作信号がチャットによる会話の内容を示す信号であると判断した場合は、その内容をゲームサーバ3に送信し、ゲームサーバ3からチャットのデータを取得する。
ディスクドライブユニット24は、ディスク15に記録されたゲームプログラムやゲームデータを読み出すものである。
メモリカード接続ユニット25は、CPU21aによるメモリカード16へのゲーム進行に関する情報の読み/書きを可能にするためのものである。CPU21aは、ゲーム進行中やゲーム終了時にプレーヤから「データのセーブ」が指令されると、メモリカード接続ユニット25を介してメモリカード16に、ゲーム進行に関する情報、具体的にはハンターの属性情報(名前、性別、ゲームの習得度を示すレベル(ゲームレベル))、取得したゲームポイント、及び取得した各種アイテム等の情報を記憶する。
I/Oインターフェース部26は、ディスクドライブユニット24やメモリカード接続ユニット25によって読み出されたゲームプログラムやゲームデータ、及び操作コントローラ12からの操作信号等を制御部21に伝送したり、制御部21からの映像信号やオーディオ信号等をモニタ13に伝送したりするものである。また、I/Oインターフェース部26は、オンラインモードにおいては、ネットワーク回線1及びネットワークアダプタ14を介してゲームサーバ3との間でデータの伝送を行うものである。
操作コントローラ12は、ハンターを動作させたり、ゲームに関する各種の設定を行ったりするためにプレーヤによって操作されるものであり、複数のボタン12aと右レバー12cと左レバー12bとを有する。プレーヤによって操作コントローラ12が操作されると、その操作信号が制御部21に伝送され、モニタ13に表示されたハンターが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、崖をよじ登る等の移動動作や剣等を用いてモンスターを攻撃する等の攻撃動作がある。移動動作は、主に左レバー12bによって操作され、攻撃動作は主に右レバー12cによって操作される。
モニタ13は、本体11から送られてきた映像信号やオーディオ信号に応じてゲーム進行状態を示すゲーム画面を映し出したり、スピーカ13aから効果音等の音声を出力させたりするための装置である。モニタ13は、映像信号やオーディオ信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
ネットワークアダプタ14は、ゲーム装置2の本体11をネットワーク回線1に接続するための装置である。
ディスク15は、例えばDVD−ROM又はCD−ROM等によって構成されており、ディスク15には、オフラインモード及びオンラインモードの両モードのゲームプログラムやそのゲームプログラムの実行に必要な種々のデータが記録されている。ゲームプログラムには、上述したように、ゲーム進行プログラム、サーバ対応プログラム、他のプレーヤによって制御されるハンターとチームを組んだ場合の他のプレーヤとのチャットを制御したり、他のプレーヤのゲーム装置2の操作データ等のデータを制御したりするネットワーク制御プログラム、三次元画像を表示させるためのグラフィック制御プログラム等が含まれる。
ネットワーク制御プログラムには、後述する不正検出プログラム(ゲームサーバ3側)に対応する対応プログラムが含まれている。すなわち、ゲームサーバ3において不正検出プログラムが起動されると、RAM21cに記憶されているゲーム進行プログラムの不正検出対象プログラムを送信するよう要求する要求信号がゲームサーバ3から送信されるが、上記対応プログラムは、この要求信号に応じてRAM21cに記憶されている不正検出対象プログラムを送信するものである。
ゲームサーバ3は、ネットワーク回線1に接続された1台又は複数台のサーバによって構成されており、ネットワーク回線1を介して各ゲーム装置2との通信を制御するとともに、ネットワーク回線1を介して各ゲーム装置2において行われるオンラインゲームの進行を制御するものである。
ゲームサーバ3は、CPU31、ROM32、RAM33、ハードディスク装置34、及びI/F(Interface)35によって構成されている。ROM32、RAM33及びI/F35は、バスライン36で接続されている。また、ハードディスク装置34は、I/F35及びバスライン36を介してCPU31に接続されている。
CPU31は、ゲーム装置2のオンラインモードにおけるゲームの進行及び運営を統括制御する。CPU31は、オンラインモードでゲームが行われている各ゲーム装置2との間でゲームの進行に必要な各種のデータの送受信を行う。具体的には、CPU31は、各ゲーム装置2からのログイン要求、及びチームへの参加要求等の要求信号を受信するとともに、その要求に対する応答信号を、対応するゲーム装置2に返送する。
また、CPU31は、チームが組まれている複数のゲーム装置2のうち、いずれかのゲーム装置2からそのゲーム装置2によって制御されるハンターのゲーム空間上における位置の変化情報やステータス(例えばハンターの属性等)の変化情報、及びチャットのメッセージ情報が入力されると、その変化情報やメッセージ情報等を受信し、チームを組んでいる他のゲーム装置2に配信する。
また、CPU31は、ゲーム装置2からログアウトやチーム解散要求が入力されると、その要求をしたゲーム装置2及びチームを組んでいる他のゲーム装置2にゲーム進行を強制的に中断させる指令データを送信し、他のゲーム装置2にログアウト処理やチーム解散処理を行わせる。
ROM32には、ゲームサーバ3の基本的な機能、ハードディスク装置34に記録されたデータを読み出す手順等を示す基本プログラム、及び各ゲーム装置2との通信を行うための通信制御プログラム等が記憶されている。
RAM33は、CPU31のワークエリアとして機能するものであり、RAM33には、ゲームの進行における必要なデータが随時記憶される。
I/F35は、ハードディスク装置34から読み出されたプログラムやデータをネットワーク回線1を介して各ゲーム装置2に送信したり、各ゲーム装置2からの操作信号やゲームに関する制御情報を受信し、CPU31に伝送したりするものである。
ハードディスク装置34には、オンラインゲームの運用・管理を制御するための運用プログラム、各ゲーム装置2におけるオンラインゲームの進行を制御するための進行プログラムが記憶されている。
ゲームサーバ3が提供するオンラインゲームでは、不特定多数のプレーヤが任意のタイミングでオンラインゲームに入場してハンティングアクションゲームを実行し、任意のタイミングでオンラインゲームから退場するという行為が繰り返される。そのため、運用プログラムは、その入退場の変化を適正に制御したり、多数のゲーム装置2との双方向通信を適切に維持したりする機能を果たすプログラムである。
進行プログラムは、複数のゲーム装置2がチームを組むための処理やチームが組まれた複数のゲーム装置2間で相互に各ゲーム装置2の操作情報を中継したり、チャットを制御したり、各ゲーム装置2からの操作情報や制御情報に応じて、各ゲーム装置2に対して各ハンターの位置情報やステータス情報等をリアルタイムに返信したりする制御を行うプログラムである。
進行プログラムには、プレーヤによる不正を検出するための不正検出プログラムと、ゲーム装置2のディスク15に記録されているゲームプログラムと同一の正規のゲームプログラムとが含まれている。
不正検出プログラムは、プレーヤによる不正な行為(例えば、特定のアイテムやゲーム上で取り扱われる金銭を正規のゲームルール以外の不正な方法で取得する行為等)を検出するプログラムである。本実施形態では、各ゲーム装置2においてオンラインゲームが実行されると、所定のタイミングで不正検出プログラムが実行される。
すなわち、詳細は後述するが、ゲーム装置2側で記憶されている不正検出対象プログラムがゲームサーバ3に送信され、送信された不正検出対象プログラムと、この不正検出対象プログラムに対応するゲームサーバ3側で記憶される正規の不正検出対象プログラムとが、ゲームサーバ3において照合されて、両者が一致するか否かが判別される。そして、両者が一致しない場合、ゲームサーバ3に送信されゲーム装置2で記憶されていた不正検出対象プログラムがプレーヤによって改ざんされたものであるとして、不正を検出する。
また、ハードディスク装置34には、プレーヤの不正を検出した場合に、その不正情報(例えば発生日時、不正プレーヤのID、不正データの内容等)を記憶する領域が設けられている。この不正情報は、後にゲーム管理者等によって外部に出力(例えばプリントアウト)することができるようになっている。
ネットワーク回線1は、ゲームサーバ3及び複数のゲーム装置2を接続し、各装置を双方向の通信が可能なように接続する通信回線であり、本実施形態では、例えばインターネット回線が適用される。
ここで、本実施形態に係る上記ハンティングアクションゲーム(オンラインモード)の概要について説明する。このハンティングアクションゲームでは、図3に示すように、「ランド」と呼称される複数の大グループが設けられている。プレーヤは、複数の「ランド」の中から任意の「ランド」を選択することにより、オンラインゲームに参加することができる。
各「ランド」は、「エリア」と呼称される複数の小グループが設けられており、各「エリア」は、プレーヤのゲームレベルに応じて選択可能か否かが予め決められている。すなわち、複数の「エリア」は、プレーヤのゲームレベルの異なる多数のプレーヤが無制限に同じ「エリア」に集合するのを制限し、プレーヤのゲームレベルに応じて集合場所を分けるためのものである。いずれかの「ランド」を選択したプレーヤは、選択した「ランド」の中にある、自己のゲームレベルに応じたいずれかの「エリア」を選択することができる。
各「エリア」には、ハンター(プレーヤの分身)の生活拠点となる「街」と呼称されるフィールド(以下、「拠点フィールド」という。)が複数設けられている。いずれかの「エリア」を選択したプレーヤは、選択した「エリア」の中にあるいずれかの「街」を選択することができ、いずれかの「街」を選択することによって、プレーヤの分身であるハンターを登場させて、オンラインゲームをプレイすることができるようになっている。
拠点フィールド(街)には、図4に示すように、例えば「広場」、「酒場」、「武具工房」、「市場」、及び「ゲストハウス」等といった複数の施設が設けられている。「広場」は、プレーヤによってゲームが開始又は再開されるときにモニタ13に最初に表示される場面であり、ハンターは、この「広場」から他の施設に移動できたり、他の施設から「広場」に戻れたりすることができるようになっている。「酒場」は、ハンターが集まり、情報交換をしたり、チームを組んだり、「クエスト」を受注したりするための施設であり、「武具工房」は、ハンターが所有する武器や防具を製造したり、強化したりできる施設である。また、「市場」は、ハンターがアイテムを売買できる施設であり、「ゲストハウス」は、ハンターが食事をしたり休息をとったりすることのできる施設である。
このハンティングアクションゲームでは、拠点フィールドの他に、モンスターが生息し、「クエスト」を達成させるためにハンターが移動するフィールド(以下、「狩場フィールド」という。)が設けられている。狩場フィールドには、例えば、「森と丘」のマップエリア、「ジャングル」のマップエリア、「砂漠」のマップエリア、及び「沼地」のマップエリア等のモンスターの種類と生息環境の異なる複数のマップエリア(各「ランド」に構成されている「エリア」とは異なる。)が設けられている。
さらに、各マップエリアには、「ベースキャンプ」、「丘陵地帯」、「森林」、及び「洞窟」等といった土地条件が異なる複数の地域が設定されている。「ベースキャンプ」は、ハンターが狩場フィールドの各マップエリアに入場する際、最初にモニタ13に表示される場面であり、ハンターが狩場フィールドで採取したアイテムを納品したり、休息をしたりできる地域である。ハンターは、この「ベースキャンプ」から各地域に移動することができ、所定の地域では各地域間でも移動できるようになっている。
各プレーヤの操作するハンターは、拠点フィールドである「街」を生活の拠点とし、「クエスト」を受注し、必要に応じて他のハンターとチームを組んで「クエスト」に応じた狩場フィールドに向かう。狩場フィールドでは、各地域において「クエスト」を達成すべき行動(例えば所定のアイテムを採取する、所定のモンスターを討伐する等)を行う。
このハンティングアクションゲームでは、オンラインモードにおけるゲーム進行プログラムは、ゲーム進行に応じた複数の場面ごとに対応する個別プログラムに分かれている。例えば、クエストに出発するための準備をする場面である「酒場」には、この「酒場」の場面に対応する個別プログラムが設けられている。また、「クエスト」に応じた狩場フィールドに移動しモンスターをハンティングする場面である、例えば「森と丘」マップエリアの「丘陵地帯」には、この「丘陵地帯」の場面に対応する個別プログラムが設けられている。
これらの個別プログラムは、ハンターがある場面から他の場面に移動するたびに、移動された他の場面に対応する個別プログラムがディスク15からその都度読み出され、RAM21cの所定領域(図2のアドレス「0×0100000」〜「0×017ffff」参照)に書き込まれるようになっている。そして、RAM21cの所定領域に書き込まれた個別プログラムが処理されることにより、その個別プログラムに対応する場面がモニタ13に表示される。
各ゲーム装置2でプレーヤによりオンラインモードによるゲームの開始若しくは再開の指示が行われると、ディスク15からハンターのゲーム開始時若しくは再開時の画像データと上記拠点フィールドにおけるゲーム進行プログラム(個別プログラム)とが読み出され、画像データに基づいてモニタ13にゲーム開始時若しくは再開時のゲーム画面が表示されてゲーム可能状態となる。
本実施形態では、初めてゲームを始めるときやゲームを一旦終了した後、再開するときは拠点フィールドである「街」の「広場」からゲーム可能状態となるように設定されているので、図5に示すように、ハンターAが「街」の「広場」に居る状態の画像がモニタ13に表示され、プレーヤはこの表示状態からハンターの動作を制御してゲームを進行させることになる。
そして、例えば、プレーヤがハンターAの動作を制御して拠点フィールド内の「クエスト」を受注するための所定の場所(例えば「酒場」)に移動させると、ディスク15から「酒場」内の画像データとその「酒場」内でのゲーム進行プログラム(個別プログラム)がディスク15からRAM21cに読み出され、図6に示すように、モニタ13に「酒場」内のゲーム画面が表示される。このとき、場面が「広場」から「酒場」に切り替わったことを示す切替情報がゲームサーバ3に送信される。図6では、プレーヤが操作コントローラ12を操作してハンターAを酒場のマスターBと会話させることができる。このとき、他のゲーム装置2を操作するプレーヤが同様に自己の操作するハンターを「酒場」に移動させると、場面が切り替わったことを示す切替情報がゲームサーバ3に送信される。
ゲームサーバ3は、場面が「酒場」に切り替わったことを示す切替情報を受信すると、その切替情報とそのハンターを特定する情報(ID情報)とを同一の「酒場」にハンターを移動させている他のゲーム装置2に送信する。各ゲーム装置2では、他のゲーム装置2により制御される切替情報とID情報とに基づいて、モニタ13のゲーム画面に自機で制御されるハンターと他のゲーム装置2で制御されるハンターが「酒場」内に入っている画像が表示される。
この表示状態で、いずれかのプレーヤがハンターに「クエスト」を受注させる動作をさせ、さらにその「クエスト」に対して協力者を募集する動作をさせると、その募集情報がゲーム装置2からゲームサーバ3に送信される。ゲームサーバ3は、その募集情報を他のゲーム装置2に送信する。他のゲーム装置2では、その募集情報に基づいてモニタ13に表示されたあるハンターが「クエスト」を受注し、協力者を募集していることを示す画像が表示される。
その後、チーム編成の調整のために各ゲーム装置2でチャット機能により相互に会話操作が行われると、ゲームサーバ3はそのチャット処理を制御するとともに、チャット操作によりチームを組むハンターが決定されると、その決定情報を関係する各ゲーム装置2に送信してチームによる「クエスト」達成のゲーム進行を可能にする。
その後は、各ゲーム装置2において、各プレーヤが各ハンターを「クエスト」達成の旅に出発させると、ゲーム画面が拠点フィールドから狩場フィールドに移行し、各プレーヤの操作に基づき「クエスト」達成のためのゲーム進行処理が行われることになる。例えばハンターが狩場フィールドの「森と丘」マップエリアの「ベースキャンプ」に移動されると、ディスク15から「ベースキャンプ」内の画像データとその「ベースキャンプ」内でのゲーム進行プログラム(個別プログラム)がディスク15からRAM21cに読み出され、モニタ13に「ベースキャンプ」内のゲーム画面が表示される。このとき、場面が「酒場」から「ベースキャンプ」に切り替わったことを示す切替情報がゲームサーバ3に送信される。
ゲーム進行処理では、各ゲーム装置2における操作情報は随時ゲームサーバ3に送信され、ゲームサーバ3を介してチームを構成するゲーム装置2相互で共有される。したがって、各ゲーム装置2ではチームを組んだ他のハンターの画像が必要に応じてモニタ13に表示され、他のプレーヤの操作に応じて動作するようになる。
そして、その後のゲーム進行により、モンスターの討伐等の「クエスト」が達成されると、ゲーム画面が狩場フィールドから拠点フィールドの元の「広場」の画面に切り替えられて、ハンターは次の「クエスト」を受注可能な状態となる。この場合も、場面の切替情報がゲームサーバ3に送信されるとともに、ディスク15から「広場」内の画像データとその「広場」内でのゲーム進行プログラム(個別プログラム)がディスク15からRAM21cに読み出され、モニタ13に「広場」内のゲーム画面が表示される(図5参照)。
なお、上記の説明では、「クエスト」を受注したプレーヤがその「クエスト」に対して協力者を募集する場合について説明したが、プレーヤは協力者を募集することなく単独で狩場フィールドに移行し、「クエスト」を達成するためのゲーム進行を行うことも可能である。
ここで、不正プレーヤが行う不正処理の例を説明すると、不正処理としては、例えば、ハンターの所持金を増減する演算処理プログラムを変更する不正が挙げられる。このハンティングアクションゲームにおいては、ハンターがアイテム等の売買を行うことにより一定の金銭を入手する又は支払うようになっている。この金銭の受け渡しにおける処理は、例えば、拠点フィールドの「武具工房」や「市場」で武器や防具あるいはアイテムを売買する際に実行される。そのため、上記演算処理プログラムは、「武具工房」の場面に対応するゲーム進行プログラム(個別プログラム)や「市場」の場面に対応するゲーム進行プログラムに含まれている。
「武具工房」や「市場」でハンターが金銭を用いて売買を行うと、ゲーム装置2のCPU21aは、「所持金=現在の所持金+変更する金額」といった演算を行う。上式の「変更する金額」には、金銭を取得したとき(例えばアイテムを売ったとき)にはそのアイテムの売却価格に相当するプラスの数値が、金銭を支払ったとき(例えば武器を購入したとき)にはその武器の購入価格に相当するマイナスの数値がそれぞれ入力される。
ところが、不正を行うプレーヤは、専用ツール等を用いて、以下のようにRAM21cの内容(演算処理プログラム)を書き換える。すなわち、「変更する金額」に例えば「99999999」(オンラインゲーム中の最大所持金の値)といった固定値を代入する。このようにすれば、売買処理が発生するたびに、マイナスの数値を発生させないようにすることができ、すなわち、ハンターの所持金を常に最大となるようにすることができる。そのため、ハンターは、より強力で高価な武器や防具を購入することができるようになる。
このような不正のパターンとしては、上記の他に、ハンターが所有するアイテムを例えば売りに出してアイテムの所持数に変更が発生する場合、アイテムの所持数が最大になるようにする、といったことが挙げられる。アイテムの所持数を変更させる演算処理プログラムは、例えば「市場」の場面に対応するゲーム進行プログラム(個別プログラム)に含まれている。
また、他の不正処理としては、例えばプレーヤの体力を減らす演算処理プログラムを削除する不正が挙げられる。このハンティングアクションゲームにおいては、オンラインゲーム中にモンスターからの攻撃を受けた際に、ハンターの現在体力から、モンスター側の攻撃力に応じた数値を減算する処理が行われている。このハンターの体力を減算する演算処理プログラムは、例えば、狩場フィールドの「森と丘」マップエリアのいずれかの地域でモンスターを討伐する際に実行される。この場合、CPU21aは、「ハンターの体力=現在のハンターの体力−敵の攻撃力」といった演算を行う。
ところが、不正を行うプレーヤは、以下のようにRAM21cの内容(演算処理プログラム)を書き換える。すなわち、上記処理に代えて、例えば「ハンターの体力」=「現在の体力」といった演算を行うようにRAM21cを書き換える。このようにすれば、モンスターに攻撃された際でもハンターはダメージを受けないようになる。また、演算自体を行わないように、RAM21cを書き換えることもできる。
このような不正のパターンとしては、上記の他に、制限時間がある「クエスト」において制限時間の設定をなくす、アイテムを使用する際にアイテムの所持数が減らないようにする、金銭を使っても金銭が減らないようにする、といったことが挙げられる。
また、他の不正処理としては、ハンターの動作を制御する演算処理プログラムを変更する不正が挙げられる。このハンティングアクションゲームにおいては、オンラインゲーム中にハンターが移動すれば、一定の数値が現在の位置に加算されることで移動と認識されるようになっている。このハンターの動作を制御する演算処理プログラムは、例えば、狩場フィールドの「森と丘」マップエリアのいずれかの地域でハンターが移動したときに実行される。この場合、CPU21aは、「ハンターの位置=現在位置+移動距離(例えば10cm)」といった演算を行う。
ところが、不正を行うプレーヤは、上記処理に代えて、移動距離の値を例えば40cmといった大きな固定値になるようにRAM21c(演算処理プログラム)を書き換える。このようにすれば、ハンターの移動する速度が何倍にもなることが可能になる。このような不正のパターンとしては、上記の他に、ハンターの攻撃力及び防御力を変更するといったことが挙げられる。
また、他の不正処理としては、プログラムの分岐先を決定する判別プログラムを変更する不正が挙げられる。このハンティングアクションゲームにおいては、特定のフラグによって、例えば「クエスト」を達成するといった成功パターンの処理を行うか、「クエスト」の達成に失敗するといった失敗パターンの処理を行うかといった判別処理が行われる。この判別処理は、例えば、狩場フィールドの「森と丘」マップエリアのいずれかの地域でハンターが「クエスト」を達成したことを判別するときに実行される。
ところが、不正を行うプレーヤは、上記特定のフラグを書き換えて、失敗パターンと判別する処理を成功パターンと判別する処理に書き換える。このようにすれば、常に成功パターンのみを選択するプログラムに変更することができる。
このような不正のパターンとしては、上記の他に、次のマップエリアへの移動条件を満たしていないのにもかかわらず、先のマップエリアに移動することができる、といったことが挙げられる。例えば「森と丘」マップエリアにおける「クエスト」を全て達成していないのにもかかわらず、次のマップエリアである「ジャングル」マップエリアに移動することができるといった事象に相当する。
本実施形態では、上記した演算処理プログラムや判別プログラムを不正検出対象プログラムと特定して不正検出対象プログラムに対して不正の検出を行うようにしている。すなわち、本実施形態では、ゲーム装置2のRAM21cに記憶されている不正検出対象プログラムを一旦ゲームサーバ3に送信し、それをゲームサーバ3において正規の不正検出対象プログラムと照合するようにしている。このようにすれば、上記した不正によって書き換えられた内容は、RAM21cに記憶されている不正検出対象プログラムに挿入されているため、照合した不正検出対象プログラムの内容が一致していないことによって、不正検出対象プログラムが書き換えられたとして、プレーヤが不正を行ったことを認識することができる。
次に、上記ゲームシステムにおける制御動作を、図7に示すフローチャートを参照して説明する。なお、以下では、プレーヤがオンラインモードを選択してゲームを行う場合について説明する。
まず、プレーヤがディスク15を本体11のディスクドライブユニット24に装着すると、ディスクドライブユニット24は、ディスク15に記憶されたゲームプログラム及びゲームデータ等を読み出し、RAM21cの所定領域に格納する(S1)。例えば、RAM21cのアドレス「0×0100000」〜「0×017ffff」には、サーバ対応プログラムが格納される(図2(b)参照)。また、RAM21cのアドレス「0×0180000」〜「0×01bffff」には、ネットワーク制御プログラムが格納され、アドレス「0×01c0000」〜「0×01fffff」には、グラフィック制御プログラムが格納される。
ゲーム装置2では、まず、サーバ対応プログラムが起動し、プレーヤのオンラインモードでのオンラインゲームの参加を設定する入場処理が行われる。すなわち、ゲーム装置2からゲームサーバ3にプレーヤを認証するための情報(例えば、ID番号)等とともにログイン要求が送信される(S2)。このログイン要求に応じて、ゲームサーバ3では、それに応じた入場処理が行われる(S3)。すなわち、プレーヤの参加が許可されると、ゲームサーバ3からゲーム装置2にログインの許可情報が送信される。
ログインの許可情報が送信されたゲーム装置2では、オンラインモードでのゲーム開始又はゲーム再開が可能になり、プレーヤは、任意の「ランド」、「エリア」を選択した後、ハンターを登場させる「街」を決定するための操作を行うと(S4)、ディスク15から「街」の「広場」の場面に対応するゲーム進行プログラム(個別プログラム)がRAM21cの所定領域に格納される(S5)。すなわち、図2(a)に示すように、RAM21cのアドレス「0×0100000」〜「0×017ffff」には、サーバ対応プログラムに代えて、「広場」の場面に対応するゲーム進行プログラムが格納される。
ゲーム装置2では、「広場」の場面に対応するゲーム進行プログラムが格納されると当該ゲーム進行プログラムが起動され、プレーヤが拠点フィールドを選択するための画面から「広場」の開始画面(図5参照)に切り替わり、それがモニタ13に表示される(S6)。次いで、ゲーム装置2は、「広場」の開始画面に切り替わったことを示す切替信号をゲームサーバ3に送信する(S7)。本実施形態では、ゲーム装置2は、ゲーム進行にともなう場面がモニタ13に表示されたとき、又はある場面から他の場面に切り替わったとき、そのことを示す切替信号がゲームサーバ3に送信される。この切替信号をゲームサーバ3が受信することにより、ゲームサーバ3では、各ゲーム装置2において、現在どの場面がモニタ13に表示されているか、すなわち、表示されている場面に対応するゲーム進行プログラムが実行されているかを認識することができる。
ゲームサーバ3は、「広場」の場面に切り替わったことを示す切替信号を受信すると(S8)、ハードディスク装置34に記憶されている不正検出プログラムを起動させる。具体的には、ゲームサーバ3は、上記切替信号を受信してから所定時間経過後に、ゲーム装置2のRAM21c上の所定領域に記憶されているゲーム進行プログラムの不正検出対象プログラムを送信することを要求する送信要求信号をゲーム装置2に対して出力する(S9)。
所定時間経過後に送信要求信号をゲーム装置2に出力するのは、不正を行うプレーヤが専用ツール等を用いて不正検出対象プログラムを書き換える時間を考慮したものである。すなわち、「広場」の場面に切り替わったことを示す切替信号が送信された後、即座に不正検出対象プログラムを送信することを示す送信要求信号を出力したのでは、未だ書き換えられていない不正検出対象プログラムがゲーム装置2から送信される可能性があるからである。
ゲーム装置2は、ゲームサーバ3からの上記送信要求信号を受信すると(S10)、RAM21cに記憶されている、ゲーム進行プログラムの不正検出対象プログラムを読み出し、ゲームサーバ3に対して送信する(S11)。
ゲーム装置2は、RAM21cの所定領域(例えばアドレス「0×0100000」〜「0×017ffff」)に記憶されているゲーム進行プログラムの全てをゲームサーバ3に送信するのではなく、ゲーム進行プログラム中の、例えばハンターが金銭を用いて売買する際に起動される演算処理プログラムや例えば「クエスト」を達成したか否かを判別する判別プログラム等の不正検出対象プログラムを送信する。
例えば、ゲーム装置2において現在実行されているゲーム進行プログラムが「市場」の画面に対応するゲーム進行プログラムである場合、「市場」の場面に対応するゲーム進行プログラムには、金銭を用いた売買に関する演算処理プログラムが含まれているため、その演算処理プログラムが送信されることになる。演算処理プログラムが送信されるのは、このような演算処理プログラムが、不正プレーヤによって改ざんされる可能性が高いことに基づく。また、演算処理プログラムを送信すると、RAM21cに記憶されているゲーム進行プログラム全体を送信する場合に比べ、送信負荷がより軽減でき、送信時間もより短縮できるといった利点がある。
ゲームサーバ3は、ゲーム装置2から送られた、不正検出対象プログラムを受信すると(S12)、ゲームサーバ3のハードディスク装置34に記憶されている、正規のゲーム進行プログラムの不正検出対象プログラムと比較する(S13)。ゲームサーバ3では、ゲーム装置2側で現在実行されているゲーム進行プログラムを切替信号を受信していることにより認識しているため、実行されているゲーム進行プログラムの不正検出対象プログラムに対応する正規の不正検出対象プログラムを、ハードディスク装置34から容易に読み出すことができる。
すなわち、ゲーム進行プログラム中における不正検出対象プログラムのアドレス上の位置は、予め設定されているため、ゲームサーバ3側でも不正検出対象プログラムのアドレス上の位置を認識しており、ハードディスク装置34から容易にゲーム進行プログラム中における正規の不正検出対象プログラムを読み出すことができる。
上記比較結果により、ゲーム装置2から送信された不正検出対象プログラムと、ハードディスク装置34に記憶されていた正規の不正検出対象プログラムとが異なる場合(S14:NO)、ゲーム装置2のRAM21cに読み込まれ、ゲームサーバ3に送信された不正検出対象プログラムの内容がユーザによって改ざんされており、不正が行われたものと判別する。
プレーヤによって不正が行われたと判別された場合、そのときの不正情報(例えば不正が検出された時刻、改ざんされたゲームプログラムの内容、及び当該ゲーム装置2を使用するプレーヤのID等)をハードディスク装置34に記憶する(S15)。このように、不正情報をハードディスク装置34に記憶するのは、後にこのゲーム管理者等が不正者を確認するためである。すなわち、不正情報は、どの部分がどのように改ざんされたのかをゲームサーバ3側で把握して、例えば改ざんの程度、傾向等を調査するためのデータとして用いられる。また、不正情報は、不正したプレーヤに対して不正を行ったことを認めさせるための証拠としても用いられる。
次いで、ゲームサーバ3は、上記比較判別処理によって不正が検出されたことの不正通告信号を、当該ゲーム装置2に対して送信する(S16)。その後、ゲームサーバ3は、ゲーム装置2との通信を遮断する(S17)。
ゲーム装置2では、上記不正通告信号をゲームサーバ3から受信したか否かの判別処理(S18)を割り込み処理的に行っている。ステップS18の判別処理によって、ゲームサーバ3からの不正通告信号を受信したと判別された場合(S18:YES)、モニタ13に表示されているゲーム進行画面の表示を即座に中止し、不正が検出されたことを表す不正通告画面をモニタ13に表示する(S19)。その後、ゲーム装置2は、ゲームサーバ3との通信を遮断する(S20)。これにより、プレーヤに対して、不正を行ったのでゲームサーバ3との通信が遮断されたことを認識させることができる。
このように、ゲームサーバ3では、正規の不正検出対象プログラムと、ゲーム装置2のRAM21cに読み込まれた不正検出対象プログラムとを比較することにより、ゲーム装置2においてユーザが不正検出対象プログラムを改ざんしたか否かを判別するようにしている。したがって、ユーザが例えばアイテムのデータや武器及び防具のデータを改ざんする場合に加えて、ゲームプログラム自体を改ざんするような場合でも、容易にそのことを判別することができる。
一方、ゲームサーバ3は、ステップS14における比較処理によって、ゲーム装置2から送信された不正検出対象プログラムと、ハードディスク装置34に記憶されていた正規の不正検出対象プログラムとが同一と判別した場合(S14:YES)、ゲーム装置2のRAM21cに読み込まれ、ゲームサーバ3に送信されてきた不正検出対象プログラムは、改ざんされていないとして、通常のゲーム進行処理を続行する。すなわち、ステップS8に戻り、ゲーム装置2からの場面が切り替えられたことを示す切替信号が送信されることを監視する。
ゲーム装置2では、ステップS18において上記不正通告信号がゲームサーバ3から送信されない場合(S18:NO)、通常のゲーム進行処理が続行される。すなわち、プレーヤは、モニタ13のゲーム画面を見ながら操作コントローラ12を操作すると、その操作情報に基づいてゲーム進行プログラムが実行され、モニタ13に表示される画像が変化し、ゲームが進行することになる。そして、ハンターが切り替えるべき場面へ移動したか否かが判別される(S21)。
ここで、プレーヤは、「クエスト」を受注するために、操作コントローラ12を操作してハンターを「広場」から、「クエスト」を受注するための場所、例えば「酒場」に移動させると、ハンターが切り替えるべき場面へ移動したと判別され(S21:YES)、処理はステップS5に戻り、ディスク15から「酒場」の場面に対応するゲーム進行プログラム(個別プログラム)がRAM21cの所定領域に格納される。すなわち、RAM21cの所定領域には、「広場」の場面に対応するゲーム進行プログラムに代えて、「酒場」の場面に対応するゲーム進行プログラムが格納される。
ゲーム装置2では、「酒場」の場面に対応するゲーム進行プログラムが格納されると当該ゲーム進行プログラムが起動され、「酒場」の開始画面がモニタ13に表示される(S6)。次いで、ゲーム装置2は、ゲームサーバ3に「広場」から「酒場」に場面が切り替わったことを示す切替信号を送信する(S7)。これにより、ゲームサーバ3では、ゲーム装置2において、「広場」から「酒場」に場面が切り替わり、「酒場」の場面に対応するゲーム進行プログラムが実行していることを認識することができる。
ゲームサーバ3は、「酒場」の場面に切り替わったことを示す切替信号を受信すると(S8)、再びハードディスク装置34に記憶されている不正検出プログラムを起動させる。このように、ゲームサーバ3では、場面が切り替わるごとに不正検出プログラムが実行される。
ゲームサーバ3において不正検出プログラムが起動する(RAM21cの内容をゲーム装置2から送信させる)タイミングは、上記したようにゲーム装置2のモニタ13に表示する場面が切り替わるごとであるので、ゲーム進行プログラムがRAM21cに記憶されるごとに、ゲーム進行プログラムを書き換える不正を確実に検出することができる。
なお、不正検出プログラムが起動される(不正検出対象プログラムがゲーム装置2から送信されて比較される)タイミングは、上記実施形態では場面が切り替えられてから所定時間経過後とされたが、これに限定されるものではない。例えば、場面が切り替えられて所定時間経過後に不正検出プログラムを起動させ、その後、新たな画面に切り替えられるまでの間、一定時間(例えば5分)経過ごとに不正検出プログラムを起動させるようにしてもよい。
また、不正検出プログラムが起動されるタイミングは、ランダムなタイミングであってもよい。このような場合、場面が切り替えられたことを示す切替信号は、ゲーム装置2からゲームサーバ3に逐次送信されているので、ゲームサーバ3側では、ゲーム装置2側でどの場面でプレイされているかが容易に認識できる。
また、不正検出プログラムが起動されるタイミングは、ゲームサーバ3側で、ゲームサーバ3とゲーム装置2とのデータの送受信の情報量が比較的小さいことを判断したときといった、通常のゲーム進行処理に支障のないときであってもよい。
このように、専用ツールや専用ソフトウェア等を用い、不正にデータを改ざんするプレーヤに対して、当該プレーヤがオンラインゲームでプレイしようとした場合には、各ゲーム装置3から送信される不正検出対象プログラムを正規の不正検出対象プログラムと照合することにより、その不正を確実に検出することができるとともに、ゲームプログラムの全体をゲームサーバ3に送信する場合に比べ、ゲームサーバ3とゲーム装置2との通信負荷を軽減することができ、通信のための待ち時間が少ないことからプレーヤのいらだちを生じさせるようなこともない。
また、検知された不正の内容は、ハードディスク装置34に記憶され、例えばゲーム管理者がその内容を確認した上で、不正なゲームプログラムを所有しているプレーヤに対して事実確認及び警告等に利用することができる。これにより、不正なゲームプログラムを所有しているプレーヤがそのゲームプログラムを破棄等して正規の状態に戻せば、改ざんされたゲームプログラムをこのオンラインゲームに持ち込まれることが防止される。なお、不正なゲームプログラムを所有しているプレーヤがそのゲームプログラムを破棄等せずに、再び、オンラインゲームに参加しようとしたときには、その時点で回線を接続しないようにして参加を拒否するようにしてもよい。
また、例えば一つのゲーム進行プログラムに含まれる不正検出対象プログラムが複数ある場合は、上記不正情報を用いて例えば不正が行われる頻度を、上記した不正検出対象プログラム別に統計的に調べ、不正が検出されることの多い不正検出対象プログラムから優先的に正規の不正検出対象プログラムと比較するようにしてもよい。
もちろん、この発明の範囲は上述した実施の形態に限定されるものではない。例えば、本実施形態では、ハンティングアクションゲームのオンラインゲームに適用したゲームシステムについて述べたが、適用されるゲームはこれに限定されるものではなく、他のアクションゲームやロールプレーイングゲームやレーシングゲームや格闘ゲームにも適用することができる。