(57)【要約】【課題】ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法を提供すること。【解決手段】ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、パラメータに基づいてイベントを実行してユーザ結果を生成するユーザ端末と、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを複数の仮想インスタンスから選択し、選択された仮想インスタンスにおいてパラメータに基づいてイベントを実行して検証用結果を生成する、検証用結果生成部と、ユーザ結果と検証用結果とを比較して、ユーザ端末において不正が行われたか否かを決定する、不正検証部と、を備えるシステム。【選択図】図１
2019193702.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムであって、
ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するユーザ端末と、
検証用結果生成部と不正検証部とを有するサーバとを備え、
前記検証用結果生成部は、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
前記不正検証部は、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する、
ことを特徴とするシステム。
【請求項２】
前記検証用結果生成部は、前記ゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化してイベントを実行させ前記検証用結果を生成する、請求項１に記載のシステム。
【請求項３】
前記複数の仮想インスタンスから選択することは、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
ユーザ端末において実行されるゲームプログラムと同一の型情報を有し、当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、請求項１または２に記載のシステム。
【請求項４】
前記検証用結果生成部は、単一の仮想インスタンス管理部を有し、
前記検証用結果生成部は、前記複数の仮想インスタンスを並列的に動作させ、
前記検証用結果生成部の単一の仮想インスタンス管理部が、仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、前記複数の仮想インスタンスのうちの１つの選択された仮想インスタンスにおいて受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてイベントを並列的に実行することを可能とする、
請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
前記仮想インスタンスはコンテナ型仮想化を実現するものである、請求項１〜４のいずれか１項に記載のシステム。
【請求項６】
前記サーバは、ロードバランサ及び複数の検証用結果生成部を備え、
前記複数の検証用結果生成部の各々が単一の仮想インスタンス管理部を備え、
前記ロードバランサは、受信したパラメータに基づくイベントの実行をいずれかの検証用結果生成部へ割り当て、
前記単一の仮想インスタンス管理部は、当該単一の仮想インスタンスを含む検証用結果生成部において空いている仮想インスタンスを検索し、空いている仮想インスタンスのいずれか１つを、当該単一の検証用結果生成部に割り当てられたイベントの実行を行う仮想インスタンスとして選択する、
請求項１〜５のいずれか１項に記載のシステム。
【請求項７】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて使用されるサーバであって、
前記システムにおけるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
前記サーバは、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する、
ことを特徴とするサーバ。
【請求項８】
更に、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する、
請求項７に記載のサーバ。
【請求項９】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためシステムにおけるサーバによって実行されるプログラムであって、前記システムにおけるユーザ端末は、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記プログラムは、サーバに、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成する段階と、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行する段階と、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択する段階と、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する段階と、
を実行させることを特徴とするプログラム。
【請求項１０】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて実行される方法であって、
ユーザ端末がゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
検証用結果生成部が、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
不正検証部が、前記ユーザ端末から受信されたユーザ結果と検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する、
ことを特徴とする方法。
【請求項１１】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムのサーバによって実行される方法であって、
前記システムに含まれるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するシステムにおいて、
前記サーバが、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法に関する。
【背景技術】
【０００２】
近年、スマートフォンやＰＣ等の汎用的な電子装置上で動作し、オープンなネットワークを通じてサーバと通信するオンラインゲームが広く普及している。ゲームロジックと密に連動したグラフィカルな演出やサウンドでの演出が魅力の一つとなっているネイティブアプリを用いるようなゲームは、ゲームロジックとこれらの演出を密に連携させるためには、ゲームロジックのほとんどをクライアント側に実装する必要がある。これらゲームロジックをサーバ側に実装した場合は、演出を行う前後に常にサーバサイドとの通信が必要になるため、クライアントの応答性を低下させるとともに、サーバ側でのリクエストの輻輳を招くことになるためである。
【０００３】
このような形態のゲームにおいては、ゲームロジックを制御するプログラムがクライアント側に実装されるため、アプリそのものの改変、クライアント側のメモリ内容や通信内容の改変等により、改ざんされたデータをサーバ側へ送信する不正（チート）が行われやすいという問題がある。特許文献１は、ゲームプログラムへの改変をメモリのスキャン等を通じて検出する技術を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許８３０２１９９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された方法を用いた場合には、メモリをスキャンするための専用のプログラムを作成する必要があるとともに、ゲームプログラムの更新があった場合には、その更新内容に対応するように専用プログラムもまた更新しなければならず、メンテナンスを継続するコストは高く、リバースエンジニアリングにより適切な不正検出が妨げられる恐れがある。したがって、クライアント側で行われるゲームデータの不正な改ざんに対する有効な手法は依然確立されていない。
【課題を解決するための手段】
【０００６】
本発明は上記の課題に鑑みてなされたものであり、以下のような特徴を有している。すなわち、本発明の一実施態様におけるシステムは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムであって、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するユーザ端末と、検証用結果生成部と不正検証部とを有するサーバとを備え、前記検証用結果生成部は、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、前記不正検証部は、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する。
【０００７】
前記検証用結果生成部は、前記ゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化してイベントを実行させ前記検証用結果を生成してもよい。
【０００８】
前記複数の仮想インスタンスから選択することは、仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し、当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択してもよい。
【０００９】
前記検証用結果生成部は、単一の仮想インスタンス管理部を有し、前記検証用結果生成部は、前記複数の仮想インスタンスを並列的に動作させ、前記検証用結果生成部の単一の仮想インスタンス管理部が、仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、前記複数の仮想インスタンスのうちの１つの選択された仮想インスタンスにおいて受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてイベントを並列的に実行することを可能としてもよい。
【００１０】
前記仮想インスタンスはコンテナ型仮想化を実現するものとすることができる。
【００１１】
前記サーバは、ロードバランサ及び複数の検証用結果生成部を備え、前記複数の検証用結果生成部の各々が単一の仮想インスタンス管理部を備え、前記ロードバランサは、受信したパラメータに基づくイベントの実行をいずれかの検証用結果生成部へ割り当て、前記単一の仮想インスタンス管理部は、当該単一の仮想インスタンスを含む検証用結果生成部において空いている仮想インスタンスを検索し、空いている仮想インスタンスのいずれか１つを、当該単一の検証用結果生成部に割り当てられたイベントの実行を行う仮想インスタンスとして選択してもよい。
【００１２】
また、本発明の一実施態様におけるサーバは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて使用されるサーバであって、前記システムにおけるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記サーバは、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する。
【００１３】
更に、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定してもよい。
【００１４】
さらにまた、本発明の一実施態様におけるプログラムは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためシステムにおけるサーバによって実行されるプログラムであって、前記システムにおけるユーザ端末は、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記プログラムは、サーバに、ユーザ端末を仮想化するための複数の仮想インスタンスを生成する段階と、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行する段階と、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択する段階と、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する段階と、を実行させる。
【００１５】
本発明の一実施態様におけるシステムにおいて実行される方法は、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて実行される方法であって、ユーザ端末がゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、検証用結果生成部が、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、不正検証部が、前記ユーザ端末から受信されたユーザ結果と検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する。
【００１６】
さらに、本発明の一実施態様におけるサーバによって実行される方法は、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムのサーバによって実行される方法であって、前記システムに含まれるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するシステムにおいて、前記サーバが、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する。
【発明の効果】
【００１７】
本発明によれば、サーバでゲームプログラムをヘッドレスモードで実行することにより、高速かつ容易に不正検出を実現することを可能とする。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るシステムの全体構成である。
【図２】本発明の一実施形態に係るユーザ端末のハードウェア構成図である。
【図３】本発明の一実施形態に係るサーバのハードウェア構成図である。
【図４】本発明の一実施形態に係るシステムの機能ブロック図である。
【図５】本発明の一実施形態に係る情報処理を示すフローチャートである。
【図６】本発明の一実施形態に係る情報処理タイミングの概念図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本発明の一つの実施形態を説明する。本実施形態に係る不正検出システム１００は、図１に示すように、ネットワーク１１０を介して接続された１以上のユーザ端末１２０（クライアント）とサーバ１３０を備えるシステムによって実現することができる。
【００２０】
本実施形態におけるユーザ端末１２０はネットワーク１１０を介してサーバ１３０と通信しつつゲームプログラムを実行する装置であり、例えば、携帯電話機、スマートフォン、タブレット端末、携帯ゲーム機等の電子装置である。ユーザ端末１２０は、図２に示したとおり、処理装置２０１、出力装置２０２、入力装置２０３、記憶装置２０６、通信装置２０７及びバス２０８を備えることができる。記憶装置２０６はゲームプログラム（ゲームアプリ）等のプログラム２０９を格納する。
【００２１】
処理装置２０１は、プログラム２０９、入力装置２０３からの入力データまたは通信装置２０７から受信したデータ等に基づいて各種の処理を行う。処理装置２０１は、ユーザ端末１２０が備える各装置を制御するプロセッサを備えており、プロセッサが含むレジスタや記憶装置２０６をワーク領域として各種処理を行う。これらの各構成部はバス２０８によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。出力装置２０２は、処理装置２０１の制御に従って、ゲーム画面の表示や音声を出力する。入力装置２０３は、タッチパネル、タッチパッド、入力ボタン等のようにユーザからの入力を受け付ける機能を有するものである。
【００２２】
記憶装置２０６は、ハードディスク、メインメモリ、及びバッファメモリを含む。ただしハードディスクは、情報を格納できるものであればいかなる不揮発性ストレージまたは不揮発性メモリであってもよく、着脱可能なものであってもかまわない。例えばユーザ端末１２０がスマートフォンである場合はＲＯＭ及びＲＡＭを含む。記憶装置２０６には、プログラム２０９や当該プログラムの実行に伴って参照されうる各種のデータが記憶される。プログラム２０９は、オペレーティングシステム、またはビデオゲーム、ウェブブラウザ等のプレイヤ入力を要求するあらゆるアプリケーションのためのプログラムやデータを含む。
【００２３】
通信装置２０７は、移動体通信、無線ＬＡＮ等の無線通信やイーサネット（登録商標）ケーブル、ＵＳＢケーブル等を用いた有線通信を行う。この通信装置２０７によって、プログラムをサーバ１３０からダウンロードして、記憶装置２０６に格納することもできる。ＣＤ／ＤＶＤ等の光学ディスクにプログラムを格納し、通信装置２０７に光学ドライブを接続して、光学ディスクからプログラム等を読み込んで記憶装置２０６に格納してもよい。
【００２４】
図３は本実施形態に係るサーバ１３０のハードウェア構成を示すブロック図である。本実施形態においてサーバは１つの第１のサーバ３００と２以上の第２のサーバ３１０を含むサーバ群とするが、１つのサーバ装置のみによって実現することもできる。
【００２５】
第１のサーバ３００及び第２のサーバ３１０は同様のハードウェア構成を備えるものであり、処理装置３０１、３１１、出力装置３０２、３１２、入力装置３０３、３１３、記憶装置３０６、３１６及び通信装置３０７、３１７を備える。これらの各構成部はバス３０８、３１８によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。第１のサーバと第２のサーバは互いの通信装置３０７、３１７を介して接続される。
【００２６】
処理装置３０１、３１１は、第１及び第２のサーバ３００、３１０が備える各装置を制御するプロセッサを備えており、記憶装置３０６、３１６をワーク領域として各種処理を行う。出力装置３０２、３１２はサーバのユーザに情報を表示する機能を有する。入力装置３０３、３１３はキーボードやマウス等のようにユーザからの入力を受け付ける機能を有するものである。
【００２７】
記憶装置３０６、３１６は、ハードディスク、メインメモリ、及びバッファメモリを含む。ハードディスクにはプログラム３０９、３１９が記憶される。ただしハードディスクは、情報を格納できるものであればいかなる不揮発性ストレージまたは不揮発性メモリであってもよく、着脱可能なものであってもかまわない。記憶装置３０６、３１６には、プログラム３０９、３１９や当該プログラムの実行に伴って参照され得る各種のデータが記憶される。通信装置３０７、３１７はイーサネット（登録商標）ケーブル等を用いた有線通信や移動体通信、無線ＬＡＮ等の無線通信を行い、ネットワーク１１０へ接続する。
【００２８】
図４は本発明のシステム１００の機能ブロック図の一例を示す。ユーザ端末１２０はゲーム実行部４００を備える。サーバ１３０は、ゲームサーバ部４０１、ロードバランサ４０２、検証用結果生成部４０４及び不正検証部４０５を備える。本実施形態においては、第１のサーバ３００が、ゲームサーバ部４０１、ロードバランサ４０２及び不正検証部４０５を備え、第２のサーバが検証用結果生成部４０４を備える。サーバ１３０は複数の第２のサーバを有し、第２のサーバの各々が検証用結果生成部４０４を備える。他の実施形態においては、１つ以上のサーバ装置のいずれかが各機能部を有することが可能であり、いずれのサーバ装置がいずれの機能部を有してもよい。例えば、第２のサーバが不正検証部４０５を有することも可能であるし、不正検証部４０５を備える第３のサーバを設けてもよい。また、１つのサーバがすべての機能部を有することもできる。
【００２９】
ユーザ端末１２０のゲーム実行部４００は、ゲームプログラム及びゲームデータ等に基づいてゲームを進行させる。所定のタイミングで所定のイベントを発生させるとともに、ユーザからの入力等に基づいて、イベント用のパラメータを決定し、ゲームサーバ部４０１に送信するとともに、イベントを実行してイベントの結果を生成し、ゲームサーバ部４０１に送信する。イベントの結果は出力装置２０２によってユーザに提示される。
【００３０】
ゲームサーバ部４０１は、各ユーザ端末１２０からのアクセスを受け付けて、ネットワークを介したゲームサービスを提供する。例えば、各ユーザＩＤに紐付けてユーザのゲーム進行状況等のデータを記憶し、要求に応じてユーザ端末１２０へ送信したり、他プレイヤとの対戦ゲーム等においては他プレイヤとの間で入力情報を送受信する等のサービスを提供する。ロードバランサ４０２は、ゲームサーバ部４０１がゲーム実行部４００から受信したイベントパラメータに基づく検証用結果生成処理を実行するための要求を複数の検証用結果生成部４０４のいずれかに割り当てる。
【００３１】
検証用結果生成部４０４は、イベントパラメータに基づいて検証用結果を生成して、不正検証部４０５に送信する。検証用結果は、不正検出のために生成されるイベントの結果である。検証用結果生成部４０４は、仮想インスタンス管理部４１０及び複数の仮想インスタンス４１１を有する。仮想インスタンス管理部４１０はロードバランサ４０２から割り当てられた検証用結果生成処理を実行するために、当該仮想インスタンス管理部４１０が含まれる検証用結果生成部４０４の複数の仮想インスタンス４１１から一つを選択する。
【００３２】
仮想インスタンス４１１はユーザ端末を仮想化するための仮想インスタンスであり、例えば、docker（登録商標）等の「コンテナ」と呼ばれるオペレーティングシステム・レベルの仮想化技術を用いることにより実現できる。docker（登録商標）は、Linuxs（登録商標）カーネルが提供するLinuxコンテナを制御し、プロセス単位での仮想化、すなわち、ＣＰＵの利用とファイルシステムの利用を、他のプロセスから分離された空間を提供することができる。各コンテナ同士は相互に分離されているため、あたかも、オペレーティングシステム内で、唯一動作するゲームアプリとしてふるまうことが可能になる。そのため、各コンテナにおいてゲームプログラムを実行して、ゲームプログラムのプロセスを起動することにより、ユーザ端末におけるゲームプログラムの実行を仮想的に実現することができる。したがって、１つのサーバ装置において複数の仮想インスタンスを生成して、同時に複数のゲームプログラムを隔離して並列に実行し、検証用結果を生成することができる。本実施形態においては、仮想インスタンス４１１としてdocker（登録商標）の「コンテナ」を用いる。
【００３３】
仮想インスタンス４１１における検証用結果生成処理は、ユーザ端末１２０においてゲームをプレイするために実行されるゲームプログラムを、サーバ１３０においてヘッドレスモードで実行することにより実行される。本実施形態においてヘッドレスモードとは、ＧＰＵにアクセスするグラフィック処理を無効化し、さらに、音源チップにアクセスするサウンド処理、および、外部サーバへのアクセス処理を無効化するモードである。これにより、ＣＰＵ、メモリ、二次記憶装置のみを使用する状態、すなわち、コンテナ内部に閉じたリソースへのアクセスのみでゲームを実行することができるため、人間が閲覧することを前提としたアニメーション処理スピード、人間が聞くことを前提とした音声の再生スピードといった律速要因（速度を決める要因）を排除することができるようになる。さらに、これらのグラフィック機器やサウンド機器は、一般的にＣＰＵの外にある外部機器として実装されており、ＣＰＵと外部機器との間のＩ／Ｏ処理にかかる同期のための待ち時間も省略することができる。これにより、人間のための演出や、外部機器のための同期待ちといったウェイト処理を省いた、ＣＰＵ単独の処理速度のみに依存するノー・ウェイト（No Wait）処理で、ゲームを高速に動作させることができる。
【００３４】
本発明においてゲームプログラムをヘッドレスモードで実行することは、ヘッドレスモードでゲームプログラムを実行することと、ヘッドレス化されたゲームプログラムを実行することのいずれであってもかまわない。ゲームをヘッドレス状態で進行させることができれば、どのような態様での実行であってもかまわない。広く普及しているゲームエンジンであるUnityにおいてはＧＵＩからヘッドレスモードを選択するだけで容易にヘッドレス化されたゲームプログラムを生成することが可能である。すなわち、ユーザ端末１２０用のゲームプログラムを再利用して、不正検出用のゲームプログラムを容易に用意することができる。
【００３５】
不正検証部４０５は、ユーザ端末１２０からゲームサーバ部４０１を経由して受信されたユーザ端末１２０によって実行されたイベントの結果であるユーザ結果と検証用結果生成部４０４によって生成された検証用結果とを比較して、不正検証を行う。両者が少なくとも一定程度異なれば、ユーザ端末１２０においてユーザの不正な情報変更等によってイベントの結果が改ざんされたことを示す。
【００３６】
本実施形態において各機能部は、図２及び３に記載されたハードウェア構成に含まれるプログラムが処理装置によって実行され、出力装置、入力装置、記憶装置及び通信装置の各ハードウェアとソフトウェアとが協働して動作することによって実現されるが、各機能に対応する電子回路等を設けて実現されてもよい。
【００３７】
次に、本実施形態におけるユーザ端末１２０及びサーバ（群）１３０の動作のフローチャートを図５に示した。サーバ（群）１３０は第１のサーバ３００及び第２のサーバ３１０を含む。本実施形態においては、第２のサーバ３１０は複数あるものとするが、図５においては簡略化のために１つの第２のサーバ３１０のみを図示した。
【００３８】
第２のサーバ３１０においてまず複数の仮想インスタンス４１１を生成し（S５０１）、生成された複数の仮想インスタンス４１１において、ゲームプログラムをヘッドレスモードで実行してゲームプログラムのためのプロセスを起動し（Ｓ５０２）、ユーザ端末１２０からイベント用のパラメータの受信を待ち受ける。ゲームプログラムはヘッドレスモードで実行される点を除いて、ユーザ端末１２０において実行されるものと同一である。第２のサーバ３１０が同時に実行できるゲームプログラムの最大数を事前に見積って、最大数を上限として仮想インスタン４１１としてのコンテナで仮想化したゲームプログラムのプロセスを起動する。
【００３９】
本実施形態において、ゲームはコンピュータを対戦相手（ＮＰＣ）とするカード対戦ゲームであり、イベントは対戦相手とのバトルとするが、対戦相手が他プレイヤであってもよいし、他の形態のゲームであっても同様に実施可能である。また、ここではバトルはオートバトルとし、バトル開始時にユーザ入力等に基づいて決定されたパラメータに基づいて自動的にバトルが進行して終了するものとするが、バトル開始後にユーザ入力等がなされてイベントパラメータが追加、更新等され、バトルが進行する場合であっても、逐次イベントパラメータをサーバ１３０へ送信することにより、同様に実現できる。
【００４０】
ユーザ端末１２０においては、ゲームプログラムをユーザ端末１２０にダウンロードしてインストールした後、ゲームをプレイできるように設定する。そして、ゲームプログラムを実行すると（Ｓ５０４）、必要なゲームデータをサーバ１３０に要求する（Ｓ５０６）。第１のサーバ３００のゲームサーバ部４０１はゲームデータ要求を受信すると、当該ユーザのためのゲームデータをユーザ端末１２０に送信する（Ｓ５０８）。
【００４１】
ユーザ端末１２０はこれを受信してゲームの進行を開始する。ゲームが進行すると、所定のタイミングでイベントが発生される（Ｓ５１０）。ここではイベントはゲームプログラムによって自動で制御される対戦相手（ＮＰＣ）とのバトルとする。プレイヤは自分が所有する複数のカードの中から選択された所定数のカードを含むカード群を用いて他プレイヤと対戦する。バトルが発生するとＮＰＣは本バトル用に使用する自己のカード群を決定し、ユーザは自己のカード群を決定する。ユーザ端末１２０はこれらの決定されたカード群を含むパラメータを決定し（Ｓ５１２）、これをサーバ１３０へ送信する（Ｓ５１４）。
【００４２】
第１のサーバ３００はこれを受信すると、ロードバランサ４０２を用いて、本イベントのための検証用結果生成処理を複数の検証用結果生成部４０４のうちのいずれか一つに例えばラウンドロビン方式で割り当て、割り当てられた検証用結果生成部４０４として機能する第２のサーバ３１０にイベントパラメータを送信する（Ｓ５１６）。
【００４３】
本実施形態における検証用結果生成部４０４は、生成された仮想インスタンス４１１の数だけ同時に検証用結果生成処理を実行することが可能である。また、この検証用結果生成処理は、ゲームにおけるバトル時間の数分の一から数十分の一の時間等の短期間の間に完了し新たな処理要求を受付可能になる。この挙動は、従来のWebサーバ等とは異なる挙動であるため、本実施形態に適したロードバランサ４０２を設定することが好ましい。ロードバランサ４０２は、各第２のサーバ３１０の仮想インスタンス４１１に万遍無くタスクが割り当てられるように、例えば、ラウンドロビンでタスクを振り分けた後、いずれかの第２のサーバ３１０でキャパシティ超過を意味するエラーが発生したときには、全てのサーバ３１０に対してリトライ可能にし、すべてのサーバ３１０のキャパシティを超過したときのみ、エラーとするという実装が考えられる。他の実装としては、ロードバランサ４０２は、各第２のサーバ３１０の仮想インスタンス４１１のうち、空いているものに即座にかつ万遍無くタスクが割り当てられるように、例えば、空き状態にある第２のサーバ３１０のＩＰアドレスを格納するキューを持ち、いずれかの第２のサーバ３１０が処理完了の通知を発行したときに、当該サーバをキューの最後に追加し、リクエストが来た場合は、そのキューの先頭から割り当てていく方式が考えられる。このキューが空になっているときにリクエストが来たときのみ、エラーとするという実装が考えられる。
【００４４】
検証用結果生成処理を割り当てられた第２のサーバ３１０は、検証用結果生成要求としてのイベントパラメータを受信し、これに基づいて検証用結果を生成するために複数の仮想インスタンス４１１から１つを選択する（Ｓ５１８）。本実施形態においては、仮想インスタンス管理部４１０が、非同期Ｉ／Ｏにより仮想インスタンス４１１を管理する。具体的には、第２のサーバ３１０の検証用結果生成部４０４は単一の仮想インスタンス管理部４１０を有しており、当該仮想インスタンス管理部４１０が、並列的に動作させた仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、並列的に動作させた仮想インスタンスのうちの１つの選択された仮想インスタンスにおいて他のイベントを実行させている間に、空いている仮想インスタンス４１１を検索し、空いている仮想インスタンス４１１のいずれか１つを、イベントの実行のための仮想インスタンス４１１として選択する。
【００４５】
本実施形態においては、ファイルを経由して第１のサーバ３００と仮想インスタンス４１１におけるプロセスとの通信を行う。より具体的には、第２のサーバ３１０がイベントパラメータを例えば各パラメータを格納するＪＳＯＮファイルとして第１のサーバ３００から受信して特定のファイルパスに書き込み、仮想インスタンス４１１におけるプロセスが当該特定のファイルパスを監視し、ファイルが書き込まれたときに、そのファイルをイベントパラメータとして読み込み、イベントを実行し、検証用結果を別のファイルに書き込むと、当該別のファイルが第１のサーバ３００へ送信される。パイプによるプロセス間通信等の他の方法でも実施可能である。
【００４６】
ここで、ユーザ結果と検証用結果とが不正がなくとも少なくとも一定程度の同じ結果を返さない場合があれば、ユーザ結果と検証用結果とを比較しただけではユーザによる不正を正確に検出することはできない。本明細書においては、同じ引数を与えたときに少なくとも一定程度の同じ結果を返す場合には結果一致性があるといい、少なくとも一定程度の同じ結果を返さない場合には結果一致性がないという。すなわち、ユーザ端末１２０において実行されるゲームプログラムにおいて決定されたイベントパラメータを用いてイベントを実行するプロセスと、サーバ１３０における仮想インスタンス４１１としてのコンテナにおいてヘッドレスモードで実行されるゲームプログラムにおいて実行されるプロセスとが結果一致性を有していなければ、ユーザ結果と検証用結果とを比較するだけでは正確に不正を検出することはできない。
【００４７】
本実施形態においては、ユーザ端末１２０において実行されるゲームプログラムは、イベントパラメータ等の情報を書き込むためにサーバ１３０のファイルシステムにおけるいずれかのディレクトリにマウントされる。仮想インスタンス４１１としてのコンテナもまたサーバ１３０のファイルシステムのいずれかのディレクトリにマウントされる。ここでは、コンテナは、マウントされたディレクトリに対してリードオンリーで参照することとする。
【００４８】
ユーザ端末１２０におけるゲームプログラムと結果一致性を有するコンテナを選択するために、コンテナが実行するゲームプログラムの種別を示す情報及びコンテナにマウントされたディレクトリを示す情報を含む型情報に基づいてコンテナを識別する。そして、ユーザ端末１２０において実行されるゲームプログラムと同一の型情報を有するコンテナを、結果一致性を有するコンテナとして選択する。ゲームプログラムの種別を示す情報は、ゲームの種類やゲームプログラムのバージョン等を示す情報である。コンテナにマウントされたディレクトリを示す情報は、コンテナからサーバ１３０のファイルシステムをマウントする際の「パス」とすることができる。すなわち、ユーザ端末１２０及びコンテナにおいて実行されるゲームプログラムの種別が同じであり、同じディレクトリにマウントされている場合には結果一致性があり、そのような結果一致性を有するコンテナを選択する。
【００４９】
表１は、仮想インスタンス４１１としてのコンテナがマウントされたディレクトリを参照するかコピーするか、そして、そのディレクトリにリードオンリー（Read-Only）でアクセスするか、読み書き（Read-Write）モードでアクセスするかに応じて、結果一致性を検証する方法を分類したものである。この表に示すとおり、ゲームプログラムの特性に応じた結果一致性の検証により、ユーザ端末１２０で実行されるゲームプログラムと結果一致性があるコンテナを選択することが可能である。
【００５０】
【表１】
2019193702.tif 000003
【００５１】
表１における「参照」は、コンテナにマウントされたサーバのディレクトリをコンテナが参照するものであることを意味し、「コピー」はマウントされたサーバのディレクトリ及びファイルを、コンテナがコンテナイメージ内にコピーすることを意味する。Read-Only はマウントしたディレクトリに対してコンテナ内のプロセスがリードオンリーモードでアクセスすることを意味し、Read-Writeはコンテナ内のプロセスがマウントしたディレクトリに対して読み書き可能モードでアクセスすることを意味する。
【００５２】
すなわち、ユーザ端末１２０とコンテナで実行されるゲームプログラムの種類及びバージョンを示す情報が同じであり、ユーザ端末１２０から送信されたイベントパラメータが書き込まれたサーバ１３０におけるディレクトリと同じディレクトリを「参照」するコンテナにおけるプロセスがリードオンリーモードでアクセスする場合は、ユーザ端末１２０で実行されるゲームプログラムと結果一致性がある一方で、読み書きモードでアクセスする場合は結果一致性がない。また、コンテナがユーザ端末１２０から送信されたイベントパラメータが書き込まれた第２のサーバ３１０におけるディレクトリをコピーし、プロセスがリードオンリーモードでアクセスする場合には、コピーしたファイルが同じであれば結果一致性があり、リードオンリーモードでアクセスする場合には、コピーした「内容」が同じで、かつ、内容の変更について互いに同期している場合には結果一致性がある。
【００５３】
前述の実施形態においては、コンテナはマウントされたディレクトリに対してリードオンリーで参照するため、コンテナが実行するゲームプログラムの種別を示す情報及びコンテナにマウントされたディレクトリを示す情報を含む型情報に基づいて、ユーザ端末１２０において実行されるゲームプログラムと同一の型情報を有するコンテナを選択することで、結果一致性を有するコンテナ（仮想インスタンス４１１）を選択することが可能である。
【００５４】
コンテナにマウントされたディレクトリへのアクセスがリードオンリーによる参照に限られない場合であっても、マウントされたディレクトに対して「参照」するか「コピー」するか、及び、当該ディレクトリに対するアクセスモードを示す情報も型情報に含ませることによって、当該型情報及び表１に記載した基準等に基づいて、様々な環境においても結果一致性を有するコンテナを選択し、不正検出を保証することを可能とする。
【００５５】
第２のサーバ３１０は、選択された仮想インスタンス４１１（コンテナ）のプロセスにおいてイベントパラメータに基づいてイベントをヘッドレスモードにて実行して検証用結果を生成し（Ｓ５１８）、生成された検証用結果を第１のサーバ３００へ送信する（Ｓ５２２）。ヘッドレスモードにより律速要因（速度を決める要因）を排除してイベントを実行できるから、短時間でイベント結果を生成することができる。
【００５６】
この点を図６を用いてより詳細に説明する。図６（ａ）は通常のモードでイベントを実行する場合のＣＰＵの稼働状態を示し、（ｂ）はヘッドレスモードでイベントを実行する場合のＣＰＵの稼働状態を示す。（ａ）に示したとおり、通常モードにおいては、ＣＰＵは常に高負荷にあるわけではなく、局所的に高負荷が発生する。これはゲーム画面のフレーム描画に必要なデータを生成する部分等に相当する。そして、音楽と画面表示は、人間の知覚に合わせる必要があるため、所定のタイミングとなるまでウェイトが発生する。したがって、通常モードにおいてＣＰＵはゲーム進行の実時間で律速されながら、局所的に動作している。一方、ヘッドレスモードでは、律速要素となるＧＰＵとSoundを必要としないため、ＣＰＵ単独でイベントを高速に、すなわち、ウェイトをかけずに短時間で実行可能である。これにより、これまで分散していた処理を短時間にまとめて実行でき、通常モードでの１人のイベント実行期間で複数プレイヤの検証用結果生成処理を実行可能であるため、高い処理効率を実現できる。
【００５７】
ユーザ端末１２０は、イベントパラメータを送信した後（Ｓ５１４）、当該イベントパラメータに基づいてイベントを実行して、イベントの結果を生成する（Ｓ５２４）。ユーザ端末１２０において生成されたイベントの結果であるユーザ結果をサーバ１３０に送信する（Ｓ５２６）。本実施形態においてイベントの結果とはバトルの勝敗結果である。ユーザ端末１２０においては、ＧＰＵ及び音源チップ等を用いて、バトルグラフィック及び音声をユーザ端末１２０の出力装置２０２を用いて出力するから、これが律速要因となり、検証用結果生成部４０４に比べてイベント結果の生成に時間を要する。
【００５８】
第１のサーバ３００の不正検証部４０５は、ユーザ端末１２０によって生成されたユーザ結果と検証用結果生成部４０４によって生成された検証用結果とを比較することにより不正検証を行う（Ｓ５２８）。両結果が同一であればユーザ結果は正当であり、両結果が異なれば不正であると判定する。結果の判定は必ずしも厳密に一致することを要求する必要はない。一定程度の範囲で結果が一致していれば不正がないと判定することができる。例えば、勝敗の結果が一致していれば、その他の被ダメージ等のパラメータの相違が一定範囲以内であれば許容する、という判定を行うことができる。不正であると判定された場合には、例えば、不正検証部４０５はゲームサーバ部４０１へ不正検出信号を送信し、ゲームサーバ部４０１は本ユーザやゲームシステム管理者等へ不正が検出されたことを通知するメッセージを送信する等の処理が実行される。
【００５９】
本実施形態においては、検証用結果生成部４０４においてヘッドレスモードでゲームプログラムを実行することにより、ノー・ウェイトで高速にイベントを実行して結果を生成することができる。さらに、検証用結果生成部４０４において複数の仮想インスタンス４１１を並列的に動作させ、複数の仮想インスタンスのうちの１つの選択された仮想インスタンス４１１において受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてパラメータに基づいてイベントを並列的に実行することができる。第２のサーバ３１０を複数用意することにより、さらに多くの仮想インスタンスを並列的に動作させることが可能である。このため、高速かつ並列に検証用の結果を生成することが可能となり、多数のユーザの不正検証を効率的に行うことができる。また、第２のサーバ３１０は必要に応じて追加的に設置することもできるのでスケーラブルなシステムを構築することができる。
【００６０】
仮想インスタンス４１１においてユーザ端末１２０で実行されるゲームプログラムをヘッドレスモードで実行する場合には、ユーザ端末１２０で実行されるゲームプログラムと同一のプログラムを利用することができる。ユーザ端末１２０で実行されるゲームプログラムをヘッドレス化したゲームプログラムを用いる場合には、例えば、広く普及しているゲームエンジンであるUnityにおいてはヘッドレスビルドの設定はＧＵＩからヘッドレスモードを選択するだけで容易に行う可能である。したがって、ゲームアプリを頻繁に、あるいは複雑に変更した場合であっても、変更に対応した不正検出用のシステムを容易に構成することが可能である。
【００６１】
また、ユーザ端末１２０において実行されるゲームプログラムと同一の型情報を有する仮想インスタンス４１１を選択することで、複数のゲーム種別が含まれる等の様々な環境においてもユーザ端末１２０において実行されるゲームプログラムと結果一致性を有するコンテナを選択することで正確な不正検出を保証することができる。
【００６２】
ゲームプログラムをその更新状況に応じて、当該プログラムの複数の異なるバージョンをサーバでヘッドレスモードで同時に実行することにより、高速かつ容易に不正検出を実現することができる。
【００６３】
さらに、ゲームプログラムを仮想インスタンスの制御化におくことにより、ゲームプログラムのバージョンアップやアセット更新時に、既存のバージョンのゲームプログラムを動作させたまま、新しいバージョンへの移行を行うライブ・マイグレーションを実現できる。また、処理ノードのオートスケーリングも容易である。
【００６４】
以上に説明した処理または動作において、矛盾が生じない限りにおいて、処理または動作を自由に変更することができる。また以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００６５】
１００…不正検出システム
１１０…ネットワーク
１２０…ユーザ端末
１３０…ゲームサーバ
２０１…処理装置
２０２…出力装置
２０３…入力装置
２０６…記憶装置
２０７…通信装置
２０８…バス
２０９…プログラム
３００…第１のサーバ
３０１…処理装置
３０１…処理装置
３０２…出力装置
３０３…入力装置
３０６…記憶装置
３０６…記憶装置
３０７…通信装置
３０８…バス
３０９…プログラム
３１０…第２のサーバ
４００…ゲーム実行部
４０１…ゲームサーバ部
４０２…ロードバランサ
４０４…検証用結果生成部
４０５…不正検証部
４１０…仮想インスタンス管理部
４１１…仮想インスタンス
【図１】
2019193702.tif 000004
【図２】
2019193702.tif 000005
【図３】
2019193702.tif 000006
【図４】
2019193702.tif 000007
【図５】
2019193702.tif 000008
【図６】
2019193702.tif 000009
【手続補正書】
【提出日】平成30年10月24日(2018.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムであって、
ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するユーザ端末と、
検証用結果生成部と不正検証部とを有するサーバとを備え、
前記検証用結果生成部は、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
前記不正検証部は、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定し、
前記複数の仮想インスタンスから選択することは、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
ことを含む、
ことを特徴とするシステム。
【請求項２】
前記検証用結果生成部は、前記ゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化してイベントを実行させ前記検証用結果を生成する、請求項１に記載のシステム。
【請求項３】
前記検証用結果生成部は、単一の仮想インスタンス管理部を有し、
前記検証用結果生成部は、前記複数の仮想インスタンスを並列的に動作させ、
前記検証用結果生成部の単一の仮想インスタンス管理部が、仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、前記複数の仮想インスタンスのうちの１つの選択された仮想インスタンスにおいて受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてイベントを並列的に実行することを可能とする、
請求項１及び２のいずれか１項に記載のシステム。
【請求項４】
前記仮想インスタンスはコンテナ型仮想化を実現するものである、請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
前記サーバは、ロードバランサ及び複数の検証用結果生成部を備え、
前記複数の検証用結果生成部の各々が単一の仮想インスタンス管理部を備え、
前記ロードバランサは、受信したパラメータに基づくイベントの実行をいずれかの検証用結果生成部へ割り当て、
前記単一の仮想インスタンス管理部は、当該単一の仮想インスタンスを含む検証用結果生成部において空いている仮想インスタンスを検索し、空いている仮想インスタンスのいずれか１つを、当該単一の検証用結果生成部に割り当てられたイベントの実行を行う仮想インスタンスとして選択する、
請求項１〜４のいずれか１項に記載のシステム。
【請求項６】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて使用されるサーバであって、
前記システムにおけるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
前記サーバは、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
前記複数の仮想インスタンスから選択することは、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
ことを含む、
ことを特徴とするサーバ。
【請求項７】
更に、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する、
請求項６に記載のサーバ。
【請求項８】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためシステムにおけるサーバによって実行されるプログラムであって、前記システムにおけるユーザ端末は、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記プログラムは、サーバに、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成する段階と、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行する段階と、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択する段階と、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する段階と、
を実行させ、
前記複数の仮想インスタンスから選択する段階は、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別する段階と、
仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する段階と、
を含む、ことを特徴とするプログラム。
【請求項９】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて実行される方法であって、
ユーザ端末がゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
検証用結果生成部が、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
不正検証部が、前記ユーザ端末から受信されたユーザ結果と検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定し、
前記複数の仮想インスタンスから選択することは、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
ことを含む、
ことを特徴とする方法。
【請求項１０】
ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムのサーバによって実行される方法であって、
前記システムに含まれるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するシステムにおいて、
前記サーバが、
ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
前記複数の仮想インスタンスから選択することは、
仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
ことを含む、
ことを特徴とする方法。