(57)【要約】 【課題】  コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出する数値記録装置等を提供する。【解決手段】  数値記録装置２０１の記憶部２０２は、double型の数値を記憶することができ、保存部２０３は、保存すべきfloat型の数値を、float型にキャストするとこれと同じ値となるdouble型の数値に特定変換して、記憶部２０２に記憶させて保存し、取得部２０４は、記憶部２０２に記憶されたdouble型の数値を取得してこれをfloat型の数値にキャストし、報告部２０５は、キャストの結果のfloat型の数値を特定変換した結果が、記憶部２０２に記憶されたdouble型の数値に等しくない場合は、記憶部２０２に改変があった旨を報告する。【選択図】  図２
2006072825.tif 000002
【特許請求の範囲】
【請求項１】
第１精度の任意の数値について、当該数値を、当該第１精度よりも高い第２精度の数値に変換（以下、当該変換を「昇格変換」という。）をし、当該昇格変換の結果を当該第１精度の数値に丸める変換（以下、当該変換を「降格変換」という。）をした結果は、元の数値に等しく、
当該第１精度の任意の数値について、当該数値を当該第２精度の数値に特定変換し、当該特定変換の結果を当該第１精度の数値に降格変換した結果は、元の数値に等しく、
当該第２精度の数値を記憶することができる記憶部、
当該第１精度の保存すべき数値を、当該第２精度の数値に当該特定変換した結果を前記記憶部に記憶させて保存する保存部、
前記記憶部に記憶された当該第２精度の数値を当該第１精度の数値に当該降格変換した結果を取得する取得部、
前記記憶部に記憶された当該第２精度の数値と、前記取得された当該第１精度の数値を当該第２精度の数値に当該特定変換した結果と、が等しくない場合、前記記憶部に記憶された数値が改変された旨を報告する報告部
を備える数値記録装置。
【請求項２】
請求項１に記載の数値記録装置であって、
当該昇格変換と、当該特定変換と、は、同一の変換である
ことを特徴とするもの。
【請求項３】
請求項１に記載の数値記録装置であって、
当該特定変換は、当該第１精度の数値を当該第２精度の数値に昇格変換した結果に、当該第２精度の所定の数値を加算もしくは減算する変換であって、当該加算もしくは減算した結果を当該第１精度の数値に当該降格変換すると元の数値に等しくなる変換である
ことを特徴とするもの。
【請求項４】
請求項１に記載の数値記録装置であって、
当該特定変換は、当該第１精度の数値を当該第２精度の数値に昇格変換した結果に、当該第１精度の数値に所定の演算を施して得られる当該第２精度の所定の数値を加算もしくは減算する変換であって、当該加算もしくは減算した結果を当該第１精度の数値に当該降格変換すると元の数値に等しくなる変換である
ことを特徴とするもの。
【請求項５】
請求項１に記載の数値記録装置であって、
前記保存部が保存すべき当該第１精度の数値および前記取得部が取得した当該第１精度の数値の少なくとも一方を、当該第１精度より低い第３精度に降格変換した結果を表示する表示部
を備えることを特徴とするもの。
【請求項６】
請求項１から５のいずれか１項に記載の数値記録装置であって、
前記記憶部は、当該第１精度の数値を不揮発に数値を記憶する
ことを特徴とするもの。
【請求項７】
請求項６に記載の数値記録装置であって、
前記記憶部は、当該数値記録装置から着脱可能な不揮発性情報記録媒体（フレキシブルディスク、光磁気ディスク、および、半導体メモリを含む。）である
ことを特徴とするもの。
【請求項８】
第１精度の任意の数値について、当該数値を、当該第１精度よりも高い第２精度の数値に変換（以下、当該変換を「昇格変換」という。）をし、当該昇格変換の結果を当該第１精度の数値に丸める変換（以下、当該変換を「降格変換」という。）をした結果は、元の数値に等しく、当該第１精度の任意の数値について、当該数値を当該第２精度の数値に特定変換し、当該特定変換の結果を当該第１精度の数値に降格変換した結果は、元の数値に等しくなるような昇格変換、降格変換、特定変換を用い、当該第２精度の数値を記憶することができる記憶部、保存部、取得部、報告部を備える数値記録装置にて実行される数値記録方法であって、
前記保存部が、当該第１精度の保存すべき数値を、当該第２精度の数値に当該特定変換した結果を前記記憶部に記憶させて保存する保存工程、
前記取得部が、前記記憶部に記憶された当該第２精度の数値を当該第１精度の数値に当該降格変換した結果を取得する取得工程、
前記記憶部に記憶された当該第２精度の数値と、前記取得された当該第１精度の数値を当該第２精度の数値に当該特定変換した結果と、が等しくない場合、前記報告部が、前記記憶部に記憶された数値が改変された旨を報告する報告工程
を備える方法。
【請求項９】
第１精度の任意の数値について、当該数値を、当該第１精度よりも高い第２精度の数値に変換（以下、当該変換を「昇格変換」という。）をし、当該昇格変換の結果を当該第１精度の数値に丸める変換（以下、当該変換を「降格変換」という。）をした結果は、元の数値に等しく、当該第１精度の任意の数値について、当該数値を当該第２精度の数値に特定変換し、当該特定変換の結果を当該第１精度の数値に降格変換した結果は、元の数値に等しくなるような昇格変換、降格変換、特定変換を用いるプログラムであって、コンピュータを、
当該第２精度の数値を記憶することができる記憶部、
当該第１精度の保存すべき数値を、当該第２精度の数値に当該特定変換した結果を前記記憶部に記憶させて保存する保存部、
前記記憶部に記憶された当該第２精度の数値を当該第１精度の数値に当該降格変換した結果を取得する取得部、
前記記憶部に記憶された当該第２精度の数値と、前記取得された当該第１精度の数値を当該第２精度の数値に当該特定変換した結果と、が等しくない場合、前記記憶部に記憶された数値が改変された旨を報告する報告部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばコンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出するのに好適な数値記録装置、数値記録方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、ゲーム装置においては、各種の数値パラメータを用いてゲームの状態が表現されている。このような数値パラメータには、プレイヤーが操作するキャラクターの体力やレベル等の各種の能力値、クリアした面の数や過去のスコア履歴など、種々のものがある。そして、このような、数値パラメータは、メモリカードやハードディスクなど、ユーザが利用する不揮発性情報記録媒体に記録されることが多い。ここで、ゲームの状態を保存することをセーブ、過去に保存されたゲームの状態に復帰することをロードという。
【０００３】
このようなセーブ／ロードに関する技術については、以下の文献に開示されている。
【特許文献１】特許第３４２６５９２号
【０００４】
本技術は、以下のようなものである。すなわち、ゲーム開始後に、プレイ状況を記憶させる記憶タイミングを乱数に基づいて順次決定し、各記憶タイミングにおけるプレイ状況を主記憶に順次一時記憶する。そして、セーブ操作が検知されると、主記憶に記憶されたプレイ状況を読み出すとともに、その読み出されたプレイ状況を表すセーブデータをメモリカードに記憶する。メモリカードに記憶されたセーブデータは、後に読み出され、該セーブデータに基づいてゲームが再開される。こうすれば、セーブ操作のタイミングとは異なるタイミングのプレイ状況を表すセーブデータをメモリカードに記憶しておくことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一方で、セーブされた数値パラメータを改変することはチート行為と呼ばれ、特にネットワークにおいて多数のプレイヤーが参加するゲームにおいては、不正行為となる。そこで、このようなチート行為を防止する技術が必要となる。
また、チート行為防止策に対しては、一旦その防止策が判明してしまうと、これを覆すような不正技術が開発されることも多く、種々の新たな技術が常に必要とされている。
このほか、記憶媒体の故障や不良が生じた場合を考慮するため、記憶媒体に保存されたデータが正当であるか否かをチェックする手法は、種々の応用分野で必要とされている。
【０００６】
本発明は、上記のような課題を解決するためになされたもので、たとえばコンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出するのに好適な数値記録装置、数値記録方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
まず、本発明の数値記録装置、数値記録方法、ならびに、プログラムでは、昇格変換、降格変換、特定変換を用いる。
【０００８】
ここで、昇格変換とは、第１精度の任意の数値について、当該数値を、第１精度よりも高い第２精度の数値であって、当該第２精度の数値を当該第１精度に丸めた場合に、元の第１精度の数値に等しくなるように変換するものをいう。
一方、降格変換とは、第２精度の任意の数値について、当該数値を、第１精度の数値に丸める変換をいう。丸める手法としては、切り捨て、切り上げ、四捨五入やその変形など、種々の手法を採用することができる。
【０００９】
さらに、特定変換とは、第１精度の任意の数値について、当該数値を、当該第２精度の数値に変換するものであって、当該特定変換の結果を第１精度の数値に降格変換した結果が元の数値に等しくなるものをいう。
したがって、昇格変換は、特定変換の一種である。
また、数値の精度については、たとえば、倍精度浮動小数点表現を用いることによって第１精度の数値を表し、倍々精度浮動小数点表現を用いることによって第２精度の数値を表すことができる。
【００１０】
本発明の第１の観点に係る数値記録装置は、記憶部、保存部、取得部、報告部を備え、以下のように構成する。
【００１１】
すなわち、記憶部は、第２精度の数値を記憶することができる。
典型的には、記憶部は、ゲーム装置におけるメモリカードや情報処理装置におけるフレキシブルディスク、ハードディスクのほか、一時的に数値が記憶されるＲＡＭ（Random Access Memory）を採用することができ、ここに、第２精度で数値を記憶させる。
【００１２】
一方、保存部は、第１精度の保存すべき数値Ａを、第２精度の数値に特定変換した結果Ｂを記憶部に記憶させて保存する。
保存部が行う処理は、ゲームにおけるセーブに相当するものである。また、数値Ｂを降格変換すれば、数値Ａが得られることになり、数値Ａは、数値Ｂの近似値であると考えることができる。
【００１３】
さらに、取得部は、記憶部に記憶された第２精度の数値Ｘを第１精度の数値に降格変換した結果Ｙを取得する。
取得部が行う処理は、ゲームにおけるロードに相当するものである。また、記憶部に故障がなく、不正行為等に基づく改変もない場合には、数値Ｘは数値Ｂに等しいはずである。
【００１４】
そして、報告部は、記憶部に記憶された第２精度の数値Ｘと、取得された第１精度の数値Ｙを第２精度の数値に特定変換した結果Ｚと、が等しくない場合、記憶部に記憶された数値が改変された旨を報告する。
上記のように、改変がない場合には、数値Ｘは数値Ｂに等しいのであるから、数値Ｘを降格変換した数値Ｙは、数値Ａに等しくなる。したがって、数値Ｙを特定変換した結果Ｚは、数値Ａを特定変換した結果Ｂに等しい。すなわち、数値Ｚは、数値Ｘに等しい。
【００１５】
一方、改変がある場合は、殆どの場合、数値Ｘと数値Ｂとが異なることとなる。したがって、数値Ｙを特定変換した結果Ｚも、数値Ｘには等しくならないのが殆どである。したがって、これによって保存された数値の改変を検出するのである。
本発明によれば、たとえばコンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出することができる。
【００１６】
また、本発明の数値記録装置において、当該昇格変換と、特定変換と、は、同一の変換であるように構成することができる。
本発明は上記発明の好適実施形態の一つであり、特定変換として、より精度の高い表現への昇格変換をそのまま用いるものである。
本発明によれば、昇格変換という実装の容易な変換を用いることで、数値のデータ改変を少ない計算時間や労力で検出することができるようになる。
【００１７】
また、本発明の数値記録装置において、特定変換は、第１精度の数値Ｐを第２精度の数値Ｑに昇格変換した結果に、第２精度の所定の数値Ｃを加算または減算する変換であって、当該変換の結果（Ｑ＋Ｃ）または（Ｑ−Ｃ）を第１精度の数値に降格変換すると元の数値Ｐに等しくなる変換であるように構成することができる。
すなわち、第２精度の数値Ｑを降格変換した結果と、第２精度の数値（Ｑ＋Ｃ）や（Ｑ−Ｃ）を降格変換した結果と、は、いずれもＰに等しくなるのである。
【００１８】
本発明によれば、微小な定数Ｃの加算や減算を行うことによって、どのような特定変換を行っているかをわかりにくくすることができる。
【００１９】
また、本発明の数値記録装置において、特定変換は、第１精度の数値Ｐを第２精度の数値Ｑに昇格変換した結果に、第１精度の数値Ｐに所定の演算を施して得られる第２精度の所定の数値Ｒを加算もしくは減算する変換であって、当該変換の結果（Ｑ＋Ｒ）または（Ｑ−Ｒ）を第１精度の数値に降格変換すると元の数値Ｐに等しくなる変換であるように構成することができる。
したがって、数値Ｒは数値Ｐに所定の演算を施した結果得られるものであり、当該所定の演算によれば、第２精度の数値Ｑを降格変換した結果と、第２精度の数値（Ｑ＋Ｒ）や（Ｑ−Ｒ）を降格変換した結果と、は、いずれもＰに等しくなる。
【００２０】
本発明によれば、数値Ｐから得られる微小な数値Ｒの加算や減算を行うことによって、どのような特定変換を行っているかをわかりにくくすることができる。
【００２１】
本発明の他の観点に係る数値記録装置は、表示部をさらに備え、表示部は、保存部が保存すべき第１精度の数値および取得部が取得した第１精度の数値の少なくとも一方を、第１精度より低い第３精度に降格変換した結果を表示するように構成することができる。
上記の精度の例でいえば、第３精度には単精度浮動小数点表現を用いることができる。
【００２２】
本発明によれば、画面等に表示される数値パラメータは、実際に保存すべき第１精度の数値や記憶される第２精度の数値よりも精度が低いものであるため、画面表示を見ても、どのような特定変換を行っているかをわかりにくくすることができる。
【００２３】
また、本発明の数値記録装置において、記憶部は、第１精度の数値を不揮発に数値を記憶するように構成することができる。
本発明は、上記発明の好適実施形態に係るものであり、不揮発に数値を記憶するものとしては、フレキシブルディスク、光磁気ディスク、半導体メモリ、ハードディスク、バッテリバックアップされたＲＡＭなどを採用することができる。
本発明によれば、記憶部に数値を保存した後、数値記録装置の電源を切り、時間が経過してから数値記録装置の電源を入れて、数値を取得する、データのセーブとロードのような処理が行えるようになる。
【００２４】
また、本発明の数値記録装置において、記憶部としては、当該数値記録装置から着脱可能な不揮発性情報記録媒体（フレキシブルディスク、光磁気ディスク、および、半導体メモリを含む。）であるように構成することができる。
本発明は、上記発明の好適実施形態に係るものであり、着脱可能な不揮発性情報記録媒体を用いて、データのセーブとロードを行う。
【００２５】
本発明によれば、記憶部に数値を保存した後、情報記録媒体を数値記録装置から外し、他の数値記録装置において当該情報記録媒体から数値を取得したりなどの処理が行えるようになる。
【００２６】
本発明のその他の観点に係る数値記録方法は、上記の数値記録装置にて実行される方法であって、保存工程、取得工程、報告工程を備える。
ここで、保存工程では、保存部が、第１精度の保存すべき数値を、第２精度の数値に特定変換した結果を記憶部に記憶させて保存する。
【００２７】
一方、取得工程では、取得部が、記憶部に記憶された第２精度の数値を第１精度の数値に降格変換した結果を取得する。
さらに、報告工程では、記憶部に記憶された第２精度の数値と、取得された第１精度の数値を第２精度の数値に特定変換した結果と、が等しくない場合、報告部が、記憶部に記憶された数値が改変された旨を報告する。
【００２８】
本発明のその他の観点に係るプログラムは、コンピュータを上記数値記録装置として機能させ、または、コンピュータに上記数値記録方法を実行させるように構成する。
【００２９】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００３０】
本発明によれば、たとえばコンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出するのに好適な数値記録装置、数値記録方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００３１】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム装置として動作する情報処理装置に対して本発明が適用される実施形態を説明するが、各種のコンピュータ、ＰＤＡ（Personal Data Assistants）、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００３２】
図１は、本発明の数値記録装置が実現される典型的な情報処理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【００３３】
情報処理装置１００は、ＣＰＵ  １０１と、ＲＯＭ  １０２と、ＲＡＭ  １０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０を備える。
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の数値記録装置が実現される。
【００３４】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００３５】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００３６】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００３７】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがレーシングゲームなどのゲーム実行の際に行う操作入力を受け付ける。
【００３８】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、対戦ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、対戦に伴うチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００３９】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データ、動画情報データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００４０】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）にバッファリング記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。このような画像処理部１０７の処理は、ＣＰＵ  １０１の演算処理とは並行して行うことができる。
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００４１】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ＲＯＭ  １０２に記録されているが、ＤＶＤ−ＲＯＭに記録された専用のフォント情報を利用することも可能である。
【００４２】
このほか、ＤＶＤ−ＲＯＭに記録された動画情報や、これをあらかじめＲＡＭ  １０３等に転送した場合の動画情報は、画像処理部１０７によって、画面の所定の領域にスーパーインポーズするような形式で、動画表示を行うことができる。
【００４３】
さて、ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００４４】
インターネット内のＳＮＴＰサーバにＮＩＣ  １０９を介して接続し、ここから情報を得ることによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、ＳＮＴＰサーバと同様の機能を果たすように構成設定してもよい。
【００４５】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００４６】
さらに、情報処理装置１００には、インターフェース１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。情報処理装置１００をゲーム装置として利用する場合には、マイク１１１から入力された音声データを指示入力データとして、コントローラ１０５のかわりに入力デバイスとして用いることも可能である。
【００４７】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００４８】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置１００にかえて、汎用のパーソナルコンピュータを利用することもできる。
【００４９】
一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、ゲームにおける画面表示には必ずしも特化していない画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっているのが一般的である。また、コントローラではなく、キーボードやマウスなどを入力装置として利用する。
したがって、このような一般的なコンピュータを、本発明の数値記録装置として動作させることも可能である。
【００５０】
さて、本実施形態では、第１精度の数値の表現として、ＩＥＥＥ（Institute Electrical and Electronics Engineers）の７５４規格における単精度浮動小数点表現を採用し、第２精度の数値の表現として、同規格における倍精度浮動小数点表現を採用する。
単精度浮動小数点表現は、一つの数値は３２ビットで表現され、符号ビットは１ビット、仮数部は２３ビット、指数部は８ビットである。これは、各種のプログラミング言語におけるfloat型に相当する。
倍精度浮動小数点表現は、一つの数値は６４ビットで表現され、符号ビットは１ビット、仮数部は５２ビット、指数部は１１ビットである。これは、各種のプログラミング言語におけるdouble型に相当する。
【００５１】
そして、これらの数値表現に対して、昇格変換、降格変換、特定変換を用いる。
ここで、昇格変換とは、float型の値をdouble型の値にキャスト（cast）する演算に相当し、降格変換とは、double型の値をfloat型の値にキャストする演算に相当する。
キャスト演算においては、符号ビットは変化せず、指数部のビット列を整数として見た場合には同じ値が維持される。
仮数部について考えると、float型では、223 = 8,388,608であるから、十進数では、６桁〜７桁の有効数字となる。double型では、252 = 4,503,599,627,370,474であるから、十進数では、１５桁〜１６桁の有効数字となる。
【００５２】
したがって、同じ仮数部を持つdouble型とfloat型の数値では、252-23 = 536,870,912種類のdouble型の数値が、同じfloat型の数値にキャストされることになる。
また、本実施形態では、特定変換として、昇格変換そのものを用いるものとする。
【００５３】
図２は、本発明の実施形態の一つに係る数値記録装置の概要構成を示す模式図である。以下、本図を参照して説明する。
本実施形態に係る数値記録装置２０１は、記憶部２０２、保存部２０３、取得部２０４、報告部２０５、表示部２０６を備え、以下のように構成する。
【００５４】
すなわち、記憶部２０２は、第２精度（double型）の数値を記憶することができる。
本実施形態では、記憶部２０２として外部メモリ１０６を用いる。記憶部２０２には、数値が８バイト単位に記憶されることになる。
図３は、本実施形態に係る数値記録装置にて実行されるセーブ処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００５５】
まず、保存部２０３は、ゲームにおける各種の第１精度（float型）の数値のうち、保存すべきものを受け付ける（ステップＳ３０１）。本実施形態では、保存すべき数値（ゲーム内の処理で使われる数値）はfloat型であるものとしているからである。
ついで、保存部２０３は、当該数値を第２精度（double型）に特定変換する（ステップＳ３０２）。本実施形態では、特定変換は、float型からdouble型のキャスト演算に相当し、これは昇格変換に等しい。
【００５６】
さらに、保存部２０３は、特定変換の結果を、記憶部２０２に記憶させて保存し（ステップＳ３０３）。本処理を終了する。本実施形態では、外部メモリにdouble型の数値を記憶させることになる。
このように、本実施形態では、ＣＰＵ  １０１が外部メモリ１０６と共働して、保存部２０３として機能することとなる。
【００５７】
図４は、本実施形態に係る数値記録装置にて実行されるロード処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
まず、取得部２０４は、記憶部２０２に記憶された第２精度（double型）の数値Ｘを読み出す（ステップＳ４０１）。本実施形態では、８バイトに相当するビット列が読み出されることになる。
【００５８】
次に、取得部２０４は、読み出した第２精度（double型）の数値に対して降格変換を施す（ステップＳ４０２）。本実施形態では、降格変換は、double型からfloat型へのキャストである。
このように、本実施形態では、ＣＰＵ  １０１が外部メモリ１０６と共働して、取得部２０４として機能することとなる。
【００５９】
ついで、報告部２０５は、ステップＳ４０２における降格変換の結果Ｙに対して特定変換を施す（ステップＳ４０３）。本実施形態では、特定変換は、float型からdouble型へのキャストである。
さらに、報告部２０５は、ステップＳ４０３における特定変換の結果Ｚと、記憶部２０２から読み出した数値Ｘとが等しいか否かを調べる（ステップＳ４０４）。
【００６０】
等しくない場合（ステップＳ４０４；Ｎｏ）、報告部２０５は、外部メモリ１０６の改変がされたり、外部メモリ１０６に不具合が生じたものと判断して、改変があった旨を報告し（ステップＳ４０５）、本処理を終了する。この後、典型的には、エラー対応処理が起動されることになる。
等しい場合（ステップＳ４０４；Ｙｅｓ）、数値記録装置２０１は、降格変換の結果Ｙを、ロードされた数値であるとして扱うことになる。
【００６１】
上記のように、同じ指数部を有するdouble型の数値は、float型の数値に比べて252-23 = 536,870,912倍の冗長度を有する。したがって、指数部の改変等がされた場合に、これを検出できる確率は、536,870,911/536,870,912 = 0.9999999981373549…と考えることができる。
したがって、本実施形態においては、ＣＰＵ  １０１は、報告部２０５として機能することとなる。
【００６２】
さて、そこで、表示部２０６は、このロード数値を、float型よりも低い精度数値に丸める（ステップＳ４０６）。なお、丸める対象は、ロード数値ではなく、記憶部２０２から読み出した数値としても良い。いずれを丸めても、同じ結果となるからである。そして、丸めた結果をこれを画面に表示する（ステップＳ４０７）。
したがって、本実施形態においては、ＣＰＵ  １０１は、画像処理部１０７と共働して、表示部２０６として機能することとなる。
【００６３】
上述のように、float型の仮数部は、十進数で６桁〜７桁の有効数字である。したがって、画面表示の際には、これよりも桁数の少ない有効数字で表示することとなる。
なお、表示部２０６およびステップＳ４０６〜Ｓ４０７の処理は、実行しなくとも、本発明の効果を得ることは可能である。
【００６４】
そして、数値記録装置２０１は、自身が出力したロード数値を他の処理に委ねて（ステップＳ４０８）、本処理を終了する。
上記のように、画面には、float型の数値がこれよりもさらに低い精度で表示される。また、外部メモリ１０６には、画面に表示されている数値を近似値とするdouble型の数値が記憶されることとなる。
したがって、チート行為をしようとしている不正利用者は、「外部メモリ１０６に記憶されるdouble型の数値を改変すれば良い」と予想するものと想定される。
【００６５】
ところが、上記のように、double型の数値を改変したとしても、これを降格変換した後に昇格変換した場合に、元のdouble型の数値に一致する確率は極めて低い。したがって、チート行為をできるだけ防止することができる。
このように、本実施形態によれば、きわめて高い確率で、記憶部２０２に記憶された値の改変等を検出することができる。
【実施例２】
【００６６】
上記実施形態では、キャスト演算を特定変換として用いていたが、本実施形態では、それ以外の演算を特定演算として用いる種々の技術について説明する。
上記のように、float型の仮数部は２３ビット、double型の仮数部は５２ビットであるから、その差である２９ビットを何らかのビット列で埋める必要がある。上記実施形態ではキャスト演算を用いていたが、キャスト演算では、この２９ビットをすべて０とすることが多い。
【００６７】
すると、不正利用者は、外部メモリ１０６に記憶されているdouble型のビット列を見て、ゲームの内部では数値をfloat型で扱っている、と予想する可能性が高くなるとも考えられる。
そこで、本実施形態では、この２９ビットをどのような数値で埋めるか、について種々の技術を提供することとし、不正利用者が特定変換をできるだけ予測できないようにする。
【００６８】
まず、２９ビットを、所定の定数ビット列で埋める手法が考えられる。この場合、２９ビットの定数ビット列は、適度に、０と１が出現するもの、たとえば、０の出現比が３０パーセント〜７０パーセントのようなビット列を選択することが望ましい。
【００６９】
次に、２９ビットをfloat型の数値に所定のハッシュ関数を適用したもので埋める手法がある。所定のハッシュ関数としては、以下のようなものが考えられる。
（ａ）float型の数値の３２ビット表現を、３２ビット整数と見て、この整数をnビット右シフトし、下位２９ビットを選ぶ。nの範囲は、０〜５が望ましいが、これ以外の数値を選択しても良い。
（ｂ）float型の数値の３２ビット表現を、３２ビット整数と見て、この整数を所定の整数mで除算し、下位２９ビットを選ぶ。mとしては、３２以下の素数を選択することが望ましい。
【００７０】
（ｃ）float型の数値の３２ビット表現を、８ビットの整数列とみて、この整数列の順序を所定の法則にしたがって交換した後、これらを３２ビット整数とみて、下位２９ビットを選ぶ。
（ｄ）float型の数値の３２ビット表現を、３２ビット整数と見て、この整数に所定の整数pを加算もしくは減算し、あるいは、所定の整数pと排他的論理和をとるなど、各種のあらかじめ定めた演算を行ってから、下位２９ビットを選ぶ。
（ｅ）上記（ａ）〜（ｄ）を適宜組み合わせた演算を行う。
【００７１】
このようにすれば、不正利用者といえども、特定変換を予想することは極めて困難になる。
なお、このような仮数部のビット数は、適宜変更が可能であり、変更した場合であっても、本発明の範囲に含まれる。
【実施例３】
【００７２】
上記実施形態において、浮動小数点表現の仮数部のみを取り出して考えれば、固定小数点表現と考えることもできる。すなわち、固定小数点表現の数値についても、上記実施形態と同様の技術を適用することができ、きわめて高い確率で、記憶部に記憶された値の改変等を検出することができる。
たとえば、固定小数点表現として、整数表現を採用した場合には、第１精度の数値として2n  (n>0)の倍数のみを採用し、第２精度の数値として通常の整数を用いる、などの手法を採用することができる。
【実施例４】
【００７３】
第１精度の数を第２精度の数に昇格変換すると、第２精度の数から第１精度の数に丸めた際に捨てられる部分が出てくる。上記のように、float型とdouble型を用いた場合には、丸める際に仮数部や指数部の一部のビットが無視されることになる。そこで、この捨てられるビット部分には、種々の情報を入れることができる。
【００７４】
上記実施例では、この捨てられるビット部分（２９ビットの部分）に、第１精度の数値のハッシュ値等を埋め込むこととしていたが、ここに埋め込む値は、たとえば定数であっても良いし、あらかじめ定めた乱数表に含まれる乱数としても良い。
この場合、特定変換では、それぞれ、埋め込まれている値が定数に等しいか、あるいは、当該乱数表に含まれるかを調べ、そうでない場合には値の改変があったものとして取り扱うことになる。
【００７５】
たとえば、あらかじめ所定の要素数の乱数表を用意しておき、float型の数値の３２ビット表現を３２ビット整数と見て、この整数（をそのまま、もしくは、これに上記のような加減乗除算等の種々の演算を適用した結果）を所定の整数（乱数表の要素数）で割った余りをインデックスと考え、当該乱数表の当該インデックスに配置されている乱数を２９ビットの部分に埋め込むのである。この場合、特定変換でも同様の処理を行って、２９ビットの部分に埋め込まれた値と、実際に得られた値とが等しいかどうかで、値の改変がされていないかどうかを知ることができる。
【００７６】
また、float型の数値の３２ビット表現を３２ビット整数と見て、これを乱数の種として取扱い、この種からＭ系列等の漸化式を用いて乱数を生成させて、所定の回数漸化式を適用した後に得られる整数を２９ビットの部分に埋め込むこととしても良い。この場合も、特定変換でのチェックは上記と同様である。
【００７７】
このように、降格変換の際に捨てられる情報の部分には、昇格変換の際に種々の情報を埋め込むことができ、特定変換では、この埋め込まれた情報をチェックすることによって、値の改変の有無を調べることができるのである。
【００７８】
このほか、固定小数点の数値パラメータや、浮動小数点の数値パラメータの仮数部では、ＬＳＢ（Least Significant Bits）部分の数ビットを事実上使わないことも多い。たとえば、float型数値の場合は、上記のように仮数部は２３ビットであるが、ここまでの精度が必要とされない場合である。たとえば、有効数字が２０ビット分で表現できる場合は、ＬＳＢの３ビットは必要とされない。
【００７９】
しかしながら、有効数字２０ビットの場合であっても、ＣＰＵが各種の演算処理をする場合に、ＬＳＢの３ビットをわざわざクリアするようなことは行われない。これは、各種の演算を行ってから、ＬＳＢの３ビットを切り捨てれば十分だからである。特に、固定小数点表現を使用した場合や、浮動小数点表現であっても指数部の変動が小さい場合には、これが成り立つ。
【００８０】
このような場合、このＬＳＢの３ビットには、本来の数値パラメータでは使用しないビット列を埋め込むことができる。すなわち、以下のようにするのである。
（１）float型の仮数部についてはＭＳＢの２０ビットのみを有効数字とする表現を第１精度の数値表現とし、
（２）float型の仮数部については全２３ビットを用いる表現を第２精度の数値表現とし、
（３）昇格変換の際には、ＬＳＢの３ビットに、改変をチェックするための情報を埋め込む。
【００８１】
このほか、以下のような態様を採ることもできる。
（１）float型の仮数部についてはＭＳＢの２０ビットのみを有効数字とする表現を第１精度の数値表現とし、
（２）double型の仮数部については全５２ビットを用いる表現を第２精度の数値表現とし、
（３）昇格変換の際には、float型のＬＳＢの３ビットに、改変をチェックするための情報を埋め込むとともに、これをdouble型に変換する。変換の際に、さらに改変をチェックするための情報を埋め込んでも良い。
【００８２】
上記の説明では、浮動小数点表現を中心に説明したが、浮動小数点表現の仮数部のみについて考えれば、これは固定小数点表現、あるいは、整数表現と実質的に等価である。したがって、固定小数点表現、あるいは、整数表現の数値パラメータについても、上記と同様に、第１精度、第２精度の表現を定め、昇格変換や降格変換を定義して、本発明を適用することができる。
【産業上の利用可能性】
【００８３】
以上説明したように、本発明によれば、たとえばコンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因する数値のデータ改変をできるだけ検出するのに好適な数値記録装置、数値記録方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができ、ゲームのチート行為や情報記録媒体の不良等を検出することができる。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施形態の１つに係る数値記録装置が実現される典型的な情報処理装置の概要構成を示す説明図である。
【図２】本発明の実施形態の１つに係る数値記録装置の概要構成を示す模式図である。
【図３】本発明の実施形態の１つに係る数値記録装置のセーブ処理の制御の流れを示すフローチャートである。
【図４】本発明の実施形態の１つに係る数値記録装置のロード処理の制御の流れを示すフローチャートである。
【符号の説明】
【００８５】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  数値記録装置
２０２  記憶部
２０３  保存部
２０４  取得部
２０５  報告部
【図１】
2006072825.tif 000003
【図２】
2006072825.tif 000004
【図３】
2006072825.tif 000005
【図４】
2006072825.tif 000006