説明

ゲーム装置

【課題】ゲームプログラムが扱いやすいセーブデータを提供する。
【解決手段】セーブ用API処理モジュール300aは、データセーブ用のセーブデータユーティリティ関数がアプリケーション処理部124により呼び出されることで構成される。状態取得部310は、ゲームプログラムの実行環境の状態を示す状態情報を取得し、付加処理部324は、取得された状態情報を、ゲームデータ取得部322により取得されたゲームデータに付加情報として付加して、ハードディスクに記憶する。一方、ロード用API処理モジュール300bにおける付加情報取得部342は、セーブデータから付加情報を取得し、判定部344が、現在の状態情報と付加情報との一致性を判定する。この判定結果は、通知部346によりアプリケーション処理部124に通知される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームアプリケーションを実行するゲーム装置に関し、特にゲームデータをセーブおよび/またはロードする機能を備えたゲーム装置に関する。
【背景技術】
【0002】
ユーザは、ゲームプレイの進行状況を記憶装置に格納(セーブ)しておくことで、記憶装置に格納したゲームデータを用いて、前回の続きからゲームをプレイすることができる。セーブデータは、たとえばゲームアプリケーションに対応付けられたディレクトリに格納される。ゲーム装置は、実行するゲームアプリケーションに対応付けられるディレクトリからセーブデータを内部メモリにロードする。
【0003】
たとえば育成シミュレーションゲームは、時間をかけてキャラクタを成長させることを楽しませるゲームであるが、成長したキャラクタのセーブデータが実行ユーザ以外のユーザに対して複製されると、そのユーザは、いきなり高いレベルのキャラクタデータを取得できることになり、ゲームの意味が台無しにされる。他の種類のゲームでも事情は同じであり、セーブデータの複製が安易に行われるようになると、自力でゲームを進行させようとする意欲が減退するため、ゲームアプリケーションの価値を低減することにもつながる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
このような事情のもとでは、ゲーム装置が、ゲームアプリケーションに対して、必要な場合に何らかの対策を講じることができるような環境を提供することが好ましい。なお、他人の高レベルなセーブデータを複製したいという要望の度合いは、ゲームアプリケーションにより異なるため、ゲーム装置により提供される環境を利用するか否かは、ゲームアプリケーションごとに設定されることが好ましい。
【0005】
そこで本発明は、ゲームプログラムが所望の処理を可能とするセーブデータに関する技術を提供することを目的とし、またそのようなセーブデータを処理する技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のある態様のゲーム装置は、ゲームプログラムを実行するアプリケーション処理部と、ゲーム進行に関するゲームデータを記憶装置にセーブするセーブ処理部と、セーブデータを記憶装置からロードするロード処理部と、ゲームプログラムの実行環境の状態を示す状態情報を取得する状態取得部とを備える。セーブ処理部は、状態取得部により取得された状態情報を、ゲームデータに付加情報として付加して記憶装置に記憶する付加処理部を備え、ロード処理部は、記憶装置に記憶されたゲームデータから付加情報を取得する付加情報取得部と、状態取得部により取得された状態情報と、付加情報取得部により取得された対応する付加情報との一致性を判定する判定部と、判定結果をアプリケーション処理部に通知する通知部とを備える。
【0007】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0008】
本発明の情報処理技術によると、ゲームプログラムが所望の処理を可能とするセーブデータに関する技術を提供することができ、またそのようなセーブデータを処理する技術を提供することが可能となる。
【発明を実施するための最良の形態】
【0009】
図1は、本発明の実施例にかかるゲームシステムを示す。ゲームシステム1は、ゲームアプリケーションを実行するゲーム装置10と、ゲーム装置10における処理結果を出力する出力装置12とを備える。
【0010】
ゲーム装置10は、ゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する情報処理装置である。ゲーム装置10は、少なくとも1つの出力装置12に接続して、出力装置12に映像を表示し、また音声を出力する。出力装置12は、画像を出力するディスプレイ部を有して構成され、さらに音声を出力する音声出力部を有するテレビであってよい。出力装置12は、ゲーム装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。
【0011】
図2は、ゲーム装置10の機能ブロック図を示す。ゲーム装置10は、電源ボタン20、LED22、システムコントローラ24、デバイスコントローラ30、メディアドライブ32、ハードディスクドライブ34、スイッチ36、無線インタフェース38、メインコントローラ100、メインメモリ102および出力処理部200を有して構成される。ゲーム装置10は、自身を識別するための識別情報(以下、「本体ID」とよぶ)をフラッシュメモリに保持している。
【0012】
電源ボタン20は、ユーザからの操作入力が行われる入力部であって、ゲーム装置10への電源供給をオンまたはオフするために操作される。電源ボタン20は押下ボタンであってよく、押下されることで電源のオンまたはオフが制御されてもよい。なお電源ボタン20は、タッチセンサなど、ユーザが電源のオンオフを行える他の構造をとってもよい。LED22は、電源のオンまたはオフの状態を点灯表示する。システムコントローラ24は、電源ボタン20の押下状態または非押下状態を検出し、電源オフの状態から押下状態への状態遷移を検出すると、メインコントローラ100を起動して、オペレーティングシステムのブートシーケンスを立ち上げるとともに、LED22を点灯制御する。ゲーム装置10に電源ケーブルが差し込まれている場合、システムコントローラ24は、電源オフの状態であってもスタンバイモードを維持して、電源ボタン20の押下を監視する。
【0013】
デバイスコントローラ30は、サウスブリッジのようにデバイス間の情報の受け渡しを実行するLSI(Large-Scale Integrated Circuit)として構成される。図示のように、デバイスコントローラ30には、システムコントローラ24、メディアドライブ32、ハードディスクドライブ34、スイッチ36およびメインコントローラ100などのデバイスが接続される。デバイスコントローラ30は、それぞれのデバイスの電気特性の違いやデータ転送速度の差を吸収し、データ転送のタイミングを制御する。
【0014】
メディアドライブ32は、ゲームプログラムを記録したメディア50を駆動して、メディア50からゲームプログラムを読み出すドライブ装置である。メディア50は、光ディスクや光磁気ディスク、ブルーレイディスクなどの記録媒体であり、メディアドライブ32に挿入されてゲームプログラムの供給媒体として利用される。メディア50は、自身を識別するための識別情報(以下、「メディアID」とよぶ)を所定の格納領域に記録している。メディアIDは、メディア固有の番号であり、メディアごとに異なっている。なおメディアIDは、ゲームプログラムを記録可能な記録媒体の全てに付与されてもよく、たとえばハードディスクやフラッシュメモリ140など、内蔵型の記録媒体に付与されてもよい。以下では、説明の便宜上、記録媒体を代表してメディア50にメディアIDが付与されている例について示す。
【0015】
ゲームプログラムは、ゲームアプリケーションを実行させる実行プログラムと、ゲームアプリケーションを特定するための情報(以下、「アプリケーションID」とよぶ)を含んでいる。実行プログラムは、アプリケーション処理に必要なプログラムであり、実行プログラムを走らせることで、ゲームアプリケーションが進行する。アプリケーションIDは、ゲームアプリケーションの種類ごとに設定され、メディア50の所定の格納領域に記録されている。
【0016】
ハードディスクドライブ34は、内蔵ハードディスクを駆動して、データの書込/読出を行うドライブ装置である。ゲーム装置10において、ゲーム進行に関するゲームデータは、内蔵ハードディスクに格納(セーブ)される。ゲームデータには、ゲームプレイの進行状況を表すデータ、ゲームのハイスコアデータ、キャラクタデータなどが含まれる。なお、これらのデータが全てハードディスクにセーブされる必要はなく、ゲームアプリケーションごとにセーブされるゲームデータが設定される。
【0017】
スイッチ36は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、情報の送受信を行うデバイスである。ゲーム装置10は、スイッチ36を介して外部のインターネットなどのネットワークに接続できる。本実施例において、外部ネットワークには、配信サーバが設けられ、たとえばゲーム装置10は、アプリケーションをサーバからダウンロードすることができる。このとき、ユーザはサーバにユーザ登録する必要があり、ユーザを特定するための情報(以下、「ユーザID」とよぶ)が設定される。設定されたユーザIDは、配信サービスの提供を受ける際に必要となるが、ゲーム装置10において、ユーザを一意に特定するための情報としても利用される。そのため、ゲーム装置10は、配信サーバから通知されるユーザIDをフラッシュメモリに格納する。なお、サーバにユーザ登録をしていないユーザは、ユーザIDを有していない。
【0018】
スイッチ36は無線インタフェース38に接続し、無線インタフェース38は、Bluetooth(登録商標)プロトコルやIEEE802.11プロトコルなどの通信プロトコルで無線通信機能をもつゲームコントローラ40と接続する。ゲームコントローラ40は、ユーザからの操作入力が行われる入力部として機能する。
【0019】
メインコントローラ100は、マルチコアCPUを備え、1つのCPUの中に1つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。本実施例では、汎用プロセッサコアをPPU(Power Processing Unit)と呼び、残りのプロセッサコアをSPU(Synergistic-Processing Unit)と呼ぶ。
【0020】
メインコントローラ100では、ゲーム装置10を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム(以下、単に「OS(Operating System)」と呼ぶ)が実行される。OS上では、複数のアプリケーションソフトウェアを実行できる。本実施例におけるゲーム装置10のOS階層は、上位から、ユーザ層、カーネル(Kernel)層、ハイパーバイザ(Hypervisor)層の3階層をとる。ゲーム装置10において、ユーザ層、カーネル層とハイパーバイザ層のソフトウェアが一体となって、ゲーム装置10の「OS」として機能する。ハイパーバイザ層を管理するソフトウェアのことを「特権ソフトウェア」とよぶ。ハイパーバイザ層は最下層の機能を担当し、電源ボタン20より電源投入されると、特権ソフトウェアにより必ず最初に優先起動される。
【0021】
図3は、OS階層を示す。電源ボタン20により電源投入されると、システムコントローラ24は、デバイスコントローラ30を経由して、メインコントローラ100および出力処理部200などに電源を供給する。メインコントローラ100に電源が供給されると、PPUは、まずOSのブートローダを実行して特権ソフトウェアを読み出し、特権ソフトウェアによりホストOSのハイパーバイザ層を起動する。つづいて、PPUは、OSのカーネル層を起動し、さらにユーザ層を起動して、メディア50から供給されるゲームプログラムの受入態勢を整える。
【0022】
本実施例のゲーム装置10は、複数のOSを搭載してもよい。そのときは、図3に示すOSがホストOSとして機能し、ホストOSのハイパーバイザ層に作成された仮想マシン上でゲストOSを動作させる機能をもつ。メインコントローラ100による管理上、仮想マシン環境とゲストOSは、ホストOS上で動作するプログラムであるため、ゲストOSを動作させるためには、ホストOSのハイパーバイザ層が常に起動している必要がある。ホストOSの起動はPPUにより実行されるが、SPUと協同して実行されてもよい。
【0023】
カーネル層はシステムのリソースを管理し、他のプログラムがそれらのリソースを使って動作できるようにする。具体的にカーネル層は、メモリ、CPUや他のデバイスを含めたハードウェアと、上位のソフトウェアの間の通信を管理し、OSの中核部分を構成する。
【0024】
ユーザ層は、アプリケーションプログラムを効率的に実行できるように、カーネル層との間の橋渡しを行う。ユーザ層は、複数の機能モジュールから構成されてよく、ゲームプログラムに提供するAPI(アプリケーションプログラミングインタフェース)の機能を実現するAPI処理モジュールも含まれる。APIは、プログラミングのためのインターフェースであり、プログラム作成時の規則を生成する。本実施例では、ゲームデータをセーブするためのセーブプログラム、およびセーブデータをロードするためのロードプログラムがライブラリ(以下、「セーブデータユーティリティ」とよぶ)として用意され、セーブデータユーティリティ関数を呼び出すことで、API処理モジュールが構成される。セーブ用またはロード用のAPI処理モジュールを構成することで、ゲームプログラムがゲームデータをハードディスクにセーブし、またハードディスクからセーブデータをロードすることが可能となる。本実施例のゲーム装置10は複数のタイプのセーブ/ロード処理機能を有しており、ハードディスクには、実行する処理に応じたセーブデータユーティリティ関数が用意される。
【0025】
以下、ゲーム装置10における複数種類のセーブ処理、ロード処理の概略を説明する。なお、以下のセーブ処理、ロード処理のそれぞれに対してセーブデータユーティリティ関数が用意され、ゲームプログラムが要求するセーブデータユーティリティ関数が呼び出されることで、OSのユーザ層にAPI処理モジュールが構成される。これにより、ゲームプログラムが所望するセーブ処理またはロード処理が実行可能となる。
【0026】
(1)リスト選択型セーブ/ロード処理
リスト選択型セーブ処理(ListSave())では、既存のセーブデータのリストをユーザに提示して、いずれかのセーブデータに上書き保存するか、または新規作成するかをユーザに選択させる。
リスト選択型ロード処理(ListLoad())では、既存のセーブデータのリストをユーザに提示して、ユーザが選択したセーブデータをロードする。
【0027】
(2)固定型セーブ/ロード処理
固定型セーブ処理(FixedSave())では、アプリケーションが指定した1つのセーブデータをユーザに提示して、そのセーブデータに上書き保存する。
固定型ロード処理(FixedLoad())では、アプリケーションが指定した1つのセーブデータをユーザに提示して、そのセーブデータをロードする。
【0028】
(3)オートセーブ/ロード処理
オートセーブ処理(AutoSave())では、1つのセーブデータをアプリケーションが指定し、ユーザに提示することなく、そのセーブデータに上書き保存する。
オートロード処理(AutoLoad())では、1つのセーブデータをアプリケーションが指定し、ユーザに提示することなく、そのセーブデータをロードする。
【0029】
メインコントローラ100は、メインメモリ102に接続するメモリコントローラを備える。PPUはレジスタを有し、演算実行主体としてメインプロセッサを備えて、各アプリケーションにおける基本処理単位としてのタスクを各SPUに効率的に割り当てる。なお、PPU自身がタスクを実行してもよい。SPUはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリ(専用RAM)を備える。SPUは制御ユニットとして専用のDMA(Direct Memory Access)コントローラをもち、メインメモリ102とローカルメモリの間のデータ転送を行うことで、データを高速にストリーム処理でき、また出力処理部200に内蔵されるフレームメモリとローカルメモリの間で高速なデータ転送を実現できる。
【0030】
出力処理部200は、出力装置12に接続されて、アプリケーションの処理結果である映像信号および音声信号を出力する。出力処理部200は、画像処理機能を実現するGPU(Graphics Processing Unit)を備える。GPUは、HDMI(High Definition Multimedia Interface)を採用し、アナログを介さずに、映像信号をデジタル出力できる。
【0031】
図4は、メインコントローラ100の内部構成を示す。メインコントローラ100は、入力受付部104、実行処理部120、フラッシュメモリ140、メモリコントローラ160およびローカルメモリ162を備える。
【0032】
図4において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、メインコントローラ100には1つのPPUと複数のSPUとが設けられており、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0033】
メインコントローラ100は、デバイスコントローラ30との間で制御情報を送受する手段として入力受付部104を有する。入力受付部104は、ユーザのゲームコントローラ40からの操作入力を受け付け、またネットワーク上の配信サーバから、ユーザ登録時に設定されたユーザIDを受け付ける。ゲームシステム1において、ユーザはゲームコントローラ40を用いて、ゲームの操作入力を行ってゲームを進行させることができ、またゲームデータのセーブ/ロード時には、OSのAPIなどにより出力装置12の画面に表示されるGUI(Graphical User Interface)をみながら、ゲームデータのセーブまたはロードを指示する操作入力を行うことができる。本実施例において、ユーザは、少なくともデータのセーブまたはロードを指示するための操作入力を行い、入力受付部104は、その指示を受け付けて実行処理部120に通知する。セーブ/ロード処理が開始されると、ユーザは、実行処理部120から提示されるGUIから所定の確認入力や選択入力を行う。
【0034】
フラッシュメモリ140は、その格納領域に、本体ID保持部142およびユーザID保持部144を有する。本体ID保持部142は、ゲーム装置10の識別情報として本体IDを保持する。ユーザID保持部144は、入力受付部104において受け付けたユーザIDを保持する。既述したように、ユーザIDは、配信サーバへのユーザ登録に際して付与されるものであるため、ユーザ登録を行っていない場合は、ユーザID保持部144には空のデータが書き込まれている。
【0035】
本実施例のゲーム装置10において、ゲーム装置10に設定されている本体IDや、付与されたユーザIDなどの情報は、フラッシュメモリ140ではなく、ハードディスクのレジストリに記憶されてもよい。図4に示した本体ID保持部142およびユーザID保持部144は、便宜上フラッシュメモリ140の領域を使用するように図示しているが、ハードディスクや他の記憶装置の領域であっても構わない。
【0036】
実行処理部120は、OSを実行するOS実行部122と、アプリケーションを実行するアプリケーション処理部124とを有する。電源が投入されると、OS実行部122は、OSのハイパーバイザ層を優先起動し、続いてカーネル層、必要なユーザ層を起動する。これにより、アプリケーション処理部124がゲームの実行プログラムを実行する環境が提供される。
【0037】
メモリコントローラ160は、外部のメインメモリ102や、SPUに内蔵されているローカルメモリ162の書込/読出を制御する。メモリコントローラ160は、ハードディスクやメディア50などから読み出したデータを、メインメモリ102ないしはローカルメモリ162に記憶させる。実行処理部120は、メインメモリ102および/またはローカルメモリ162に記憶されたデータをもとに、処理を実行する。
【0038】
ゲームデータのセーブ処理またはロード処理を行う際、アプリケーション処理部124は、OS実行部122に対して、所望のタイプのセーブ処理またはロード処理を実行するためのセーブデータユーティリティ関数を呼び出す。OS実行部122がこの呼出要求を受けると、OSのユーザ層にAPI処理モジュールが起動される。
【0039】
本実施例において、セーブ用のAPI処理モジュールは、ゲームデータにゲームプログラムの実行環境を示す状態情報を付加してハードディスクにセーブする機能をもつ。またロード用のAPI処理モジュールは、ハードディスクからセーブデータをロードする際に、セーブデータの付加情報と、ロード時のゲームプログラムの実行環境を示す状態情報とから、セーブデータの検証処理を行う機能をもつ。
【0040】
図5は、OS実行部122において構成されるAPI処理モジュールの機能ブロックを示す。セーブ用API処理モジュール300aは、データセーブ用のセーブデータユーティリティ関数がアプリケーション処理部124により呼び出されることで構成される。セーブ用API処理モジュール300aは、状態取得部310およびセーブ処理部320を備え、セーブ処理部320は、ゲームデータ取得部322および付加処理部324を有する。
【0041】
状態取得部310は、ゲームプログラムの実行環境の状態を示す状態情報を取得する。実行環境の状態を示す要素としては、ゲームアプリケーションを実行するゲーム装置自体、ゲーム装置10にゲームプログラムを供給するメディア50、ゲームプログラムの種類、ゲームをプレイするユーザなどがあげられる。これらの要素に対応して、状態取得部310は、状態情報として、ゲーム装置10を特定する本体ID、メディア50を特定するメディアID、ゲームプログラムのアプリケーション(ゲーム種類)を特定するアプリケーションID、ゲームユーザを特定するユーザIDを取得する。
【0042】
状態取得部310は、本体ID保持部142から本体IDを、メディア50からメディアIDおよびアプリケーションIDを、ユーザID保持部144からユーザIDをそれぞれ読み出して取得する。なお、メディアIDおよびアプリケーションIDは、メインメモリ102やローカルメモリ162などの内部メモリに既に読み出されている場合は内部メモリから取得されてもよく、ハードディスクに既に読み出されている場合は、ハードディスクから取得されてもよい。なお、状態取得部310は、2つ以上の状態情報を取得することが好ましく、さらにはこれらの全てを取得することが好ましい。取得する状態情報の数が多いほど、ゲームプログラムにとって、使用できる状態情報の数を増やすことができ、すなわちゲームプログラムは、必要な状態情報を状況に応じて選択的に使用でき、使用した状態情報に対応する所望の処理を実行できる。
【0043】
セーブ処理部320は、ゲーム進行に関するゲームデータをハードディスクにセーブする機能をもつ。ゲームデータ取得部322は、アプリケーション処理部124からアプリケーションの処理結果などのセーブすべきゲームデータを取得する。付加処理部324は、状態取得部310により取得された状態情報を、ゲームデータ取得部322により取得されたゲームデータに付加情報として付加して、ハードディスクに記憶する。これにより、セーブデータは、付加情報付きのゲームデータとして記憶される。
【0044】
このように、セーブすべきゲームデータに状態情報を付加することで、ゲームデータ自体に、セーブ時の環境状態を含めさせることができる。これにより、ゲーム装置10は、セーブデータの付加情報を参照すれば、そのゲームデータのセーブ時の環境を知ることができる。
【0045】
たとえば状態情報として本体IDが付加されるとき、ゲーム装置10は、付加された本体IDを参照することで、そのゲームデータをセーブしたのが自分であるか、または他のゲーム装置であるかを判定できる。
【0046】
また状態情報としてメディアIDが付加されるとき、ゲーム装置10は、付加されたメディアIDを参照することで、セーブデータが現在起動しているメディアと同じメディアで作成されたか、または別のメディアで作成されたかを判定できる。
【0047】
また状態情報としてアプリケーションIDが付加されるとき、ゲーム装置10は、付加されたアプリケーションIDを参照することで、セーブデータが現在起動しているアプリケーションと同じアプリケーションで作成されたか、または別のアプリケーションで作成されたかを判定できる。
【0048】
また状態情報としてユーザIDが付加されるとき、ゲーム装置10は、付加されたユーザIDを参照することで、セーブデータが現在のユーザによりセーブされたか、または別のユーザによりセーブされたかを判定できる。
【0049】
ロード用API処理モジュール300bは、データロード用のセーブデータユーティリティ関数がアプリケーション処理部124により呼び出されることで構成される。ロード用API処理モジュール300bは、状態取得部330、ロード処理部340およびロード実行部350を備え、ロード処理部340は、付加情報取得部342、判定部344および通知部346を有する。
【0050】
状態取得部330は、状態取得部310と同様に、ゲームプログラムの実行環境の状態を示す状態情報を取得する。状態取得部330は、状態情報として、本体ID、メディアID、アプリケーションID、ユーザIDの少なくとも2つを取得することが好ましい。状態取得部310および330は、同一のプログラムモジュールで構成され、それぞれ同一種類の状態情報を取得する。
【0051】
ロード処理部340は、セーブデータをハードディスクからロードする機能をもつ。まず、付加情報取得部342は、ゲームデータのロード実行前に、ハードディスクに記録されたゲームデータから付加情報を取得する。判定部344は、状態取得部330により取得されたロード前の状態情報と、付加情報取得部342により取得された付加情報との一致性を判定する。なお、一致性の判定は、原則として完全一致か否かで行われる。通知部346は、判定部344による一致性の判定結果をアプリケーション処理部124に通知する。
【0052】
判定部344は、複数種類のロード時の状態情報およびゲームデータの付加情報について、それぞれの一致性を判定して、それぞれの判定結果を生成する。たとえば、状態取得部310および330が、状態情報として、本体ID、メディアID、アプリケーションID、ユーザIDを取得する場合、判定部344は、本体ID、メディアID、アプリケーションID、ユーザIDについて一致性を判定し、通知部346は、それぞれの判定結果をアプリケーション処理部124に通知する。これにより、ロード用API処理モジュール300bは、アプリケーション処理部124に対して、きめ細かな環境状態に関する情報を提供できる。アプリケーション処理部124は、環境状態のそれぞれについての変化の有無を認識できるため、個々の環境変化に応じたアプリケーション処理を実行することができる。また複数の状態情報をもとにセーブデータの検証処理を行うため、検証処理自体の確実性をますことができ、また様々なゲームプログラムに有用な情報を供給できる可能性も高めることができる。
【0053】
判定部344は、ロード時の状態情報と、セーブデータの付加情報とが一致していない場合にエラー判定を行い、通知部346は、エラー情報をアプリケーション処理部124に通知する。たとえば判定結果はフラグにより表現されてよく、ロード時の状態情報とセーブデータの付加情報とが一致している場合はフラグ値「0」、異なっている場合はフラグ値「1」とする。一致していない場合には、判定結果が単にエラー情報(すなわち、フラグ値「1」)としてアプリケーション処理部124に通知されるため、アプリケーション処理部124による判定部344の判定結果の取り扱いが容易となる。
【0054】
図6は、リスト選択型ロード処理(ListLoad())のシーケンス図である。アプリケーション処理部124が、ListLoad()関数の呼出要求をOS実行部122に送る(S10)。引数として、取得対象とするセーブデータのディレクトリ名プレフィックスや、コールバック関数(データリストコールバック、データステータスコールバック、ファイル操作コールバック)へのポインタなどが指定される。OS実行部122においてListLoad()関数が呼び出され(S12)、ロード用API処理モジュール300bが構成される。ロード用API処理モジュール300bは、ディレクトリ名プレフィックスをもとに、ハードディスクからセーブデータのリストを取得する(S14)。
【0055】
ロード用API処理モジュール300bは、セーブデータのリストを引数としてデータリストコールバックを呼び出す(S16)。データリストコールバックでは、渡されたセーブデータのリストをもとに、ユーザに提示するセーブデータリストを作成する(S18)。データリストコールバックからリターンし、ユーザ提示用リストがロード用API処理モジュール300bに渡されると(S20)、ロード用API処理モジュール300bは、セーブデータのリストをGUIにより画面表示して(S22)、ユーザからの応答を待つ。ユーザがロード対象とするセーブデータを選択すると(S24)、選択内容がロード用API処理モジュール300bに通知され(S26)、ロード用API処理モジュール300bは、確認ダイアログをGUIにより画面表示する(S28)。ユーザが確認応答を行うと(S30)、セーブデータの検証処理を行う(S32)。この検証処理では、図5に関連して説明したように、セーブ時の状態情報と、現在(ロード時)の状態情報を比較し、一致性を判定する。
【0056】
ロード用API処理モジュール300bは、データステータスコールバックを呼び出す(S34)。データステータスコールバックに渡される情報は、セーブデータの検証処理の結果や、選択されたセーブデータのディレクトリ名、更新日時などの属性情報である。
【0057】
アプリケーション処理部124は、セーブデータの検証処理の結果から、たとえばロード処理を実行するか否かを判定する(S38)。たとえば、本体IDに関してエラー情報が通知された場合、ゲーム装置10とは別の機器でセーブデータが作成されたことが分かる。このような場合、他人のセーブデータを利用してゲームを実行しようとする可能性が高いため、アプリケーション処理部124は、ロード処理を終了してもよい(S38のN)。
【0058】
一方、全ての状態情報についてエラーが通知されない場合、アプリケーション処理部124は、ロード処理を実行することを判定し(S38のY)、データステータスコールバックからリターンして、ファイル操作前処理を指定する(S40)。ロード用API処理モジュール300bはファイル操作前処理を行い(S42)、セーブデータを構成するファイルひとつひとつについてファイル操作コールバックを呼び出す(S44)。ファイル操作コールバックに渡される情報は、リード処理を特定する制御情報などである。アプリケーション処理部124は、セーブデータの全ファイルをロードするまで(S46のN)、読み出すファイルを指定し(S48)、ロード実行部350は、ハードディスクからデータをロードする(S50)。全ファイルをロードすると(S46のY)、アプリケーション処理部124は、ロード用API処理モジュール300bに対してロード処理の終了指示を通知し(S52)、ロード用API処理モジュール300bは、画面に完了メッセージを表示して、ロード処理を終了する。
【0059】
以上の例では、アプリケーション処理部124が、S32におけるセーブデータの検証処理の結果を受けてロードの実行の可否を判定するものとした。アプリケーション処理部124は、エラー情報の種類に応じて、様々な態様で振る舞うことができる。
【0060】
A)本体IDにエラー情報が発生した場合
アプリケーション処理部124は、上記したようにロード処理を停止してもよい。これにより、他人によるセーブデータの利用を困難にでき、また他人によるセーブデータの複製も困難にできる。特に、ネットワーク上でセーブデータが公開されることが頻繁に生じるような場合に、本体IDが異なれば、その利用および複製をできなくすることで、セーブデータをネットワーク上に公開する意味をなくすことができる。また、異なるゲーム装置によるセーブデータを使用する場合には、ゲストユーザとしてゲーム装置10が取り扱えるようにしてもよい。
【0061】
B)メディアIDにエラー情報が発生した場合
アプリケーション処理部124は、ロード処理を停止する。これにより、他人によるセーブデータの利用を困難にでき、また他人によるセーブデータの複製も困難にできる。特に、ネットワーク上でセーブデータが公開されることが頻繁に生じるような場合に、メディアIDが異なれば、その利用および複製をできなくすることで、セーブデータをネットワーク上に公開する意味をなくすことができる。また、異なるメディアによるセーブデータを使用する場合には、ゲストユーザとしてゲーム装置10が取り扱えるようにしてもよい。
【0062】
C)アプリケーションIDにエラー情報が発生した場合
たとえば、シリーズもののゲームアプリケーションで、旧バージョンのゲームデータを新バージョンで使用したい場合に、ゲーム装置10は、そのゲームデータに対して特典をつけた処理を実行してもよい。
【0063】
D)ユーザIDにエラー情報が発生した場合
まず、ユーザIDが存在しない場合、一致性の判定処理において比較対象が存在しないため、エラー情報が発生される。またゲーム装置10は、ユーザが配信サーバに登録していないことを判定できる。ユーザIDが必要なゲームでは、アプリケーション処理部124が、そのセーブデータの使用を制限してもよい。
【0064】
また、ユーザIDが異なっていた場合、ゲーム装置10は、異なるユーザによりセーブされたセーブデータであることを認識できるとともに、セーブしたユーザの特定が可能となる。なお、ユーザIDについては、フラグではなく、ユーザIDそのものをアプリケーション処理部124に通知してもよい。
【0065】
このように、アプリケーション処理部124が、複数の環境状態情報を用いることで、状態情報の一致性判定結果ごとに、様々なバリエーションの処理を実行できるようになる。これにより、ゲームプログラムの保護レベルを高めることができ、またゲーム進行に対して特典を与えるような対応をすることで、ゲームプログラムの魅力を高めることもできる。
【0066】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【0067】
【図1】本発明の実施例にかかるゲームシステムを示す図である。
【図2】ゲーム装置の機能ブロック図を示す図である。
【図3】OS階層を示す図である。
【図4】メインコントローラの内部構成を示す図である。
【図5】OS実行部において構成されるAPI処理モジュールの機能ブロックを示す図である。
【図6】リスト選択型ロード処理(ListLoad())のシーケンス図である。
【符号の説明】
【0068】
1・・・ゲームシステム、10・・・ゲーム装置、12・・・出力装置、20・・・電源ボタン、22・・・LED、24・・・システムコントローラ、30・・・デバイスコントローラ、32・・・メディアドライブ、34・・・ハードディスクドライブ、36・・・スイッチ、38・・・無線インタフェース、40・・・ゲームコントローラ、50・・・メディア、100・・・メインコントローラ、102・・・メインメモリ、104・・・入力受付部、120・・・実行処理部、122・・・OS実行部、124・・・アプリケーション処理部、140・・・フラッシュメモリ、142・・・本体ID保持部、144・・・ユーザID保持部、160・・・メモリコントローラ、162・・・ローカルメモリ、200・・・出力処理部、300a・・・セーブ用API処理モジュール、300b・・・ロード用API処理モジュール、302・・・状態取得部、310・・・状態取得部、320・・・セーブ処理部、322・・・ゲームデータ取得部、324・・・付加処理部、330・・・状態取得部、340・・・ロード処理部、342・・・付加情報取得部、344・・・判定部、346・・・通知部、350・・・ロード実行部。

【特許請求の範囲】
【請求項1】
ゲームプログラムを実行するアプリケーション処理部と、
ゲーム進行に関するゲームデータを記憶装置にセーブするセーブ処理部と、
セーブデータを記憶装置からロードするロード処理部と、
ゲームプログラムの実行環境の状態を示す状態情報を取得する状態取得部とを備え、
前記セーブ処理部は、
前記状態取得部により取得された状態情報を、ゲームデータに付加情報として付加して前記記憶装置に記憶する付加処理部を備え、
前記ロード処理部は、
前記記憶装置に記憶されたゲームデータから付加情報を取得する付加情報取得部と、
前記状態取得部により取得された状態情報と、前記付加情報取得部により取得された対応する付加情報との一致性を判定する判定部と、
判定結果を前記アプリケーション処理部に通知する通知部と、
を備えることを特徴とするゲーム装置。
【請求項2】
前記状態取得部は、複数の状態情報を取得して、前記付加処理部が、複数の状態情報をゲームデータに付加情報として付加し、
前記判定部は、前記状態取得部により取得された複数の状態情報と、前記付加情報取得部により取得された対応する付加情報とのそれぞれの一致性を判定し、
前記通知部は、それぞれの判定結果を前記アプリケーション処理部に通知することを特徴とする請求項1に記載のゲーム装置。
【請求項3】
前記状態取得部は、状態情報として、当該ゲーム装置の識別情報、ゲームプログラムの供給媒体の識別情報、ゲームプログラムのアプリケーション情報、ゲームユーザを特定する識別情報の少なくとも2つを取得することを特徴とする請求項2に記載のゲーム装置。
【請求項4】
前記判定部は、ロード時の状態情報と、セーブデータの付加情報とが一致していない場合に、エラー判定を行うことを特徴とする請求項1から3のいずれかに記載のゲーム装置。
【請求項5】
前記アプリケーション処理部は、所定の状態情報についてエラー判定が行われた場合には、ロード処理を実行しないことを特徴とする請求項1から4のいずれかに記載のゲーム装置。
【請求項6】
前記セーブ処理部および前記ロード処理部は、ゲームプログラムに提供するAPI(アプリケーションプログラミングインタフェース)の機能を実現するAPI処理モジュールとして構成されることを特徴とする請求項1から5のいずれかに記載のゲーム装置。
【請求項7】
コンピュータに、
ゲームプログラムを実行する機能と、
ゲーム進行に関するゲームデータを記憶装置にセーブする機能と、
セーブデータを記憶装置からロードする機能と、
ゲームプログラムの実行環境の状態を示す複数の状態情報を取得する機能とを実現させ、
前記セーブ機能は、
取得された複数の状態情報を、ゲームデータに付加情報として付加して記憶装置に記憶する機能を備え、
前記ロード機能は、
記憶装置に記憶されたゲームデータから付加情報を取得する機能と、
取得された複数の状態情報と、取得された対応する付加情報とのそれぞれの一致性を判定する機能と、
それぞれの判定結果を、ゲームアプリケーション実行機能に通知する機能とを、実現させるためのプログラム。
【請求項8】
請求項7に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2008−73259(P2008−73259A)
【公開日】平成20年4月3日(2008.4.3)
【国際特許分類】
【出願番号】特願2006−256519(P2006−256519)
【出願日】平成18年9月21日(2006.9.21)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】