説明

情報処理プログラム、情報処理装置、情報処理方法および情報処理システム

【構成】 ゲーム装置(10)は、CPU(44a)を含み、CPUは、ゲーム装置固有の情報と乱数とから生成用データを生成し、この生成用データを用いてハッシュ値データを算出する。一方、CPUは、取り込んだ生成用データから装置固有情報を抽出し、その正当性を判断する。正当と判断した場合には、取り込んだ生成用データを用いてハッシュ値データを算出する。そして、CPUは、取り込んだハッシュ値データと算出したハッシュ値データとが一致する場合には、当該ハッシュ値データをパラメータとして用いて、ゲーム処理を実行する。装置固有情報が正当でない場合や2つのハッシュ値データが一致しない場合には、通信ゲームを開始しない。
【効果】 改変されたデータを用いたゲーム処理が実行されるのを未然に防止することができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関し、特にたとえば、取り込んだデータに基づいて処理を行う、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関する。
【背景技術】
【0002】
この種の情報処理装置の一例が特許文献1に開示されている。この特許文献1の対戦相手決定システムでは、運営用コンピュータは、ネットワークゲーム大会における参加者を受け付け、参加者受付を終了すると、対戦相手を決定し、各参加者に対戦相手を通知し、ゲーム開始の指示データを各対戦者に送信する。ゲーム・プレイ中は、運営者用コンピュータをサーバとして使用することなく、つまり運営者用コンピュータを介在させることなく、参加者のコンピュータ間でデータを送受信して、ゲームを進行させる。
【特許文献1】特開2001−157782[A63F 13/12, G06F 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
最近、コンピュータゲームにおけるチート行為やデータの改変が横行しており、ネットワーク経由でネットワークゲームを行う際に、通常ではあり得ないようなデータに改変された対戦相手データを受信してゲームを行ってしまうことが多発していた。したがって、特許文献1に開示された対戦相手決定システムのように、単に、参加者を受け付けて、対戦相手を決定し、その後、参加者同士のコンピュータ間でゲームを進行させる場合には、改変されたデータの使用を防止するのが困難である。このため、改変されたデータを受信した側のコンピュータではゲームバランスが崩れてしまい、当該コンピュータを使用するプレイヤのゲームに対する興味を薄れさせていた。
【0004】
それゆえに、この発明の主たる目的は、新規な、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムを提供することである。
【0005】
また、この発明の他の目的は、データの改変を行われることなく他装置とデータをやり取りできる、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムを提供することである。
【課題を解決するための手段】
【0006】
第1の発明は、取り込んだデータに基づいて処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他の情報処理装置や情報処理装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いて所定の処理を行う。
【0007】
第1の発明によれば、処理データが正当である場合に、当該処理データを用いて所定の処理を行うので、改変されたデータを用いて処理が実行されるのを防止することができる。このため、データの改変自体を防止することもできる。つまり、データの改変を行われることなく他装置とデータをやり取りすることができる。
【0008】
第2の発明は、第1の発明に従属し、所定データ生成手段、および正当性判断手段として、コンピュータをさらに機能させる。所定データ生成手段は、正当性を判断可能な判断可能データを含む所定のデータを生成する。正当性判断手段は、入力手段によって入力された所定のデータに含まれる判断可能データの正当性を判断する。検証データ算出手段は、正当性判断手段によって正当であることが判断されたとき、検証データを算出する。
【0009】
第2の発明によれば、所定のデータに含まれる判断可能データの正当性をさらに判断するので、改変されたデータを用いて処理が実行されるのをより高度に防止することができる。
【0010】
第3の発明は、第1または第2の発明に従属し、実行手段は、処理データをパラメータとして用いて、所定の処理を行う。ただし、処理データに基づいて算出したパラメータが用いられてもよい。
【0011】
第3の発明によれば、処理データをパラメータとして用いるので、パラメータの改変を防止することができる。
【0012】
第4の発明は、第2の発明に従属し、判断可能データは、情報処理装置固有の情報である。
【0013】
第4の発明によれば、情報処理装置固有の情報を判断可能データとして用いるので、所定のデータまたは判断可能データが他の情報処理装置で生成された不当なデータであるかどうかを容易に判断することができる。
【0014】
第5の発明は、第4の発明に従属し、正当性判断手段は、入力手段によって入力された所定のデータに含まれる情報処理装置固有の情報が、入力手段によって入力された所定のデータと処理データとの出力元である情報処理装置固有の情報であれば、正当であると判断する。たとえば、情報処理装置固有の情報は、情報処理装置のIDのような出力元を示す情報である。
【0015】
第5の発明によれば、出力元を示す情報を情報処理装置固有の情報として用いるので、その正当性を簡単に判断することができる。
【0016】
第6の発明は、第4または第5の発明に従属し、情報処理装置固有の情報は、情報処理装置のMACアドレスを含む。
【0017】
第6の発明によれば、情報処理装置固有の情報として、MACアドレスを用いるので、新たに何らかの情報を割り当てる必要が無く、情報処理装置固有の情報の正当性を簡単に判断することができる。
【0018】
第7の発明は、第4または第5の発明に従属し、情報処理装置固有の情報は、所定のデータの生成時の日時情報(年月日および時分秒の情報)を含む。所定のデータの生成時が完全に一致することは稀であると考えられるからである。
【0019】
第7の発明によれば、所定のデータの生成時の日時情報を用いても、情報処理装置固有情報の正当性を判断することができる。
【0020】
第8の発明は、第7の発明に従属し、正当性判断手段は、入力手段によって入力された所定のデータに含まれる日時情報が、入力手段によって以前入力された所定のデータに含まれる日時情報に一致するものが存在しなければ、正当であると判断する。ただし、日時情報が重複すると、正当性判断手段は、不当であると判断する。
【0021】
第8の発明によれば、所定のデータに含まれる日時情報を比較するだけなので、正当性を簡単に判断することができる。
【0022】
第9の発明は、第4ないし第8の発明のいずれかに従属し、情報処理装置固有の情報は、実行手段によって行われる処理を認識可能な処理固有情報を含む。たとえば、処理固有情報としては、プログラムやソフトウェアのタイトルが該当する。
【0023】
第9の発明によれば、実行手段によって行われる処理を認識可能な処理固有情報を情報処理装置固有の情報として用いても、その正当性を判断することができる。
【0024】
第10の発明は、第9の発明に従属し、正当性判断手段は、さらに、入力手段によって入力された所定のデータに含まれる処理固有情報が、実行手段によって行われる処理を示すものであれば、正当であると判断する。
【0025】
第10の発明によれば、実行手段によって行われる処理を示す処理固有情報であるかどうかを判断するだけなので、情報処理装置固有の情報の正当性を簡単に判断することができる。
【0026】
第11の発明は、第4ないし第10の発明のいずれかに従属し、所定のデータは、ランダムに変化する値をさらに含む。たとえば、ランダムに変化する値は、乱数や疑似乱数である。
【0027】
第11の発明によれば、所定のデータはランダムに変化する値を含むので、同じ情報処理装置であっても、可変的に処理データを算出することができる。
【0028】
第12の発明は、第1ないし第11の発明のいずれかに従属し、所定の一方向関数は、ハッシュ関数である。
【0029】
第12の発明によれば、ハッシュ関数によって処理データを算出するので、処理データから所定のデータを知ることがほとんど不可能であり、データの改変を防止することができる。
【0030】
第13の発明は、第1ないし第12の発明のいずれかに従属し、情報処理装置は、ネットワークに接続される。出力手段は、ネットワーク上の他の情報処理装置に対して、所定のデータと処理データとを送信する送信手段を含む。入力手段は、ネットワーク上の他の情報処理装置から、所定のデータと処理データとを受信する受信手段を含む。
【0031】
第13の発明によれば、通信により、所定のデータと処理データとをやり取りすることができる。
【0032】
第14の発明は、取り込んだデータに基づいて処理を行う情報処理装置であって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う。
【0033】
第15の発明は、取り込んだデータに基づいて処理を行う情報処理装置の情報処理方法であって、(a)所定の一方向関数を用いて、所定のデータから処理データを算出し、(b)所定のデータと、ステップ(a)によって算出された処理データとを外部に出力し、(c)外部から所定のデータと処理データとを入力し、(d)所定の一方向関数を用いて、ステップ(c)によって入力された所定のデータから検証データを算出し、そして(e)ステップ(c)によって入力された処理データと、ステップ(d)によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う、情報処理方法である。
【0034】
第16の発明は、取り込んだデータに基づいて処理を行う情報処理装置を少なくとも2つ備える情報処理システムであって、各々の情報処理装置は、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う。
【0035】
第14−第16の発明においても、第1の発明と同様に、データの改変を行われることなく他装置とデータをやり取りすることができる。
【0036】
第17の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。このゲームプログラムの発明では、所定のデータは、ランダムに変化する値を含むので、所定のデータから生成される処理データは毎回変化される。
【0037】
第18の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、処理データ算出手段と、出力手段として、コンピュータを機能させる。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。したがって、ランダムに変化する値を含む所定のデータと処理データとを取り込んだゲーム装置では、所定の一方向関数を用いて、所定のデータから検証データを算出する。そして、ゲーム装置は、たとえば、取り込んだ処理データと算出した検証データとが一致するかどうかを判断し、それらが一致すれば、その処理データを用いてゲーム処理を実行する。
【0038】
第19の発明は、取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、入力手段と、検証データ算出手段と、ゲーム実行手段として、コンピュータを機能させる。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う。
【0039】
第20の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他のゲーム装置やゲーム装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。
【0040】
第21の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、処理データ算出手段と、出力手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。
【0041】
第22の発明は、取り込んだデータに基づいて処理を行うゲーム装置であって、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。入力手段は、外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する。たとえば、所定のデータと処理データとは、他のゲーム装置や記録媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う。
【0042】
第23の発明は、取り込んだデータに基づいて処理を行うゲーム装置のゲーム制御方法であって、(a)所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出し、(b)所定のデータと、ステップ(a)によって算出された処理データとを外部に出力し、(c)外部から、ランダムに変化する値を含む所定のデータと処理データとを入力し、(d)所定の一方向関数を用いて、ステップ(c)によって入力された所定のデータから検証データを算出し、そして(e)ステップ(c)によって入力された処理データと、ステップ(d)によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う、ゲーム制御方法である。
【0043】
第24の発明は、取り込んだデータに基づいて処理を行うゲーム装置を少なくとも2つ備えるゲームシステムであって、各々のゲーム装置は、処理データ算出手段と、出力手段と、入力手段と、検証データ算出手段と、ゲーム実行手段を備える。処理データ算出手段は、所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する。出力手段は、所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する。入力手段は、外部から、ラムダに変化する値を含む所定のデータと処理データとを入力する。たとえば、入力手段によって入力される所定のデータと処理データとは、他のゲーム装置やゲーム装置に装着可能な記憶媒体から取得される。検証データ算出手段は、所定の一方向関数を用いて、入力手段によって入力された所定のデータから検証データを算出する。ゲーム実行手段は、入力手段によって入力された処理データと、検証データ算出手段によって算出された検証データとが一致するとき、つまり、処理データが正当である場合に、当該処理データを用いてゲーム処理を行う。
【0044】
第17−第24の発明においても、第1の発明と同様に、データの改変を行われることなく他装置とデータをやり取りすることができる。
【発明の効果】
【0045】
この発明によれば、入力された処理データと入力された所定のデータから一方向関数を用いて算出した検証データとが一致するかどうかを判断し、一致する場合に、その処理データを用いて所定の処理を行うので、改変されたデータの使用を防止することができる。これによって、データの改変を防止することができる。つまり、データの改変を行われることなく他装置とデータをやり取りすることができる。
【0046】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0047】
【図1】図1はこの発明の一実施例であるゲーム装置の外観図であり、開状態における正面を示す。
【図2】図2はゲーム装置の外観図であり、(A)が閉状態における上面を示し、(B)が閉状態における左側面を示し、(C)が閉状態における正面を示し、(D)が閉状態における右側面を示し、(E)が閉状態における背面を示し、(F)が閉状態における下面を示す。
【図3】図3は3D調整スイッチの動作を説明するための図解図である。
【図4】図4はゲーム装置の電気的構成の一例を示すブロック図である。
【図5】図5は図4の電気的構成の要部(立体LCDとSoCの一部とで構成される立体LCD制御部)を示すブロック図である。
【図6】図6は視差バリア方式による3D/2D表示の原理を説明するための図解図であり、(A)が視差バリアON状態(3D表示)を示し、(B)が視差バリアOFF状態(2D表示)を示す。
【図7】図7は図1に示すゲーム装置を用いたゲームシステムの例を示す図解図である。
【図8】図8は2台のゲーム装置で実行される認証処理の概略を説明するための図解図である。
【図9】図9は生成用データの具体例を示す図解図である。
【図10】図10は図4に示したメインメモリのメモリマップの例を示す図解図である。
【図11】図11は送信側のゲーム装置のCPUの認証処理を示すフロー図である。
【図12】図12は受信側のゲーム装置のCPUの認証処理を示すフロー図である。
【図13】図13は受信側のゲーム装置のCPUの正当性の判断処理を示すフロー図である。
【発明を実施するための形態】
【0048】
図1および図2には、本発明の一実施例であるゲーム装置10の外観が示される。ゲーム装置10は、折り畳み式のゲーム装置であり、図1は開状態におけるゲーム装置10の正面を示し、図2(A)〜図2(F)は閉状態におけるゲーム装置10の上面,左側面,前面,右側面,背面および下面を示している。
【0049】
ゲーム装置10は、図1に示されるように、互いに回動可能に連結された上側ハウジング10Aおよび下側ハウジング10Bを備え、上側ハウジング10Aの正面には、裸眼3D表示に対応した立体LCD12、内側カメラ18a、3D調整スイッチ20、3Dランプ20A、ならびに左右のスピーカ22aおよび22bなどが設けられる。下側ハウジング10Bの正面には、タッチパネル16付きの下LCD14、A,B,X,Yボタン24a−24d、十字キー(ボタン)24g、ホーム,セレクト,スタートボタン24h−24j、電源ボタン24k、アナログパッド26、およびマイク30が設けられる。
【0050】
また、図2(A)に示されるように、ゲーム装置10の上面(図1に示した上側ハウジング10Aの裏面)には、3D撮影に対応した左右の外側カメラ18bおよび18cが設けられる。また、図2(C)に示されるように、ゲーム装置10の前面には、ヘッドホン端子36、および電源ランプ42aなどが設けられる。また、図2(B)、図2(E)および図2(D)に示されるように、ゲーム装置10の左側面から背面に跨ってLボタン24eが設けられ、右側面から背面に跨ってRボタン24fが設けられる。また、ゲーム装置10の左側面には、音量調整スイッチ32およびSDカードスロット34などがさらに設けられ、ゲーム装置10の右側面には、無線スイッチ28、無線ランプ42bなどがさらに設けられる。上述の3D調整スイッチ20は、この右側面から露見している。また、ゲーム装置10の背面には、赤外線受発光部40などがさらに設けられる。そして、図2(E)および図2(F)に示されるように、ゲーム装置10の背面から下面に跨ってゲームカードスロット38が設けられる。
【0051】
立体LCD12は、視差バリア(パララックスバリア)方式による3D液晶(図6参照)であり、裸眼で立体視が可能な画像(裸眼立体視画像)を表示する。立体LCD12では、液晶による視差バリアをOFFすることで、平面画像の表示も可能である。なお、視差バリア方式に限らず、凹凸付のシート(レンチキュラレンズ)を利用するレンチキュラ方式や、その他の裸眼3D方式を採用してもよい。
【0052】
内側カメラ18aは平面画像(2D画像)を撮影し、外側カメラ18bおよび18cは立体視画像(3D画像)を撮影する。プレイヤを撮影した2Dまたは3Dの画像は、ゲームプログラムのようなアプリケーションプログラムへの画像入力として利用可能である。この場合、ゲームプログラムは、画像認識を行うことで、プレイヤの顔や手の動き、視線方向(眼球の向き)などを検出し、検出結果に応じた処理を実行する。内側カメラ18aによる2D画像はまた、下LCD14に表示可能であり、外側カメラ18bおよび18cによる3D画像はまた、立体LCD12に表示可能である。
【0053】
3D調整スイッチ20は、立体LCD12の表示に関して、3Dおよび2Dの間の切り替えを手動で行い、さらには、3Dでの立体感の手動調整をも行うためのスライドスイッチであり、たとえば図3のように動作する。3Dの立体感は、この実施例では、スライダSdが上端にあるとき最大(Sd=1)であり、スライダSdを下げるに従って減少し、下端にあるとき最小(Sd=0)となる。そして、スライダSdを下端まで下げきると、3Dから2Dに切り替わる。
【0054】
なお、詳細な説明は省略するが、このような3Dの立体感の変化は、仮想空間内に配置された左右の仮想カメラ(図示せず)の間の距離(カメラ間距離D)を変化させることによって実現される。つまり、3D調整スイッチ20の動作に応じて、カメラ間距離Dが調整される。そして、カメラ間距離Dは、こうして手動調整されるだけでなく、ゲームプログラムによる自動調整も受ける。
【0055】
3Dランプ20Aは、立体LCD12の表示状態を示すランプであり、3Dでは点灯し、2Dでは消灯する。なお、単に点灯よび消灯するだけでなく、3Dの程度(立体感の大小)に応じて輝度や色を変化させてもよい。
【0056】
タッチパネル16や、A,B,X,Yボタン24a−24d、十字キー(ボタン)24g、ホーム,セレクト,スタートボタン24h−24j、あるいはアナログパッド26への操作は、ゲームプログラムへのタッチ/ボタン/パッド入力として利用される。電源ボタン24kは、ゲーム装置10の電源をオン/オフするために用いられる。電源ランプ42aは、電源のオン/オフと連動して点灯/消灯する。
【0057】
マイク30は、プレイヤの発話音声や環境音などを音声データに変換する。音声データは、ゲームプログラムへの音声入力として利用可能である。この場合、ゲームプログラムは、音声認識を行うことで、プレイヤの発話音声を検出し、検出結果に応じた処理を実行する。マイク30による音声データはまた、NAND型フラッシュメモリ48(図4参照)などに記録可能である。
【0058】
スピーカ22aおよび22bは、ゲーム音声やマイク音声などを出力する。ヘッドホン端子36には、図示しないヘッドホンが接続される。音量調整スイッチ32は、スピーカ22aおよび22bの音量またはヘッドホン端子36の出力を調整するためのスライドスイッチである。
【0059】
SDカードスロット34には、カメラ画像やマイク音声などを保存するためのSDメモリカード(図示せず)が装着され、ゲームカードスロット38には、ゲームプログラムなどが格納されたゲームカード(図示せず)が装着される。赤外線受発光部40は、他のゲーム装置との間での赤外線(IR)通信に利用される。
【0060】
図4には、ゲーム装置10の電気的構成が示される。ゲーム装置10は、CPU、GPU、VRAMおよびDSPなどで構成されたSoC(System-on-a-Chip)44を含む。SoC44には、上述した立体LCD12、下LCD14、内側カメラ(Inカメラ)18a、左右の外側カメラ(OCAM−LおよびOCAM−R)18bおよび18c、A,B,X,Y,L,Rボタン24a−24f、十字ボタン24g、SDカードスロット34、ゲームカードスロット38、および赤外線受発光部(IR)40が接続される。SoC44にはまた、マイコン56を介して、上述した3D調整スイッチ(3D Vol)20、3Dランプ20A、ホーム,セレクト,スタートボタン24h−24j、電源ボタン(Power)24k、無線スイッチ(WiFi)28、音量調整スイッチ(音量Vol)32,および電源,無線ランプ42a,42bが接続される。SoC44にはさらに、IF回路58を介して、上述したタッチパネル16、左右のスピーカ22aおよび22b、アナログパッド26、マイク(Mic)30およびヘッドホン端子36が接続される。
【0061】
また、SoC44には、上述した以外の要素として、無線モジュール46、NAND型フラッシュメモリ48およびメインメモリ50が接続される。無線モジュール46は、無線LANに接続する機能を有する。したがって、図示は省略するが、ゲーム装置10は、他のゲーム装置10やコンピュータと直接またはネットワークを介して通信することができる。NAND型フラッシュメモリ48は、カメラ画像,マイク音声など保存用のデータを記憶する。メインメモリ50は、SoC44に作業領域を提供する。すなわち、メインメモリ50には、ゲームなどのアプリケーションで用いられる各種のデータやプログラムが記憶され、SoC44はメインメモリ50に記憶されたデータやプログラムを利用して作業を行う。
【0062】
マイコン56には、電源管理IC52および加速度センサ54が接続される。電源管理IC52はゲーム装置10の電源管理を行い、加速度センサ54はゲーム装置10の3軸方向の加速度を検出する。加速度センサ54の検出結果は、ゲームプログラムへの動き入力として利用可能である。この場合、ゲームプログラムは、検出結果に基づいてゲーム装置10自体の動きを計算し、計算結果に応じた処理を実行する。また、マイコン56は、RTC(リアルタイムクロック)56aを含み、RTC56aで時間をカウントしてSoC44に供給する。
【0063】
図5には、立体LCD12とSoC44の一部とで構成される立体LCD制御部12Aが示される。立体LCD12は、LCDコントローラ12a、バリア液晶12bおよび上LCD12cを含む。バリア液晶12bは、図6(A)に示されるように、縦(列)方向に伸びる複数の液晶スリットを含み、バックライトからの光を複数の液晶スリットで交互に遮ることによって、右目および左目に上LCD12cの異なる列の画素を通過した光が見えるようにする。上LCD12cは、下LCD14と同様、普通の(2D表示用の)液晶でよい。LCDコントローラ12aは、GPU44bひいてはCPU44aの制御下で、上LCD12cに描画を行い、かつバリア液晶12b(への印加電圧)をON/OFFする。バリア液晶12bをOFFすると、図6(B)に示されるように、右目および左目には、上LCD12cのどの列の画素を通過した光も見えるようになる。
【0064】
なお、図5には、立体LCD12に対応して、LCDコントローラ12a、GPU44bおよびVRAM44cが設けられるように示してあるが、当然に、下LCD14に対応して、LCDコントローラ、GPUおよびVRAMが設けられている。図5を参照して分かるように、下LCD14に対応するGPUもまた、CPU44aと信号を送受信可能に接続され、下LCD14に対応するGPUとVRAMとは信号を送受信可能に接続される。そして、CPU44a、下LCD14に対応するGPU、およびVRAMのそれぞれが、下LCD14に対応するLCDコントローラと信号を送受信可能に接続され、このLCDコントローラに下LCD14が接続されるのである。
【0065】
たとえば、電源ボタン24kがオンされ、ゲーム装置10の電源がオンされると、ゲーム装置10が起動され、図示しないメインメニュー画面が下LCD14に表示される。メインメニュー画面では、ゲーム装置10で実行可能な仮想ゲームなどのアプリケーションの実行を指示することができる。また、仮想ゲームの種類によっては、2台以上のゲーム装置10との間で通信することにより、仮想ゲーム(通信ゲーム)をプレイすることもできる。
【0066】
図7(A)および図7(B)は、通信ゲームをプレイする場合のゲームシステム100の例を示す。図7(A)に示すゲームシステム100は、2台のゲーム装置10を含み、その2台のゲーム装置10間で直接通信が行われる。図示は省略するが、3台以上のゲーム装置10を用いてゲームシステム100(ネットワーク)が構成されてもよい。かかる場合には、いずれか1台のゲーム装置10が親機として機能し、他のゲーム装置10が子機として機能する。たとえば、親機のゲーム装置10が、通信ゲームに参加する子機のゲーム装置10を募集し、子機のゲーム装置10の参加の申し込みを受け付けて、対戦相手のゲーム装置10を決定する。対戦相手のゲーム装置10が決定されると、親機のゲーム装置10と対戦相手としての子機のゲーム装置10との間で、通信ゲームが実行される。
【0067】
また、図7(B)に示すゲームシステム100は、2台以上のゲーム装置10を含み、各ゲーム装置10はインターネットのようなネットワーク104を介してサーバ102に接続される。たとえば、サーバ102は、マッチングサーバとして機能し、各ゲーム装置10からの参加を受け付け、対戦相手のゲーム装置10を決定する。対戦相手が決定され、通信プレイ(通信ゲーム)が開始されると、対戦相手のゲーム装置10同士で、ネットワーク104を介して通信が行われる。ただし、かかる場合にも、いずれか1台のゲーム装置10が親機として機能し、他のゲーム装置10が子機として機能する。
【0068】
ただし、通信ゲームが開始された後であっても、サーバ102を介して通信ゲームを進行させるようにしてもよい。かかる場合には、サーバ10が親機として機能し、通信ゲームを行う各ゲーム装置10が子機として機能する。また、かかる場合には、たとえば、対戦相手の各ゲーム装置10から操作データがネットワーク104を介してサーバ102に送信され、サーバ102でゲーム処理が実行され、その結果についてのデータが上記の対戦相手の各ゲーム装置10に送信される。ただし、サーバ102は、各ゲーム装置10でゲーム処理が実行されたデータを受信して、それらを統合し、統合した結果についてのデータを各ゲーム装置10に送信するようにしてもよい。
【0069】
このようなゲーム装置10では、通信ゲームの開始に先立って、各プレイヤが使用するプレイヤキャラクタが選択されるのが一般的である。かかる場合には、プレイヤ自身がプレイヤキャラクタを選択したり、コンピュータ(親機としてのゲーム装置10のCPU44a)がプレイヤキャラクタを選択したりする。このとき、プレイヤキャラクタの個性(属性)に関するデータ(ゲームデータ)が通信ゲームをプレイするゲーム装置10間でやり取りされる。
【0070】
しかし、最近では、通常ではあり得ない改変がなされたゲームデータを受信して通信ゲームをプレイしてしまうことが多発している。これは、イベント会場で知り合ったプレイヤやサーバ102によってマッチングされた対戦相手が改変されたデータを使用していることを判断することができないからである。このため、改変されたゲームデータを受信した側のゲーム装置10では、ゲームバランスを崩されてしまい、当該ゲーム装置10のプレイヤのような不正を行っていないプレイヤのゲームに対する興味を薄れさせていた。
【0071】
そこで、この実施例では、通信ゲームの開始に先立って、改変されたゲームデータであるかどうかを判断し、つまりゲームデータの正当性を判断し、正当であることが判断された場合にのみ、通信ゲームを行うようにしてある。
【0072】
まず、図8を用いて、2台のゲーム装置10間で実行されるゲームデータの正当性を判断するための認証処理の概略について説明することにする。ただし、通信ゲームへの参加予定のゲーム装置10が3台以上である場合には、親機のゲーム装置10と、各子機のゲーム装置10との間で、それぞれ認証処理が実行される。
【0073】
ここでは、2台のゲーム装置10のうち、一方のゲーム装置10を「ゲーム装置A」と呼び、他方のゲーム装置10を「ゲーム装置B」と呼ぶことにする。図8に示すように、ゲーム装置Aは、まず、生成用データを生成し、ハッシュ値データを算出する。ここで、生成用データは、ゲーム装置A固有の情報(装置固有情報)についてのデータ(ユニークデータ)と、改変可能な値のデータとを含む。この実施例では、装置固有情報は、ゲーム装置AのMACアドレスである。また、改変可能な値としては、乱数が用いられる。ただし、疑似乱数を用いてもよい。
【0074】
生成用データは、所定のビット数のレジスタで構成され、上述した装置固有情報についてのユニークデータおよび乱数についてのデータ(乱数データ)を直列に並べることにより生成される。たとえば、図9(A)に示すように、生成用データは、96ビット(4ビット×24)のレジスタで構成される。ただし、図9(A)では、4ビット(1/2オクテット)のまとまりで1つの四角枠を示してある。これは、ユニークデータおよび乱数データに対応する英数字を16進数(0−9およびA−F)で表すためである。
【0075】
図9(A)に示すように、最上位ビットを含む先頭の四角枠から順にMACアドレスの英数字に対応するデータ値が記憶され、それに続いて乱数の英数字に対応するデータ値が最下位ビットを含む末尾の四角枠まで記憶される。図9(A)(図9(B)も同じ)に示す例では、MACアドレスが“32:54:2A:6F:C5:01”であり、乱数が“5A34FBD290C6”である。
【0076】
ただし、後述するように、受信側の認証処理では、生成用データからユニークデータを抽出して、その正当性を判断するため、生成用データのうちの読み出すビットおよびその順番は予め決められている。したがって、図9(A)に示すように、MACアドレスおよび乱数の英数字に対応するデータ値を直列に並べる必要は無く、複雑に並べることもできる。たとえば、図9(B)に示すように、MACアドレスの英数字に対応するデータ値と乱数の英数字に対応するデータ値とを、先頭の四角枠に含まれる4ビットのまとまり毎に、交互に記憶するようにしてもよい。かかる場合には、先頭の四角枠を含む奇数番目の四角枠に含まれる4ビットのデータ値を先頭から順に取り出すことにより、ユニークデータを抽出することができる。
【0077】
図8に戻って、このように生成された生成用データを用いて、ハッシュ関数で演算することにより、ハッシュ値のデータ(ハッシュ値データ)が算出される。この実施例では、一方向関数の例としてハッシュ関数を用いるようにしてあるが、SHA−1、SHA−256、DM5を用いることもできる。また、素因数分解や離散対数のような一方向関数を用いるようにしてもよい。算出されたハッシュ値データは、通信ゲームにおいて、自機についてのパラメータとして用いられる。ただし、後述するように、ハッシュ値データは、パラメータを算出するために用いられることもある。
【0078】
この実施例では、パラメータによって、プレイヤキャラクタの個性ないし属性が決定される。したがって、この実施例では、生成用データに乱数データを含めるようにしてある。これは、生成用データをユニークデータのみで生成した場合には、装置固有情報としてMACアドレスのように固定の情報を用いると、毎回同じ個性のプレイヤキャラクタが生成されてしまうことになり、仮想ゲームが単調になってしまうおそれがあるからである。ただし、パラメータによって、プレイヤキャラクタの種類が決定されることもある。
【0079】
このように、ハッシュ値データをパラメータとして用いるのは、このハッシュ値データから元の生成用データを知ることがほとんど不可能であり、不正なゲームデータ(パラメータ)が生成されるのを防止するためである。つまり、データの改変を防止するためである。
【0080】
また、生成された生成用データと算出されたハッシュ値データとは、ゲーム装置Bに送信される。たとえば、このとき送信されるデータ(送信データ)は、ヘッダ情報を含み、これに続くフィールドに、生成用データおよびハッシュ値データが含まれる。ヘッダ情報は、たとえば、通信ゲームにおける自己の識別情報(通信ゲームにおけるIDまたは/およびMACアドレス)、接続情報(IPアドレス)、ゲーム装置(プレイヤ)の名称、仮想ゲームの識別情報(ゲームタイトル)、および現在時刻(年月日を含む)の情報などを含む。
【0081】
ゲーム装置Bは、ゲーム装置Aから送信された生成用データとハッシュ値データとを受信(取得)し、生成用データに含まれるユニークデータを抽出して、その正当性を判断する。この実施例では、装置固有情報は、MACアドレスであり、MACアドレスは、上述したように、送信データのヘッダ情報にも含まれる。このため、正当性の判断においては、ヘッダ情報に含まれるMACアドレスと、ユニークデータに対応するMACアドレスとが一致するかどうかを判断するようにしてある。この場合、それら2つのMACアドレスが一致すれば、ユニークデータは正当であると判断されるが、一致しなければ、ユニークデータは不当であると判断される。
【0082】
ただし、送信データのヘッダ情報は改変可能であり、改変された不正な生成用データが送信される可能性もある。したがって、この実施例では、2つのMACアドレスが一致する場合の当該MACアドレスをリスト(通信可能リスト)に記憶しておき、ユニークデータの正当性を判断する際には、まず、ユニークデータに対応するMACアドレスが、通信可能リストに記憶されたMACアドレスと一致するか否かを判断するようにしてある。これは、複数のゲーム装置10でMACアドレスが一致することは基本的には有り得ないためである。受信した生成用データに含まれるユニークデータに対応するMACアドレス(送信データのヘッダ情報に含まれるMACアドレスでも可)が、通信可能リストに記憶されたMACアドレスと一致する場合には、それらは改変等された不正な生成用データであると判断される。したがって、一旦通信可能リストに登録されたMACアドレスであっても、後に同じMACアドレスを含む生成用データを受信した場合には、つまり後に生成用データが不当であることが判明した場合には、通信可能リストから削除される。
【0083】
ユニークデータが正当である場合には、ゲーム装置Bは、さらに、受信した生成用データを用いて、ハッシュ関数で演算することによりハッシュ値データを算出する。ただし、ゲーム装置Aおよびゲーム装置Bで使用されるハッシュ関数は同じである。そして、ゲーム装置Bは、受信したハッシュ値データと、算出したハッシュ値データとが等しいかどうかを判断する。ゲーム装置Bは、それら2つのハッシュ値データが等しい場合には、生成用データが正当であると判断して、その後の通信ゲームにおいて、受信したハッシュ値データを対戦相手(ここでは、ゲーム装置A)のパラメータとして使用する。一方、それら2つのハッシュ値データが等しくない場合には、ゲーム装置Bは、生成用データが不当であると判断する。
【0084】
ユニークデータまたは生成用データが不当であると判断された場合には、通信ゲームは行われない。このとき、ゲーム装置Bは、改変等された不正なデータであり、通信ゲームをプレイしない旨を示すメッセージを下LCD14(立体LCD12でも可)に表示したり、その旨を示す音(効果音、音楽)をスピーカ22a、22bから出力したり、その両方を実行したりする。
【0085】
また、ユニークデータおよび生成用データの両方が正当である場合には、ゲーム装置Aとゲーム装置Bとを入れ替えて、上述したような処理が実行される。このような認証処理が、親機とすべての子機との間で実行され、ユニークデータおよび生成用データの両方が正当であると判断された複数のゲーム装置10の間で、通信ゲームが開始される。たとえば、親機は、通信可能リストに記載されたMACアドレスを有する子機を通信ゲームに参加可能であると判断し、参加可能な子機との間で通信ゲームを開始する。このとき、各子機は、親機から他の子機についての接続情報およびハッシュ値データを受信(取得)する。したがって、通信ゲームを行うゲーム装置10の各々では、ハッシュ値データがパラメータとして使用され、プレイヤキャラクタの個性(属性)が決定される。ただし、自機で算出したハッシュ値データは、自機のプレイヤキャラクタについて使用され、他機で算出されたハッシュ値データは、当該他機のプレイヤキャラクタについて使用される。
【0086】
たとえば、プレイヤキャラクタの個性ないし属性としては、当該プレイヤキャラクタの強さ(攻撃力、守備力、体力など)、素早さ、魅力、肌の色、大きさおよび成長率などが該当する。たとえば、ハッシュ値が小さい場合にはプレイヤキャラクタは弱く、ハッシュ値が大きい場合にはプレイヤキャラクタは強い。
【0087】
また、たとえば、数1に従って、ハッシュ値を用いてパラメータが生成(算出)されることもある。ただし、プレイヤキャラクタの経験値に代えて、プレイヤないしプレイヤキャラクタのレベルを用いてもよい。また、aおよびbは定数であり、それぞれがハッシュ値に応じて変化される。
【0088】
[数1]
パラメータ=a×(経験値)+b
したがって、同じプレイヤキャラクタが選択された場合であっても、ハッシュ値や経験値の違いによって、異なる個性ないし属性を設定することができる。
【0089】
図10は図4に示したメインメモリ50のメモリマップ500の例を示す図解図である。図10に示すように、メインメモリ50は、プログラム記憶領域502およびデータ記憶領域504を含む。プログラム記憶領域502には、この実施例の情報処理プログラム(ゲームプログラムを含む)が記憶され、ゲームプログラムは、メイン処理プログラム502a、通信プログラム502b、生成用データ生成プログラム502c、ハッシュ値データ算出プログラム502dおよび正当性判断プログラム502eなどで構成される。
【0090】
メイン処理プログラム502aは、仮想ゲームのメインルーチンを処理するためのプログラムである。通信プログラム502bは、他のゲーム装置10やコンピュータと通信するためのプログラムである。生成用データ生成プログラム502cは、装置固有情報と乱数とから生成用データを生成するためのプログラムである。
【0091】
ハッシュ値データ算出プログラム502dは、生成用データ生成プログラム502cに従って生成した生成用データや他のゲーム装置10から受信した生成用データを用いて、ハッシュ関数で演算することにより、ハッシュ値データを算出するためのプログラムである。正当性判断プログラム502eは、受信した生成用データおよびそれに含まれるユニークデータの正当性を判断するためのプログラムである。
【0092】
図示は省略するが、プログラム記憶領域502には、バックアッププログラムや音出力プログラムなども記憶される。バックアッププログラムは、ゲームデータ(途中データや結果データ)を、NAND型フラッシュメモリ48、ゲームカードまたはSDカードに保存(セーブ)するためのプログラムである。音出力プログラムは、効果音、音声(擬声音)、音楽(BGM)などのゲームに必要な音を出力するためのプログラムである。
【0093】
データ記憶領域504には、自機生成用データ504a、自機ハッシュ値データ504b、他機生成用データ504c、他機第1ハッシュ値データ504d、他機第2ハッシュ値データ504e、および通信許可リストデータ504fが記憶される。
【0094】
自機生成用データ504aは、自機のゲーム装置10で生成用データ生成プログラム502cに従って生成された生成用データである。自機ハッシュ値データ504bは、自機のゲーム装置10でハッシュ値データ算出プログラム502dに従って、自機生成用データ504aを用いて算出されたハッシュ値データである。
【0095】
他機生成用データ504cは、他のゲーム装置10から受信した生成用データである。つまり、他機生成用データ504cは、他のゲーム装置10で生成された自機生成用データに相当する。他機第1ハッシュ値データ504dは、他のゲーム装置10から受信したハッシュ値データである。つまり、他機第1ハッシュ値データ504dは、他のゲーム装置10で算出された自機ハッシュ値データに相当する。他機第2ハッシュ値データ504eは、ハッシュ値データ算出プログラム502dに従って、他機生成用データ504cを用いて算出されたハッシュ値データである。
【0096】
なお、図10では、簡単のため省略するが、他機第1ハッシュ値データ504d(または、他機第2ハッシュ値データ504e)は、通信ゲームをプレイするゲーム装置10の総数−1に相当する数だけ記憶される。
【0097】
また、詳細な説明は省略するが、他機生成用データ504c、および他機第2ハッシュ値データ504e(または、他機第1ハッシュ値データ504d)は、認証処理が終了すると、メインメモリ50から削除される。
【0098】
通信許可リストデータ504fは、通信することが許可されたゲーム装置10についてのMACアドレスを記載したリストについてのデータである。親機のゲーム装置10は、この通信許可リストに基づいて、通信ゲームへの参加者を確定する。
【0099】
図示は省略するが、データ記憶領域504には、ゲームプログラムの実行に必要な他のデータが記憶されたり、カウンタ(タイマ)やフラグが設けられたりする。
【0100】
図11および図12は、通信ゲームの本編の開始に先立って実行される認証処理(送信側と受信側)を示すフロー図である。図11は、送信側のゲーム装置10(上述したゲーム装置Aに相当する)についての認証処理であり、図12は、受信側のゲーム装置10(上述したゲーム装置Bに相当する)についての認証処理である。
【0101】
図11に示すように、送信側のゲーム装置10のCPU44aは認証処理を開始すると、ステップS1で、ユニークデータと乱数データとから自機生成用データ504aを生成する。ただし、このとき、CPU44aは、ユニークデータを作成するととともに、乱数データを発生させる。そして、CPU44aは、上述したように、ユニークデータと乱数データとをビットに並べて、自機生成用データを生成する。次のステップS3では、ステップS1で作成した自機生成用データ504aをデータ記憶領域504aに保存(記憶)する。
【0102】
続いて、ステップS5では、自機生成用データ504aを用いてハッシュ関数で演算することにより、自機ハッシュ値データ504bを生成する。次のステップS7では、ステップS5で生成した自機ハッシュ値データ504bをデータ記憶領域504に保存する。そして、ステップS9で、自機生成用データ504aと自機ハッシュ値データ504bとを受信側のゲーム装置10に送信して、処理を終了する。ただし、ステップS9では、自機生成用データ504aおよび自機ハッシュ値データ504bの複製が、他のゲーム装置10(ここでは、受信側のゲーム装置10)のような外部の装置などに送信(出力)される。
【0103】
一方、図12に示すように、受信側のゲーム装置10のCPU44aは、認証処理を開始すると、ステップS21で、他機生成用データ504cと他機第1ハッシュ値データ504dとを読み込む。ただし、他機生成用データ504cは、上述したように、送信側のゲーム装置10のCPU44aが送信した自機生成用データに相当する。他機第1ハッシュ値データ504dもまた、上述したように、送信側のゲーム装置10のCPU44aが送信した自機ハッシュ値データに相当する。つまり、他機生成用データ504cと他機第1ハッシュ値データ504dとは、他のゲーム装置10(ここでは、送信側のゲーム装置10)のような外部の装置などから入力される。
【0104】
続くステップS23では、他機生成用データ504cからユニークデータを抽出し、ステップS25で、後述する正当性の判断処理(図13参照)を実行する。つまり、ステップS25では、ステップS23で抽出されたユニークデータの正当性が判断されるのである。そして、ステップS27で、ユニークデータが正当かどうかを判断する。
【0105】
ステップS27で“NO”であれば、つまりユニークデータが不当であれば、ステップS35に進む。一方、ステップS27で“YES”であれば、つまりユニークデータが正当であれば、ステップS29で、他機第2ハッシュ値データ504eを算出する。ここでは、CPU44aは、他機生成用データ504cを用いてハッシュ関数で演算することにより、他機第2ハッシュ値データ504eを算出し、データ記憶領域504に記憶する。そして、ステップS31で、他機第1ハッシュ値データ504dと他機第2ハッシュ値データ504eとが一致するかどうかを判断する。つまり、他機生成用データ504c自体の正当性が判断されるのである。
【0106】
ステップS31で“YES”であれば、つまり他機第1ハッシュ値データ504dと他機第2ハッシュ値データ504eとが一致すれば、他機生成用データ504cが正当であると判断し、ステップS33で、通信許可リストに登録して、処理を終了する。つまり、ステップS33では、受信側のゲーム装置10のCPU44aは、他機生成用データ504cに含まれるユニークデータに対応するMACアドレスを、通信許可リストに記録(追加)する。一方、ステップS31で“NO”であれば、つまり他機第1ハッシュ値データ504dと他機第2ハッシュ値データ504eとが一致しなければ、他機生成用データ504cが不当であると判断し、ステップS35で、不当を通知して、処理を終了する。つまり、ステップS35では、受信側のゲーム装置10のCPU44aは、上述したように、下LCD14(立体LCD12でもよい)に、送信側のゲーム装置10との通信ゲームをプレイすることができない旨のメッセージを表示したり、その旨を示す音をスピーカ22a、22bから出力したり、或いは、それらの両方を実行したりする
図13は、図12のステップS25に示した正当性の判断処理を示すフロー図である。図13に示すように、受信側のゲーム装置10のCPU44aは、正当性の判断処理を開始すると、ステップS51で、他機生成用データ504cから抽出したユニークデータに対応するMACアドレスが通信許可リストに登録されているかどうかを判断する。
【0107】
ステップS51で“YES”であれば、つまり抽出したユニークデータに対応するMACアドレスが通信許可リストに登録されている場合には、ステップS53で、当該MACアドレスと同じMACアドレスを通信許可リストから削除して、ステップS59に進む。
【0108】
一方、ステップS51で“NO”であれば、つまり抽出したユニークデータに対応するMACアドレスが通信許可リストに登録されていない場合には、ステップS55で、ヘッダ情報に含まれているMACアドレスと、抽出したユニークデータに対応するMACアドレスとが一致するかどうかを判断する。
【0109】
ステップS55で“YES”であれば、つまり2つのMACアドレスが一致すれば、ステップS57で、抽出したユニークデータが正当であると判断して、図12に示した受信側の認証処理にリターンする。一方、ステップS55で“NO”であれば、つまり2つのMACアドレスが一致しなければ、ステップS59で、抽出したユニークデータが不当であると判断して、図12に示した受信側の認証処理にリターンする。
【0110】
この実施例によれば、ユニークデータおよび生成用データの正当性を判断し、正当な生成用データを用いて一方向関数のハッシュ関数で算出したハッシュ値をパラメータとして使用したり、そのハッシュ値に基づいて算出したパラメータを使用したりするので、改変されたゲームデータを用いて通信ゲームをプレイするのを防止することができる。このため、ゲームデータの改変自体も防止することができる。
【0111】
なお、この実施例では、ユニークデータおよび生成用データの両方の正当性を判断するようにしてあるが、少なくとも生成用データの正当性を判断すれば、改変されたゲームデータを用いて通信ゲームをプレイすることを防止することができる。
【0112】
また、この実施例では、装置固有情報としてMACアドレスを用いるようにしたがこれに限定される必要はない。他の例として、現在時刻(年月日を含む)の情報、ゲーム装置に登録された名称、仮想ゲームのタイトルやソフトウェアのシリアル番号などのゲームプログラムのシグネチャ、サーバへのログインID(通信ゲームにおけるID)、タッチペンを用いて入力されたサイン(座標の集合または軌跡)、操作入力の履歴、ゲーム装置に設けられた加速度センサで検出された加速度データの履歴、カメラから得られる情報(たとえば、画像データから得られる明るさの情報)、ゲーム装置でプレイヤによって作成されたキャラクタについての情報(性別、肌の色、髪型、眼・眉毛・鼻および口の形・大きさ・位置、身長、体型などの情報)が用いられてもよい。また、ゲーム装置がGPS機能を備える場合には、その位置情報を装置固有情報として用いることもできる。
【0113】
この場合、通信ゲームにおけるID、仮想ゲームの識別情報(ゲームタイトル)または現在時刻(年月日を含む)の情報のように、ヘッダ情報に含まれる内容を装置固有情報として使用する場合には、図13に示した正当性の判断処理と同様の処理が実行される。ただし、仮想ゲームの識別情報を装置固有情報として使用する場合には、ステップS55において、当該仮想ゲームの識別情報が示す仮想ゲームが受信側のゲーム装置のCPUで実行されるものかどうかを判断するようにしてもよい。この場合、受信側のゲーム装置のCPUで実行される仮想ゲームであれば、“YES”と判断され、受信側のゲーム装置のCPUで実行されない仮想ゲームであれば、“NO”と判断される。
【0114】
一方、操作入力の履歴や加速度データの履歴のように、ヘッダ情報に含まれない内容を装置固有情報として使用する場合には、通信可能リストに記憶されているかどうかのみによって、正当性の判断処理が実行される。かかる場合には、ステップS55の処理は削除される。
【0115】
また、この実施例では、装置固有情報として、MACアドレスのみを用いるようにしてあるが、MACアドレスおよび上記の他の例のうちのいずれか2つ以上が用いられてもよい。
【0116】
さらに、この実施例では、ゲーム装置間で認証処理を実行する場合についてのみ説明したが、これに限定される必要はない。たとえば、図7(B)に示したゲームシステムにおいて、サーバが、各ゲーム装置から生成用データおよびハッシュ値データを受信して、図12に示した受信側の認証処理を実行し、それらの正当性を判断し、正当であると判断された生成用データおよびハッシュ値データを送信してきたゲーム装置同士をマッチングするようにしてもよい。
【0117】
また、この実施例では、無線通信により、生成用データおよびハッシュ値データを送受信するようにしたが、これに限定される必要はない。有線により通信してもよい。また、通信によらず、ゲームカードやSDカードに、生成用データおよびハッシュ値データをセーブデータとして記憶しておき、そのようなゲームカードやSDカードを介して、生成用データおよびハッシュ値データをやり取りしてもよい。かかる場合には、イベント会場などにおいて、そのイベントの主催者等が用意したPCなどのコンピュータ(上述の実施例のゲーム装置でもよい)にゲームカードやSDカードを装着し、そのゲームカードやSDカードから生成用データおよびハッシュ値データを入力する。続いて、そのコンピュータで図12に示した受信側の認証処理を実行させることにより、ゲームカードやSDカードに記憶された生成用データおよびハッシュ値データの正当性を判断するようにしてもよい。そして、正当性の判断結果に応じて、イベントへの参加の可否が決定される。
【0118】
さらに、この実施例では、携帯型のゲーム装置についてのみ説明したが、通信機能を備える据置型のゲーム装置を用いることもできる。たとえば、出願人が製造および販売するニンテンドーWii(登録商標)にも適用することができる。かかる場合には、装置固有情報(ユニークデータ)として、コントローラで検出される加速度データや角速度データの履歴またはコントローラで指示した位置(座標)の履歴を用いることができる。
【0119】
さらにまた、この実施例では、情報処理装置の一例としてゲーム装置のみについて説明したが、通信機能を有したり、SDカードのような媒体を着脱できたりすることにより、生成用データおよびハッシュ値データをやり取りすることができれば、他の情報処理装置(ゲーム機のほか、たとえばPC,PDA,携帯電話機,TV,電子フォトフレーム,音楽/映像プレイヤ,各種情報家電など)を用いることができる。ただし、ゲーム装置以外の他の情報処理装置を用いる場合には、ハッシュ値(パラメータ)を変化させる必要がない場合もある。かかる場合には、乱数のようなランダムに変化する値を用いず、装置固有情報(ユニークデータ)だけで生成用データを生成してもよい。
【0120】
また、この実施例に示したゲーム装置の構成に限定される必要はない。たとえば、LCDは1つでもよいし、タッチパネルは設けなくてもよい。また、タッチパネルを2つのLCD上に設けるようにしてもよい。
【符号の説明】
【0121】
10 …ゲーム装置
12 …立体LCD
12a …LCDコントローラ
12b …バリア液晶
12c …上LCD
14 …下LCD
16 …タッチパネル
18a−18c …カメラ(内側,外側左,外側右)
20 …3D調整スイッチ(3D Vol)
20A …3Dランプ
30 …マイク
24a−24k …ボタン(キー)
26 …アナログパッド
44 …SoC
44a …CPU
44b …GPU
44c …VRAM
50 …メインメモリ
54 …加速度センサ
Sd …スライダ
ICL,ICR …仮想カメラ(左,右)

【特許請求の範囲】
【請求項1】
取り込んだデータに基づいて処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段として、前記コンピュータを機能させる、情報処理プログラム。
【請求項2】
正当性を判断可能な判断可能データを含む前記所定のデータを生成する所定データ生成手段、および
前記入力手段によって入力された所定のデータに含まれる判断可能データの正当性を判断する正当性判断手段として、前記コンピュータをさらに機能させ、
前記検証データ算出手段は、前記正当性判断手段によって正当であることが判断されたとき、前記検証データを算出する、請求項1記載の情報処理プログラム。
【請求項3】
前記実行手段は、前記処理データをパラメータとして用いて、所定の処理を行う、請求項1または2記載の情報処理プログラム。
【請求項4】
前記判断可能データは、前記情報処理装置固有の情報である、請求項2記載の情報処理プログラム。
【請求項5】
前記正当性判断手段は、前記入力手段によって入力された所定のデータに含まれる情報処理装置固有の情報が、前記入力手段によって入力された所定のデータと処理データとの出力元である情報処理装置固有の情報であれば、正当であると判断する、請求項4記載の情報処理プログラム。
【請求項6】
前記情報処理装置固有の情報は、前記情報処理装置のMACアドレスを含む、請求項4または5記載の情報処理プログラム。
【請求項7】
前記情報処理装置固有の情報は、前記所定のデータの生成時の日時情報を含む、請求項4または5記載の情報処理プログラム。
【請求項8】
前記正当性判断手段は、前記入力手段によって入力された所定のデータに含まれる日時情報が、前記入力手段によって以前入力された所定のデータに含まれる日時情報に一致するものが存在しなければ、正当であると判断する、請求項7記載の情報処理プログラム。
【請求項9】
前記情報処理装置固有の情報は、前記実行手段によって行われる処理を認識可能な処理固有情報を含む、請求項4ないし8のいずれかに記載の情報処理プログラム。
【請求項10】
前記正当性判断手段は、さらに、前記入力手段によって入力された所定のデータに含まれる処理固有情報が、前記実行手段によって行われる処理を示すものであれば、正当であると判断する、請求項9記載の情報処理プログラム。
【請求項11】
前記所定のデータは、ランダムに変化する値をさらに含む、請求項4ないし10のいずれかに記載の情報処理プログラム。
【請求項12】
前記所定の一方向関数は、ハッシュ関数である、請求項1ないし11のいずれかに記載の情報処理プログラム。
【請求項13】
前記情報処理装置は、ネットワークに接続され、
前記出力手段は、前記ネットワーク上の他の情報処理装置に対して、前記所定のデータと前記処理データとを送信する送信手段を含み、
前記入力手段は、前記ネットワーク上の他の情報処理装置から、前記所定のデータと前記処理データとを受信する受信手段を含む、請求項1ないし12のいずれかに記載の情報処理プログラム。
【請求項14】
取り込んだデータに基づいて処理を行う情報処理装置であって、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段を備える、情報処理装置。
【請求項15】
取り込んだデータに基づいて処理を行う情報処理装置の情報処理方法であって、
(a)所定の一方向関数を用いて、所定のデータから処理データを算出し、
(b)前記所定のデータと、前記ステップ(a)によって算出された処理データとを外部に出力し、
(c)外部から所定のデータと処理データとを入力し、
(d)前記所定の一方向関数を用いて、前記ステップ(c)によって入力された所定のデータから検証データを算出し、そして
(e)前記ステップ(c)によって入力された処理データと、前記ステップ(d)によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う、情報処理方法。
【請求項16】
取り込んだデータに基づいて処理を行う情報処理装置を少なくとも2つ備える情報処理システムであって、
各々の前記情報処理装置は、
所定の一方向関数を用いて、所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いて所定の処理を行う実行手段とを備える、情報処理システム。
【請求項17】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項18】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項19】
取り込んだデータに基づいて処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段として、前記コンピュータを機能させる、ゲームプログラム。
【請求項20】
取り込んだデータに基づいて処理を行うゲーム装置であって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲーム装置。
【請求項21】
取り込んだデータに基づいて処理を行うゲーム装置であって、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段を備える、ゲーム装置。
【請求項22】
取り込んだデータに基づいて処理を行うゲーム装置であって、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲーム装置。
【請求項23】
取り込んだデータに基づいて処理を行うゲーム装置のゲーム制御方法であって、
(a)所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出し、
(b)前記所定のデータと、前記ステップ(a)によって算出された処理データとを外部に出力し、
(c)外部から、ランダムに変化する値を含む所定のデータと処理データとを入力し、
(d)前記所定の一方向関数を用いて、前記ステップ(c)によって入力された所定のデータから検証データを算出し、そして
(e)前記ステップ(c)によって入力された処理データと、前記ステップ(d)によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行う、ゲーム制御方法。
【請求項24】
取り込んだデータに基づいて処理を行うゲーム装置を少なくとも2つ備えるゲームシステムであって、
各々の前記ゲーム装置は、
所定の一方向関数を用いて、ランダムに変化する値を含む所定のデータから処理データを算出する処理データ算出手段と、
前記所定のデータと、前記処理データ算出手段によって算出された処理データとを外部に出力する出力手段と、
外部から、ランダムに変化する値を含む所定のデータと処理データとを入力する入力手段と、
前記所定の一方向関数を用いて、前記入力手段によって入力された所定のデータから検証データを算出する検証データ算出手段と、
前記入力手段によって入力された処理データと、前記検証データ算出手段によって算出された検証データとが一致するとき、当該処理データを用いてゲーム処理を行うゲーム実行手段を備える、ゲームシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−155500(P2012−155500A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−13537(P2011−13537)
【出願日】平成23年1月26日(2011.1.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】