JP6473259B1 - ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法 - Google Patents

ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法 Download PDF

Info

Publication number
JP6473259B1
JP6473259B1 JP2018088223A JP2018088223A JP6473259B1 JP 6473259 B1 JP6473259 B1 JP 6473259B1 JP 2018088223 A JP2018088223 A JP 2018088223A JP 2018088223 A JP2018088223 A JP 2018088223A JP 6473259 B1 JP6473259 B1 JP 6473259B1
Authority
JP
Japan
Prior art keywords
virtual
result
virtual instance
user
game
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018088223A
Other languages
English (en)
Other versions
JP2019193702A (ja
Inventor
修一 倉林
修一 倉林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cygames Inc
Original Assignee
Cygames Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cygames Inc filed Critical Cygames Inc
Priority to JP2018088223A priority Critical patent/JP6473259B1/ja
Application granted granted Critical
Publication of JP6473259B1 publication Critical patent/JP6473259B1/ja
Priority to CN201980043902.4A priority patent/CN112368057A/zh
Priority to PCT/JP2019/016665 priority patent/WO2019211992A1/ja
Publication of JP2019193702A publication Critical patent/JP2019193702A/ja
Priority to US17/085,030 priority patent/US11395972B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/23Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/67Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/69Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/73Authorising game programs or game devices, e.g. checking authenticity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/75Enforcing rules, e.g. detecting foul play or generating lists of cheating players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

【課題】ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法を提供すること。
【解決手段】ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、パラメータに基づいてイベントを実行してユーザ結果を生成するユーザ端末と、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを複数の仮想インスタンスから選択し、選択された仮想インスタンスにおいてパラメータに基づいてイベントを実行して検証用結果を生成する、検証用結果生成部と、ユーザ結果と検証用結果とを比較して、ユーザ端末において不正が行われたか否かを決定する、不正検証部と、を備えるシステム。
【選択図】図1

Description

本発明は、ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法に関する。
近年、スマートフォンやPC等の汎用的な電子装置上で動作し、オープンなネットワークを通じてサーバと通信するオンラインゲームが広く普及している。ゲームロジックと密に連動したグラフィカルな演出やサウンドでの演出が魅力の一つとなっているネイティブアプリを用いるようなゲームは、ゲームロジックとこれらの演出を密に連携させるためには、ゲームロジックのほとんどをクライアント側に実装する必要がある。これらゲームロジックをサーバ側に実装した場合は、演出を行う前後に常にサーバサイドとの通信が必要になるため、クライアントの応答性を低下させるとともに、サーバ側でのリクエストの輻輳を招くことになるためである。
このような形態のゲームにおいては、ゲームロジックを制御するプログラムがクライアント側に実装されるため、アプリそのものの改変、クライアント側のメモリ内容や通信内容の改変等により、改ざんされたデータをサーバ側へ送信する不正(チート)が行われやすいという問題がある。特許文献1は、ゲームプログラムへの改変をメモリのスキャン等を通じて検出する技術を開示する。
米国特許8302199号
しかしながら、特許文献1に開示された方法を用いた場合には、メモリをスキャンするための専用のプログラムを作成する必要があるとともに、ゲームプログラムの更新があった場合には、その更新内容に対応するように専用プログラムもまた更新しなければならず、メンテナンスを継続するコストは高く、リバースエンジニアリングにより適切な不正検出が妨げられる恐れがある。したがって、クライアント側で行われるゲームデータの不正な改ざんに対する有効な手法は依然確立されていない。
本発明は上記の課題に鑑みてなされたものであり、以下のような特徴を有している。すなわち、本発明の一実施態様におけるシステムは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムであって、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するユーザ端末と、検証用結果生成部と不正検証部とを有するサーバとを備え、前記検証用結果生成部は、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、前記不正検証部は、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する。
前記検証用結果生成部は、前記ゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化してイベントを実行させ前記検証用結果を生成してもよい。
前記複数の仮想インスタンスから選択することは、仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し、当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択してもよい。
前記検証用結果生成部は、単一の仮想インスタンス管理部を有し、前記検証用結果生成部は、前記複数の仮想インスタンスを並列的に動作させ、前記検証用結果生成部の単一の仮想インスタンス管理部が、仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、前記複数の仮想インスタンスのうちの1つの選択された仮想インスタンスにおいて受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてイベントを並列的に実行することを可能としてもよい。
前記仮想インスタンスはコンテナ型仮想化を実現するものとすることができる。
前記サーバは、ロードバランサ及び複数の検証用結果生成部を備え、前記複数の検証用結果生成部の各々が単一の仮想インスタンス管理部を備え、前記ロードバランサは、受信したパラメータに基づくイベントの実行をいずれかの検証用結果生成部へ割り当て、前記単一の仮想インスタンス管理部は、当該単一の仮想インスタンスを含む検証用結果生成部において空いている仮想インスタンスを検索し、空いている仮想インスタンスのいずれか1つを、当該単一の検証用結果生成部に割り当てられたイベントの実行を行う仮想インスタンスとして選択してもよい。
また、本発明の一実施態様におけるサーバは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて使用されるサーバであって、前記システムにおけるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記サーバは、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する。
更に、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定してもよい。
さらにまた、本発明の一実施態様におけるプログラムは、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためシステムにおけるサーバによって実行されるプログラムであって、前記システムにおけるユーザ端末は、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記プログラムは、サーバに、ユーザ端末を仮想化するための複数の仮想インスタンスを生成する段階と、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行する段階と、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択する段階と、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する段階と、を実行させる。
本発明の一実施態様におけるシステムにおいて実行される方法は、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて実行される方法であって、ユーザ端末がゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、検証用結果生成部が、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、不正検証部が、前記ユーザ端末から受信されたユーザ結果と検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する。
さらに、本発明の一実施態様におけるサーバによって実行される方法は、ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムのサーバによって実行される方法であって、前記システムに含まれるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するシステムにおいて、前記サーバが、ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する。
本発明によれば、サーバでゲームプログラムをヘッドレスモードで実行することにより、高速かつ容易に不正検出を実現することを可能とする。
本発明の一実施形態に係るシステムの全体構成である。 本発明の一実施形態に係るユーザ端末のハードウェア構成図である。 本発明の一実施形態に係るサーバのハードウェア構成図である。 本発明の一実施形態に係るシステムの機能ブロック図である。 本発明の一実施形態に係る情報処理を示すフローチャートである。 本発明の一実施形態に係る情報処理タイミングの概念図である。
以下、図面を参照して、本発明の一つの実施形態を説明する。本実施形態に係る不正検出システム100は、図1に示すように、ネットワーク110を介して接続された1以上のユーザ端末120(クライアント)とサーバ130を備えるシステムによって実現することができる。
本実施形態におけるユーザ端末120はネットワーク110を介してサーバ130と通信しつつゲームプログラムを実行する装置であり、例えば、携帯電話機、スマートフォン、タブレット端末、携帯ゲーム機等の電子装置である。ユーザ端末120は、図2に示したとおり、処理装置201、出力装置202、入力装置203、記憶装置206、通信装置207及びバス208を備えることができる。記憶装置206はゲームプログラム(ゲームアプリ)等のプログラム209を格納する。
処理装置201は、プログラム209、入力装置203からの入力データまたは通信装置207から受信したデータ等に基づいて各種の処理を行う。処理装置201は、ユーザ端末120が備える各装置を制御するプロセッサを備えており、プロセッサが含むレジスタや記憶装置206をワーク領域として各種処理を行う。これらの各構成部はバス208によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。出力装置202は、処理装置201の制御に従って、ゲーム画面の表示や音声を出力する。入力装置203は、タッチパネル、タッチパッド、入力ボタン等のようにユーザからの入力を受け付ける機能を有するものである。
記憶装置206は、ハードディスク、メインメモリ、及びバッファメモリを含む。ただしハードディスクは、情報を格納できるものであればいかなる不揮発性ストレージまたは不揮発性メモリであってもよく、着脱可能なものであってもかまわない。例えばユーザ端末120がスマートフォンである場合はROM及びRAMを含む。記憶装置206には、プログラム209や当該プログラムの実行に伴って参照されうる各種のデータが記憶される。プログラム209は、オペレーティングシステム、またはビデオゲーム、ウェブブラウザ等のプレイヤ入力を要求するあらゆるアプリケーションのためのプログラムやデータを含む。
通信装置207は、移動体通信、無線LAN等の無線通信やイーサネット(登録商標)ケーブル、USBケーブル等を用いた有線通信を行う。この通信装置207によって、プログラムをサーバ130からダウンロードして、記憶装置206に格納することもできる。CD/DVD等の光学ディスクにプログラムを格納し、通信装置207に光学ドライブを接続して、光学ディスクからプログラム等を読み込んで記憶装置206に格納してもよい。
図3は本実施形態に係るサーバ130のハードウェア構成を示すブロック図である。本実施形態においてサーバは1つの第1のサーバ300と2以上の第2のサーバ310を含むサーバ群とするが、1つのサーバ装置のみによって実現することもできる。
第1のサーバ300及び第2のサーバ310は同様のハードウェア構成を備えるものであり、処理装置301、311、出力装置302、312、入力装置303、313、記憶装置306、316及び通信装置307、317を備える。これらの各構成部はバス308、318によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。第1のサーバと第2のサーバは互いの通信装置307、317を介して接続される。
処理装置301、311は、第1及び第2のサーバ300、310が備える各装置を制御するプロセッサを備えており、記憶装置306、316をワーク領域として各種処理を行う。出力装置302、312はサーバのユーザに情報を表示する機能を有する。入力装置303、313はキーボードやマウス等のようにユーザからの入力を受け付ける機能を有するものである。
記憶装置306、316は、ハードディスク、メインメモリ、及びバッファメモリを含む。ハードディスクにはプログラム309、319が記憶される。ただしハードディスクは、情報を格納できるものであればいかなる不揮発性ストレージまたは不揮発性メモリであってもよく、着脱可能なものであってもかまわない。記憶装置306、316には、プログラム309、319や当該プログラムの実行に伴って参照され得る各種のデータが記憶される。通信装置307、317はイーサネット(登録商標)ケーブル等を用いた有線通信や移動体通信、無線LAN等の無線通信を行い、ネットワーク110へ接続する。
図4は本発明のシステム100の機能ブロック図の一例を示す。ユーザ端末120はゲーム実行部400を備える。サーバ130は、ゲームサーバ部401、ロードバランサ402、検証用結果生成部404及び不正検証部405を備える。本実施形態においては、第1のサーバ300が、ゲームサーバ部401、ロードバランサ402及び不正検証部405を備え、第2のサーバが検証用結果生成部404を備える。サーバ130は複数の第2のサーバを有し、第2のサーバの各々が検証用結果生成部404を備える。他の実施形態においては、1つ以上のサーバ装置のいずれかが各機能部を有することが可能であり、いずれのサーバ装置がいずれの機能部を有してもよい。例えば、第2のサーバが不正検証部405を有することも可能であるし、不正検証部405を備える第3のサーバを設けてもよい。また、1つのサーバがすべての機能部を有することもできる。
ユーザ端末120のゲーム実行部400は、ゲームプログラム及びゲームデータ等に基づいてゲームを進行させる。所定のタイミングで所定のイベントを発生させるとともに、ユーザからの入力等に基づいて、イベント用のパラメータを決定し、ゲームサーバ部401に送信するとともに、イベントを実行してイベントの結果を生成し、ゲームサーバ部401に送信する。イベントの結果は出力装置202によってユーザに提示される。
ゲームサーバ部401は、各ユーザ端末120からのアクセスを受け付けて、ネットワークを介したゲームサービスを提供する。例えば、各ユーザIDに紐付けてユーザのゲーム進行状況等のデータを記憶し、要求に応じてユーザ端末120へ送信したり、他プレイヤとの対戦ゲーム等においては他プレイヤとの間で入力情報を送受信する等のサービスを提供する。ロードバランサ402は、ゲームサーバ部401がゲーム実行部400から受信したイベントパラメータに基づく検証用結果生成処理を実行するための要求を複数の検証用結果生成部404のいずれかに割り当てる。
検証用結果生成部404は、イベントパラメータに基づいて検証用結果を生成して、不正検証部405に送信する。検証用結果は、不正検出のために生成されるイベントの結果である。検証用結果生成部404は、仮想インスタンス管理部410及び複数の仮想インスタンス411を有する。仮想インスタンス管理部410はロードバランサ402から割り当てられた検証用結果生成処理を実行するために、当該仮想インスタンス管理部410が含まれる検証用結果生成部404の複数の仮想インスタンス411から一つを選択する。
仮想インスタンス411はユーザ端末を仮想化するための仮想インスタンスであり、例えば、docker(登録商標)等の「コンテナ」と呼ばれるオペレーティングシステム・レベルの仮想化技術を用いることにより実現できる。docker(登録商標)は、Linuxs(登録商標)カーネルが提供するLinuxコンテナを制御し、プロセス単位での仮想化、すなわち、CPUの利用とファイルシステムの利用を、他のプロセスから分離された空間を提供することができる。各コンテナ同士は相互に分離されているため、あたかも、オペレーティングシステム内で、唯一動作するゲームアプリとしてふるまうことが可能になる。そのため、各コンテナにおいてゲームプログラムを実行して、ゲームプログラムのプロセスを起動することにより、ユーザ端末におけるゲームプログラムの実行を仮想的に実現することができる。したがって、1つのサーバ装置において複数の仮想インスタンスを生成して、同時に複数のゲームプログラムを隔離して並列に実行し、検証用結果を生成することができる。本実施形態においては、仮想インスタンス411としてdocker(登録商標)の「コンテナ」を用いる。
仮想インスタンス411における検証用結果生成処理は、ユーザ端末120においてゲームをプレイするために実行されるゲームプログラムを、サーバ130においてヘッドレスモードで実行することにより実行される。本実施形態においてヘッドレスモードとは、GPUにアクセスするグラフィック処理を無効化し、さらに、音源チップにアクセスするサウンド処理、および、外部サーバへのアクセス処理を無効化するモードである。これにより、CPU、メモリ、二次記憶装置のみを使用する状態、すなわち、コンテナ内部に閉じたリソースへのアクセスのみでゲームを実行することができるため、人間が閲覧することを前提としたアニメーション処理スピード、人間が聞くことを前提とした音声の再生スピードといった律速要因(速度を決める要因)を排除することができるようになる。さらに、これらのグラフィック機器やサウンド機器は、一般的にCPUの外にある外部機器として実装されており、CPUと外部機器との間のI/O処理にかかる同期のための待ち時間も省略することができる。これにより、人間のための演出や、外部機器のための同期待ちといったウェイト処理を省いた、CPU単独の処理速度のみに依存するノー・ウェイト(No Wait)処理で、ゲームを高速に動作させることができる。
本発明においてゲームプログラムをヘッドレスモードで実行することは、ヘッドレスモードでゲームプログラムを実行することと、ヘッドレス化されたゲームプログラムを実行することのいずれであってもかまわない。ゲームをヘッドレス状態で進行させることができれば、どのような態様での実行であってもかまわない。広く普及しているゲームエンジンであるUnityにおいてはGUIからヘッドレスモードを選択するだけで容易にヘッドレス化されたゲームプログラムを生成することが可能である。すなわち、ユーザ端末120用のゲームプログラムを再利用して、不正検出用のゲームプログラムを容易に用意することができる。
不正検証部405は、ユーザ端末120からゲームサーバ部401を経由して受信されたユーザ端末120によって実行されたイベントの結果であるユーザ結果と検証用結果生成部404によって生成された検証用結果とを比較して、不正検証を行う。両者が少なくとも一定程度異なれば、ユーザ端末120においてユーザの不正な情報変更等によってイベントの結果が改ざんされたことを示す。
本実施形態において各機能部は、図2及び3に記載されたハードウェア構成に含まれるプログラムが処理装置によって実行され、出力装置、入力装置、記憶装置及び通信装置の各ハードウェアとソフトウェアとが協働して動作することによって実現されるが、各機能に対応する電子回路等を設けて実現されてもよい。
次に、本実施形態におけるユーザ端末120及びサーバ(群)130の動作のフローチャートを図5に示した。サーバ(群)130は第1のサーバ300及び第2のサーバ310を含む。本実施形態においては、第2のサーバ310は複数あるものとするが、図5においては簡略化のために1つの第2のサーバ310のみを図示した。
第2のサーバ310においてまず複数の仮想インスタンス411を生成し(S501)、生成された複数の仮想インスタンス411において、ゲームプログラムをヘッドレスモードで実行してゲームプログラムのためのプロセスを起動し(S502)、ユーザ端末120からイベント用のパラメータの受信を待ち受ける。ゲームプログラムはヘッドレスモードで実行される点を除いて、ユーザ端末120において実行されるものと同一である。第2のサーバ310が同時に実行できるゲームプログラムの最大数を事前に見積って、最大数を上限として仮想インスタン411としてのコンテナで仮想化したゲームプログラムのプロセスを起動する。
本実施形態において、ゲームはコンピュータを対戦相手(NPC)とするカード対戦ゲームであり、イベントは対戦相手とのバトルとするが、対戦相手が他プレイヤであってもよいし、他の形態のゲームであっても同様に実施可能である。また、ここではバトルはオートバトルとし、バトル開始時にユーザ入力等に基づいて決定されたパラメータに基づいて自動的にバトルが進行して終了するものとするが、バトル開始後にユーザ入力等がなされてイベントパラメータが追加、更新等され、バトルが進行する場合であっても、逐次イベントパラメータをサーバ130へ送信することにより、同様に実現できる。
ユーザ端末120においては、ゲームプログラムをユーザ端末120にダウンロードしてインストールした後、ゲームをプレイできるように設定する。そして、ゲームプログラムを実行すると(S504)、必要なゲームデータをサーバ130に要求する(S506)。第1のサーバ300のゲームサーバ部401はゲームデータ要求を受信すると、当該ユーザのためのゲームデータをユーザ端末120に送信する(S508)。
ユーザ端末120はこれを受信してゲームの進行を開始する。ゲームが進行すると、所定のタイミングでイベントが発生される(S510)。ここではイベントはゲームプログラムによって自動で制御される対戦相手(NPC)とのバトルとする。プレイヤは自分が所有する複数のカードの中から選択された所定数のカードを含むカード群を用いて他プレイヤと対戦する。バトルが発生するとNPCは本バトル用に使用する自己のカード群を決定し、ユーザは自己のカード群を決定する。ユーザ端末120はこれらの決定されたカード群を含むパラメータを決定し(S512)、これをサーバ130へ送信する(S514)。
第1のサーバ300はこれを受信すると、ロードバランサ402を用いて、本イベントのための検証用結果生成処理を複数の検証用結果生成部404のうちのいずれか一つに例えばラウンドロビン方式で割り当て、割り当てられた検証用結果生成部404として機能する第2のサーバ310にイベントパラメータを送信する(S516)。
本実施形態における検証用結果生成部404は、生成された仮想インスタンス411の数だけ同時に検証用結果生成処理を実行することが可能である。また、この検証用結果生成処理は、ゲームにおけるバトル時間の数分の一から数十分の一の時間等の短期間の間に完了し新たな処理要求を受付可能になる。この挙動は、従来のWebサーバ等とは異なる挙動であるため、本実施形態に適したロードバランサ402を設定することが好ましい。ロードバランサ402は、各第2のサーバ310の仮想インスタンス411に万遍無くタスクが割り当てられるように、例えば、ラウンドロビンでタスクを振り分けた後、いずれかの第2のサーバ310でキャパシティ超過を意味するエラーが発生したときには、全てのサーバ310に対してリトライ可能にし、すべてのサーバ310のキャパシティを超過したときのみ、エラーとするという実装が考えられる。他の実装としては、ロードバランサ402は、各第2のサーバ310の仮想インスタンス411のうち、空いているものに即座にかつ万遍無くタスクが割り当てられるように、例えば、空き状態にある第2のサーバ310のIPアドレスを格納するキューを持ち、いずれかの第2のサーバ310が処理完了の通知を発行したときに、当該サーバをキューの最後に追加し、リクエストが来た場合は、そのキューの先頭から割り当てていく方式が考えられる。このキューが空になっているときにリクエストが来たときのみ、エラーとするという実装が考えられる。
検証用結果生成処理を割り当てられた第2のサーバ310は、検証用結果生成要求としてのイベントパラメータを受信し、これに基づいて検証用結果を生成するために複数の仮想インスタンス411から1つを選択する(S518)。本実施形態においては、仮想インスタンス管理部410が、非同期I/Oにより仮想インスタンス411を管理する。具体的には、第2のサーバ310の検証用結果生成部404は単一の仮想インスタンス管理部410を有しており、当該仮想インスタンス管理部410が、並列的に動作させた仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、並列的に動作させた仮想インスタンスのうちの1つの選択された仮想インスタンスにおいて他のイベントを実行させている間に、空いている仮想インスタンス411を検索し、空いている仮想インスタンス411のいずれか1つを、イベントの実行のための仮想インスタンス411として選択する。
本実施形態においては、ファイルを経由して第1のサーバ300と仮想インスタンス411におけるプロセスとの通信を行う。より具体的には、第2のサーバ310がイベントパラメータを例えば各パラメータを格納するJSONファイルとして第1のサーバ300から受信して特定のファイルパスに書き込み、仮想インスタンス411におけるプロセスが当該特定のファイルパスを監視し、ファイルが書き込まれたときに、そのファイルをイベントパラメータとして読み込み、イベントを実行し、検証用結果を別のファイルに書き込むと、当該別のファイルが第1のサーバ300へ送信される。パイプによるプロセス間通信等の他の方法でも実施可能である。
ここで、ユーザ結果と検証用結果とが不正がなくとも少なくとも一定程度の同じ結果を返さない場合があれば、ユーザ結果と検証用結果とを比較しただけではユーザによる不正を正確に検出することはできない。本明細書においては、同じ引数を与えたときに少なくとも一定程度の同じ結果を返す場合には結果一致性があるといい、少なくとも一定程度の同じ結果を返さない場合には結果一致性がないという。すなわち、ユーザ端末120において実行されるゲームプログラムにおいて決定されたイベントパラメータを用いてイベントを実行するプロセスと、サーバ130における仮想インスタンス411としてのコンテナにおいてヘッドレスモードで実行されるゲームプログラムにおいて実行されるプロセスとが結果一致性を有していなければ、ユーザ結果と検証用結果とを比較するだけでは正確に不正を検出することはできない。
本実施形態においては、ユーザ端末120において実行されるゲームプログラムは、イベントパラメータ等の情報を書き込むためにサーバ130のファイルシステムにおけるいずれかのディレクトリにマウントされる。仮想インスタンス411としてのコンテナもまたサーバ130のファイルシステムのいずれかのディレクトリにマウントされる。ここでは、コンテナは、マウントされたディレクトリに対してリードオンリーで参照することとする。
ユーザ端末120におけるゲームプログラムと結果一致性を有するコンテナを選択するために、コンテナが実行するゲームプログラムの種別を示す情報及びコンテナにマウントされたディレクトリを示す情報を含む型情報に基づいてコンテナを識別する。そして、ユーザ端末120において実行されるゲームプログラムと同一の型情報を有するコンテナを、結果一致性を有するコンテナとして選択する。ゲームプログラムの種別を示す情報は、ゲームの種類やゲームプログラムのバージョン等を示す情報である。コンテナにマウントされたディレクトリを示す情報は、コンテナからサーバ130のファイルシステムをマウントする際の「パス」とすることができる。すなわち、ユーザ端末120及びコンテナにおいて実行されるゲームプログラムの種別が同じであり、同じディレクトリにマウントされている場合には結果一致性があり、そのような結果一致性を有するコンテナを選択する。
表1は、仮想インスタンス411としてのコンテナがマウントされたディレクトリを参照するかコピーするか、そして、そのディレクトリにリードオンリー(Read-Only)でアクセスするか、読み書き(Read-Write)モードでアクセスするかに応じて、結果一致性を検証する方法を分類したものである。この表に示すとおり、ゲームプログラムの特性に応じた結果一致性の検証により、ユーザ端末120で実行されるゲームプログラムと結果一致性があるコンテナを選択することが可能である。
Figure 0006473259
表1における「参照」は、コンテナにマウントされたサーバのディレクトリをコンテナが参照するものであることを意味し、「コピー」はマウントされたサーバのディレクトリ及びファイルを、コンテナがコンテナイメージ内にコピーすることを意味する。Read-Only はマウントしたディレクトリに対してコンテナ内のプロセスがリードオンリーモードでアクセスすることを意味し、Read-Writeはコンテナ内のプロセスがマウントしたディレクトリに対して読み書き可能モードでアクセスすることを意味する。
すなわち、ユーザ端末120とコンテナで実行されるゲームプログラムの種類及びバージョンを示す情報が同じであり、ユーザ端末120から送信されたイベントパラメータが書き込まれたサーバ130におけるディレクトリと同じディレクトリを「参照」するコンテナにおけるプロセスがリードオンリーモードでアクセスする場合は、ユーザ端末120で実行されるゲームプログラムと結果一致性がある一方で、読み書きモードでアクセスする場合は結果一致性がない。また、コンテナがユーザ端末120から送信されたイベントパラメータが書き込まれた第2のサーバ310におけるディレクトリをコピーし、プロセスがリードオンリーモードでアクセスする場合には、コピーしたファイルが同じであれば結果一致性があり、リードオンリーモードでアクセスする場合には、コピーした「内容」が同じで、かつ、内容の変更について互いに同期している場合には結果一致性がある。
前述の実施形態においては、コンテナはマウントされたディレクトリに対してリードオンリーで参照するため、コンテナが実行するゲームプログラムの種別を示す情報及びコンテナにマウントされたディレクトリを示す情報を含む型情報に基づいて、ユーザ端末120において実行されるゲームプログラムと同一の型情報を有するコンテナを選択することで、結果一致性を有するコンテナ(仮想インスタンス411)を選択することが可能である。
コンテナにマウントされたディレクトリへのアクセスがリードオンリーによる参照に限られない場合であっても、マウントされたディレクトに対して「参照」するか「コピー」するか、及び、当該ディレクトリに対するアクセスモードを示す情報も型情報に含ませることによって、当該型情報及び表1に記載した基準等に基づいて、様々な環境においても結果一致性を有するコンテナを選択し、不正検出を保証することを可能とする。
第2のサーバ310は、選択された仮想インスタンス411(コンテナ)のプロセスにおいてイベントパラメータに基づいてイベントをヘッドレスモードにて実行して検証用結果を生成し(S518)、生成された検証用結果を第1のサーバ300へ送信する(S522)。ヘッドレスモードにより律速要因(速度を決める要因)を排除してイベントを実行できるから、短時間でイベント結果を生成することができる。
この点を図6を用いてより詳細に説明する。図6(a)は通常のモードでイベントを実行する場合のCPUの稼働状態を示し、(b)はヘッドレスモードでイベントを実行する場合のCPUの稼働状態を示す。(a)に示したとおり、通常モードにおいては、CPUは常に高負荷にあるわけではなく、局所的に高負荷が発生する。これはゲーム画面のフレーム描画に必要なデータを生成する部分等に相当する。そして、音楽と画面表示は、人間の知覚に合わせる必要があるため、所定のタイミングとなるまでウェイトが発生する。したがって、通常モードにおいてCPUはゲーム進行の実時間で律速されながら、局所的に動作している。一方、ヘッドレスモードでは、律速要素となるGPUとSoundを必要としないため、CPU単独でイベントを高速に、すなわち、ウェイトをかけずに短時間で実行可能である。これにより、これまで分散していた処理を短時間にまとめて実行でき、通常モードでの1人のイベント実行期間で複数プレイヤの検証用結果生成処理を実行可能であるため、高い処理効率を実現できる。
ユーザ端末120は、イベントパラメータを送信した後(S514)、当該イベントパラメータに基づいてイベントを実行して、イベントの結果を生成する(S524)。ユーザ端末120において生成されたイベントの結果であるユーザ結果をサーバ130に送信する(S526)。本実施形態においてイベントの結果とはバトルの勝敗結果である。ユーザ端末120においては、GPU及び音源チップ等を用いて、バトルグラフィック及び音声をユーザ端末120の出力装置202を用いて出力するから、これが律速要因となり、検証用結果生成部404に比べてイベント結果の生成に時間を要する。
第1のサーバ300の不正検証部405は、ユーザ端末120によって生成されたユーザ結果と検証用結果生成部404によって生成された検証用結果とを比較することにより不正検証を行う(S528)。両結果が同一であればユーザ結果は正当であり、両結果が異なれば不正であると判定する。結果の判定は必ずしも厳密に一致することを要求する必要はない。一定程度の範囲で結果が一致していれば不正がないと判定することができる。例えば、勝敗の結果が一致していれば、その他の被ダメージ等のパラメータの相違が一定範囲以内であれば許容する、という判定を行うことができる。不正であると判定された場合には、例えば、不正検証部405はゲームサーバ部401へ不正検出信号を送信し、ゲームサーバ部401は本ユーザやゲームシステム管理者等へ不正が検出されたことを通知するメッセージを送信する等の処理が実行される。
本実施形態においては、検証用結果生成部404においてヘッドレスモードでゲームプログラムを実行することにより、ノー・ウェイトで高速にイベントを実行して結果を生成することができる。さらに、検証用結果生成部404において複数の仮想インスタンス411を並列的に動作させ、複数の仮想インスタンスのうちの1つの選択された仮想インスタンス411において受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてパラメータに基づいてイベントを並列的に実行することができる。第2のサーバ310を複数用意することにより、さらに多くの仮想インスタンスを並列的に動作させることが可能である。このため、高速かつ並列に検証用の結果を生成することが可能となり、多数のユーザの不正検証を効率的に行うことができる。また、第2のサーバ310は必要に応じて追加的に設置することもできるのでスケーラブルなシステムを構築することができる。
仮想インスタンス411においてユーザ端末120で実行されるゲームプログラムをヘッドレスモードで実行する場合には、ユーザ端末120で実行されるゲームプログラムと同一のプログラムを利用することができる。ユーザ端末120で実行されるゲームプログラムをヘッドレス化したゲームプログラムを用いる場合には、例えば、広く普及しているゲームエンジンであるUnityにおいてはヘッドレスビルドの設定はGUIからヘッドレスモードを選択するだけで容易に行う可能である。したがって、ゲームアプリを頻繁に、あるいは複雑に変更した場合であっても、変更に対応した不正検出用のシステムを容易に構成することが可能である。
また、ユーザ端末120において実行されるゲームプログラムと同一の型情報を有する仮想インスタンス411を選択することで、複数のゲーム種別が含まれる等の様々な環境においてもユーザ端末120において実行されるゲームプログラムと結果一致性を有するコンテナを選択することで正確な不正検出を保証することができる。
ゲームプログラムをその更新状況に応じて、当該プログラムの複数の異なるバージョンをサーバでヘッドレスモードで同時に実行することにより、高速かつ容易に不正検出を実現することができる。
さらに、ゲームプログラムを仮想インスタンスの制御化におくことにより、ゲームプログラムのバージョンアップやアセット更新時に、既存のバージョンのゲームプログラムを動作させたまま、新しいバージョンへの移行を行うライブ・マイグレーションを実現できる。また、処理ノードのオートスケーリングも容易である。
以上に説明した処理または動作において、矛盾が生じない限りにおいて、処理または動作を自由に変更することができる。また以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
100…不正検出システム
110…ネットワーク
120…ユーザ端末
130…ゲームサーバ
201…処理装置
202…出力装置
203…入力装置
206…記憶装置
207…通信装置
208…バス
209…プログラム
300…第1のサーバ
301…処理装置
301…処理装置
302…出力装置
303…入力装置
306…記憶装置
306…記憶装置
307…通信装置
308…バス
309…プログラム
310…第2のサーバ
400…ゲーム実行部
401…ゲームサーバ部
402…ロードバランサ
404…検証用結果生成部
405…不正検証部
410…仮想インスタンス管理部
411…仮想インスタンス

Claims (10)

  1. ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムであって、
    ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するユーザ端末と、
    検証用結果生成部と不正検証部とを有するサーバとを備え、
    前記検証用結果生成部は、
    ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
    前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
    前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
    前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
    前記不正検証部は、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定
    前記複数の仮想インスタンスから選択することは、
    仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
    仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
    ことを含む、
    ことを特徴とするシステム。
  2. 前記検証用結果生成部は、前記ゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化してイベントを実行させ前記検証用結果を生成する、請求項1に記載のシステム。
  3. 前記検証用結果生成部は、単一の仮想インスタンス管理部を有し、
    前記検証用結果生成部は、前記複数の仮想インスタンスを並列的に動作させ、
    前記検証用結果生成部の単一の仮想インスタンス管理部が、仮想インスタンスからの入出力割り込み信号に基づいて当該仮想インスタンスの稼働状態を判定することにより、前記複数の仮想インスタンスのうちの1つの選択された仮想インスタンスにおいて受信したパラメータに基づいてイベントを実行している間に、他の仮想インスタンスを選択して他の受信したパラメータに基づいてイベントを並列的に実行することを可能とする、
    請求項1及び2のいずれか1項に記載のシステム。
  4. 前記仮想インスタンスはコンテナ型仮想化を実現するものである、請求項1〜のいずれか1項に記載のシステム。
  5. 前記サーバは、ロードバランサ及び複数の検証用結果生成部を備え、
    前記複数の検証用結果生成部の各々が単一の仮想インスタンス管理部を備え、
    前記ロードバランサは、受信したパラメータに基づくイベントの実行をいずれかの検証用結果生成部へ割り当て、
    前記単一の仮想インスタンス管理部は、当該単一の仮想インスタンスを含む検証用結果生成部において空いている仮想インスタンスを検索し、空いている仮想インスタンスのいずれか1つを、当該単一の検証用結果生成部に割り当てられたイベントの実行を行う仮想インスタンスとして選択する、
    請求項1〜のいずれか1項に記載のシステム。
  6. ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて使用されるサーバであって、
    前記システムにおけるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
    前記サーバは、
    ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
    前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
    前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
    前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成
    前記複数の仮想インスタンスから選択することは、
    仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
    仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
    ことを含む、
    ことを特徴とするサーバ。
  7. 更に、前記ユーザ端末から受信されたユーザ結果と前記検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定する、
    請求項に記載のサーバ。
  8. ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためシステムにおけるサーバによって実行されるプログラムであって、前記システムにおけるユーザ端末は、ゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、前記プログラムは、サーバに、
    ユーザ端末を仮想化するための複数の仮想インスタンスを生成する段階と、
    前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行する段階と、
    前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択する段階と、
    前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成する段階と、
    を実行させ
    前記複数の仮想インスタンスから選択する段階は、
    仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別する段階と、
    仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する段階と、
    を含む、ことを特徴とするプログラム。
  9. ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムにおいて実行される方法であって、
    ユーザ端末がゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信し、
    検証用結果生成部が、
    ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
    前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
    サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
    前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成し、
    不正検証部が、前記ユーザ端末から受信されたユーザ結果と検証用結果とを比較して、前記ユーザ端末において不正が行われたか否かを決定
    前記複数の仮想インスタンスから選択することは、
    仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
    仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
    ことを含む、
    ことを特徴とする方法。
  10. ユーザ端末でプレイされるゲームにおけるユーザの不正を検出するためのシステムのサーバによって実行される方法であって、
    前記システムに含まれるユーザ端末はゲームをプレイするためのゲームプログラムを実行し、前記ゲームにおける所定のイベントを実行するためのパラメータを決定し、当該パラメータを送信し、前記パラメータに基づいて前記イベントを実行してイベントの結果であるユーザ結果を生成し、当該ユーザ結果を送信するシステムにおいて、
    前記サーバが、
    ユーザ端末を仮想化するための複数の仮想インスタンスを生成し、
    前記複数の仮想インスタンスにおいて、前記ゲームプログラムをヘッドレスモードで実行し、
    前記サーバが受信したパラメータに基づいてイベントを実行するための仮想インスタンスを前記複数の仮想インスタンスから選択し、
    前記ユーザ結果と比較して前記ユーザ端末において不正が行われたか否かを決定するために、前記選択された仮想インスタンスにおいて前記パラメータに基づいてイベントを実行して検証用結果を生成
    前記複数の仮想インスタンスから選択することは、
    仮想インスタンスが実行するゲームプログラムの種別を示す情報及び仮想インスタンスにマウントされたディレクトリを示す情報を含む型情報に基づいて仮想インスタンスを識別し、
    仮想インスタンスがマウントされたディレクトリへの当該仮想インスタンスのアクセスモードに基づいて、ユーザ端末において実行されるゲームプログラムと同一の型情報を有し当該ゲームプログラムと同一のパラメータを入力すると当該ゲームプログラムと同一の結果を生成する仮想インスタンスを選択する、
    ことを含む、
    ことを特徴とする方法。
JP2018088223A 2018-05-01 2018-05-01 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法 Active JP6473259B1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018088223A JP6473259B1 (ja) 2018-05-01 2018-05-01 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法
CN201980043902.4A CN112368057A (zh) 2018-05-01 2019-04-18 用于检测游戏中的用户作弊的系统、服务器、程序和方法
PCT/JP2019/016665 WO2019211992A1 (ja) 2018-05-01 2019-04-18 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法
US17/085,030 US11395972B2 (en) 2018-05-01 2020-10-30 System, server, program, and method for detecting cheating by user in game

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018088223A JP6473259B1 (ja) 2018-05-01 2018-05-01 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019010117A Division JP2019193771A (ja) 2019-01-24 2019-01-24 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法

Publications (2)

Publication Number Publication Date
JP6473259B1 true JP6473259B1 (ja) 2019-02-20
JP2019193702A JP2019193702A (ja) 2019-11-07

Family

ID=65443122

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018088223A Active JP6473259B1 (ja) 2018-05-01 2018-05-01 ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法

Country Status (4)

Country Link
US (1) US11395972B2 (ja)
JP (1) JP6473259B1 (ja)
CN (1) CN112368057A (ja)
WO (1) WO2019211992A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110909630A (zh) * 2019-11-06 2020-03-24 腾讯科技(深圳)有限公司 一种异常游戏视频检测方法和装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6768982B1 (ja) * 2020-03-19 2020-10-14 株式会社Cygames プログラム検証のための方法、プログラム、システム及びサーバ
CN111569434B (zh) * 2020-05-14 2023-12-15 宁波元素人网络科技有限公司 一种游戏代码校验的方法及系统
SG10202100950PA (en) * 2021-01-28 2021-06-29 Garena Online Private Ltd A method for implementing multi-player games
CN113694538A (zh) * 2021-08-26 2021-11-26 深圳市天天来玩科技有限公司 一种在线棋牌处理方法、服务器和存储介质
KR102425439B1 (ko) * 2021-12-27 2022-07-27 주식회사 엔게이트 온라인 및 오프라인 플레이가 가능한 게임에서 오프라인 플레이어의 게임데이터 변조방지 서버 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006006473A (ja) * 2004-06-23 2006-01-12 Sega Corp オンラインゲーム不正検出方法
JP2010227182A (ja) * 2009-03-26 2010-10-14 Sega Corp オンラインゲームサーバ処理方法、オンラインゲームサーバ装置、オンラインゲームサーバ処理プログラム、オンラインゲームクライアント処理プログラムおよびオンラインゲームサーバ処理プログラム記録媒体
JP2014035744A (ja) * 2012-08-10 2014-02-24 Nippon Telegr & Teleph Corp <Ntt> 検証管理装置、検証管理方法および検証管理プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003252901A1 (en) * 2002-04-18 2003-12-11 Walker Digital, Llc Method and Apparatus for Authenticating Data Relating to Usage of a Gaming Device
US8302199B2 (en) 2005-04-06 2012-10-30 Valve Corporation Anti-cheat facility for use in a networked game environment
US8353757B2 (en) * 2005-05-27 2013-01-15 Igt Methods and systems for representing outcomes of a casino game in a non-casino game format
JP4048215B2 (ja) * 2006-02-16 2008-02-20 株式会社コナミデジタルエンタテインメント ゲーム管理システム及びゲーム管理方法
US7753795B2 (en) * 2006-03-20 2010-07-13 Sony Computer Entertainment America Llc Maintaining community integrity
US8333659B2 (en) * 2009-09-30 2012-12-18 Zynga Inc. Apparatuses, methods and systems for a live online game tester
CN102163251A (zh) * 2010-02-22 2011-08-24 深圳市腾讯计算机系统有限公司 一种游戏作弊的识别方法和设备
KR20120086898A (ko) * 2011-01-27 2012-08-06 에스케이플래닛 주식회사 게임 서비스 시스템, 및 그의 게임 부정 행위를 방지하기 위한 방법
CN105214310B (zh) * 2015-10-13 2019-03-29 网易(杭州)网络有限公司 一种游戏战斗校验方法、系统及服务端
US20170249785A1 (en) * 2016-02-29 2017-08-31 Vreal Inc Virtual reality session capture and replay systems and methods
US10463971B2 (en) * 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006006473A (ja) * 2004-06-23 2006-01-12 Sega Corp オンラインゲーム不正検出方法
JP2010227182A (ja) * 2009-03-26 2010-10-14 Sega Corp オンラインゲームサーバ処理方法、オンラインゲームサーバ装置、オンラインゲームサーバ処理プログラム、オンラインゲームクライアント処理プログラムおよびオンラインゲームサーバ処理プログラム記録媒体
JP2014035744A (ja) * 2012-08-10 2014-02-24 Nippon Telegr & Teleph Corp <Ntt> 検証管理装置、検証管理方法および検証管理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110909630A (zh) * 2019-11-06 2020-03-24 腾讯科技(深圳)有限公司 一种异常游戏视频检测方法和装置
CN110909630B (zh) * 2019-11-06 2023-04-18 腾讯科技(深圳)有限公司 一种异常游戏视频检测方法和装置

Also Published As

Publication number Publication date
US11395972B2 (en) 2022-07-26
JP2019193702A (ja) 2019-11-07
WO2019211992A1 (ja) 2019-11-07
US20210046384A1 (en) 2021-02-18
CN112368057A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
JP6473259B1 (ja) ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法
JP7066784B2 (ja) クラウドゲーミングに関するゲームステートセーブ、転送および再開
US10293251B2 (en) Pre-loading translated code in cloud based emulated applications
CN104598257B (zh) 远程应用程序运行的方法和装置
US9623327B2 (en) Determining triggers for cloud-based emulated games
CN104640608B (zh) 基于用户的迷你游戏生成和发布
CN102402462B (zh) 用于对启用gpu的虚拟机进行负载平衡的技术
US11040285B1 (en) Secure anti-cheat system
US9937415B1 (en) Virtual controller for touchscreen
US11660534B2 (en) Pre-loading translated code in cloud based emulated applications
US20220249948A1 (en) Image processing method and apparatus, server, and medium
US9253228B2 (en) Cloud computing method, computing apparatus and server using the same
EP3090340A1 (en) Multimode gaming server
JPWO2018020610A1 (ja) コンテナイメージ配信システム、コンテナイメージ配信方法及びプログラム
US20220233954A1 (en) System and methods for generating a platform-agnostic game shortcut to launch a game for cloud gaming
JP2019193771A (ja) ゲームにおけるユーザの不正を検出するためのシステム、サーバ、プログラム及び方法
CN112138372B (zh) 分布式系统中的数据同步方法及相关设备
JP7121310B2 (ja) コンピュータプログラム、およびコンピュータ装置
JP6768982B1 (ja) プログラム検証のための方法、プログラム、システム及びサーバ
JP7366223B1 (ja) ゲームを検査するためのシステム、方法、及びプログラム
WO2024090476A1 (ja) ゲームを検査するためのシステム、方法、及びプログラム
US8898125B2 (en) Method and apparatus for awarding trophies
JP2018067038A (ja) サーバ、制御方法、プログラム
JP2024034073A (ja) ゲームプログラム、ゲーム装置および情報処理方法
JP2012190235A (ja) 情報システム検証装置及び情報システム検証方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180608

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181024

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190124

R150 Certificate of patent or registration of utility model

Ref document number: 6473259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250