【新規性喪失の例外の表示】特許法第30条第2項適用 鈴木 清人及び西田 綾佑が平成29年8月30日付で、CEDEC2017の公演において、出願に係る発明を公開。
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について説明する。
【0012】
(ゲームシステムの構成)
図1を参照して、本発明の一実施形態に係る情報処理システム1の概要について説明する。情報処理システム1は、サーバ装置10と、1つ以上の端末装置20と、を備える。
図1では簡便のため、3つの端末装置20を図示しているが、端末装置20の数は任意に定められてもよい。
【0013】
サーバ装置10は、例えばゲーム運営者が管理するサーバ等の情報処理装置である。端末装置20は、例えば携帯電話、スマートフォン、タブレット端末、PC(Personal Computer)、又はゲーム装置等の、ユーザによって使用される情報処理装置である。端末装置20は、本実施形態に係るゲームのアプリケーションプログラムを実行可能である。以下、アプリケーションプログラムを、単にアプリケーションともいう。ゲームのアプリケーションは、例えばインターネット等のネットワーク30を介して所定のアプリケーション配信サーバから端末装置20に取得されてもよく、或いは端末装置20に備えられた記憶装置又は端末装置20が読取可能なメモリカード等の記憶媒体に予め記憶されていてもよい。サーバ装置10及び端末装置20は、ネットワーク30を介して通信可能に接続される。
【0014】
サーバ装置10及び端末装置20は、ゲームに関する複数の処理を協働して実行する。例えば、サーバ装置10及び端末装置20が、一連の処理を分担して実行してもよい。また例えば、サーバ装置10及び端末装置20それぞれが同一の処理を実行してもよい。当該同一の処理について、サーバ装置10と端末装置20との間で処理結果が一致する場合、サーバ装置10及び端末装置20は、当該処理を完了してもよい。一方、サーバ装置10と端末装置20との間で処理結果が一致しない場合、サーバ装置10及び端末装置20は、例えばサーバ装置10の処理結果を正として当該処理を完了してもよく、或いは当該同一の処理の実行前にプロセスを巻き戻してもよい。かかる構成によれば、例えばサーバ装置10及び端末装置20の間の通信品質が一時的に低下した場合であっても、直ちに処理が中断される蓋然性が低下する。また、端末装置20において、例えばパラメータの書き換え等の不正処理が行われた場合であっても、当該不正処理を排除できる蓋然性が向上する。
【0015】
(ゲームの概要)
本実施形態に係るゲームの概要について説明する。本実施形態に係るゲームは、1つ以上のゲームパートを含む。1つ以上のゲームパートのうち少なくとも1つのゲームパートは、後述するゲーム媒体を用いて実行されてもよい。ゲームパートの実行中、ゲーム媒体は、例えばユーザ又はAI(Artificial Intelligence)によって操作されてもよい。AIは、例えばサーバ装置10又は端末装置20に備えられたプロセッサによって実現されてもよい。
【0016】
ゲーム媒体は、ゲームに使用される電子データであり、例えば、カード、アイテム、仮想通貨、チケット、キャラクタ、アバタ、レベル情報、ステータス情報、及びパラメータ情報(体力値や攻撃力など)、及び能力情報(スキル、アビリティ、呪文、ジョブなど)等、任意の媒体を含む。また、ゲーム媒体は、ユーザによってゲーム内で取得、所有、使用、管理、交換、合成、強化、売却、廃棄、又は贈与等され得る電子データであるが、ゲーム媒体の利用態様は本明細書で明示されるものに限られない。
【0017】
以下、特に明示した場合を除き、「ユーザが所有するゲーム媒体」とは、当該ユーザを一意に識別可能なユーザIDに対応付けられたゲーム媒体を示す。また、「ゲーム媒体をユーザに付与する」とは、ゲーム媒体をユーザIDに対応付けることを示す。また、「ユーザが所有するゲーム媒体を破棄する」とは、ユーザIDとゲーム媒体との対応付けを解消することを示す。また、「ユーザが所有するゲーム媒体を消費する」とは、ユーザIDとゲーム媒体との対応付けの解消に応じて、何らかの効果又は影響をゲーム内で発揮させ得ることを示す。また、「ユーザが所有するゲーム媒体を売却する」とは、ユーザIDとゲーム媒体との対応付けを解消し、且つ、ユーザIDに他のゲーム媒体(例えば、仮想通貨又はアイテム等)を対応付けることを示す。また、「ユーザAが所有するゲーム媒体をユーザBに譲渡する」とは、ユーザAのユーザIDとゲーム媒体との対応付けを解消し、且つ、ユーザBのユーザIDに当該ゲーム媒体を対応付けることを示す。また、「ゲーム媒体を作成する」とは、ゲーム媒体に関する情報の少なくとも一部を定義又は決定することを示す。
【0018】
ゲームパートは、ゲーム内でユーザがプレイ可能な任意のコンテンツを含んでもよい。例えば、ゲームパートは、クエスト、ミッション、ミニゲーム、ゲーム媒体の入手、育成、強化、及び合成、仮想空間の探索、並びに対戦相手(例えば、他のユーザ、敵キャラクタ、及び敵の建物等)との対戦等のコンテンツを含んでもよい。各ゲームパートには、1つ以上の所定のゲーム課題が設定されてもよい。ユーザによってプレイされるゲームパートに設定された1つ以上のゲーム課題の達成に成功したと判定された場合、ユーザに対して、例えばゲーム媒体等が報酬として付与されてもよい。ゲーム課題には、例えば敵キャラクタとの対戦に勝利するとの課題、仮想空間内のゴール地点まで到達するとの課題、及び所定時間が経過するまでユーザのキャラクタが所定の状態(例えば、後述する健全度がゼロの状態)にならないとの課題等、ゲームパートの内容に応じた任意の課題が採用可能である。また、ゲームパートに設定された1つ以上のゲーム課題のうち、特定のゲーム課題(クリア課題)が達成されることを、ゲームパートのクリアともいう。ゲームパートをプレイするユーザがクリア課題の達成に成功した場合、当該ゲームパートのクリアと判定され、当該ゲームパートが終了してもよい。
【0019】
1つ以上のゲームパートには、シングルプレイ用のゲームパートと、マルチプレイ用のゲームパートと、が含まれてもよい。シングルプレイ用のゲームパートは、例えば、1人のユーザが使用する1つの端末装置20に対するユーザ操作に基づいて実行されるゲームパート(例えば、一人用のゲームパート)を含んでもよい。例えば、1つの端末装置20が単独で、又は1つの端末装置20とサーバ装置10とが協働して、シングルプレイ用のゲームパートを実行する。一方、マルチプレイ用のゲームパートは、例えば、2人以上のユーザがそれぞれ使用する2つ以上の端末装置20に対するユーザ操作に基づいて実行される、当該2人以上のユーザに共通のゲームパート(例えば、複数人用のゲームパート)を含んでもよい。2人以上のユーザに共通のゲームパートは、例えば、当該ゲームパートの進行処理の少なくとも一部及び処理結果の少なくとも一部が、当該2人以上のユーザに対して共通して適用されるゲームパートを含んでもよい。例えば、2つ以上の端末装置20が協働して、又は2つ以上の端末装置20とサーバ装置10とが協働して、マルチプレイ用のゲームパートを実行する。マルチプレイ用のゲームパートは、複数のユーザがゲーム内で対戦または協力するゲームパートを含んでもよい。1つのゲームパートが、シングルプレイ及びマルチプレイの両方に対応してもよい。
【0020】
本実施形態の概要について説明する。サーバ装置10及び端末装置20のそれぞれは、ユーザのゲームデータを記憶する。以下、サーバ装置10に記憶されるゲームデータをサーバ側ゲームデータともいい、端末装置20に記憶されるゲームデータを端末側ゲームデータともいう。ユーザのゲームデータは、ゲームの実行に用いられるデータであって、当該ユーザに固有の任意のデータを含む。ゲームデータは、ゲームのセーブデータを含んでもよい。ゲームデータは、ゲームに関する任意の処理の実行に応じて更新され得る。
【0021】
サーバ側ゲームデータ及び端末側ゲームデータは、互いに一致するように管理される。しかしながら、例えばユーザの不正行為によって端末側ゲームデータが改ざんされた場合、サーバ側ゲームデータ及び改ざんされた端末側ゲームデータは、必ずしも一致しない。ここで、ゲームがRPG(Role-Playing Game)である場合において、サーバ側ゲームデータ及び端末側ゲームデータが管理される例について説明する。ユーザは、例えば仮想空間内に配置されたユーザキャラクタを操作して、敵キャラクタ等の対戦相手と対戦する対戦ゲームパート、及び洞窟若しくは建造物等のダンジョンを探索する探索ゲームパート等をプレイする。例えば、対戦ゲームパート又は探索ゲームパート等を進行させるゲーム処理が実行されることによって、ユーザは、例えばキャラクタ、武器、又はアイテム等のゲーム媒体を取得し得る。
【0022】
ユーザによってゲーム媒体が取得されると、端末側ゲームデータが更新される。例えば、ユーザがアイテムを取得すると、当該アイテムの所有数が増加するように、端末側ゲームデータが更新される。端末側ゲームデータが更新されると、サーバ側ゲームデータを更新させる指示(更新指示)が、端末装置20からサーバ装置10へ送信される。サーバ装置10は、端末装置20から受信する更新指示に基づいて、サーバ側ゲームデータを更新する。このようにして、サーバ側ゲームデータが、更新後の端末側ゲームデータに一致するように更新される。ゲームの内容は、上述したRPGの例に限られず、例えばレースゲーム、シミュレーションゲーム、又はパズルゲーム等、任意に定められてもよい。
【0023】
本実施形態では、トークンを用いてサーバ側ゲームデータの更新が行われる。具体的には、サーバ装置10は、予め1つ以上のトークンを生成し記憶する。各トークンは、互いに区別可能な任意の情報である。例えば、トークンは、所定ビット数の文字列データであるが、これに限られない。端末装置20は、当該1つ以上のトークンを、予めサーバ装置10から取得して記憶する。端末装置20は、上述のようにサーバ側ゲームデータの更新指示を送信する際、更新指示と共にトークンをサーバ装置10へ送信する。端末装置20は、例えば更新指示及びトークンを送信すると、自装置に記憶された当該トークンを消去する。サーバ装置10は、端末装置20から受信したトークンと、サーバ装置10が予め記憶しているトークンとが一致する場合、サーバ側ゲームデータを更新して、サーバ装置10に記憶された当該トークンを消去する。
【0024】
一方、サーバ装置10は、端末装置20から受信したトークンと、サーバ装置10が予め記憶しているトークンとが一致しない場合、サーバ側ゲームデータを更新しない。以下、サーバ装置10が予め記憶しているトークンと一致しない、端末装置20によって送信されたトークンを、不正なトークンともいう。また、サーバ装置10が予め記憶しているトークンと一致する、端末装置20によって送信されたトークンを、正規のトークンともいう。
【0025】
また、サーバ装置10は、端末装置20からトークンを受信せず更新指示のみを受信した場合、サーバ側ゲームデータを更新しない。以下、端末装置20によってトークンを伴わずに又は不正なトークンと共に送信された更新指示を、不正な更新指示ともいう。また、端末装置20によって正規のトークンと共に送信された更新指示を、正規の更新指示ともいう。
【0026】
かかる構成によれば、正規のトークン及び更新指示が端末装置20からサーバ装置10へ送信されない限り、サーバ側ゲームデータが更新されない。このため、例えばユーザが不正行為によって端末側ゲームデータを改ざんした場合に、サーバ側ゲームデータが改ざん後の端末側ゲームデータに一致するように更新される蓋然性が低減する。したがって、端末装置20を使用するユーザの不正行為によってゲームデータが改ざんされる蓋然性が低減する。以下、本実施形態の詳細について具体的に説明する。
【0027】
(サーバ装置の構成)
サーバ装置10の構成について具体的に説明する。サーバ装置10は、サーバ通信部11と、サーバ記憶部12と、サーバ制御部13と、を備える。
【0028】
サーバ通信部11は、外部装置と無線又は有線によって通信し、情報の送受信を行う1つ以上のインタフェースを含む。サーバ通信部11は、例えば無線LAN(Local Area Network)通信モジュール又は有線LAN通信モジュール等を含んでもよい。サーバ通信部11は、ネットワーク30を介して、端末装置20との間で情報を送受信可能である。
【0029】
サーバ記憶部12は、1つ以上のメモリを含む。メモリは、例えば半導体メモリ、磁気メモリ、又は光メモリ等を含んでもよい。サーバ記憶部12に含まれる各メモリは、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。サーバ記憶部12は、ゲームの処理に用いられる情報及びプログラムを記憶する。
【0030】
図2を参照して、サーバ記憶部12に記憶される情報の例について説明する。サーバ記憶部12は、情報処理システム1を利用するユーザ毎に、ユーザIDと、1つ以上のトークンと、公開鍵と、サーバ側ゲームデータと、評価情報と、を記憶する。1つ以上のトークン、公開鍵、サーバ側ゲームデータ、及び評価情報は、ユーザIDに関連付けて記憶されてもよい。
【0031】
ユーザIDは、ユーザを一意に識別可能な情報である。以下、ユーザIDを単にユーザともいう。ユーザIDは、例えばユーザが情報処理システム1の利用を開始する際に(例えば、アカウントを作成する際に)決定され、サーバ記憶部12に記憶されてもよい。
【0032】
1つ以上のトークンのそれぞれは、上述したように互いに区別可能な任意の情報である。後述するように、トークンは、サーバ制御部13によって生成されると、サーバ記憶部12に記憶される。後述するように、サーバ記憶部12に記憶されたトークンは、端末装置20から受信されるトークンとの照合に用いられる。
【0033】
公開鍵は、後述するようにユーザの端末装置20に記憶された秘密鍵に対応する。公開鍵は、例えば端末装置20から予め取得される。後述するように、公開鍵は、秘密鍵を用いて暗号化された情報の復号化に用いられる。
【0034】
サーバ側ゲームデータは、ゲームの実行に用いられるデータであって、ユーザに固有の任意のデータを含む。例えば、サーバ側ゲームデータは、ユーザがゲーム内で所有するゲーム媒体を含んでもよいが、これに限られない。上述したように、サーバ側ゲームデータは、端末装置20に記憶された端末側ゲームデータに一致するように更新され得る。
【0035】
評価情報は、ユーザの評価を示す情報である。後述するように、評価情報は、不正なトークン又は不正な更新指示が端末装置20からサーバ装置10へ送信される度に、例えばユーザの評価を下げる方向に修正され得る。後述するように、評価情報は、例えばユーザのアカウントを停止させるか否かの判定に用いられてもよい。アカウントの停止によって、ユーザによるゲームのプレイが禁止され得る。また評価情報は、端末側ゲームデータをサーバ側ゲームデータに一致させるように更新させるか否かの判定に用いられてもよい。例えば、改ざん後のゲームデータである端末側ゲームデータが、改ざん前のゲームデータであるサーバ側ゲームデータに一致するように更新され得る。
【0036】
図1に示すサーバ制御部13は、1つ以上のプロセッサを含む。プロセッサは、汎用のプロセッサ、及び特定の処理に特化した専用プロセッサを含んでもよい。サーバ制御部13は、サーバ装置10全体の動作を制御する。例えば、サーバ制御部13は、サーバ通信部11を介して情報の送受信が可能である。サーバ制御部13は、情報をサーバ記憶部12に記憶可能である。サーバ制御部13の動作の詳細については後述する。
【0037】
(端末装置の構成)
端末装置20の構成について具体的に説明する。
図1に示すように、端末装置20は、端末通信部21と、端末記憶部22と、表示部23と、入力部24と、端末制御部25とを備える。
【0038】
端末通信部21は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。端末通信部21は、例えばLTE(Long Term Evolution)(登録商標)等のモバイル通信規格に対応する無線通信モジュール、無線LAN通信モジュール、又は有線LAN通信モジュール等を含んでもよい。端末通信部21は、ネットワーク30を介して、サーバ装置10との間で情報を送受信可能である。
【0039】
端末記憶部22は、1つ以上のメモリを含む。端末記憶部22に含まれる各メモリは、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。端末記憶部22は、端末装置20に内蔵されてもよく、或いは任意のインタフェースを介して端末装置20に接続されてもよい。端末記憶部22は、ゲームの処理に用いられる情報及びプログラムを記憶する。
【0040】
図3を参照して、端末記憶部22に記憶される情報の例について説明する。端末記憶部22は、ゲームアプリケーションと、ユーザIDと、1つ以上のトークンと、秘密鍵と、端末側ゲームデータと、を記憶する。
【0041】
ゲームアプリケーションは、本実施形態に係るゲームを実行するためのアプリケーションである。例えば、ゲームアプリケーションが起動した状態で、ユーザはゲームをプレイ可能である。
【0042】
ユーザIDは、ユーザを一意に識別可能な情報であって、上述したサーバ記憶部12に記憶されたユーザIDに対応する。
【0043】
1つ以上のトークンのそれぞれは、互いに区別可能な任意の情報である。後述するように、トークンは、サーバ装置10から端末装置20へ送信されると、端末記憶部22に記憶される。したがって、端末記憶部22に記憶された1つ以上のトークンは、サーバ装置10に記憶された1つ以上のトークンと同一である。
【0044】
秘密鍵は、上述したサーバ記憶部12に記憶された公開鍵に対応する。後述するように、秘密鍵は、端末装置20からサーバ装置10へ送信される情報の暗号化に用いられる。
【0045】
端末側ゲームデータは、ゲームの実行に用いられるデータであって、ユーザに固有の任意のデータを含む。上述したように、サーバ装置10に記憶されたサーバ側ゲームデータが、端末側ゲームデータに一致するように更新され得る。
【0046】
図1に示す表示部23は、例えば液晶ディスプレイ又は有機ELディスプレイ等の表示デバイスを含む。表示部23は、多様な画面を表示可能である。
【0047】
入力部24は、ユーザ操作を受け付ける任意の入力インタフェースを含む。入力インタフェースは、例えばマウス等のポインティングデバイス、物理キー、及び表示部23と一体的に設けられたタッチパネル等を含んでもよい。
【0048】
端末制御部25は、1つ以上のプロセッサを含む。端末制御部25は、端末装置20全体の動作を制御する。例えば、端末制御部25は、端末通信部21を介して情報の送受信が可能である。端末制御部25は、情報を端末記憶部22に記憶可能である。端末制御部25は、表示部23に情報を表示可能である。端末制御部25は、入力部24に対するユーザ操作を検出可能である。端末制御部25の動作の詳細については後述する。
【0049】
(サーバ装置及び端末装置の動作例)
サーバ装置10のサーバ制御部13及び端末装置20の端末制御部25の動作例について、具体的に説明する。
【0050】
サーバ制御部13は、上述したユーザID、公開鍵、サーバ側ゲームデータ、及び評価情報をサーバ記憶部12に記憶する。サーバ制御部13は、1つ以上のトークンを生成する。サーバ制御部13は、当該1つ以上のトークンをサーバ記憶部12に記憶する。サーバ制御部13は、生成された当該1つ以上のトークンを端末装置20へ送信する。端末制御部25は、当該1つ以上のトークンを、サーバ装置10から受信して端末記憶部22に記憶する。したがって、サーバ記憶部12及び端末記憶部22のそれぞれに、当該1つ以上のトークンが記憶される。
【0051】
端末制御部25は、例えばユーザ操作に応じて、ゲームアプリケーションを起動する。端末制御部25は、例えばユーザ操作に応じて又は自動的に、ゲーム処理を実行する。ゲーム処理の実行によって、ゲームパート(例えば、対戦相手との対戦を行う対戦ゲームパート、又はダンジョンの探索を行う探索ゲームパート等)が進行してもよい。端末制御部25は、ゲーム処理が実行された結果に応じて、端末記憶部22に記憶された端末側ゲームデータを更新し得る。例えば、対戦ゲームパートのゲーム処理が実行された結果としてユーザが対戦相手に勝利しゲーム媒体を獲得した場合、又は、探索ゲームパートのゲーム処理が実行された結果としてユーザが宝箱からゲーム媒体を獲得した場合、ユーザによる当該ゲーム媒体の所有数が増加するように、端末側ゲームデータが更新される。
【0052】
端末側ゲームデータを更新すると、端末制御部25は、更新情報と、トークンを含む被暗号化情報と、を生成する。更新情報及び被暗号化情報の詳細については後述する。端末制御部25は、サーバ側ゲームデータを更新させる指示であって更新情報を含む更新指示と、秘密鍵を用いて被暗号化情報を暗号化した暗号化情報と、を含む被送信情報を送信キューに追加する。送信キューには、被送信情報に限られず、任意の情報が追加されてもよい。端末制御部25は、送信キューを介して被送信情報をサーバ装置10へ送信する。送信キューを介する情報の送信は、任意のタイミングで実行されてもよい。例えば、送信キューを介する情報の送信は、ゲームにおける所定のイベントの発生に応じて実行されてもよい。当該イベントは、例えば所定のゲーム画面への遷移イベント、ゲームにおける所定の内部状態への遷移イベント、及び所定のゲームパートが開始又は終了するイベント等を含んでもよい。ゲームの内部状態は、例えば実行されるゲームパート又はゲーム処理等に応じて予め定義された状態である。ゲームの内部状態に基づいて、実行されたゲームパート又はゲーム処理等が判別可能である。端末制御部25は、送信された被送信情報に含まれるトークンを端末記憶部22から消去する。
【0053】
ここで、更新指示及び被暗号化情報について詳細に説明する。サーバ側ゲームデータの更新指示は、第1指示及び第2指示を含む。第1指示は、暗号化情報を復号化して抽出されるトークンとサーバ記憶部12に記憶されたトークンとが一致する場合、サーバ側ゲームデータを更新させる指示である。第2指示は、暗号化情報を復号化して抽出されるトークンとサーバ記憶部12に記憶されたトークンとが一致しない場合、サーバ記憶部12に記憶された評価情報を修正させる指示である。
【0054】
また、サーバ側ゲームデータの更新指示は、例えば
図4に示すように、ユーザIDと、差分データと、署名IDと、を有する更新情報を含む。差分データは、上述のようにゲーム処理が実行された結果として端末側ゲームデータが更新される場合における、端末側ゲームデータの更新前後の差分を示す情報である。例えば、端末側ゲームデータの更新によって、ユーザによるゲーム媒体の所有数が1個から6個に増加した場合、差分データは、当該ゲーム媒体のIDと、ユーザによる当該ゲーム媒体の所有数の差分値(+5個)と、を含んでもよい。署名IDは、後述するように被暗号化情報に含まれる署名IDと同一である。署名IDを介して、更新指示及び更新情報と、被暗号化情報と、が関連付けられる。サーバ側ゲームデータの更新指示は、上述した例に限られず、サーバ側ゲームデータの更新に用いられる任意の情報を含んでもよい。
【0055】
被暗号化情報は、例えば
図5に示すように、署名IDと、トークンと、再現用情報と、を含む。署名IDは、被暗号化情報を一意に識別可能な情報である。トークンは、端末記憶部22に記憶された1つ以上のトークンのうちから選択される。再現用情報は、上述のように端末制御部25によってゲーム処理が実行された結果として端末側ゲームデータが更新された場合における、当該ゲーム処理の再現に用いられる任意の情報を含む。ここで「再現」とは、例えば端末制御部25によって実行されたゲーム処理と同一の処理を、端末装置20以外の他の装置が実行して同一の結果を得ることを含む。当該他の装置は、例えばサーバ装置10であってもよいし、ゲームの提供者又は開発者が使用するコンピュータ又はスマートフォン等の情報処理装置であってもよい。
【0056】
再現用情報の具体例について説明する。例えば、ゲーム処理が、ゲームに含まれる複数のゲームパートのうち一部のゲームパートを進行させる処理を含む場合、再現用情報は、ゲーム処理によって進行したゲームパートを示す情報を含んでもよい。ゲームパートを示す情報は、例えばゲームパートを一意に識別可能な情報であってもよいし、ゲームパートの種類(例えば、対戦ゲームパート又は探索ゲームパート等)を示す情報であってもよい。ゲームパートを示す情報によれば、当該ゲーム処理がどのゲームパートにおいて実行されたかを判別可能である。
【0057】
また再現用情報は、端末制御部25によるゲーム処理の実行時に用いられたゲームパラメータを示す情報を含んでもよい。具体的には、ゲーム処理が対戦ゲームパートを進行させる処理を含む場合、当該ゲーム処理の実行には、例えば対戦を行った各キャラクタのパラメータ(例えば、キャラクタの識別情報、体力、及び攻撃力等)等が、ゲームパラメータとして用いられてもよい。或いは、ゲーム処理が探索ゲームパートを進行させる処理である場合、当該ゲーム処理の実行には、例えば探索対象のダンジョンのパラメータ(例えば、ダンジョンの識別情報、及びダンジョン内に存在しユーザによって開封された宝箱の識別情報等)等が、ゲームパラメータとして用いられてもよい。
【0058】
再現用情報に含まれる情報は、上述した例に限られず、ゲーム処理の内容に応じて任意に定められてもよい。例えば、ゲーム処理が、サーバ装置10から取得される乱数種を用いる抽選処理を含む場合、再現用情報は、当該抽選処理に用いられた乱数種の値、抽選結果値、抽選最小値、抽選最大値、及び抽選試行回数のうち少なくとも1つを含んでもよい。
【0059】
再現用情報の内容は、上述した例に限られない。例えば、再現用情報は、端末制御部25によってゲーム処理が実行されたときのログ情報等、ゲーム処理の再現の用いられる任意の情報を含んでもよい。ログ情報は、例えばユーザ又はAIによるゲームの操作情報、及びゲームの内部状態を示す情報等、ゲーム処理に用いられた任意の情報を含んでもよい。
【0060】
上述した再現用情報を用いてゲーム処理の再現を実行することにより、当該ゲーム処理が端末制御部25によって実行された結果と、再現用情報を用いて当該ゲーム処理が再現された結果とが一致する。一方、例えばユーザの不正行為によって、端末制御部25によるゲーム処理の実行結果が改ざんされた場合(例えば、「ユーザが5個のアイテムを獲得する」という結果が「ユーザが100個のアイテムを獲得する」という結果に改ざんされた場合)、当該ゲーム処理の改ざんされた実行結果と、再現用情報を用いて当該ゲーム処理が再現された結果とが一致しないこととなる。したがって、再現用情報を用いることによって、例えばゲームの提供者又は開発者がユーザによる不正行為を発見できる蓋然性が向上する。再現用情報を用いるゲーム処理の再現は、サーバ装置10が実行してもよいし、専用の情報処理装置(例えば、複数のゲーム処理それぞれの再現をバッチ処理で行うバッチサーバ)が実行してもよい。
【0061】
サーバ制御部13は、上述した被送信情報を端末装置20から受信すると、当該被送信情報に含まれる暗号化情報を、公開鍵を用いて復号化する。サーバ制御部13は、復号化された暗号化情報(即ち、上述した被暗号化情報)に含まれる更新指示及びトークンを抽出する。サーバ制御部13は、抽出された当該トークンと、サーバ記憶部12に記憶されたトークンとが一致するか否かを判定する。
【0062】
両者が一致すると判定された場合、サーバ制御部13は、更新指示に含まれる第1指示に基づいて、サーバ側ゲームデータを更新する。例えば、更新指示に含まれる差分データが、ユーザが獲得したゲーム媒体のIDと、ユーザによる当該ゲーム媒体の所有数の差分値(+5個)と、を含む場合、サーバ制御部13は、ユーザが所有する当該ゲーム媒体の所有数を5個増加させるように、サーバ側ゲームデータを更新する。サーバ制御部13は、サーバ記憶部12に記憶された当該トークンを消去してもよいし、或いは当該トークンを、例えば使用済みトークンとしてログ情報に蓄積してもよい。
【0063】
一方、両者が一致しないと判定された場合、サーバ制御部13は、更新指示に含まれる第2指示に基づいて、サーバ側ゲームデータを更新することなく、サーバ記憶部12に記憶された評価情報を修正する。例えば、サーバ制御部13は、ユーザの評価を下げるように、評価情報を修正してもよい。
【0064】
またサーバ制御部13は、端末装置20からトークンを受信せず更新指示のみを受信した場合、サーバ側ゲームデータを更新することなく、サーバ記憶部12に記憶された評価情報を修正する。例えば、サーバ制御部13は、ユーザの評価を下げるように、評価情報を修正してもよい。
【0065】
上述のように、サーバ制御部13は、端末装置20から受信したトークンと、サーバ記憶部12に予め記憶したトークンとが一致する場合、サーバ側ゲームデータを更新する。一方、サーバ制御部13は、両者が一致しない場合、及び端末装置20からトークンを受信せず更新指示のみを受信した場合、サーバ側ゲームデータを更新しない。かかる構成によれば、例えばユーザが不正行為によって端末側ゲームデータを改ざんした場合に、サーバ側ゲームデータが改ざん後の端末側ゲームデータに一致するように更新される蓋然性が低減する。したがって、端末装置20を使用するユーザの不正行為によってゲームデータが改ざんされる蓋然性が低減する。
【0066】
また上述のように、端末制御部25は、被送信情報をサーバ装置10へ送信する度、当該被送信情報に含まれるトークンを端末記憶部22から消去する。ここで、端末制御部25は、端末記憶部22に記憶されたトークンの数が所定値まで減少したか否かを判定してもよい。トークンの数が所定値まで減少したと判定された場合、端末制御部25は、新たなトークンの取得要求をサーバ装置10へ送信する。サーバ制御部13は、当該取得要求に応じて、新たなトークンを生成し、サーバ記憶部12に記憶し、端末装置20へ送信する。端末制御部25は、当該新たなトークンをサーバ装置10から受信し、端末記憶部22に記憶する。
【0067】
端末制御部25は、サーバ装置10から新たなトークンを受信して端末記憶部22に記憶する処理を、ゲームの進行中にバックグラウンドで実行してもよい。当該処理がバックグラウンドで実行される場合、ゲームの進行が中断することなく、サーバ装置10から新たなトークンが受信され記憶される。
【0068】
或いは、端末制御部25は、サーバ装置10から新たなトークンを受信して端末記憶部22に記憶する処理を、フォアグラウンドで実行してもよい。当該処理がフォアグラウンドで実行される場合、サーバ装置10から新たなトークンが受信され記憶されるまで、ゲームの進行が中断する。例えば、端末制御部25は、新たなトークンをサーバ装置10から受信して端末記憶部22に記憶するまで、ゲームの進行を中断してもよい。ゲームの進行が中断している間、端末制御部25は、例えば専用の情報(例えば、端末装置20とサーバ装置10とが通信中である旨のメッセージ等)を画面に表示させたり、或いは所定のゲーム画面(例えば、ゲームの開始時に表示されるタイトル画面)を表示させたりしてもよい。かかる構成によれば、例えば端末記憶部22に記憶されたトークンが足りずに正規の更新指示が送信できない等の不都合の発生する蓋然性が低減される。
【0069】
また上述のように、サーバ制御部13は、送信キューを介して被送信情報等の情報をサーバ装置10へ送信する。ここで、端末制御部25は、送信キューに含まれる未送信の情報の数が増加して第1所定値に達したか否かを判定してもよい。
【0070】
未送信の情報の数が第1所定値に達していないと判定された場合、端末制御部25は、送信キューを介して情報をサーバ装置10へ送信する処理を、ゲームの進行中にバックグラウンドで実行する。当該処理がバックグラウンドで実行される場合、ゲームの進行が中断することなく、送信キューに含まれる未送信の情報がサーバ装置10へ送信される。端末制御部25は、ゲームを進行させるゲーム画面上に、端末装置20とサーバ装置10とがバックグラウンドで通信中であることをユーザに示唆する任意の情報を表示させてもよい。
【0071】
例えば
図6に示すゲーム画面40は、本実施形態に係るゲームを進行させる画面の例である。ゲーム画面40には、ユーザキャラクタ41と、第1情報42と、が表示されている。ユーザキャラクタ41は、例えばユーザ操作に応じて又は自動的に、仮想空間内を移動可能である。第1情報42は、端末装置20とサーバ装置10とがバックグラウンドで通信中であることをユーザに示唆する任意の情報を含む。
図6に示す例では、「Auto Saving」とのメッセージが、第1情報42として表示されている。第1情報42を視認したユーザは、端末装置20とサーバ装置10とがバックグラウンドで通信中であることを認識可能である。
【0072】
一方、未送信の情報の数が第1所定値に達したと判定された場合、端末制御部25は、送信キューを介して情報をサーバ装置10へ送信する処理を、フォアグランドで実行する。当該処理がフォアグラウンドで実行される場合、送信キューに含まれる未送信の情報がサーバ装置10へ送信されるまで、ゲームの進行が中断する。例えば、端末制御部25は、送信キューを介して少なくとも1つの情報がサーバ装置10へ送信されるまで、ゲームの進行を中断してもよい。また例えば、端末制御部25は、送信キューに含まれる未送信の情報の数が、第1所定値よりも小さい第2所定値になるまで、ゲームの進行を中断してもよい。ゲームの進行が中断している間、端末制御部25は、所定のゲーム画面(例えば、ゲームの開始時に表示されるタイトル画面)を表示させてもよい。或いは、端末制御部25は、ゲームの進行が中断している間、ゲームを進行させる画面上に、端末装置20とサーバ装置10とがフォアグラウンドで通信中であることをユーザに示唆する任意の情報を表示させてもよい。
【0073】
例えば
図7に示すゲーム画面40には、第2情報43が表示されている。第2情報43は、端末装置20とサーバ装置10とがフォアグラウンドで通信中であることをユーザに示唆する任意の情報を含む。
図7に示す例では、「Auto Saving」とのメッセージを含むダイアログボックスが、第2情報43として表示されている。第2情報43を認したユーザは、端末装置20とサーバ装置10とがフォアグラウンドで通信中であることを認識可能である。
【0074】
図8を参照して、情報処理システム1の第1動作のフローについて説明する。第1動作は、サーバ装置10によって生成された1つ以上のトークンをサーバ装置10及び端末装置20のそれぞれに記憶する情報処理システム1の動作を含む。
【0075】
ステップS100:サーバ装置10は、1つ以上のトークンを生成する。
【0076】
ステップS101:サーバ装置10は、当該1つ以上のトークンをサーバ記憶部12に記憶する。
【0077】
ステップS102:サーバ装置10は、生成された当該1つ以上のトークンを端末装置20へ送信する。
【0078】
ステップS103:端末装置20は、当該1つ以上のトークンを、サーバ装置10から受信して端末記憶部22に記憶する。
【0079】
図9を参照して、端末装置20の第2動作のフローについて説明する。第2動作は、被送信情報を送信キューに追加する端末装置20の動作を含む。
【0080】
ステップS200:端末装置20は、例えばユーザ操作に応じて又は自動的に、ゲーム処理を実行する。
【0081】
ステップS201:端末装置20は、ゲーム処理が実行された結果に応じて、端末記憶部22に記憶された端末側ゲームデータを更新する。
【0082】
ステップS202:端末装置20は、サーバ側ゲームデータを更新させる更新指示と、トークンを含む被暗号化情報を暗号化した暗号化情報と、を含む被送信情報を送信キューに追加する。
【0083】
図10を参照して、情報処理システム1の第3動作のフローについて説明する。第3動作は、被送信情報を端末装置20からサーバ装置へ送信する情報処理システム1の動作を含む。
【0084】
ステップS300:端末装置20は、送信キューを介して被送信情報をサーバ装置10へ送信する。
【0085】
ステップS301:端末装置20は、送信された被送信情報に含まれるトークンを端末記憶部22から消去する。
【0086】
ステップS302:サーバ装置10は、端末装置20から受信した被送信情報から、更新指示及びトークンを抽出する。
【0087】
ステップS303:サーバ装置10は、ステップS302で抽出されたトークンと、ステップS101でサーバ記憶部12に記憶されたトークンとが一致するか否かを判定する。両者が一致すると判定された場合(ステップS303−Yes)、プロセスはステップS304に進む。一方、両者が一致しないと判定された場合(ステップS303−No)、プロセスはステップS306に進む。
【0088】
ステップS304:ステップS303で両者が一致すると判定された場合(ステップS303−Yes)、サーバ装置10は、更新指示に含まれる第1指示に基づいて、サーバ側ゲームデータを更新する。
【0089】
ステップS305:サーバ装置10は、ステップS302で抽出されたトークンと一致する、サーバ記憶部12に記憶されたトークンを消去し、又は当該トークンを使用済みトークンとしてログ情報に蓄積する。
【0090】
ステップS306:ステップS303で両者が一致しないと判定された場合(ステップS303−No)、サーバ装置10は、更新指示に含まれる第2指示に基づいて、サーバ側ゲームデータを更新することなく、サーバ記憶部12に記憶された評価情報を修正する。
【0091】
図11を参照して、端末装置20の第4動作のフローについて説明する。第4動作は、ゲームの進行を中断する端末装置20の動作を含む。
【0092】
ステップS400:端末装置20は、端末記憶部22に記憶されたトークンの数が所定値まで減少したか否かを判定する。トークンの数が所定値まで減少したと判定された場合(ステップS400−Yes)、プロセスはステップS401に進む。一方、トークンの数が所定値まで減少したと判定されない場合(ステップS400−No)、プロセスはステップS403に進む。
【0093】
ステップS401:ステップS400でトークンの数が所定値まで減少したと判定された場合(ステップS400−Yes)、端末制御部25は、新たなトークンの取得要求をサーバ装置10へ送信する。
【0094】
ステップS402:端末制御部25は、新たなトークンをサーバ装置10から受信して端末記憶部22に記憶するまで、ゲームの進行を中断する。ゲームの進行が再開すると、プロセスはステップS400に戻る。
【0095】
ステップS403:ステップS400でトークンの数が所定値まで減少したと判定されない場合(ステップS400−No)、端末制御部25は、送信キューに含まれる未送信の情報の数が増加して第1所定値に達したか否かを判定する。未送信の情報の数が第1所定値に達したと判定された場合(ステップS403−Yes)、プロセスはステップS404に進む。一方、未送信の情報の数が第1所定値に達したと判定されない場合(ステップS403−No)、プロセスはステップS400に戻る。
【0096】
ステップS404:ステップS403で未送信の情報の数が第1所定値に達したと判定された場合(ステップS403−Yes)、端末制御部25は、送信キューを介して少なくとも1つの情報がサーバ装置10へ送信されるまで、ゲームの進行を中断する。ゲームの進行が再開すると、プロセスはステップS400に戻る。
【0097】
以上述べたように、端末装置20は、サーバ装置10によって生成及び記憶されたトークンを、サーバ装置10から受信して端末記憶部22に記憶する。端末装置20は、トークンを含む被送信情報をサーバ装置10へ送信する。端末装置20は、端末記憶部22に記憶された当該トークンを消去する。ここで、被送信情報は、当該被送信情報に含まれるトークンと、サーバ装置10に記憶されたトークンとが一致する場合、サーバ装置10に記憶されたサーバ側ゲームデータを更新させる指示を含む。かかる構成によれば、端末装置20から受信されたトークンと、サーバ装置10に記憶されたトークンとが一致しない場合、サーバ側ゲームデータが更新されない。このため、例えばユーザが不正行為によって端末側ゲームデータを改ざんした場合に、サーバ側ゲームデータが改ざん後の端末側ゲームデータに一致するように更新される蓋然性が低減する。したがって、端末装置20を使用するユーザの不正行為によってゲームデータが改ざんされる蓋然性が低減する。例えば端末装置20の処理能力の向上に伴って端末装置20に実行させる処理の割合が増加すると、端末装置20を使用するユーザによる不正行為のリスクが高まる場合がある。本実施形態は、かかる場合に特に好適である。
【0098】
本発明を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。したがって、これらの変形や修正は本発明の範囲に含まれることに留意されたい。例えば、各手段、各ステップ等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の手段やステップ等を1つに組み合わせたり、或いは分割したりすることが可能である。
【0099】
例えば、上述した本実施形態において、サーバ装置10が実行する動作及び処理の一部又は全部を、端末装置20が実行する構成であってもよい。同様に、端末装置20が実行する動作の一部を、サーバ装置10が実行する構成であってもよい。例えば、端末装置20に表示される各種画面の表示制御及び各種GUIの制御等の処理は、サーバ装置10及び端末装置20の何れか一方が実行してもよく、サーバ装置10及び端末装置20が協働して実行してもよい。
【0100】
また、上述した実施形態において、
図8乃至
図11を参照してサーバ装置10及び端末装置20の動作の例について説明した。しかしながら、当該動作に含まれる一部のステップ、又は1つのステップに含まれる一部の動作が、省略されてもよい。論理的に矛盾しない範囲内において、複数のステップの順番が入替わってもよい。
【0101】
また、上述した実施形態において、端末装置20からサーバ装置10へ送信される被送信情報は、端末装置20に記憶された秘密鍵を用いて被暗号化情報を暗号化した暗号化情報を含む。ここで、被暗号化情報は、例えばサーバ装置10から端末装置20へ予め送信された公開鍵を用いて暗号化されてもよい。かかる場合、サーバ装置10は、端末装置20から受信した被送信情報に含まれる暗号化情報を、サーバ記憶部12に予め記憶した秘密鍵を用いて復号化する。或いは、被送信情報が、暗号化されていない被暗号化情報を含む構成も可能である。かかる場合、端末装置20において被暗号化情報の暗号化を行う必要はなく、サーバ装置10において復号化を行う必要もない。
【0102】
また、上述した実施形態において、端末装置20からサーバ装置10へ送信される被送信情報に、優先度を示す情報が更に含まれる構成も可能である。例えば、端末制御部25は、上述したように端末側ゲームデータの更新前後の差分を示す差分データを生成すると、当該差分データに基づいて優先度を決定する。差分データの内容がゲームの進行に及ぼす影響が大きいほど、高い優先度が設定されてもよい。具体的には、差分データに含まれるゲーム媒体のIDが、例えばゲーム内において希少価値の高い特定のゲーム媒体のIDである場合、端末制御部25は、通常よりも高い優先度を決定してもよい。或いは、差分データに示される、ユーザのゲーム媒体の所有数の差分値が所定の基準値以上である場合、端末制御部25は、通常よりも高い優先度を決定してもよい。ゲーム媒体のID又は基準値と、優先度との対応関係が予め定められていてもよい。優先度には複数の段階が存在してもよい。優先度を示す情報は、暗号化されずに被送信情報に含められてもよく、或いは暗号化されて被送信情報に含められてもよい。
【0103】
サーバ制御部13は、端末装置20から被送信情報を受信すると、当該被送信情報に示される優先度と、サーバ制御部13の処理負担とに基づいて、当該被送信情報から抽出されるトークンと、サーバ記憶部12に記憶されたトークンとが一致するか否かの判定を行ってもよい。例えば、サーバ制御部13の処理負担が所定の基準以上である場合、優先度が高い被送信情報についてのみ、トークンの一致性を判定する上述の処理を実行してもよい。かかる構成によれば、例えばサーバ装置10の処理負担が比較的高い場合であっても、ユーザの不正行為が検出される蓋然性が高まる。
【0104】
また、サーバ制御部13は、両者が一致しない場合、及び端末装置20からトークンを受信せず更新指示のみを受信した場合、優先度に基づいてユーザの評価情報を修正してもよい。例えば、サーバ制御部13は、優先度が高いほど、当該ユーザの評価を大きく下げるように、評価情報を修正してもよい。かかる構成によれば、ユーザによる不正行為のゲームの進行に及ぼす影響が大きいほど、当該ユーザの評価が大きく下がることとなる。したがって、例えば悪質な不正行為を行うユーザを特定できる蓋然性が高まる。
【0105】
また、上述した実施形態において、端末装置20に表示される画面の少なくとも一部を、サーバ装置10が作成したデータに基づいて端末装置20に表示させるウェブ表示とし、画面の少なくとも一部を、端末装置20にインストールされているネイティブアプリケーションによって表示させるネイティブ表示としてもよい。このように、上述した実施形態に係るゲームは、サーバ装置10及び端末装置20のそれぞれが処理の一部を担うハイブリッドゲームとすることもできる。
【0106】
また、上述した実施形態に係るサーバ装置10又は端末装置20として機能させるために、コンピュータ又は携帯電話等の情報処理装置を好適に用いることができる。このような情報処理装置は、実施形態に係るサーバ装置10又は端末装置20の各機能を実現する処理内容を記述したプログラムを、情報処理装置の記憶部に格納し、情報処理装置のCPUによって当該プログラムを読み出して実行させることによって実現可能である。