JP6748281B1 - サーバ、処理システム、処理方法及びプログラム - Google Patents

サーバ、処理システム、処理方法及びプログラム Download PDF

Info

Publication number
JP6748281B1
JP6748281B1 JP2019222683A JP2019222683A JP6748281B1 JP 6748281 B1 JP6748281 B1 JP 6748281B1 JP 2019222683 A JP2019222683 A JP 2019222683A JP 2019222683 A JP2019222683 A JP 2019222683A JP 6748281 B1 JP6748281 B1 JP 6748281B1
Authority
JP
Japan
Prior art keywords
timing
unit
data
player
estimation result
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
JP2019222683A
Other languages
English (en)
Other versions
JP2021090601A (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 JP2019222683A priority Critical patent/JP6748281B1/ja
Application granted granted Critical
Publication of JP6748281B1 publication Critical patent/JP6748281B1/ja
Priority to CN202080085574.7A priority patent/CN114845789A/zh
Priority to PCT/JP2020/045411 priority patent/WO2021117660A1/ja
Publication of JP2021090601A publication Critical patent/JP2021090601A/ja
Priority to US17/836,324 priority patent/US20220297001A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/214Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads
    • A63F13/2145Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads the surface being also a display device, e.g. touch screens
    • 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/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • 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/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • 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/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/426Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving on-screen location information, e.g. screen coordinates of an area at which the player is aiming with a light gun
    • 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/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/44Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • 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/55Controlling game characters or game objects based on the game progress
    • A63F13/58Controlling game characters or game objects based on the game progress by computing conditions of game characters, e.g. stamina, strength, motivation or energy level

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

【課題】ゲーム性への影響を抑制しつつ、通信遅延の問題を軽減することが可能なプログラムを提供する。【解決手段】複数の操作対象オブジェクト各々の状態値を記憶する記憶部11と、複数のプレイヤ端末各々が受付けた入力の内容を示すタイミング毎情報からその後のタイミングの推定結果を生成する推定モデルと、第1のタイミングのタイミング毎情報とに基づき第2のタイミングの推定結果を生成する推定部13と、第2のタイミングに受付けた入力の内容と推定結果で示される第2のタイミングの入力の推定内容とが一致するか判断する判断部14と、判断結果が不一致である場合、受付けた入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部15と、他のプレイヤ端末が送信した訂正情報を取得する訂正情報取得部16と、訂正情報に基づき推定結果を補正する補正部17と、推定結果に基づき操作対象オブジェクトの状態値を更新する更新部18とを有する。【選択図】図11

Description

本発明は、サーバ、処理システム、処理方法及びプログラムに関する。
通信プロトコルの改善は、プロトコルスタックの中間レイヤの削減による効率化が一般的であった。これらの方式は汎用的に適用可能であり、有効性が高いものの、数十パーセント以上の劇的な速度改善や低遅延化を実現することは難しい。また、Webなどの特定のアプリケーションに特化したTCP/IPのパラメタ最適化は広く行われているが、エンドツーエンドでの最適化を行うことはできないため、パラメタ最適化に依存したゲーム性の設計を行うことはできなかった。
ところで、MMO(Massively Multiplayer Online)やFPS(First Person Shooter)などのゲームにおいては、デルタ圧縮が広く利用されている。デルタ圧縮は、直前に送信したデータから変化していないときはデータを送信しないというものである。このデルタ圧縮は、ステータス等のように値の変化の少ないデータの送受信に有効である。しかし、このデルタ圧縮は、値が頻繁に変化するために常に差分情報の送受信が必要になるデータ、たとえば、キャラクタの現在位置等を通信する際の圧縮技術としては、有効ではない。[0]このため、ゲームにおいては、キャラクタの位置等のように値の変化が頻繁にあるデータの送受信の効率化が課題であった。
この課題に応える技術として、キャラクタの移動先を指定/予測する方式が挙げられる。これは、次のフレームにおけるキャラクタの移動先(位置情報)を、プレイヤ自身に直接指定させるか、あるいは、線形補完等により予測/補完するというものである。この技術によれば、連続的にプレイヤ入力の内容(移動方向等)を送受信するよりも、通信量を削減できる。例えば、非特許文献1は、低遅延化のために、キャラクタの移動を、移動方向ではなく移動先を指定するようにゲーム性を変更する方法や、移動開始時点で予測座標を算出してサーバに送信しつつ、予測結果が外れた場合は、座標を補正(ワープ)する方式を開示している。これらは、一般的には、Lerp(linear interpolation)と呼ばれる技術である。
なお、本発明に関連する技術が、特許文献1に開示されている。特許文献1は、タッチパネルで所定時間内に検出されたスクリーン座標上の複数のタッチ位置を示すデータポイント群を記憶し、当該データポイント群から回帰直線の傾き及び当該回帰直線の傾きを回転させる回転量を決定し、当該回帰直線の傾き及び回転量に基づき操作対象オブジェクト(キャラクタ)の制御内容を決定する技術を開示している。
"[CEDEC 2010]ネットゲームの裏で何が起こっているのか。ネットワークエンジニアから見た,ゲームデザインの大原則"、[online]、2010年9月6日、[2019年7月4日検索]、インターネット<URL: https://www.4gamer.net/games/105/G010549/20100905002/>
特許第6389581号
Lerpはアクション性の低いMMOなどでは有効であるものの、精密に位置取りを行うようなアクション性の高いMMOなどではゲーム性に影響を与えてしまう。また、予測結果をワープで補正する方式では、他のプレイヤから見てカクカクした動きになるという問題もある。このように、Lerpの場合、通信遅延の問題を軽減し得るが、ゲーム性に影響を与える可能性がある。
本発明は、ゲーム性への影響を抑制しつつ、通信遅延の問題を軽減する技術を提供することを課題とする。
本発明によれば、
直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータを、
複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部、
プレイヤ入力を受付ける受付部、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部、
前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部、
前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部、
他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部、
前記訂正情報に基づき前記推定結果を補正する補正部、及び、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部、
として機能させるプログラムが提供される。
また、本発明によれば、
所定時間毎の複数のタイミング各々に対応して複数のプレイヤ端末各々のタッチパネルで検出されたスクリーン座標上のタッチ位置を示すデータポイント群を、操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するテンソルデータ生成部と、
前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第Nのタイミングの後のタイミングに対応した前記行列データとを対応付けた学習データを取り出す学習データ生成部と、
前記学習データに基づく機械学習により、あるタイミングに対応した前記行列データからその後のタイミングに対応した前記行列データの推定結果を生成する推定モデルを生成する推定モデル生成部と、
を有するサーバが提供される。
また、本発明によれば、
直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータが、
複数の操作対象オブジェクト各々に対応した状態値を記憶し、
プレイヤ入力を受付け、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成し、
前記第2のタイミングに対応して受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断し、
判断結果が不一致である場合、受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信し、
他の前記プレイヤ端末が送信した前記訂正情報を取得し、
前記訂正情報に基づき前記推定結果を補正し、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する処理方法が提供される。
また、本発明によれば、
複数のプレイヤ端末と、サーバとを有し、
前記プレイヤ端末は、
複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部と、
プレイヤ入力を受付ける受付部と、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部と、
前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部と、
前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部と、
他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部と、
前記訂正情報に基づき前記推定結果を補正する補正部と、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部と、
を有し、
前記サーバは、前記プレイヤ端末から前記訂正情報を受信すると、受信した前記訂正情報を他の前記プレイヤ端末に送信する送信部を有する処理システムが提供される。
本発明によれば、ゲーム性への影響を抑制しつつ、通信遅延の問題を軽減する技術が実現される。
本実施形態のゲームシステムの機能ブロック図の一例である。 本実施形態のプレイヤ端末のハードウエア構成の一例を示す図である。 本実施形態のサーバのハードウエア構成の一例を示す図である。 本実施形態のサーバの機能ブロック図の一例である。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。 本実施形態のプレイヤ端末の機能ブロック図の一例である。 本実施形態のプレイヤ端末が処理する情報の一例を模式的に示す図である。 本実施形態のプレイヤ端末の処理の流れの一例を示すフローチャートである。 本実施形態のプレイヤ端末の処理の流れの一例を示すフローチャートである。 本実施形態の処理を説明するための図である。 本実施形態の処理を説明するための図である。
<ゲームシステムの概要>
まず、本実施形態のゲームシステムの概要を説明する。図1に示すように、本実施形態のゲームシステムは、複数のプレイヤ端末10と、サーバ20とを有する。プレイヤ端末10とサーバ20とは、通信ネットワーク30を介して互いに繋がっている。プレイヤ端末10は、各プレイヤが操作する端末であり、例えば、スマートフォン、タブレット端末、携帯電話、パーソナルコンピュータ等が例示されるが、これらに限定されない。複数のプレイヤ端末10は、直接又はサーバ20を介して互いにデータ通信することができる。本実施形態のゲームシステムは、例えばMMOに好適である。
本実施形態では、MMO等において大量に蓄積されるゲームログに深層学習を適用し、一般的なプレイヤの極めて近い未来(例えば、1フレーム〜十数フレーム先)の入力内容を推定する推定モデルを生成する。そして、複数のプレイヤ端末10の各々が、同じ推定モデルに基づき複数のプレイヤ各々の未来の入力内容を推定する。当然、複数のプレイヤ端末10の推定結果は同じ内容となる。
そして、各プレイヤ端末10は、自端末に対してプレイヤが実際に入力した内容と、推定結果とが異なる場合、自端末に対してプレイヤが実際に入力した内容(推定結果を訂正する情報)を、サーバ20介して又は直接、他のプレイヤ端末10に送信する。なお、各プレイヤ端末10は、自端末に対してプレイヤが実際に入力した内容と、推定結果とが一致する場合、自端末に対してプレイヤが実際に入力した内容を他のプレイヤ端末10に送信しない。
各プレイヤ端末10は、他のプレイヤ端末10が送信した推定結果を訂正する情報を受信した場合、その情報に基づきそのプレイヤ端末10が制御するキャラクタを制御(移動等)し、推定結果を訂正する情報を受信しなかった場合、推定結果に基づきそのキャラクタを制御する。
このように、本実施形態のゲームシステムでは、複数のプレイヤ端末10が複数のプレイヤ各々の未来の入力内容を同じ推定モデルに基づき同時に推定する「同期型予測」を行う。そして、その予測結果と異なる内容をプレイヤが各プレイヤ端末10に入力したときのみ、その内容を他のプレイヤ端末10に通知する。このような本実施形態のゲームシステムによれば、高効率・低遅延でパケットロスに強いマルチプレイ通信方式が実現される。
<ハードウエア構成>
次に、プレイヤ端末10及びサーバ20のハードウエア構成を説明する。
「プレイヤ端末10」
まず、プレイヤ端末10のハードウエア構成を説明する。図2は、プレイヤ端末10のハードウエア構成を例示するブロック図である。図2に示すように、プレイヤ端末10は、プロセッサ1A、メモリ2A、入出力インターフェイス3A、周辺回路4A、バス5A、タッチパネル6A、通信部7Aなどを有する。周辺回路4Aには、様々なモジュールが含まれる。なお、周辺回路4Aを有さなくてもよい。
プレイヤ端末10が備える機能部は、プロセッサ1A、メモリ2A、入出力I/F3A、入出力I/F3Aに接続されたモジュール(タッチパネル6A、通信部7Aなど)などのハードウエアと、内蔵メモリ(ROM、ハードディスクなど)に格納され、RAMなどにロードされるプログラム(ソフトウエア)との任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。なお、内蔵メモリに格納されるプログラムは、あらかじめ処理装置の出荷段階から格納されているプログラムのほか、インターネット上のサーバなどからダウンロードされたプログラムなども含む。
バス5Aは、プロセッサ1A、メモリ2A、周辺回路4A及び入出力I/F(インターフェイス)3Aが相互にデータを送受信するためのデータ伝送路である。プロセッサ1Aは、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)やNPU(Neural network Processing Unit)などの演算処理装置である。メモリ2Aは、例えばRAM(Random Access Memory)やROM(Read Only Memory)などのメモリである。入出力I/F3Aには、入力装置(タッチパネル6A、マイク、物理ボタン等)や、出力装置(タッチパネル6A、スピーカ等)や、インターネットなどのネットワークに接続するための通信部7Aなどが接続される。プロセッサ1Aは、各モジュールに指令を出し、それらの演算結果をもとに演算を行うことができる。
なお、タッチパネル6Aは、画像を表示するディスプレイと、位置入力センサとにより構成される。タッチパネル6Aに対してタッチ操作がなされると、位置入力センサはタッチされた位置に基づいた信号(検出結果)を出力する。タッチパネル6Aから出力された信号は、入出力I/F3Aを介してプロセッサ1Aに入力される。プロセッサ1Aは、タッチパネル6Aから出力された信号を任意の座標系における座標に変換するプログラムを実行し、タッチパネル6Aから出力された信号を上記座標系における座標に変換する。上記座標系は、例えば、タッチパネル6Aのタッチされる面上の任意の点を原点とし、当該面と平行な任意の方向にX軸及びY軸を定めた座標系である。以降、当該座標系における座標を「スクリーン座標」と便宜上記載する。位置入力センサは、静電容量式又は抵抗膜式などが例示される。
ここで、タッチ操作とは、物体(指等)を位置入力センサに接触又は近接させて物体の接触又は近接を位置入力センサに検出させたり、物体を位置入力センサに接触又は近接させた状態を維持したまま物体を位置入力センサに接触又は近接させる位置を変更したり、物体を位置入力センサから離して位置入力センサによる検出を解除したりする操作をいう。
「サーバ20」
次に、サーバ20のハードウエア構成を説明する。図3は、サーバ20のハードウエア構成を例示するブロック図である。図3に示すように、サーバ20は、プロセッサ1A、メモリ2A、入出力インターフェイス3A、周辺回路4A、バス5Aなどを有する。周辺回路4Aには、様々なモジュールが含まれる。なお、周辺回路4Aを有さなくてもよい。
サーバ20が備える機能部は、プロセッサ1A、メモリ2A、入出力I/F3A、入出力I/F3Aに接続されたモジュールなどのハードウエアと、内蔵メモリ(ROM、ハードディスクなど)に格納され、RAMなどにロードされるプログラム(ソフトウエア)との任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。なお、内蔵メモリに格納されるプログラムは、あらかじめ処理装置の出荷段階から格納されているプログラムのほか、インターネット上のサーバなどからダウンロードされたプログラムなども含む。プロセッサ1A、メモリ2A、入出力インターフェイス3A、周辺回路4A及びバス5Aの詳細は上述の通りであるので、ここでの説明は省略する。
<機能構成>
次に、プレイヤ端末10及びサーバ20の機能構成を説明する。ここでは、「プレイヤ入力を推定する推定モデルの生成」、及び、「当該推定モデルを用いたゲームの制御」に分けて、プレイヤ端末10及びサーバ20各々の機能構成を説明する。
「プレイヤ入力を推定する推定モデルの生成」
推定モデルの生成は、サーバ20により実現される。以下、推定モデルの生成処理を詳細に説明する。なお、以下で説明する学習データの生成処理、及び、学習データに基づく推定モデルの生成処理は、例えばゲーム開発時にゲーム開発者の作業により実現される。そして、当該推定モデルは、ゲーム運用中にプレイヤから入力されるデータに基づき更新されてもよい。すなわち、実際にゲームを運用している時にプレイヤから入力されるデータを蓄積し、当該蓄積したデータから学習データを生成し、当該学習データに基づき新たな推定モデルを生成し、更新してもよい。図4に、サーバ20の機能ブロック図の一例を示す。図示するように、サーバ20は、記憶部21と、テンソルデータ生成部22と、学習データ生成部23と、推定モデル生成部24と、送信部25とを有する。
テンソルデータ生成部22は、所定時間毎の複数のタイミング各々に対応して行列データ(以下、「タイミング毎行列データ」という場合がある)を生成し、所定時間毎のタイミング毎行列データを時間軸に沿って格納したテンソルデータを生成する。そして、テンソルデータ生成部22は、生成したテンソルデータを記憶部21に記憶させる。以下、テンソルデータ生成部22による当該処理の詳細を説明する。なお、以下では、「所定時間毎」は「フレーム毎」として説明するが、あくまで一例でありこれに限定されない。
前提として、本実施形態では、特許文献1に開示されている技術に基づき、タッチパネル6Aを介したプレイヤ入力を処理し、操作対象オブジェクト(プレイヤキャラクタ等)を制御する。具体的には、本実施形態のゲームシステムでは、各プレイヤ端末10のタッチパネル6Aで検出されるタッチポイントの値(スクリーン座標)は、例えばフレームレートのような一定の時区間ごとに区切られて観測されている。そして、各時区間に観測されたタッチポイントの値の集合は、時区間毎に独立した配列としてバッファに格納されている。
以下では、「1つの時区間」は「1つのフレームの時区間」として説明するが、あくまで一例でありこれに限定されない。ゲームアプリケーションでは、通常、60fps又は30fpsとなる。例えば、30fpsの場合、1つのフレームの時区間の長さは約33ミリ秒となる。例えば、100Hzでセンシングする静電容量式タッチパネルを用いた場合、1フレーム内(1つの時区間内)で複数のタッチポイントの値が観測されることとなる。本実施形態では、1つのフレームの時区間毎に、その時区間に観測されたタッチポイントの値の集合が観測された順に配列としてバッファに格納されている。タッチポイントの横軸の値の集合xと、タッチポイントの縦軸の値の集合yは、各々、次の式(1)及び式(2)のように定義できる。
ここで、xa,bは、第aのフレームの時区間に観測されたタッチポイントの横軸の値の集合のうち、b番目に観測された値を示す。各フレーム内の値は観測された時間に応じて昇順にソートされており、b番目の値は、(b−1)番目の後、かつ、(b+1)番目の前に観測された値である。
同様に、ya,bは、第aのフレームの時区間に観測されたタッチポイントの縦軸の値の集合のうち、b番目に観測された値を示す。各フレーム内の値は観測された時間に応じて昇順にソートされており、b番目の値は、(b−1)番目の後、かつ、(b+1)番目の前に観測された値である。
なお、各フレームの時区間に観測されるタッチポイントの数は必ずしも同じでない。このため、変数mの値は、aの値毎に異なり得る。それぞれの値の集合は、フレームごとにまとめられており、二次元配列を形成している。
以下、1つのプレイヤ端末10のタッチパネル6Aにおいて1つのフレームの時区間に観測されたタッチポイントの値の集合を「データポイント群」と呼ぶ。第1のプレイヤ端末10のタッチパネル6Aにおいて第1のフレームの時区間に観測されたデータポイント群と、第2のプレイヤ端末10のタッチパネル6Aにおいて第1のフレームの時区間に観測されたデータポイント群とは異なるデータポイント群である。また、第1のプレイヤ端末10のタッチパネル6Aにおいて第1のフレームの時区間に観測されたデータポイント群と、第1のプレイヤ端末10のタッチパネル6Aにおいて第2のフレームの時区間に観測されたデータポイント群とは異なるデータポイント群である。
記憶部21は、複数のプレイヤ端末10各々で観測されたデータポイント群の履歴を記憶している。そして、テンソルデータ生成部22は、当該履歴のデータを用いた以下の処理1乃至3により、テンソルデータを生成する。
・「(処理1)プレイヤ端末10毎、かつ、フレーム毎に、各フレームの時区間に各プレイヤ端末10のタッチパネル6Aで観測されたデータポイント群、及び、各データポイント群に基づき行動(移動等)を制御される操作対象オブジェクト(プレイヤキャラクタ等)の位置を示すワールドフレーム行列Mを生成」
・「(処理2)プレイヤ端末10毎、かつ、フレーム毎に生成したワールドフレーム行列Mを同じフレームのもの同士で合成し、タイミング毎行列データを生成」
・「(処理3)タイミング毎行列データを時間軸に沿って格納し、テンソルデータを生成」
まず、処理1について説明する。本実施形態では、ワールドフレーム行列Mにより、各フレームの時区間に各プレイヤ端末10のタッチパネル6Aで観測されたデータポイント群、及び、各データポイント群に基づき行動(移動等)を制御される操作対象オブジェクト(プレイヤキャラクタ等)の位置を示す。
「ワールドフレーム行列M」は、行及び列が3Dのゲーム空間のワールド座標系(x軸及びy軸が水平方向の軸であり、z軸が垂直方向の軸)におけるx軸及びy軸に対応し、第q行目かつ第r列目の成分の値でワールド座標系における座標(x,y)の状態を示す。テンソルデータ生成部22は、各フレームの時区間に各プレイヤ端末10のタッチパネル6Aで観測されたデータポイント群を、3Dのゲーム空間を俯瞰する2Dマップ上の所定位置にマッピングし、各成分の値でマッピング状態を示すワールドフレーム行列Mを生成する。データポイント群をマッピングする所定位置は、そのデータポイント群に基づき行動(移動等)を制御される操作対象オブジェクト(プレイヤキャラクタ等)に対応する位置であり、例えば、操作対象オブジェクトが存在する位置や、その周辺等が例示される。
ワールドフレーム行列Mは次の式(3)のように定義できる。
ここで、pq、rは、ワールド座標系における座標(x、y)の地点にデータポイント群の要素(点)が存在するか否かを示す。例えば、データポイント群の要素が存在するときはpq、rの値をゼロより大きく1以下の数値とし、データポイント群の要素が存在しないときはpq、rの値をゼロとしてもよい。なお、単純には、データポイント群の要素が存在するときはpq、rの値を1とする実装が考えられるが、その他、そのデータポイント群に基づき行動を制御される操作対象オブジェクトの種類や状態(ヒットポイント、レベル、攻撃力、防御力等)等の特性を反映した値とすることで、それらをさらに示すワールドフレーム行列Mとすることができる。例えば、データポイント群の要素が存在する位置に対応するpq、rの値を、操作対象オブジェクトのヒットポイントを最大値で正規化した値や、操作対象オブジェクトの強さを指標化した値等としてもよい。
本実施形態では、例えばGAN(Generative adversarial networks)を想定した推定モデルを生成する学習を行うため、行列のサイズを示すnとmの値は、システム内で一意に固定される。これにより、適切に機械学習を行うことができる。
次に、プレイヤ端末10のタッチパネル6Aで観測されたデータポイント群を3Dのゲーム空間を俯瞰する2Dマップ上の操作対象オブジェクトに対応する位置にマッピングする方法を説明する。
図5(A)に示すように、データポイント群は、物理的なタッチパネル6A上の座標(スクリーン座標)として観測されるものである。そこで、まず、テンソルデータ生成部22は、図5(B)に示すように、スクリーン座標を、3Dのゲーム空間のワールド座標系に写像する。例えば、カメラ位置や向きに基づき、タッチパネル6A上で観測されたデータポイント群を、3Dのゲーム空間のワールド座標系に写像する。図5(A)に示すようにカメラが操作対象オブジェクトの背後に位置する状態で観測されたデータポイント群は、図5(B)に示すように、操作対象オブジェクトの背後に写像される。この写像により、プレイヤ端末10に固有の値であったスクリーン座標のデータポイント群が、3Dのゲーム空間のワールド座標系に写像されることとなる。この座標変換処理mapは、次の式(4)のように定義できる。
ここで、x及びyはスクリーン座標のx座標及びy標であり、x及びyはワールド座標のx座標及びy座標である。
次に、テンソルデータ生成部22は、図6及び図7に示すように、3Dのゲーム空間のワールド座標系に写像されたデータポイント群を、3Dのゲーム空間を俯瞰する2Dマップ上の操作対象オブジェクトに対応する位置に写像する。当該写像は、例えば、データポイント群を回転移動及び/又はスライド移動等することで実現される。例えば、カメラの向きや、カメラと操作対象オブジェクトとの距離等に基づき移動内容が決定されてもよい。
なお、この写像においては、タッチパネル6A上で観測されたデータポイント群から算出される操作対象オブジェクトの制御内容と、写像後のデータポイント群から算出される操作対象オブジェクトの制御内容とが同一となるような工夫が必要となる。例えば、タッチパネル6A上で観測されたデータポイント群の状態(形状、向き等)と、2Dマップの座標系に写像後のデータポイント群の状態(形状、向き等)とが所定の対応関係(例えば一致)となっている必要がある。このような場合、データポイント群から算出されるベクトルの写像前後での同一性が確保されるため、このデータポイント群に基づく操作対象オブジェクト(プレイヤキャラクタ等)の制御内容の同一性も確保される。
ここで、当該写像の具体例を説明する。例えば、テンソルデータ生成部22は、3Dのゲーム空間のワールド座標系に写像されたデータポイント群を、操作対象オブジェクトのローカル座標系(操作対象オブジェクトの任意の位置を原点として相対的に算出される座標軸)に反映し、ローカル座標系において操作対象オブジェクトに対応する位置(操作対象オブジェクトの真上等)にデータポイント群を写像する。このワールド座標系からローカル座標系への写像処理transposeは、次の式(5)のように定義できる。
ここで、x及びyはワールド座標上の点のx座標及びy座標であり、x及びyはローカル座標上の点のx座標及びy座標である。写像処理transposeは、例えば、ゲームエンジンであるUnity(登録商標)で次のように実装することができる。
Step1: カメラの方向ベクトルを、ワールド座標xz平面上に射影し、さらに、 長さ1の単位ベクトルに正規化する(normalized関数の適用)
var cameraForward = Vector3.Scale(mainCamera.forward, new Vector3(1, 0, 1)).normalized;
なお、Vector3.Scale(mainCamera.forward, new Vector3(1, 0, 1))はY座標に0をかけておく。
Step2:データポイント群に基づき算出したベクトル(movingTo:右方向がx軸正方向、上方向がz軸正方向)を操作対象オブジェクトのローカル座標のxz平面上へ写像する。データポイント群に基づくベクトルの算出は、特許文献1に開示されている。
var move = transform.InverseTransformDirection(movingTo.z * cameraForward + movingTo.x * new Vector3(cameraForward.z, 0, -1 * cameraForward.x));
なお、new Vector3(cameraForward.z, 0, -1 * cameraForward.x) は cameraForward をxz平面上で-90度回転させ、上方向への指の操作がワールド座標の奥方向への操作に対応するようにする。
上記具体例によれば、データポイント群から算出されるベクトルは、写像前後で同一となるため、データポイント群から算出される角度と速度の値が写像前後で変化する不都合を抑制できる。
次に、処理2について説明する。処理1により、プレイヤ端末10毎、かつ、フレーム毎に、各フレームの時区間に各プレイヤ端末10のタッチパネル6Aで観測されたデータポイント群、及び、各データポイント群に基づき行動を制御される操作対象オブジェクトの位置を示すワールドフレーム行列Mが生成される。
処理2では、テンソルデータ生成部22は、同じlフレームの時区間において複数のプレイヤ端末10各々において観測されたデータポイント群、及び、各データポイント群に基づき行動を制御される操作対象オブジェクトの位置を示す複数のワールドフレーム行列Mを合成する。結果、そのフレームの時区間において複数のプレイヤ端末10各々において観測されたデータポイント群のすべて、及び、それらデータポイント群に基づき行動を制御されるすべての操作対象オブジェクの位置を示す1つのワールドフレーム行列M(タイミング毎行列データ)が生成される。テンソルデータ生成部22は、複数のフレーム各々に対応して当該処理を行うことで、複数のフレーム各々に対応したタイミング毎行列データを生成する。2つのワールドフレーム行列MとM´を合成する演算子は次の式(6)のように定義できる。
ここで、max(u,v)は、u及びvのうち大きい値を返す関数である。すなわち、式(6)の演算子は、完全に同じサイズの2つの行列が与えられたとき、同じ行及び列に対応する値のうちの大きい方を値とする新たな行列を生成するものである。なお、応用として、行列内の値をビットとしてとらえ、ビットORを算出する方法や、整数値の飽和演算付きの加算として実装する方法が考えられる。
処理3では、テンソルデータ生成部22は、複数のフレーム各々に対応して生成されたタイミング毎行列データを時間軸に沿って格納し、テンソルデータを生成する。
なお、ゲーム空間全体を1つのタイミング毎行列データで表現してもよいし、ゲーム空間全体を複数の区画に分割し、各区画を1つのタイミング毎行列データで表現してもよい。例えば、図8に示すように、ゲーム空間全体を有限個で正規化されたサイズの区画に分割してもよい。そして、区画ごとにタイミング毎行列データを生成してもよい。図9は、区画ごとに生成したタイミング毎行列データを時間軸に沿って格納したテンソルデータの概念を示す。
図4に戻り、学習データ生成部23は、テンソルデータ生成部22が生成したテンソルデータから、第Nのフレーム(第Nのタイミング)に対応したタイミング毎行列データと、第Nのフレームの後のフレームに対応したタイミング毎行列データとを対応付けた学習データを取り出す。例えば、学習データ生成部23は、テンソルデータから、第Nのフレームに対応したタイミング毎行列データと、第(N+1)のフレームに対応したタイミング毎行列データ乃至第(N+K)のフレーム(Kは2以上の整数)に対応したタイミング毎行列データ各々とを対応付けた学習データを取り出してもよい。学習データ生成部23は、取り出した学習データを記憶部21に記憶させる。
推定モデル生成部24は、学習データ生成部23が生成した学習データに基づく機械学習(敵対的生成ネットワーク(GAN)等)により、あるフレームに対応したタイミング毎行列データからその後のフレームに対応したタイミング毎行列データの推定結果を生成する推定モデルを生成する。そして、推定モデル生成部24は、生成した推定モデルを記憶部21に記憶させる。
ここで、図10を用いて、推定モデル生成部24が行う機械学習の概念を説明する。図10(A)及び(B)は、3Dのゲーム空間を俯瞰する2Dマップを示す。図10(A)は第Nのフレームの状態を示し、図10(B)はその後のフレームの状態を示す。図では3人の操作対象オブジェクトと、各フレームの時区間において各操作対象オブジェクトに対応して3つのプレイヤ端末10各々で観測されたデータポイント群とが示されている。データポイント群は、上述の手法で各操作対象オブジェクトの位置にマッピングされている。
図10(C)及び(D)は、図10(A)及び(B)各々のデータポイント群の状態を上述したタイミング毎行列データで表し、そのタイミング毎行列データの内容を図示したものである。表の1マスが、タイミング毎行列データの1つの成分pq、rに対応し、各マス目の状態により成分pq、rの値を表現している。そして、成分pq、rの値により、データポイント群の要素が位置するか否かを示している。
推定モデル生成部24は、学習データとして記憶されているタイミング毎行列データを例えば図10(C)及び(D)に示すような形式で図示し、それをビットマップ化し、得られた図面ファイルに基づき機械学習を行うことができる。
このように、本実施形態の学習プロセスは、2つのフレーム間の入力内容の変化(データポイント群の変化)を「パターンの変化(図10(C)→図10(D))」として表現し、それをニューラルネットワークに学習させる。結果、あるパターン(図10(C))が与えられた時に次のパターン(図10(D))を自動生成できるようになる。これは、あるフレームの入力内容から、それよりも後のフレームにおける入力内容を予測することを意味する。
本実施形態では、例えばデータポイント群の数を間引きながら機械学習を繰り返してもよい。このようにすれば、極めて少ないタッチデータのみをクライアント間で共有するだけで、高速かつ高精度に未来の状況を予測することができる。
GANを用いた学習を行う関数であるlearn関数は、ある特定の区画cに対応する学習データバケットBを受け取り、区画cにおける操作予測を行うモデルGを出力する関数であり、次の式(7)のように定義できる。
本システムが保有するすべてのバケットをBとすると、ある特定の区画cに対応する学習データバケットBは、次の式(8)のように定義できる。
ここで、Mは、区画cにおけるi番目のフレームのタイミング毎行列データである。learn関数は、MとMe+fの組をGANへの入力とする(fは1以上の整数)。
なお、Mから任意の数だけデータポイント群を間引いたM´を作成し、M´とMe+fの組をGANへの入力とすることもできる。これにより、より少ない数のデータポイント群から、未来のフレームにおける入力内容を推論できるようになる。
推定モデル生成部24により生成された推定モデル、すなわちあるフレームに対応するタイミング毎行列データを入力すると、それより後のフレームのタイミング毎行列データを推定する関数であるpredictは、次の式(9)のように定義できる。
ここで、Mは、区画cのあるフレームのタイミング毎行列データであり、nは予測する未来のフレーム番号であり、M´は、推定された「あるフレームからnフレーム先のフレーム」におけるタイミング毎行列データである。
図4に戻り、送信部25は、記憶部21に記憶されている推定モデルを複数のプレイヤ端末10に送信する。例えば、サーバ20は、複数の操作対象オブジェクト各々の位置を管理しておいてもよい。そして、送信部25は、各操作対象オブジェクトが存在する区画に対応する推定モデルを、各操作対象オブジェクトを制御するプレイヤ端末10に送信してもよい。
例えば、送信部25は、操作対象オブジェクトが第1の区画から第2の区画に移動した事実に応じて、第2の区画に対応した推定モデルを所定のプレイヤ端末10に送信してもよい。
その他、サーバ20は、上記推定モデルに基づき数フレーム先の入力内容を予測し、予測結果に基づき、数フレーム先における複数の操作対象オブジェクト各々の位置を予測してもよい。そして、送信部25は、操作対象オブジェクトが第1の区画から第2の区画に移動するという予測結果に応じて、第2の区画に対応した推定モデルを所定のプレイヤ端末10に送信してもよい。
「推定モデルを用いたゲームの制御」
図11に、プレイヤ端末10の機能ブロック図の一例を示す。図示するように、プレイヤ端末10は、記憶部11と、受付部12と、推定部13と、判断部14と、訂正情報送信部15と、訂正情報取得部16と、補正部17と、更新部18とを有する。
記憶部11は、サーバ20が送信した推定モデルを記憶する。また、記憶部11は、ゲームに関する各種情報を記憶する。例えば、記憶部11は、図12に示すように、複数の操作対象オブジェクト各々に対応した状態値を記憶する。複数の操作対象オブジェクトの各々は、複数のプレイヤ端末10の各々により行動を制御される。状態値は、ゲーム空間における位置や、ヒットポイント等であるが、これらに限定されない。プレイヤ端末10は、当該状態値に基づき、自端末のディスプレイに表示する画面を生成し、自端末のディスプレイに表示する。すなわち、プレイヤ端末10は、複数の操作対象オブジェクト各々を状態値で示される位置に配置したゲーム画面を生成し、自端末のディスプレイに表示する。
受付部12は、プレイヤ入力を受付ける。例えば、受付部12は、タッチパネル6Aを介したタッチ入力や、物理ボタン等を介した入力を受付ける。受付部12は、タッチパネル6Aで検出されるタッチポイントの値(スクリーン座標)を、例えばフレームレートのような一定の時区間ごとに区切って観測する。そして、受付部12は、各時区間に観測されたタッチポイントの値の集合(データポイント群)を、時区間毎に独立した配列としてバッファに格納する。
推定部13は、あるフレーム(あるタイミング)に対応して複数のプレイヤ端末10各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のフレーム(その後のタイミング)に対応したタイミング毎情報の推定結果を生成する推定モデルと、第1のフレーム(第1のタイミング)に対応したタイミング毎情報とに基づき、第1のフレーム(第1のタイミング)より後の第2のフレーム(第2のタイミング)に対応した推定結果を生成する。
推定部13が処理する推定モデルは、上述したサーバ20が生成した推定モデル、すなわちサーバ20から受信して記憶部11に記憶されている推定モデルである。
タイミング毎情報は、上述したタイミング毎行列データと同じ形式で、その時に実際にゲームに参加しているプレイヤ端末10各々があるフレームに対応して受付けたデータポイント群、及び、各データポイント群に基づき行動を制御される操作対象オブジェクトの位置を示す。「あるフレームに対応して受付けたデータポイント群」は、そのフレームにおける操作対象オブジェクトの制御のために受付けたデータポイント群である。
推定部13は、例えば、1フレームから十数フレーム先の推定結果を生成することができる。
なお、複数のプレイヤ端末10各々で実現された推定部13は、同一の推定モデルに基づき同一の推定結果を生成する。
判断部14は、第2のフレームに対応して受付部12が受付けたプレイヤ入力の内容(データポイント群)と、推定結果で示される第2のフレームに対応したプレイヤ入力の推定内容(データポイント群)とが一致するか判断する。なお、ここでの一致は、完全一致であってもよいし、予め定義された「多少のずれ」を許可してもよい。例えば、特許文献1(特許第6389581号公報)に開示された技術を用いてデータポイント群をベクトル化し、±1度を許可するといったことがあげられる。
訂正情報送信部15は、判断部14の判断結果が不一致である場合、受付部12が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する。例えば、訂正情報送信部15は、サーバ20に訂正情報を送信してもよい。この場合、サーバ20は、受信した訂正情報を他のプレイヤ端末10に送信する。その他、訂正情報送信部15は、サーバ20を介さず直接、他のプレイヤ端末10に訂正情報を送信してもよい。
訂正情報取得部16は、他のプレイヤ端末10が送信した訂正情報を取得する。
補正部17は、訂正情報取得部16が取得した訂正情報に基づき推定結果を補正する。訂正情報は、少なくとも、正しい入力内容と、その入力に基づき行動を制御される操作対象オブジェクトを特定するための情報を含む。
更新部18は、推定結果に基づき操作対象オブジェクトの状態値(図12参照)を更新する。更新部18は、補正部17により推定結果が補正された場合、補正後の推定結果又は訂正情報取得部16が取得した訂正情報に基づき、操作対象オブジェクトの状態値を更新することができる。また、更新部18は、受付部12が受付けたプレイヤ入力の内容に基づき、操作対象オブジェクトの状態値を更新することができる。なお、データポイント群から操作対象オブジェクトの制御内容(移動方向等)を決定する処理は特許文献1(特許第6389581号公報)に開示されているので、ここでの説明は省略する。
次に、図13及び図14のフローチャートを用いて、プレイヤ端末10の処理の流れの一例を説明する。図示しないが、例えば、プレイヤ端末10がサーバ20にログインし、ゲームに参加した直後に、そのプレイヤ端末10が制御する操作対象オブジェクトの初期位置等に基づき決定された推定モデルや、図12に示すような複数の操作対象オブジェクト各々に対応した状態値等が、サーバ20からそのプレイヤ端末10に送信される。プレイヤ端末10は、受信した情報を記憶部11に記憶させる。そして、プレイヤ端末10は以下の処理を行う。
まず、図13に示すように、プレイヤ端末10は、あるフレームに対応したタイミング毎情報を取得する(S101)。ゲームに参加した直後は、プレイヤ端末10は、サーバ20からタイミング毎情報を取得してもよい。
そして、プレイヤ端末10の推定部13は、記憶部11に記憶されている推定モデルと、S101で取得されたタイミング毎情報とに基づき、その後(例えば、1〜15フレーム先)のフレーム各々に対応したタイミング毎情報の推定結果を生成する(S102)。そして、推定部13は、生成した推定結果を記憶部11に記憶する(S103)。その後、プレイヤ端末10は、S101に戻り、タイミング毎情報の推定結果の生成、及び、記憶を繰り返す。
また、図14に示すように、判断部14は、あるフレームに対応したタイミング毎情報の推定結果を記憶部11から取得するとともに(S201)、そのフレームに対応して受付部12が受付けたプレイヤ入力の内容を示す情報を取得すると(S202)、そのタイミングに対応して受付けたプレイヤ入力の内容と、推定結果で示されるそのタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する(S203)。なお、S201及びS202の処理順はこれに限定されない。
そして、一致しない場合(S204のNo)、補正部17は、S202で取得されたプレイヤ入力の内容を示す情報に基づき、S201で取得した推定結果を補正する(S205)。また、訂正情報送信部15は、受付部12が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する(S206)。なお、S205及びS206の処理順はこれに限定されない。
S204でYesの場合、また、S206の後に、S207が実行される。S207では、そのフレームに対応して他のプレイヤ端末10が送信した訂正情報を、訂正情報取得部16が取得したか否かを判断する。
取得している場合(S207のYes)、補正部17は、取得された訂正情報に基づき、S201で取得された推定結果を補正する(S208)。
S207でYesの場合、また、S208の後に、S209が実行される。S209では、更新部18は、S201で取得された推定結果、S202で取得されたプレイヤ入力の内容を示す情報、S205及び/又はS208で補正された後の推定結果、及び、他のプレイヤ端末10が送信した訂正情報の中の少なくとも1つに基づき、記憶部11に記憶されている複数の操作対象オブジェクト各々に対応した状態値(図12参照)を更新する。そして、プレイヤ端末10は、更新後の状態値に基づきディスプレイにおけるゲーム画面を更新する。
その後のS210では、S205及びS208の少なくとも一方で補正部17により推定結果が補正された場合、推定部13は補正後の推定結果を取得する。一方、補正されなかった場合、推定部13は、補正されなかった推定結果を取得する。推定部13は、取得した補正後の推定結果又は補正されなかった推定結果を、あるフレームに対応したタイミング毎情報としてS101で取得し、そのタイミング毎情報に基づき新たな推定結果を生成する(S102)。
<変形例>
次に、変形例を説明する。タイミング毎行列データは、プレイヤ入力の内容及び操作対象オブジェクトのゲーム空間内の位置に加えて、プレイヤ入力の内容に影響し得るその他の情報を示してもよい。例えば、タイミング毎行列データは、操作対象オブジェクトの種類や状態(ヒットポイント、レベル、攻撃力、防御力等)等の特性、非操作対象オブジェクト(コンピュータが行動を制御するキャラクタ、山、海、建物等の移動の妨げとなる障害物等)のゲーム空間内の位置、非操作対象オブジェクトの種類や状態(ヒットポイント、レベル、攻撃力、防御力等)等の特性等をさらに示してもよい。タイミング毎行列データの成分pq、rの値により、これらの情報を示すことができる。
なお、タイミング毎行列データを図示する際には、例えば図15に示すように、色(図15(C))、明暗、所定位置への点の追加(図15(D))等により、成分pq、rの値の違いを表現することができる。
このような変形例によれば、プレイヤ入力の内容に影響し得る多種多様な情報を考慮して、数フレーム先の入力内容を推定することが可能となる。結果、推定精度が向上する。
他の変形例を説明する。テンソルデータ生成部22は、データポイント群に代えて、データポイント群から算出されるベクトルをエンコードしたエンコード情報を、操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを所定時間毎に生成してもよい。エンコード情報は、例えば、図16に示すように、凸の向きや大きさでデータポイント群から算出されるベクトルを示すものであってもよい。なお、上記変形例同様、色、明暗、所定位置への点の追加等により、上述した各種情報が付与されたエンコード情報がマッピングされてもよい。
ゲーム内のステータス情報(操作対象オブジェクトの種類や状態(ヒットポイント、レベル、攻撃力、防御力等)等の特性等)のエンコードを行う関数encodeは、次の式(10)のように定義できる。
ここで、Sはゲーム内のステータス情報であり、Mは、あるプレイヤ端末10のあるフレームに対応するワールドフレーム行列である。
<作用効果>
次に、本実施形態の作用効果を説明する。各プレイヤ端末10が受付けた入力内容のすべてを他のプレイヤ端末10に送信する方式の場合、例えば30FPSを実現するためには「30Hz(1秒間に30往復)」のUDPパケットを送受信する必要がある。これに対し、各プレイヤ端末10が受付けた入力内容の内予測がはずれたもののみを他のプレイヤ端末10に送信する本実施形態の方式の場合、例えば30FPSを実現するためには「30Hz以下」のUDPパケットを送受信すればよい。予測が100%外れた場合に30Hzとなり、予測が少しでも当たれば30FPS未満となる。なお、予測が100%外れ続けることは稀であり、ほとんどあり得ない。このような本実施形態のゲームシステムによれば、高効率・低遅延でパケットロスに強いマルチプレイ通信方式が実現される。
本実施形態の最大の優位性は、既存のゲーム内容を変更することなく、データ通信量を削減できる「非破壊性」である。この非破壊性に加え、本実施形態は次の利点を有する。
・高いパケット削減率:通信頻度、および、通信量そのものを減らすことができるため、高いアクション性や多人数プレイを、パケットロスが相対的に多く帯域に制限の多いスマートフォン用MMO等で実現できる。
・パケットロスに強い:パケットそのものを送る頻度を下げることができるため、パケットロスに本質的に強い。さらに、本実施形態によりネットワーク帯域に余裕が生じれば、パケットロス対策として通信頻度を上げたり、あるいは、1度の通信で前のアクションの履歴を送信するようなパケットロスへの対策を容易に導入できたりする。
・チート対策への応用:推定モデルに基づく予測が外れた差分パケットだけを送るというモデルなので、チート防止や継続的な機械学習による長期・大規模運用に適した特性を生み出せる。
・デルタ圧縮と無矛盾に統合可能:ステータス情報の送受信に適したデルタ圧縮をステータス情報の送受信に用い、移動情報の圧縮に適した本実施形態を移動情報の圧縮に用いるような、適材適所の運用を実現可能である。
また、本実施形態は、直感的には、「通信していない内容を自動的に補完するための数フレーム分の入力内容を格納している通信バッファ」として使用することができる技術である。したがって、Photonやmonobitなどの既存の通信ミドルウェアを利用する上位層として実装できる。さらに、既存のデルタ圧縮によるステータス情報の圧縮と無矛盾に組み合わせることができる。
なお、本明細書において、「取得」とは、ユーザ入力に基づき、又は、プログラムの指示に基づき、「自装置が他の装置や記憶媒体に格納されているデータを取りに行くこと(能動的な取得)」、たとえば、他の装置にリクエストまたは問い合わせして受信すること、他の装置や記憶媒体にアクセスして読出すこと等、および、ユーザ入力に基づき、又は、プログラムの指示に基づき、「自装置に他の装置から出力されるデータを入力すること(受動的な取得)」、たとえば、外部装置から送信されたデータを受信できる状態で待機しており、外部装置から送信されたデータを受信すること、外部装置から配信(または、送信、プッシュ通知等)されるデータを受信すること、また、受信したデータまたは情報の中から選択して取得すること、及び、「データを編集(テキスト化、データの並び替え、一部データの抽出、ファイル形式の変更等)などして新たなデータを生成し、当該新たなデータを取得すること」の少なくともいずれか一方を含む。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
1. 直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータを、
複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部、
プレイヤ入力を受付ける受付部、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部、
前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部、
前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部、
他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部、
前記訂正情報に基づき前記推定結果を補正する補正部、及び、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部、
として機能させるプログラム。
2. 1に記載のプログラムにおいて、
前記更新部は、前記補正部により前記推定結果が補正された場合、補正後の前記推定結果又は前記訂正情報に基づき前記操作対象オブジェクトの前記状態値を更新するプログラム。
3. 1又は2に記載のプログラムにおいて、
前記推定部は、
前記補正部により前記推定結果が補正された場合、補正後の前記推定結果と前記推定モデルとに基づき新たな前記推定結果を生成し、
前記補正部により前記推定結果が補正されなかった場合、補正されなかった前記推定結果と前記推定モデルとに基づき新たな前記推定結果を生成するプログラム。
4. 1から3のいずれかに記載のプログラムにおいて、
前記タイミング毎情報は、
行及び列がゲーム空間のワールド座標系におけるx軸及びy軸に対応し、第q行目かつ第r列目の成分の値で前記ワールド座標系における座標(x,y)の状態を示す行列データで、前記ゲーム空間における前記操作対象オブジェクト各々の位置及び前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容を示すプログラム。
5. 4に記載のプログラムにおいて、
前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容として、前記プレイヤ端末のタッチパネルで検出されたスクリーン座標上のデータポイント群を示すプログラム。
6. 4に記載のプログラムにおいて、
前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容として、前記プレイヤ端末のタッチパネルで検出されたスクリーン座標上のデータポイント群から算出されるベクトルをエンコードした情報を示すプログラム。
7. 4から6のいずれかに記載のプログラムにおいて、
前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容を示す情報を、前記操作対象オブジェクト各々の位置に対応付けてマッピングした前記ワールド座標系の状態を示すプログラム。
8. 4から7のいずれかに記載のプログラムにおいて、
前記推定モデルは、
前記行列データを時間軸に沿って格納したテンソルデータから取り出された第Nのタイミングに対応した前記行列データと、第Nのタイミングの後のタイミングに対応した前記行列データとを対応付けた学習データに基づく機械学習で生成されるプログラム。
9. 8に記載のプログラムにおいて、
前記推定モデルは、
前記行列データを時間軸に沿って格納したテンソルデータから取り出された第Nのタイミングに対応した前記行列データと、第(N+1)のタイミングに対応した前記行列データ乃至第(N+K)のタイミング(Kは2以上の整数)に対応した前記行列データ各々とを対応付けた学習データに基づく機械学習で生成されているプログラム。
10. 1から9のいずれかに記載のプログラムにおいて、
前記タイミング毎情報は、プレイヤ入力の内容に加えて、ゲーム空間における前記操作対象オブジェクトの位置、前記ゲーム空間における非操作対象オブジェクトの位置、前記操作対象オブジェクトの特性、及び、前記非操作対象オブジェクトの特性の中の少なくとも1つをさらに示すプログラム。
11. 1から10のいずれかに記載のプログラムにおいて、
複数の前記プレイヤ端末各々で実現された前記推定部は、同一の前記推定モデルに基づき前記推定結果を生成するプログラム。
12. 所定時間毎の複数のタイミング各々に対応して複数のプレイヤ端末各々のタッチパネルで検出されたスクリーン座標上のタッチ位置を示すデータポイント群を、操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するテンソルデータ生成部と、
前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第Nのタイミングの後のタイミングに対応した前記行列データとを対応付けた学習データを取り出す学習データ生成部と、
前記学習データに基づく機械学習により、あるタイミングに対応した前記行列データからその後のタイミングに対応した前記行列データの推定結果を生成する推定モデルを生成する推定モデル生成部と、
を有するサーバ。
13. 12に記載のサーバにおいて、
前記学習データ生成部は、前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第(N+1)のタイミングに対応した前記行列データ乃至第(N+K)のタイミング(Kは2以上の整数)に対応した前記行列データ各々とを対応付けた学習データを取り出すサーバ。
14. 12又は13に記載のサーバにおいて、
前記テンソルデータ生成部は、前記データポイント群に代えて、前記データポイント群から算出されるベクトルをエンコードしたエンコード情報を、前記操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するサーバ。
15. 直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータが、
複数の操作対象オブジェクト各々に対応した状態値を記憶し、
プレイヤ入力を受付け、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成し、
前記第2のタイミングに対応して受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断し、
判断結果が不一致である場合、受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信し、
他の前記プレイヤ端末が送信した前記訂正情報を取得し、
前記訂正情報に基づき前記推定結果を補正し、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する処理方法。
16. 複数のプレイヤ端末と、サーバとを有し、
前記プレイヤ端末は、
複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部と、
プレイヤ入力を受付ける受付部と、
あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部と、
前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部と、
前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部と、
他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部と、
前記訂正情報に基づき前記推定結果を補正する補正部と、
前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部と、
を有し、
前記サーバは、前記プレイヤ端末から前記訂正情報を受信すると、受信した前記訂正情報を他の前記プレイヤ端末に送信する送信部を有する処理システム。
17. 16に記載の処理システムにおいて、
前記サーバは、
所定時間毎の複数のタイミング各々に対応して複数のプレイヤ端末各々のタッチパネルで検出されたスクリーン座標上のタッチ位置を示すデータポイント群を、前記操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するテンソルデータ生成部と、
前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第Nのタイミングの直後の第(N+1)のタイミングに対応した前記行列データとを対応付けた学習データを取り出す学習データ生成部と、
前記学習データに基づく機械学習により、あるタイミングに対応した前記行列データからその後のタイミングに対応した前記行列データの推定結果を生成する推定モデルを生成する推定モデル生成部と、
をさらに有し、
前記送信部は、同一の前記推定モデルを複数の前記プレイヤ端末に送信する処理システム。
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
1A プロセッサ
2A メモリ
3A 入出力I/F
4A 周辺回路
5A バス
6A タッチパネル
7A 通信部
10 プレイヤ端末
11 記憶部
12 受付部
13 推定部
14 判断部
15 訂正情報送信部
16 訂正情報取得部
17 補正部
18 更新部
20 サーバ
21 記憶部
22 テンソルデータ生成部
23 学習データ生成部
24 推定モデル生成部
25 送信部
30 通信ネットワーク

Claims (17)

  1. 直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータを、
    複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部、
    プレイヤ入力を受付ける受付部、
    あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部、
    前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部、
    前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部、
    他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部、
    前記訂正情報に基づき前記推定結果を補正する補正部、及び、
    前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部、
    として機能させるプログラム。
  2. 請求項1に記載のプログラムにおいて、
    前記更新部は、前記補正部により前記推定結果が補正された場合、補正後の前記推定結果又は前記訂正情報に基づき前記操作対象オブジェクトの前記状態値を更新するプログラム。
  3. 請求項1又は2に記載のプログラムにおいて、
    前記推定部は、
    前記補正部により前記推定結果が補正された場合、補正後の前記推定結果と前記推定モデルとに基づき新たな前記推定結果を生成し、
    前記補正部により前記推定結果が補正されなかった場合、補正されなかった前記推定結果と前記推定モデルとに基づき新たな前記推定結果を生成するプログラム。
  4. 請求項1から3のいずれか1項に記載のプログラムにおいて、
    前記タイミング毎情報は、
    行及び列がゲーム空間のワールド座標系におけるx軸及びy軸に対応し、第q行目かつ第r列目の成分の値で前記ワールド座標系における座標(x,y)の状態を示す行列データで、前記ゲーム空間における前記操作対象オブジェクト各々の位置及び前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容を示すプログラム。
  5. 請求項4に記載のプログラムにおいて、
    前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容として、前記プレイヤ端末のタッチパネルで検出されたスクリーン座標上のデータポイント群を示すプログラム。
  6. 請求項4に記載のプログラムにおいて、
    前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容として、前記プレイヤ端末のタッチパネルで検出されたスクリーン座標上のデータポイント群から算出されるベクトルをエンコードした情報を示すプログラム。
  7. 請求項4から6のいずれか1項に記載のプログラムにおいて、
    前記行列データは、前記操作対象オブジェクト各々に対応してなされたプレイヤ入力の内容を示す情報を、前記操作対象オブジェクト各々の位置に対応付けてマッピングした前記ワールド座標系の状態を示すプログラム。
  8. 請求項4から7のいずれか1項に記載のプログラムにおいて、
    前記推定モデルは、
    前記行列データを時間軸に沿って格納したテンソルデータから取り出された第Nのタイミングに対応した前記行列データと、第Nのタイミングの後のタイミングに対応した前記行列データとを対応付けた学習データに基づく機械学習で生成されるプログラム。
  9. 請求項8に記載のプログラムにおいて、
    前記推定モデルは、
    前記行列データを時間軸に沿って格納したテンソルデータから取り出された第Nのタイミングに対応した前記行列データと、第(N+1)のタイミングに対応した前記行列データ乃至第(N+K)のタイミング(Kは2以上の整数)に対応した前記行列データ各々とを対応付けた学習データに基づく機械学習で生成されているプログラム。
  10. 請求項1から9のいずれか1項に記載のプログラムにおいて、
    前記タイミング毎情報は、プレイヤ入力の内容に加えて、ゲーム空間における前記操作対象オブジェクトの位置、前記ゲーム空間における非操作対象オブジェクトの位置、前記操作対象オブジェクトの特性、及び、前記非操作対象オブジェクトの特性の中の少なくとも1つをさらに示すプログラム。
  11. 請求項1から10のいずれか1項に記載のプログラムにおいて、
    複数の前記プレイヤ端末各々で実現された前記推定部は、同一の前記推定モデルに基づき前記推定結果を生成するプログラム。
  12. 所定時間毎の複数のタイミング各々に対応して複数のプレイヤ端末各々のタッチパネルで検出されたスクリーン座標上のタッチ位置を示すデータポイント群を、操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するテンソルデータ生成部と、
    前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第Nのタイミングの後のタイミングに対応した前記行列データとを対応付けた学習データを取り出す学習データ生成部と、
    前記学習データに基づく機械学習により、あるタイミングに対応した前記行列データからその後のタイミングに対応した前記行列データの推定結果を生成する推定モデルを生成する推定モデル生成部と、
    を有するサーバ。
  13. 請求項12に記載のサーバにおいて、
    前記学習データ生成部は、前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第(N+1)のタイミングに対応した前記行列データ乃至第(N+K)のタイミング(Kは2以上の整数)に対応した前記行列データ各々とを対応付けた学習データを取り出すサーバ。
  14. 請求項12又は13に記載のサーバにおいて、
    前記テンソルデータ生成部は、前記データポイント群に代えて、前記データポイント群から算出されるベクトルをエンコードしたエンコード情報を、前記操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するサーバ。
  15. 直接又はサーバを介して互いにデータ通信する複数のプレイヤ端末各々のコンピュータが、
    複数の操作対象オブジェクト各々に対応した状態値を記憶し、
    プレイヤ入力を受付け、
    あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成し、
    前記第2のタイミングに対応して受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断し、
    判断結果が不一致である場合、受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信し、
    他の前記プレイヤ端末が送信した前記訂正情報を取得し、
    前記訂正情報に基づき前記推定結果を補正し、
    前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する処理方法。
  16. 複数のプレイヤ端末と、サーバとを有し、
    前記プレイヤ端末は、
    複数の操作対象オブジェクト各々に対応した状態値を記憶する記憶部と、
    プレイヤ入力を受付ける受付部と、
    あるタイミングに対応して複数の前記プレイヤ端末各々が受付けたプレイヤ入力の内容を示すタイミング毎情報からその後のタイミングに対応した前記タイミング毎情報の推定結果を生成する推定モデルと、第1のタイミングに対応した前記タイミング毎情報とに基づき、前記第1のタイミングより後の第2のタイミングに対応した前記推定結果を生成する推定部と、
    前記第2のタイミングに対応して前記受付部が受付けたプレイヤ入力の内容と、前記推定結果で示される前記第2のタイミングに対応したプレイヤ入力の推定内容とが一致するか判断する判断部と、
    前記判断部の判断結果が不一致である場合、前記受付部が受付けたプレイヤ入力の内容を示す訂正情報を外部装置に送信する訂正情報送信部と、
    他の前記プレイヤ端末が送信した前記訂正情報を取得する訂正情報取得部と、
    前記訂正情報に基づき前記推定結果を補正する補正部と、
    前記推定結果に基づき前記操作対象オブジェクトの前記状態値を更新する更新部と、
    を有し、
    前記サーバは、前記プレイヤ端末から前記訂正情報を受信すると、受信した前記訂正情報を他の前記プレイヤ端末に送信する送信部を有する処理システム。
  17. 請求項16に記載の処理システムにおいて、
    前記サーバは、
    所定時間毎の複数のタイミング各々に対応して複数のプレイヤ端末各々のタッチパネルで検出されたスクリーン座標上のタッチ位置を示すデータポイント群を、前記操作対象オブジェクト各々の位置に対応付けてマッピングしたワールド座標系の状態を示す行列データを前記所定時間毎に生成し、前記行列データを時間軸に沿って格納したテンソルデータを生成するテンソルデータ生成部と、
    前記テンソルデータから、第Nのタイミングに対応した前記行列データと、第Nのタイミングの直後の第(N+1)のタイミングに対応した前記行列データとを対応付けた学習データを取り出す学習データ生成部と、
    前記学習データに基づく機械学習により、あるタイミングに対応した前記行列データからその後のタイミングに対応した前記行列データの推定結果を生成する推定モデルを生成する推定モデル生成部と、
    をさらに有し、
    前記送信部は、同一の前記推定モデルを複数の前記プレイヤ端末に送信する処理システム。
JP2019222683A 2019-12-10 2019-12-10 サーバ、処理システム、処理方法及びプログラム Active JP6748281B1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019222683A JP6748281B1 (ja) 2019-12-10 2019-12-10 サーバ、処理システム、処理方法及びプログラム
CN202080085574.7A CN114845789A (zh) 2019-12-10 2020-12-07 服务器、处理系统、处理方法和程序
PCT/JP2020/045411 WO2021117660A1 (ja) 2019-12-10 2020-12-07 サーバ、処理システム、処理方法及びプログラム
US17/836,324 US20220297001A1 (en) 2019-12-10 2022-06-09 Server, processing system, processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019222683A JP6748281B1 (ja) 2019-12-10 2019-12-10 サーバ、処理システム、処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP6748281B1 true JP6748281B1 (ja) 2020-08-26
JP2021090601A JP2021090601A (ja) 2021-06-17

Family

ID=72146247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019222683A Active JP6748281B1 (ja) 2019-12-10 2019-12-10 サーバ、処理システム、処理方法及びプログラム

Country Status (4)

Country Link
US (1) US20220297001A1 (ja)
JP (1) JP6748281B1 (ja)
CN (1) CN114845789A (ja)
WO (1) WO2021117660A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112657181A (zh) * 2020-12-21 2021-04-16 北京像素软件科技股份有限公司 状态同步方法和装置
JP7021382B1 (ja) 2021-04-19 2022-02-16 株式会社Cygames ユーザが選択するアクションを予測するための学習済みモデルを生成するための方法等

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0870268A2 (en) * 1996-10-01 1998-10-14 Koninklijke Philips Electronics N.V. Latency effect in multi-player video game reduced by surrogate agent
US8142289B2 (en) * 2006-06-30 2012-03-27 Sony Computer Entertainment America Llc Dead reckoning in a gaming environment
US20100325255A1 (en) * 2007-04-05 2010-12-23 Gene Cheung Data transmission system and method
JP2013127683A (ja) * 2011-12-16 2013-06-27 Namco Bandai Games Inc プログラム、情報記憶媒体、端末、サーバ及びネットワークシステム
CN104081321A (zh) * 2012-02-01 2014-10-01 约瑟夫·米兹腊希 改善在线游戏的预测的方法与系统
JP5906345B1 (ja) * 2015-08-05 2016-04-20 株式会社Cygames 操作履歴に基づいてタッチ対象を予測するプログラム、電子装置、システム及び制御方法
JP6438612B1 (ja) * 2018-03-20 2018-12-19 株式会社Cygames ゲームプログラムを検査するためのシステム、方法、プログラム、機械学習支援装置、及びデータ構造
JP6389581B1 (ja) * 2018-05-16 2018-09-12 株式会社Cygames プログラム、電子装置、及び方法
US11717748B2 (en) * 2019-11-19 2023-08-08 Valve Corporation Latency compensation using machine-learned prediction of user input

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112657181A (zh) * 2020-12-21 2021-04-16 北京像素软件科技股份有限公司 状态同步方法和装置
JP7021382B1 (ja) 2021-04-19 2022-02-16 株式会社Cygames ユーザが選択するアクションを予測するための学習済みモデルを生成するための方法等
WO2022224932A1 (ja) * 2021-04-19 2022-10-27 株式会社Cygames ユーザが選択するアクションを予測するための学習済みモデルを生成するための方法等
JP2022164964A (ja) * 2021-04-19 2022-10-31 株式会社Cygames ユーザが選択するアクションを予測するための学習済みモデルを生成するための方法等

Also Published As

Publication number Publication date
JP2021090601A (ja) 2021-06-17
CN114845789A (zh) 2022-08-02
WO2021117660A1 (ja) 2021-06-17
US20220297001A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
US11446582B2 (en) System and method for streaming game sessions to third party gaming consoles
EP3760287B1 (en) Method and device for generating video frames
KR102050934B1 (ko) 정보 처리 방법, 단말, 및 컴퓨터 저장 매체
KR101171409B1 (ko) 정보 처리 장치, 데이터 처리 방법, 및 기록매체
US20220297001A1 (en) Server, processing system, processing method, and program
CN109413480A (zh) 画面处理方法、装置、终端及存储介质
JP2022554069A (ja) データ処理方法、装置、コンピュータデバイスおよびコンピュータプログラム
CN106817508B (zh) 一种同步对象确定方法、装置和系统
US10888771B2 (en) Method and device for object pointing in virtual reality (VR) scene, and VR apparatus
US20120059783A1 (en) Minimizing latency in network program through transfer of authority over program assets
US12002139B2 (en) Robust facial animation from video using neural networks
US9433863B2 (en) Video processing using concurrent outcome simulation threads
CN108646917B (zh) 智能设备控制方法及装置、电子设备和介质
US20230271084A1 (en) Method of displaying shooting for virtual firearm, apparatus, and computer-readable storage medium
KR20230053719A (ko) 멀티플레이어 게임에서 장거리 객체의 타겟팅 개선
CN116196611A (zh) 基于挥手动作的体感游戏方法
US10834561B2 (en) Smart hardware operation method and apparatus
JP2020115981A (ja) ビデオゲーム処理プログラム、ビデオゲーム処理装置、ビデオゲーム処理方法及び学習用プログラム
KR20200054554A (ko) 안정적인 다중 접속을 위한 가상현실게임 운용 시스템 및 방법
CN113559500B (zh) 动作数据的生成方法、装置、电子设备及存储介质
WO2023168653A1 (zh) 用于虚拟环境的模型训练方法、介质、电子设备
WO2024055811A1 (zh) 消息显示方法、装置、设备、介质及程序产品
US20240147178A1 (en) Distributed processing of sounds in virtual environments
CN118265561A (en) Model training method, medium and electronic device for virtual environment
KR20210130467A (ko) 레이턴시 보상 방법 및 보상 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200327

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200327

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200612

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: 20200707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200806

R150 Certificate of patent or registration of utility model

Ref document number: 6748281

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