CN117980045A - 减少防作弊数据流中的延迟 - Google Patents
减少防作弊数据流中的延迟 Download PDFInfo
- Publication number
- CN117980045A CN117980045A CN202280062078.9A CN202280062078A CN117980045A CN 117980045 A CN117980045 A CN 117980045A CN 202280062078 A CN202280062078 A CN 202280062078A CN 117980045 A CN117980045 A CN 117980045A
- Authority
- CN
- China
- Prior art keywords
- data
- game
- player
- nodes
- metrics
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000000694 effects Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 21
- 238000013500 data storage Methods 0.000 claims description 13
- 230000009471 action Effects 0.000 abstract description 39
- 230000008569 process Effects 0.000 description 14
- 230000000875 corresponding effect Effects 0.000 description 13
- 230000006399 behavior Effects 0.000 description 9
- 238000013480 data collection Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013523 data management Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000004807 localization Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001953 sensory effect Effects 0.000 description 2
- 244000025254 Cannabis sativa Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004567 concrete Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/75—Enforcing rules, e.g. detecting foul play or generating lists of cheating players
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/216—Input arrangements for video game devices characterised by their sensors, purposes or types using geographical information, e.g. location of the game device or player using GPS
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/73—Authorising game programs or game devices, e.g. checking authenticity
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/85—Providing additional services to players
- A63F13/86—Watching games played by other players
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5546—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5586—Details of game data or player data management for enforcing rights or rules, e.g. to prevent foul play
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Environmental & Geological Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本文中描述了用于生成和存储度量的系统和方法。特别地,游戏服务器可以从经由网络连接到游戏服务器的一个或多个客户端设备接收游戏活动数据。游戏服务器将活动数据发送到防作弊服务器,防作弊服务器使用一个或多个节点来各自计算活动数据的一部分以生成一个或多个度量。度量可以指示数据是否指示平行现实游戏内的作弊行为。节点使用准备好的插入语句将其相应生成度量添加到关系数据库中。如果度量指示数据内表现出作弊行为,则防作弊服务器可以指示游戏服务器针对一个或多个客户端设备采取动作。
Description
相关申请的交叉引用
本申请根据《美国法典》第35卷第119(e)节要求于2021年7月16日提交的题为“Reducing Latency In Anticheat Dataflow”的美国临时专利申请序列号63/222,919的优先权,该申请通过引用并入本文。
技术领域
本公开涉及数据处理,并且特别地涉及在预定集合中的节点处处理数据并且经由节点存储数据。
背景技术
计算机网络是交换数据的相互连接的计算设备集合。可以针对多个应用(包括增强现实应用)在计算设备与一个或多个服务器之间进行数据交换,其中高延迟可能影响用户使用增强现实应用的体验。一个或多个服务器可能需要接收大量数据,并且基于应用在给定时间段内要使用的数据来计算度量。通常,一个或多个服务器在计算中使用组合器,这防止一个或多个服务器能够在所有计算完成之前存储数据和度量(或将数据和度量发送到一个或多个计算设备)。此外,一个或多个服务器可以将数据存储在具有有限数据流的数据库中,或者以其他方式使用具有速率限制的接口(例如,应用编程接口)的数据。因此,在数据生成与相关度量的计算之间可能存在显著滞后,这可以对依赖于这些度量的应用的性能不利。因此,需要一种用于以减少的延迟计算度量并且存储数据的系统。
发明内容
存在各种应用,期望在有限时间段内处理和存储大量数据。例如,在平行现实游戏中,反作弊服务器可能只有有限的时间窗口(例如,三十分钟或更短)来处理来自游戏服务器的阈值批量(例如,一小时)的玩家活动数据以标识指示作弊的活动数据。如果防作弊服务器处理数据的时间比这长,则处理可能要等到下一批数据可用之后才能完成。因此,防作弊服务器可能在处理方面落后,或者可能跳过一些活动数据,使其无法进行分析。使用现有技术,防作弊服务器可能需要等待直到接收到所有数据才进行处理,并且在存储经处理的数据或将其传递给系统以采取动作之前完成所有处理。
这一问题和其他问题可以通过对节点进行并行化来解决,以便在处理期间独立计算和存储度量。如果用于存储度量的数据库具有可以一次写入数据库的节点数目的流限制,则可以通过在独立节点处并行处理数据来减少延迟,使得每个节点在其完成处理时而不是在所有节点都完成处理时将数据写入数据库。
在各种实施例中,一种处理数据的方法包括从一个或多个客户端设备接收数据的防作弊服务器。防作弊服务器的数据接收模块将数据广播到预定节点集合,该预定节点集合可以被包括在防作弊服务器中或者在防作弊服务器外部。在一些实施例中,数据接收模块可以使用combine.globally.withfanout来广播数据。每个节点可以处理其接收的数据以生成一个或多个度量,而无需等待整个数据集被接收。每个节点可以使用准备好的插入语句写入关系数据库。在一些实施例中,关系数据库可以是PostgreSQL。
在一些实施例中,数据是平行现实游戏玩家的活动数据,该数据被处理以标识潜在的作弊行为。防作弊服务器通过经由范围扫描来访问压缩数据存储系统(例如,BigTable)来取回针对平行现实游戏玩家的标识符列表。分析活动数据以根据与玩家相关联的活动数据计算一个或多个度量,该度量指示该玩家是否可能作弊(例如,欺骗其位置)。防作弊服务器可以取回与标识符列表中的标识符相关联的活动数据。防作弊服务器在每个节点处计算数据的一部分以生成一个或多个度量。度量可以指示数据是否指示玩家在平行现实游戏期间执行的作弊行为。
附图说明
图1是根据一个实施例的适合于生成和存储针对平行现实游戏的度量的联网计算环境的框图。
图2是示出根据一个实施例的客户端设备的框图。
图3是示出根据一个实施例的游戏服务器的框图。
图4是示出根据一个实施例的防作弊服务器的框图。
图5是根据一个实施例的用于将度量添加到关系数据库中的过程的流程图。
图6示出了根据一个实施例的适合在图1的联网计算环境中使用的示例计算机系统。
图7描绘了根据一个实施例的具有与真实世界平行的地理位置的虚拟世界的表示。
图8描绘了根据一个实施例的平行现实游戏的示例性游戏界面。
具体实施方式
附图和以下描述仅通过举例的方式描述某些实施例。本领域技术人员将从以下描述中认识到,在不偏离所描述的原理的情况下,可以采用结构和方法的替代实施例。在可行的情况下,在图中使用相似或类似的附图标记来指示相似或类似的功能。如果元素共享公共数字,后面跟着不同字母,则表示这些元素相似或相同。除非上下文另有指示,否则单独提及数字通常指代这样的元素中的任何一个或任何组合。
在平行现实游戏的上下文中描述了各种实施例,该游戏包括虚拟世界地理位置中的增强现实内容,该虚拟世界地理位置与真实世界地理位置的至少一部分平行,使得玩家在真实世界中的移动和动作影响虚拟世界中的动作(示例平行现实游戏参考图7-图8进一步描述)。所描述的主题适用于需要生成和存储度量的其他情况。此外,基于计算机的系统的固有灵活性允许在系统的组件之间进行任务和功能的各种可能配置、组合和划分。
示例计算环境
图1示出了根据一个实施例的用于游戏服务器130的环境100(本文中也称为计算机网络)。为了清楚起见,该图使用方块图说明了一个简化示例。环境100包括三个客户端设备110、网络120、游戏服务器130和防作弊服务器140。环境100包括客户端服务器架构,其中游戏服务器130通过网络120与客户端设备10通信,以向客户端设备110处的玩家提供一个或多个平行现实游戏。在其他实施例中,环境100可以包括更少、更多或其他组件,诸如赞助商/广告商系统或商业系统、附加客户端设备110、网络120、游戏服务器130、防作弊服务器140或其他网络节点。此外,组件的功能可以以与下面描述的不同的方式来分布。
联网计算环境100提供了虚拟世界中玩家的交互,该虚拟世界具有与真实世界平行的地理位置。特别地,真实世界中的地理区域可以直接链接或映射到虚拟世界中的对应区域。玩家可以通过移动到真实世界中的各种地理位置来在虚拟世界中移动。例如,玩家在真实世界中的位置可以被跟踪并且用于更新玩家在虚拟世界中的位置。通常,玩家在真实世界中的位置是通过找到客户端设备110的位置来确定的,玩家通过客户端设备110与虚拟世界进行交互,并且假定玩家处于相同(或近似相同)的位置。例如,在各种实施例中,如果玩家在真实世界中的位置在与虚拟元素在虚拟世界中的虚拟位置相对应的真实世界位置的阈值距离(例如,十米、二十米等)内,则玩家可以与虚拟元素交互。为了方便起见,参考“玩家的位置”来描述各种实施例,但是本领域技术人员将理解,这样的参考可以指代玩家的客户端设备110的位置。
客户端设备110(也称为“客户端”)是玩家可以通过其来与游戏服务器100交互的计算设备。例如,客户端设备110可以是智能手机、便携式游戏设备、平板电脑、个人数字助理(PDA)、蜂窝电话、导航系统、手持GPS系统或其他这样的设备。客户端设备110可以执行软件(例如,游戏应用或app)以允许玩家与虚拟世界交互。客户端设备110还可以包括用于为平行现实游戏(在本文中也称为基于位置的游戏)提供用户界面的硬件、软件或这两者。此外,客户端设备110可以是具有内置计算设备的车辆。关于图2进一步描述客户端设备。
网络120可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,互联网)或其某种组合。网络120还可以包括客户端110与游戏服务器130之间的直接连接。通常,游戏服务器130与客户端110之间的通信可以使用任何类型的有线和/或无线连接、使用各种通信协议(例如,TCP/IP、HTTP、S1v1TP、FTP)、编码或格式(例如,HTML、JSON、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)经由网络接口来进行。
游戏服务器130托管平行现实游戏的主状态,并且向玩家的客户端设备110提供游戏状态更新(例如,基于游戏中其他玩家的动作、真实世界条件的变化、游戏状态或条件的变化等)。游戏服务器130接收并且处理平行现实游戏中玩家的动作。游戏服务器130可以将数据发送到防作弊服务器140以进行处理,并且从防作弊服务器140接收关于与玩家相关的要采取的措施的信息。关于图3进一步描述游戏服务器130。
防作弊服务器140基于从游戏服务器130(或者,在一些实施例中,客户端设备110)接收的数据来计算和存储度量。防作弊服务器140可以计算和存储各种系统和应用的度量,但本文中针对平行现实游戏(例如,共享AR环境,其中玩家在真实世界中的位置与其在游戏世界中的位置相关)进行描述。例如,防作弊服务器140接收要存储在关系数据库中的数据。该数据可以是描述在平行现实游戏中发生的动作的活动数据。度量可以涉及标识可能对应于平行现实游戏中的作弊行为的活动数据。防作弊服务器140采用多个节点来基于数据来计算度量,并且在计算完成时存储度量。以这种方式分配计算和存储允许防作弊服务器140减少计算和存储度量的延迟。关于图4进一步描述防作弊服务器140。
本公开涉及服务器、数据库、软件应用和其他基于计算机的系统、以及所采取的动作以及被发送去往和来自这样的系统的信息。本领域普通技术人员将认识到,基于计算机的系统的固有灵活性允许在组件之间进行任务和功能的各种可能配置、组合和划分。例如,被公开为由服务器实现的过程可以使用单个服务器或组合工作的多个服务器来实现。数据库和应用可以在单个系统上实现,也可以分布在多个系统上。分布式组件可以按顺序或并行操作。
在所公开的系统和方法访问和分析关于用户的个人信息、或利用个人信息(诸如位置信息)的情况下,用户可以有机会控制程序或特征是否收集信息,并且控制是否或如何从系统或其他应用接收内容。在用户被提供关于要收集什么信息以及如何使用信息的有意义的通知之前,没有这样的信息或数据被收集或使用。除非用户提供同意(用户可以随时撤销或修改同意),否则不会收集或使用这些信息。因此,用户可以控制如何收集关于用户的信息并且由应用或系统使用。此外,某些信息或数据在存储或使用之前可以通过一种或多种方式进行处理,从而删除个人可标识信息。例如,可以处理用户的身份,使得不能确定用户的个人可标识信息。
示例客户端设备
图2是根据一个实施例的图1所示的客户端设备110的框图。因为游戏服务器130可以提供基于位置的游戏,所以客户端设备110优选地是便携式计算设备,诸如智能手机或其他便携式设备,其可以容易地与玩家一起携带或以其他方式运输。玩家可以简单地通过在实际世界中携带或运输客户端设备110来与虚拟世界交互。
客户端设备110可以与游戏服务器130通信,以提供物理环境的感官数据。在一个实施例中,客户端设备110包括相机组件212、游戏模块214、定位模块216、本地化模块218和本地数据存储240。客户端设备110还包括用于通过网络120提供通信的网络接口(未示出)。在各种实施例中,客户端设备110可以包括不同的或附加组件,诸如附加传感器、显示器和软件模块等。
相机组件212包括可以捕获图像数据的一个或多个相机。相机捕获描述具有特定姿态(相机在环境内的位置和取向)的客户端设备110周围的环境的场景的图像数据。相机组件212可以使用具有变化的颜色捕获范围和变化的捕获速率的各种光传感器。类似地,相机组件212可以包括具有一系列不同镜头的相机,诸如广角镜头或长焦镜头。相机组件212可以被配置为捕获单个图像或多个图像作为视频的帧。
客户端设备110还可以包括用于收集关于客户端设备周围的环境的数据的附加传感器,诸如运动传感器、加速度计、陀螺仪、气压计、温度计、光传感器、麦克风等。由相机组件212捕获的图像数据可以附加有描述关于图像数据的其他信息的元数据,诸如附加感官数据(例如,温度、环境亮度、气压、位置、姿态等)或捕获数据(例如,曝光长度、快门速度、焦距、捕获时间等)。
客户端设备110可以包括定位设备210,该定位设备210监测客户端设备110在真实世界中的位置。定位设备210可以是用于监测客户端110的位置的任何设备或电路系统。例如,定位设备210可以通过使用卫星导航定位系统(例如,GPS系统、伽利略定位系统、全球导航卫星系统(GLONASS)、北斗卫星导航和定位系统)、惯性导航系统、航位推算系统、基于IP地址、通过使用三角测量和/或接近蜂窝塔或WiFi热点、和/或用于确定位置的其他合适技术来确定实际或相对位置。
游戏模块214为玩家提供参与平行现实游戏的界面。游戏服务器320通过网络120将游戏数据传输到客户端设备110以供游戏模块214使用以向远离游戏服务器的位置处的玩家提供游戏的本地版本。在一个实施例中,游戏模块214在客户端设备110的显示器上呈现用户界面,该用户界面描绘虚拟世界(例如,渲染虚拟世界的图像)并且允许用户与虚拟世界交互以执行各种游戏目标。在一些实施例中,游戏模块214呈现根据平行现实游戏的虚拟元素而增强的真实世界的图像(例如,由相机组件212捕获的)。在这些实施例中,游戏模块214可以根据从客户端设备110的其他组件接收的其他信息来生成或调节虚拟内容。例如,游戏模块214可以根据在图像数据中捕获的场景的深度图来调节要显示在用户界面上的虚拟对象。
游戏模块214还可以控制各种其他输出,以允许玩家与游戏交互,而不需要玩家查看显示屏。例如,游戏模块214可以控制允许玩家在不看显示屏的情况下玩游戏的各种音频、振动或其他通知。
定位模块216可以是用于确定客户端设备110的位置的任何设备或电路系统。例如,定位模块216可以通过使用卫星导航定位系统(例如,GPS系统、伽利略定位系统、全球导航卫星系统(GLONASS)、北斗卫星导航和定位系统)、惯性导航系统、航位推算系统、IP地址分析、三角测量和/或接近蜂窝塔或Wi-Fi热点、或其他合适的技术来确定实际或相对位置。
当玩家在真实世界中与客户端设备110一起四处移动时,定位模块216跟踪玩家的位置,并且将玩家位置信息提供给游戏模块214。游戏模块214基于玩家在真实世界中的实际位置来更新玩家在与游戏相关联的虚拟世界中的位置。因此,玩家可以简单地通过在真实世界中携带或运输客户端设备110来与虚拟世界交互。特别地,玩家在虚拟世界中的位置可以对应于玩家在真实世界中的位置。游戏模块214可以通过网络120向游戏服务器320提供玩家位置信息。作为响应,游戏服务器320可以制定各种技术来验证客户端设备110的位置,以防止作弊者欺骗其位置。应当理解,只有在玩家已经被通知要访问玩家的位置信息以及在游戏的上下文中如何使用该位置信息(例如,更新虚拟世界中的玩家位置)之后授予许可的情况下,才使用与玩家相关联的位置信息。此外,与玩家相关联的任何位置信息以保护玩家隐私的方式存储和维护。
本地化模块218接收定位模块216为客户端设备110而确定的位置,并且通过确定相机组件212的一个或多个相机的姿态来对其进行细化。在一个实施例中,本地化模块218使用由定位模块216生成的位置来选择客户端设备110周围的环境的3D地图。本地化模块218可以从本地存储装置或从游戏服务器320获取3D地图。3D地图可以是围绕客户端设备110的环境的点云、网格或任何其他合适的3D表示。
在一个实施例中,本地化模块218应用经训练的模型来确定由相机组件212捕获的图像相对于3D地图的姿态。因此,本地化模型可以确定客户端设备110的位置和取向的精确(例如,在几厘米和几度以内)确定。然后,可以使用基于传感器读数的父亲推算、周期性重新定位或这两者的组合来随时间跟踪客户端设备110的位置。具有针对客户端设备110的准确姿态可以使得游戏模块314能够以如下方式来呈现覆盖在真实世界的图像上的虚拟内容(例如,通过将虚拟元素与来自相机组件212的实时馈送一起显示在显示器上)或真实世界本身(例如,通过将虚拟元素显示在AR头戴式耳机的透明显示器上),该方式能够给出虚拟对象与真实世界交互的印象。例如,虚拟角色可以躲在真实的树后面,虚拟帽子可以放在真实的雕像上,或者如果真人太快靠近虚拟生物,则虚拟生物可能会逃跑并且躲藏起来。
本地数据存储240是被配置为存储由客户端设备110使用的数据的一个或多个计算机可读介质。例如,本地数据存储240可以存储由定位模块216跟踪的玩家位置信息、平行现实游戏的当前状态的本地副本或任何其他适当的数据。尽管本地数据存储240被示出为单个实体,但是数据可以跨多个介质被拆分。此外,数据可以存储在其他地方(例如,分布式数据库中),并且经由网络120远程访问。
示例游戏服务器
游戏服务器130包括向客户端设备110提供游戏功能的一个或多个计算设备。图3示出了适合于托管平行现实游戏的游戏服务器130的一个实施例。在所示的实施例中,游戏服务器130包括通用游戏模块321、商业游戏模块323、数据收集模块324、事件模块326、映射系统327、3D地图328、数据管理模块330和游戏数据库331。在其他实施例中,游戏服务器130包含不同或附加元件,并且可以包括用于为除平行现实游戏之外的应用和系统提供处理的目的的模块。此外,功能可以以与所描述的不同的方式分布在元件之间。
游戏数据库331可以是游戏服务器320的一部分,也可以与服务器320分离并且被远程访问(例如,游戏数据库331可以是经由网络120访问的分布式数据库)。游戏数据库331存储在平行现实游戏中使用的游戏数据,以通过网络120被服务或提供给客户端设备320。存储在游戏数据库331中的游戏数据可以包括:(1)与平行现实游戏中的虚拟世界相关联的数据(例如,用于在显示设备上渲染虚拟世界的图像数据、虚拟世界中的位置的地理坐标等);(2)与平行现实游戏的玩家相关联的数据(例如,玩家简档,包括但不限于玩家信息、玩家经验等级、玩家货币、虚拟世界/真实世界中的当前玩家位置、玩家能量水平、玩家偏好、团队信息、派系信息等);(3)与游戏目标相关联的数据(例如,与当前游戏目标、游戏目标的状态、过去的游戏目标、未来的游戏目标和期望的游戏目标等相关联的数据);(4)与虚拟世界中的虚拟元素相关联的数据(例如,虚拟元素的位置、虚拟元素的类型、与虚拟元素相关联的游戏目标、针对虚拟元素的对应实际世界位置信息、虚拟元素的行为、虚拟元素的相关性等);(5)与真实世界对象、地标、链接到虚拟世界元素的位置相关联的数据(例如,真实世界对象/地标的位置、真实世界对象/地标的描述、链接到真实世界对象的虚拟元素的相关性等);(6)游戏状态(例如,当前玩家数目、当前游戏目标状态、玩家排行榜等);(7)与玩家动作/输入相关联的数据(例如,当前玩家位置、过去玩家位置、玩家移动、玩家输入、玩家查询、玩家通信等);或(8)在平行现实游戏的实现期间使用、相关或获取的任何其他数据。存储在游戏数据库331中的游戏数据可以由系统管理员离线或实时地填充,或者由从系统300的用户(例如,玩家)接收的数据填充,诸如通过网络120从客户端设备110接收的数据。
游戏服务器130可以被配置为从一个或多个客户端设备110接收对游戏数据的请求(例如,经由远程过程调用(RPC)),并且经由网络120来响应于这些请求。游戏服务器130可以将游戏数据编码在一个或多个数据文件中,并且将数据文件提供给客户端设备110。此外,游戏服务器130可以被配置为经由网络120从一个或多个客户端设备110接收游戏数据(例如,玩家位置、玩家动作、玩家输入等),并且基于游戏数据计算度量。例如,客户端设备110可以被配置为周期性地向游戏服务器130发送玩家输入、玩家位置和其他更新,游戏服务器130使用这些来更新游戏数据库331中的游戏数据,以反映游戏的变化条件。游戏服务器130还可以向客户端设备110发送游戏数据和计算的度量。
通用游戏模块321为一组玩家(例如,平行现实游戏的所有玩家)托管平行现实游戏的实例,并且作为该组玩家的平行现实游戏当前状态的权威来源。作为主机,通用游戏模块321生成游戏内容以呈现给玩家(例如,经由其相应客户端设备310)。通用游戏模块321可以访问游戏数据库331,以在托管平行现实游戏时取回或存储游戏数据。通用游戏模块321还可以从客户端设备310接收游戏数据(例如,深度信息、玩家输入、玩家位置、玩家动作、玩家状态、地标信息等),并且将接收的游戏数据合并到用于平行现实游戏的整组玩家的整个平行现实游戏中。通用游戏模块321还可以管理通过网络120向客户端设备110递送游戏数据。在一些实施例中,通用游戏模块321还管理客户端设备110与平行现实游戏的交互的安全方面,诸如确保客户端设备与游戏服务器320之间的连接,在各种客户端设备之间建立连接,或者验证各种客户端设备310的位置以防止玩家通过欺骗其位置而作弊。
商业游戏模块323可以与通用游戏模块321分离或作为其一部分。商业游戏模块323可以管理在与真实世界中的商业活动链接的平行现实游戏内各种游戏特征的包括。例如,商业游戏模块323可以通过网络120接收来自诸如赞助商/广告商、企业或其他实体等外部系统的包括与真实世界中的商业活动链接的游戏特征的请求。商业游戏模块323然后可以在确认链接的商业活动已经发生时为将这些游戏特征包括在平行现实游戏中进行布置。例如,如果企业向平行现实游戏的提供商支付约定的金额,则标识该企业的虚拟对象可以出现在平行现实游戏中与该企业的真实世界位置(例如,商店或餐馆)相对应的虚拟位置。
数据收集模块324可以与通用游戏模块321分离或作为其一部分。数据收集模块324可以管理与真实世界中的数据收集活动链接的平行现实游戏内各种游戏特征的包括。例如,数据收集模块324可以修改存储在游戏数据库331中的游戏数据,以包括与平行现实游戏中的数据收集活动链接的游戏特征。数据收集模块324还可以根据数据收集活动来分析玩家收集的数据,并且提供数据以供各种平台访问。
事件模块326管理玩家对平行现实游戏中的事件的访问。尽管使用“事件”一词是为了方便,但应当理解,该术语不必指代在特定地点或时间发生的特定事件。相反,它可以指代访问控制的游戏内容的任何供应,其中使用一个或多个访问标准来确定玩家是否可以访问该内容。这样的内容可以是包括具有较少或没有访问控制的游戏内容的较大的平行现实游戏的一部分,或者可以是独立的、访问控制的平行现实游戏。
映射系统327基于一组图像生成地理区域的3D地图。3D地图可以是点云、多边形网格或地理区域的3D几何形状的任何其他合适的表示。3D地图可以包括提供附加上下文信息的语义标签,诸如标识对象(桌子、椅子、时钟、灯柱、树等)、材料(混凝土、水、砖、草等)或游戏属性(例如,可以由角色穿过、适合于某些游戏内动作等)。在一个实施例中,映射系统327将3D地图连同任何语义/上下文信息一起存储在3D地图存储328中。3D地图可以与位置信息(例如,3D地图的中心的GPS坐标、定义3D地图的范围的限制等)一起存储在3D地图存储328中。因此,游戏服务器320可以将3D地图提供给客户端设备310,该客户端设备310提供指示它们在被3D地图覆盖的地理区域内或附近的位置数据。
数据管理模块330可以与数据收集模块324分离或者是其一部分。如关于图4所述,数据管理模块330将数据传送到防作弊服务器140以进行处理,并且接收由防作弊服务器140确定的在数据指示作弊行为时可以采取的措施。特别地,数据管理模块330从一个或多个客户端设备110、游戏数据库331或经由网络120连接到游戏服务器130的其他服务器接收数据。数据可以是描述玩家经由客户端设备110在平行现实游戏中执行的动作的活动数据(例如,玩家已经采取的动作、采取动作的时间、采取动作时玩家移动的速度等)。在一些实施例中,数据管理模块330不是自动接收数据,而是可以取回针对平行现实游戏的玩家(或玩家的客户端设备110)的标识符的列表并且可以取回与该列表中的标识符相关联的数据(例如,从相关客户端设备110或游戏数据库331)。在一些实施例中,数据管理模块330可以通过经由范围扫描来访问存储与标识符相关的活动数据的压缩数据存储系统来取回与标识符相关联的活动数据。压缩数据存储系统可以是游戏数据库331的一部分,或者在一些实施例中可以是BigTable或标准云存储。数据管理模块330将取回到的数据发送到防作弊服务器140以确定度量,并且关于在数据指示作弊行为时要采取的动作与防作弊服务器140通信。
示例防作弊服务器
图4示出了防作弊服务器140的一个实施例。防作弊服务器140包括数据接收模块405、多个节点410(在图4中标记为410A、410B、……、410N)和数据存储模块415。数据存储模块415包括干预模块420、关系数据库425、干预数据库430和键值存储435。尽管防作弊服务器140被描述和示出为单个服务器,但是它可以使用多个服务器来实现。防作弊服务器140可以包括比所示的更少、更多或其他组件。在一些实施例中,节点410可以在防作弊服务器140外部,并且防作弊服务器140可以经由接收模块350和数据存储模块415与节点410通信。
数据接收模块405从游戏服务器130(例如,数据管理模块330)接收数据,并且分析数据,以确定在哪里存储数据或发送数据以进行分析。对于指示客户端设备110的本地状态的数据,数据存储模块415可以将数据写入键值存储435。数据接收模块405可以将本地状态数据与玩家的标识符(例如,用户或玩家名称)或与本地状态数据相关联的客户端设备110一起存储,并且将与每个玩家和客户端设备110相关联的数据的运行记录保持在键值存储中。在一些实施例中,键值存储435包括关于玩家状态的事务数据。键值存储435还可以包括以下中的一项或多项:(1)玩家或客户端设备110在一段时间内的位置历史(例如,过去30天的位置历史),(2)应用于玩家或客户端设备110的过去和当前措施,(3)关于玩家的游戏会话的信息以及为这些会话生成的信号(例如,数据)。当玩家在游戏中处于活动状态时,可以生成要存储在键值存储435中的玩家或客户端设备110的数据并且将其传送到防作弊服务器140。
对于指示玩家的动作的数据(例如,不是存储在键值存储435中的数据),数据接收模块405可以将数据广播到一个或多个节点410。在一些实施例中,数据接收模块405在从游戏服务器130接收所有数据之前向节点410广播数据。
在一些实施例中,数据接收模块405使用combine.globally.withfanout广播数据。Combine.globally.withfanout是用于分布式数据处理的分治方法。通常,当数据的一部分比数据的其他部分具有更多负载时,可以使用它。因此,combine.globally.withfanout使得能够调谐不均匀负载分布的处理。具体地,combine.globally.withfanout使得能够定义多个中间工作者(例如,节点、子节点或碎片)。这些工作者计算部分结果。一旦中间节点完成分配给其的工作,结果就可以被发送给最终工作者(例如,最终节点)。最终工作者负责在最终合并步骤中合并这些结果。Combine.globally.withfanout可以包括参数,该参数指定在最终计算之前要执行的中间步骤的数目。
在一些实施例中,数据接收模块405可以基于来自外部运算符的输入来访问一组标识符,该标识符指示哪些节点410在预定集合中。例如,数据接收模块405通过经由范围扫描来访问压缩数据存储系统(例如,GCP BigTable或Apache HBase)来取回针对平行现实游戏的玩家的标识符列表(例如,每个游戏会话的玩家的用户或玩家名称或者唯一标识符)。压缩数据存储装置存储与玩家的游戏相关的可跟踪信息。在一些实施例中,玩家执行的所有游戏进行动作都被记录并且存储在压缩数据存储装置中。
附加地或替代地,对于基于来自外部操作者的输入的节点集合,数据接收模块405可以确定具有分析数据的相应子集的可用性或能力的节点集合410。响应于此,数据接收模块405可以仅向所确定的集合中的节点410广播数据的相应子集。例如,如果一百个节点410中只有十个节点可用于处理,则数据接收模块405可以仅向这十个节点410发送数据。在一些情况下,数据接收模块405可以在24个到200个节点410之间进行选择。
数据接收模块405可以将类似(或相同)类型的数据聚合在一起,并且将聚合的数据发送到单个节点。这有助于防止类似类型的数据被发送到不同节点410。这也可以帮助确保节点准确地计算度量。在一些实施例中,散列函数用于在数据被发送到节点之前聚合类似类型的数据。在一些实施例中,预定节点集合被指定为接收某些类型的数据。
如上所述,防作弊服务器140使用多个节点410基于数据接收模块405接收的数据来计算度量。防作弊服务器140可以包括任何数目的节点410。节点410是独立的处理单元,其可以接收、操纵、生成和传送数据。例如,节点(例如,410A)是处理资源的集合,诸如CPU、RAM和存储装置。在一些实施例中,节点410是GOOGLE CLOUD SPANNER的跨度者(spanner)节点。在一些实施例中,每个节点(或节点集合)彼此独立地向关系数据库425写入(而不是节点执行所有处理,聚合结果,然后将所有聚合结果一次写入关系数据库425)。
每个节点410使用接收数据来生成一个或多个度量。示例度量包括:作弊指示符或作弊信号、生成作弊指示符或信号的事件、客户端设备品牌、后台会话ID、检测到作弊时的时间戳、会话类型(例如,前台或冒险同步或健身相关会话)或客户端设备OS版本。度量可以指示玩家的哪些动作(由数据描述)指示平行现实游戏内的作弊行为。违反平行现实游戏的一个或多个规则的动作(例如,移动速度快于阈值速度、地理位置欺骗等)指示作弊行为。在一些实施例中,节点可以使用一个或多个经训练的机器学习模型来检测数据集中的作弊行为的指示。每个机器学习模型可以输出数据集指示作弊行为的可能性(例如,度量)。如果可能性高于阈值,则节点可以生成作弊行为的指示以与数据一起存储为度量。
在一些实施例中,节点包括从数据接收模块405接收数据的累积层。在累积层接收到阈值量的数据之后,节点可以开始计算度量。阈值本身可以取决于正在接收的数据的类型或要计算的度量。在一些情况下,节点可以在阈值量的数据已经被接收到之后继续接收新数据。在这些情况下,节点可以将新接收的数据合并到用于确定度量的计算中。因此,节点可以在接收到度量的所有相关数据之前开始计算该度量。除其他优点外,这更高效地利用节点的处理时间,因为它可以开始工作(例如,立即),而不是等待接收到整批数据。
当每个节点基于数据接收数据生成度量时,节点将度量存储在关系数据库425中。顾名思义,关系数据库425是关系数据库,诸如PostgreSQL数据库。关系数据库提供了很多在非关系数据库中不可用的功能。例如,关系数据库可以提供在非关系数据库中不可用的容错能力。然而,关系数据库的写入操作可能会受到速率限制,这可能会使一次向关系数据库写入大量数据变得困难。因此,允许节点410在不同时间独立地将数据写入关系数据库425可以允许将大量数据写入关系数据库425。在一些实施例中,节点410可以使用准备好的插入语句来存储度量。准备好的插入语句是一种允许重复写入数据而无需重复重新编译写入函数的特征。例如,准备好的语句存取预编译语句(例如,代码)的形式,在每次执行期间,数据值被替换为该预编译语句。在一些实施例中,提前创建准备好的插入语句并且用数据对其进行填充,使得最终节点不需要执行额外计算。在一些实施例中,节点410生成关于所创建的准备好的插入语句的数目的一些数据点。该数据还可以被存储以提高防作弊服务器140的可扩展性。
如本文所述,采用节点410进行度量计算可以允许防作弊服务器140在每个节点410完成其度量生成时生成度量并且将度量存储在关系数据库425中。因此,节点可以向关系数据库425传输度量以供存储,而无需等待其他节点完成其度量计算。这可以提高度量计算和存储的效率。例如,由于流限制,关系数据库425可能无法一次从所有节点接收度量。通过使每个节点在度量计算完成时存储度量计算(而不是等待所有其他节点),可以遵守关系数据库425的流限制。这对于响应于流限制的API调用或在对流限制的函数进行调用时可以很有用,以便在不显著增加延迟的情况下遵守流限制。
关系数据库425中的度量可以带有时间戳。例如,度量可以具有与以下各项相对应的时间戳:(a)何时生成度量的数据,或者(b)玩家何时执行与度量数据相关联的活动(在平行现实游戏中)。这种回溯可以有助于确定是否发生了作弊行为。时间戳可以针对不同的应用或用途进行定制。
干预模块420可以确定是否发生了作弊行为,并且可以基于在节点处生成的度量来确定针对一个或多个玩家要采取的措施。措施可以包括向玩家发送警告、禁止玩家在一段时间内参加平行现实游戏、永久暂停玩家参加平行现实游戏、或基于数据中存在的作弊行为而采取的任何其他动作。在确定一个或多个节点已经在关系数据库425处存储新度量之后,干预模块420可以从关系数据库425中取回度量。干预模块420可以将度量与一个或多个阈值进行比较,并且基于所比较的度量来确定针对与度量相关联的玩家要采取的措施。在一些实施例中,干预模块420还可以基于针对玩家而采取的先前措施和/或为玩家而计算的先前度量来确定措施。例如,干预模块420可以采用“打击”系统,在该系统中,针对玩家而检测到的作弊行为的每个实例都会增强所采取的措施(例如,第一打击将导致警告,第二打击将造成一天的禁令,等等)。
干预模块420将措施与玩家相关联地存储在干预数据库430中。干预模块420可以与游戏服务器130就所确定的措施进行通信,使得游戏服务器130可以制定这样的措施并且可以更新干预数据库430以反映何时已经采取措施。
示例方法
图5示出了根据一个实施例的用于生成度量并且将度量存储在关系数据库中的过程500。图5的步骤是从执行方法600的防作弊服务器(例如,140)的组件的角度来说明的。然而,这些步骤中的一些或全部可以由其他实体或组件执行。此外,一些实施例可以并行地执行步骤,以不同的顺序执行步骤,或者执行不同的步骤。方法500的一个或多个步骤可以存储在非暂态计算机可读存储介质上。
防作弊服务器从一个或多个客户端设备110接收510数据(例如,数据接收模块405经由游戏服务器(例如,110)接收数据)。在一些实施例中,防作弊服务器附加地或替代地从其他服务器或计算设备接收数据。防作弊服务器的组件(例如,数据接收模块405)向防作弊服务器的一个或多个节点(例如,410)广播510数据。这些节点可以在预定节点集合中。预定集合中的节点410可以由防作弊服务器140基于其处理数据的可用性和/或由外部操作者指示的节点410的数目来预先选择。在一些实施例中,节点的数目由外部操作者选择。每个节点计算530数据的一部分以生成一个或多个度量。度量可以指示在数据的一部分中是否检测到作弊行为。每个节点在其个体度量生成完成之后使用准备好的插入语句将一个或多个度量添加540到关系数据库(例如,425)。
图5中的过程可以结合示例共享AR环境进一步描述,该环境被合并到一个平行现实游戏中,在该游戏中,防作弊服务器分析来自客户端设备(例如,110)的数据,以确定该数据是否指示作弊行为。平行现实游戏中作弊行为的示例可以是玩家在玩游戏时开车而不是走路。游戏服务器(例如,130)可以从多个客户端设备接收数据,这些客户端设备主动地向玩家提供用于平行现实游戏的共享AR环境。游戏服务器可以将数据发送到防作弊服务器,防作弊服务器使用节点来生成一个或多个度量。防作弊服务器的数据接收模块(例如,405)可以在数据接收模块从游戏服务器接收所有数据之前将数据广播到节点。如前所述,节点将一个或多个度量添加到关系数据库。一旦度量被生成,每个节点就添加其相应生成度量,而不是等待所有其他节点完成度量生成。如果度量中的一个或多个指示作弊行为,则反作弊服务器可以确定游戏服务器针对其数据指示作弊行为的玩家要采取的措施,诸如暂停或禁止玩家参加平行现实游戏。
示例计算系统
图6是适合用作客户端设备110或游戏服务器130的示例计算机600的框图。示例计算机600包括耦合到芯片组604的至少一个处理器602。芯片组604包括存储器控制器中心620和输入/输出(I/O)控制器中心622。存储器606和图形适配器612耦合到存储器控制器中心620,并且显示器618耦合到图形适配器612。存储设备608、键盘610、指示设备614和网络适配器616耦合到I/O控制器中心622。计算机600的其他实施例具有不同的架构。
在图6所示的实施例中,存储设备608是非暂态计算机可读存储介质,诸如硬盘驱动器、光盘只读存储器(CD-ROM)、DVD或固态存储设备。存储器606保存由处理器602使用的指令和数据。指示设备614是鼠标、轨迹球、触摸屏或其他类型的指示设备,并且可以与键盘610(其可以是屏幕上的键盘)组合使用以将数据输入到计算机系统600中。图形适配器612在显示器618上显示图像和其他信息。网络适配器616将计算机系统600耦合到一个或多个计算机网络,诸如网络120。
图1-图4的实体使用的计算机类型可以根据实施例和实体所需要的处理能力而变化。例如,游戏服务器320可以包括一起工作以提供所描述的功能的多个刀片服务器。此外,计算机可以缺少上面描述的组件中的一些,诸如键盘610、图形适配器612和显示器618。
基于位置的平行现实游戏的示例
图7是与真实世界700平行的虚拟世界710的概念图。虚拟世界710可以充当平行现实游戏的玩家的游戏板。如图所示,虚拟世界710包括与真实世界700的地理位置相似的地理位置。特别地,定义真实世界700中的地理区域或空间的坐标范围被映射到定义虚拟世界710中的虚拟空间的对应坐标范围。真实世界700中的坐标范围可以与城镇、社区、城市、校园、场所、国家、大陆、整个地球或其他地理区域相关联。地理坐标范围中的每个地理坐标被映射到虚拟世界710中的虚拟空间中的对应坐标。
玩家在虚拟世界710中的位置对应于玩家在真实世界700中的位置。例如,位于真实世界700中的位置712处的玩家A在虚拟世界710中具有对应位置722。类似地,位于真实世界700中的位置714处的玩家B在虚拟世界710中具有对应位置724。当玩家在真实世界700中的地理坐标的范围内移动时,玩家也在定义虚拟世界710中的虚拟空间的坐标范围内移动。特别地,与玩家携带的移动计算设备相关联的定位系统(例如,GPS系统、定位系统或这两者)可用于在玩家在真实世界700中的地理坐标范围内导航时跟踪玩家的位置。与玩家在真实世界700中的位置相关联的数据用于更新玩家在定义虚拟世界710中的虚拟空间的对应坐标范围中的位置。以这种方式,玩家可以通过简单地在真实世界700中的对应地理坐标范围之间行进来沿着定义虚拟世界710中的虚拟空间的坐标范围中的连续轨迹导航,而不必在真实世界700中的特定离散位置处登记或周期性地更新位置信息。
基于位置的游戏可以包括游戏目标,该游戏目标要求玩家行进到分散在虚拟世界710中的各种虚拟位置的各种虚拟元素或虚拟对象或者与之交互。玩家可以通过行进到真实世界700中的虚拟元素或对象的对应位置来行进到这些虚拟位置。例如,定位系统可以跟踪玩家的位置,使得当玩家在真实世界700中导航时,玩家也在平行虚拟世界710中导航。玩家然后可以在特定位置与各种虚拟元素和对象交互,以实现或执行一个或多个游戏目标。
游戏目标可以让玩家与位于虚拟世界710中的各种虚拟位置的虚拟元素730交互。这些虚拟元素730可以链接到真实世界700中的地标、地理位置或对象740。真实世界地标或对象740可以是艺术品、纪念碑、建筑物、企业、图书馆、博物馆或其他合适的真实世界的标志或对象。交互包括捕获、声称所有权、使用一些虚拟物品、花费一些虚拟货币等。为了捕获这些虚拟元素730,玩家行进到链接到真实世界中的虚拟元素730的地标或地理位置740,并且与虚拟世界710中的虚拟元素730执行任何必要的交互(如游戏规则所定义的)。例如,玩家A 712可能必须行进到真实世界700中的地标740,以与该特定地标740链接的虚拟元素730交互或捕获该虚拟元素730。与虚拟元素730的交互可能需要在真实世界中的动作,诸如拍摄照片或验证、获取或捕获关于与虚拟元素730相关联的地标或对象740的其他信息。
游戏目标可以要求玩家使用玩家在基于位置的游戏中收集的一个或多个虚拟物品。例如,玩家可以在虚拟世界710中行进,寻找对完成游戏目标有用的虚拟物品732(例如,武器、生物、电源或其他物品)。这些虚拟物品732可以通过行进到真实世界700中的不同位置或通过完成虚拟世界710或真实世界700中的各种动作(例如,与虚拟元素730交互、与非玩家角色或其他玩家战斗、或者完成任务等等)来找到或收集。在图7所示的示例中,玩家使用虚拟项目732来捕获一个或多个虚拟元素730。特别地,玩家可以在虚拟世界710中靠近虚拟元素730或在虚拟元素730内的位置处部署虚拟项目732。以这种方式部署一个或多个虚拟项目732可能导致为玩家或为玩家的团队/派系捕获虚拟元素730。
在一种特定实现中,玩家可能必须收集虚拟能量作为平行现实游戏的一部分。虚拟能量750可以分散在虚拟世界710中的不同位置。玩家可以通过行进到与虚拟世界710中的虚拟能量的位置相对应的真实世界700中的位置(或在其阈值距离内)来收集虚拟能量750。虚拟能量750可以用于为虚拟物品供电或执行游戏中的各种游戏目标。失去所有虚拟能量750的玩家可以与游戏断开连接,或者被阻止玩一段时间,或者直到他们收集到附加虚拟能量750。
根据本公开的各方面,平行现实游戏可以是基于位置的大型多玩家游戏,其中游戏中的每个参与者共享相同的虚拟世界。玩家可以被划分为不同的团队或派系,并且可以共同努力实现一个或多个游戏目标,诸如捕获或声称对虚拟元素的所有权。以这种方式,平行现实游戏本质上可以是鼓励游戏内玩家之间合作的社交游戏。来自对立团队的玩家可以在平行现实游戏期间彼此对抗(或有时合作以实现共同目标)。玩家可以使用虚拟物品攻击或阻碍对方团队中玩家的前进。在某些情况下,鼓励玩家聚集在真实世界位置处,以在平行现实游戏中进行合作或交互活动。在这些情况下,游戏服务器试图确保玩家确实在场,而不是伪造其位置。
图8描绘了游戏界面800的一个实施例,该游戏界面800可以作为玩家与虚拟世界710之间的界面的一部分而呈现(例如,在玩家的智能手机上)。游戏界面800包括显示窗口810,该显示窗口810可以用于显示虚拟世界710和游戏的各种其他方面,诸如玩家位置722以及虚拟元素730、虚拟物品732和虚拟能量750在虚拟世界710中的位置。用户界面800还可以显示其他信息,诸如游戏数据信息、游戏通信、玩家信息、客户端位置验证指令、以及与游戏相关联的其他信息。例如,用户界面可以显示玩家信息815,诸如玩家名称、经验等级和其他信息。用户界面800可以包括用于访问各种游戏设置和与游戏相关联的其他信息的菜单820。用户界面800还可以包括通信接口830,该通信接口830使得能够在游戏系统与玩家之间以及在平行现实游戏的一个或多个玩家之间进行通信。
根据本公开的各方面,玩家可以通过在真实世界中携带客户端设备710来与平行现实游戏交互。例如,玩家可以通过访问智能手机上与平行现实游戏相关联的应用并且使用智能手机在真实世界中移动来玩游戏。在这点上,玩家没有必要为了玩基于位置的游戏而在显示屏上连续观看虚拟世界的视觉表示。结果,用户界面800可以包括允许用户与游戏交互的非视觉元素。例如,当玩家接近游戏中的虚拟元素或对象时或者当平行现实游戏中发生重要事件时,游戏界面可以向玩家提供可听通知。在一些实施例中,玩家可以利用音频控件840来控制这些可听通知。根据虚拟元素或事件的类型,可以向用户提供不同类型的可听通知。根据玩家到虚拟元素或对象的接近程度,可听通知的频率或音量可以增加或减少。可以向用户提供其他非视觉通知和信号,诸如振动通知或其他合适通知或信号。
平行现实游戏可以具有各种特征,以增强和鼓励在平行现实游戏中进行游戏。例如,玩家可以积累一种虚拟货币或另一种虚拟奖励(例如,虚拟代币、虚拟积分、虚拟物质资源等),这些奖励可以在整个游戏中使用(例如,购买游戏中的物品、兑换其他物品、制作物品等等)。当玩家完成一个或多个游戏目标并且在游戏中获取经验时,玩家可以通过各种级别晋级。玩家还可以获取增强的“力量”或虚拟物品,其用于完成游戏中的游戏目标。
使用所提供的公开内容,本领域普通技术人员将理解,很多游戏界面配置和底层功能是可能的。本公开不旨在局限于任何一种特定配置,除非明确地相反。
其他注意事项
以上描述的一些部分根据算法过程或操作来描述实施例。计算领域的技术人员通常使用这些算法描述和表示来将其工作的实质有效地传达给本领域其他技术人员。虽然在功能上、计算上或逻辑上进行描述,但是这些操作被理解为通过包括用于由处理器或等效电路执行的指令、微码等的计算机程序来实现。此外,在不失一般性的情况下,将这些功能操作的布置称为模块有时也被证明是方便的。
对“一个实施例”或“一实施例”的任何提及都表示结合该实施例而描述的特定元素、特征、结构或特性被包括在至少一个实施例中。短语“在一个实施例中”在说明书中的各个地方的出现不一定都是指同一实施例。类似地,在元素或组件之前对“一”(“a”或“an”)的使用只是为了方便。该描述应当被理解为表示存在元素或组件中的一个或多个,除非它显然是另外的意思。
如果数值被描述为“近似”或“基本上”(或其派生词),则这样的数值应当被解释为准确+/-10%,除非上下文中另有明确含义。例如,“近似为十”应当理解为“在九到十一的范围内”。
术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”、“具有(has)”、“具有(having)”或其任何其他变体旨在涵盖非排他性包括。例如,包括元素列表的过程、方法、物品或装置不一定仅限于那些元素,而是可以包括未明确列出的其他元素、或者这样的过程、方法、物品或装置固有的其他元素。此外,除非明确相反,否则“或”是指包括性的或,而不是排他性的或。例如,条件A或B由以下中的任何一个满足:A为真(或存在)而B为假(或不存在)、A为假(或不存在)而B为真(或存在)、以及A和B两者都为真(或存在)。
在阅读本公开之后,本领域技术人员将理解用于提供所述功能的系统和过程的附加的替代结构和功能设计。因此,尽管已经示出和描述了特定实施例和应用,但是应当理解,所描述的主题不限于所公开的精确构造和组件。保护范围应当仅受以下权利要求的限制。
Claims (20)
1.一种方法,包括:
从一个或多个客户端设备接收数据;
向预定节点集合广播所述数据;
在每个节点处计算所述数据的一部分以生成一个或多个度量;以及
由所述节点中的至少一些节点使用准备好的插入语句将由这些节点生成的所述一个或多个度量添加到关系数据库。
2.根据权利要求1所述的方法,其中所述数据是用于平行现实游戏的玩家的活动数据。
3.根据权利要求2所述的方法,还包括:
取回针对所述平行现实游戏的玩家的标识符列表;以及
取回与所述标识符列表中的标识符相关联的活动数据,其中所述活动数据是向所述预定节点集合中的所述节点广播的所述数据。
4.根据权利要求2所述的方法,其中所述度量指示玩家的所述活动数据是否指示在所述平行现实游戏内被执行的作弊行为。
5.根据权利要求3所述的方法,其中取回与所述标识符列表中的所述标识符相关联的活动数据包括:
经由范围扫描访问压缩数据存储系统。
6.根据权利要求5所述的方法,其中所述压缩数据存储系统是BigTable存储系统。
7.根据权利要求1所述的方法,其中所述关系数据库是PostgreSQL关系数据库。
8.根据权利要求1所述的方法,其中广播所述数据使用combine.globally.withfanout而被执行。
9.根据权利要求1所述的方法,其中外部运算符选择要包括在所述集合中的预定节点的数目。
10.根据权利要求1所述的方法,其中所述预定节点集合包括24到200个节点。
11.一种非暂态计算机可读存储介质,包括存储的指令,所述指令在由计算设备执行时引起所述计算设备执行操作,所述操作包括:
从一个或多个客户端设备接收数据;
向预定节点集合广播所述数据;
在每个节点处计算所述数据的一部分以生成一个或多个度量;以及
由所述节点中的至少一些节点使用准备好的插入语句将由这些节点生成的所述一个或多个度量添加到关系数据库。
12.根据权利要求11所述的非暂态计算机可读存储介质,其中所述数据是用于平行现实游戏的玩家的活动数据。
13.根据权利要求12所述的非暂态计算机可读存储介质,所述指令还包括:
用于取回针对所述平行现实游戏的玩家的标识符列表的指令;以及
用于取回与所述标识符列表中的标识符相关联的活动数据的指令,其中所述活动数据是向所述预定节点集合中的所述节点广播的所述数据。
14.根据权利要求12所述的非暂态计算机可读存储介质,其中所述度量指示玩家的所述活动数据是否指示在所述平行现实游戏内被执行的作弊行为。
15.根据权利要求13所述的非暂态计算机可读存储介质,其中用于取回与所述标识符列表的所述标识符相关联的活动数据的所述指令包括:
用于经由范围扫描访问压缩数据存储系统的指令。
16.根据权利要求15所述的非暂态计算机可读存储介质,其中所述压缩数据存储系统是BigTable存储系统。
17.根据权利要求11所述的非暂态计算机可读存储介质,其中所述关系数据库是PostgreSQL关系数据库。
18.根据权利要求11所述的非暂态计算机可读存储介质,其中广播所述数据使用combine.globally.withfanout而被执行。
19.根据权利要求11所述的非暂态计算机可读存储介质,其中外部运算符选择要包括在所述集合中的预定节点的数目。
20.一种游戏服务器,包括:
通用游戏模块,被配置为托管平行现实游戏;
游戏数据库,包括被配置为存储用于所述平行现实游戏的数据和度量的关系数据库;以及
处理模块,被配置为执行操作,所述操作包括:
从一个或多个客户端设备接收数据;
向预定节点集合广播所述数据;
在每个节点处计算所述数据的一部分以生成一个或多个度量;以及
由所述节点中的至少一些节点使用准备好的插入语句将由这些节点生成的所述一个或多个度量添加到所述关系数据库。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163222919P | 2021-07-16 | 2021-07-16 | |
US63/222,919 | 2021-07-16 | ||
PCT/IB2022/056553 WO2023286032A1 (en) | 2021-07-16 | 2022-07-15 | Reducing latency in anticheat dataflow |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117980045A true CN117980045A (zh) | 2024-05-03 |
Family
ID=84890336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280062078.9A Pending CN117980045A (zh) | 2021-07-16 | 2022-07-15 | 减少防作弊数据流中的延迟 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20230016152A1 (zh) |
EP (1) | EP4370223A1 (zh) |
JP (1) | JP2024524723A (zh) |
KR (1) | KR20240025639A (zh) |
CN (1) | CN117980045A (zh) |
AU (1) | AU2022312218A1 (zh) |
CA (1) | CA3226751A1 (zh) |
WO (1) | WO2023286032A1 (zh) |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7690043B2 (en) * | 1994-12-19 | 2010-03-30 | Legal Igaming, Inc. | System and method for connecting gaming devices to a network for remote play |
US6020885A (en) * | 1995-07-11 | 2000-02-01 | Sony Corporation | Three-dimensional virtual reality space sharing method and system using local and global object identification codes |
US8290920B2 (en) * | 2009-09-30 | 2012-10-16 | Zynga Inc. | System and method for remote updates |
US8645936B2 (en) * | 2009-09-30 | 2014-02-04 | Zynga Inc. | Apparatuses, methods and systems for an a API call abstractor |
US8328642B2 (en) * | 2010-06-16 | 2012-12-11 | Zynga Inc. | Game based incentives for commerce |
US9573064B2 (en) * | 2010-06-24 | 2017-02-21 | Microsoft Technology Licensing, Llc | Virtual and location-based multiplayer gaming |
US20120244945A1 (en) * | 2011-03-22 | 2012-09-27 | Brian Kolo | Methods and systems for utilizing global positioning information with an online game |
US20120289330A1 (en) * | 2011-05-13 | 2012-11-15 | Gabriel Leydon | Systems and Methods for a Support Game |
US8556719B1 (en) * | 2011-06-30 | 2013-10-15 | Zynga Inc. | Linking virtual items to real-world items |
US8496532B1 (en) * | 2011-06-30 | 2013-07-30 | Zynga Inc. | Clan wars |
US20130060795A1 (en) * | 2011-09-07 | 2013-03-07 | Unisys Corp. | Prepared statements to improve performance in database interfaces |
US9682315B1 (en) * | 2011-09-07 | 2017-06-20 | Zynga Inc. | Social surfacing and messaging interactions |
US8133116B1 (en) * | 2011-09-26 | 2012-03-13 | Zynga Inc. | Social supply harvest mechanic for interactive social games |
US9032022B1 (en) * | 2011-10-01 | 2015-05-12 | Zynga Inc. | Sending and receiving configurable buckets of communications |
US10148762B2 (en) * | 2011-10-18 | 2018-12-04 | Facebook, Inc. | Platform-specific notification delivery channel |
US8808093B1 (en) * | 2012-01-23 | 2014-08-19 | Zynga Inc. | Asynchronous social events in computer-implemented games |
US8944920B1 (en) * | 2012-02-09 | 2015-02-03 | Zynga Inc. | Push messaging architecture for online games |
US20130339473A1 (en) * | 2012-06-15 | 2013-12-19 | Zynga Inc. | Real time analytics via stream processing |
US9669296B1 (en) * | 2012-07-31 | 2017-06-06 | Niantic, Inc. | Linking real world activities with a parallel reality game |
US10456686B2 (en) * | 2012-09-05 | 2019-10-29 | Zynga Inc. | Methods and systems for adaptive tuning of game events |
US8529354B1 (en) * | 2012-12-12 | 2013-09-10 | Kabam, Inc. | System and method for facilitating data model substitutions for pre-existing data objects |
US10712913B2 (en) * | 2014-10-20 | 2020-07-14 | Oracle International Corporation | Event-based architecture for expand-collapse operations |
US10417212B1 (en) * | 2015-01-15 | 2019-09-17 | Qad, Inc. | Database modification replay |
US9886263B2 (en) * | 2015-03-24 | 2018-02-06 | Oracle International Corporation | Techniques for efficient application configuration patching |
US11831682B2 (en) * | 2015-10-28 | 2023-11-28 | Qomplx Llc | Highly scalable distributed connection interface for data capture from multiple network service and cloud-based sources |
US10164854B2 (en) * | 2015-11-20 | 2018-12-25 | International Business Machines Corporation | Providing dynamic latency in an integration flow |
US10579618B1 (en) * | 2015-12-15 | 2020-03-03 | Amazon Technologies, Inc. | Query routing and rewriting |
US20180196666A1 (en) * | 2017-01-11 | 2018-07-12 | Machine Zone, Inc. | System and method for managing dynamic design data for a virtual environment |
US11058946B2 (en) * | 2017-01-12 | 2021-07-13 | Mz Ip Holdings, Llc | System and method for managing event data in a multi-player online game |
US10668374B2 (en) * | 2017-01-25 | 2020-06-02 | Mz Ip Holdings, Llc | System and method for binding global objects in a client-server architecture |
WO2018140515A1 (en) * | 2017-01-27 | 2018-08-02 | Mz Ip Holdings, Llc | System and methods for determining events of interest in a multi-player online game |
EP3634592A1 (en) * | 2017-05-17 | 2020-04-15 | MZ IP Holdings, LLC | System and method for synchronizing data between computer devices |
US10216823B2 (en) * | 2017-05-31 | 2019-02-26 | HarperDB, Inc. | Systems, methods, and apparatus for hierarchical database |
US10275283B2 (en) * | 2017-07-21 | 2019-04-30 | Red Hat, Inc. | Low latency distributed counters for quotas |
US10717005B2 (en) * | 2017-07-22 | 2020-07-21 | Niantic, Inc. | Validating a player's real-world location using activity within a parallel reality game |
US11257073B2 (en) * | 2018-01-31 | 2022-02-22 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment |
US11120086B2 (en) * | 2018-02-13 | 2021-09-14 | Oracle International Corporation | Toponym disambiguation |
CN111918706B (zh) * | 2018-03-14 | 2024-08-06 | 株式会社魁匠团 | 用于提高实现多线程的游戏处理速度的装置及其方法 |
US20190299103A1 (en) * | 2018-03-29 | 2019-10-03 | Mz Ip Holdings, Llc | System and method for updating an application client |
US11077365B2 (en) * | 2018-06-27 | 2021-08-03 | Niantic, Inc. | Low latency datagram-responsive computer network protocol |
US10474655B1 (en) * | 2018-07-23 | 2019-11-12 | Improbable Worlds Ltd | Entity database |
US11007429B2 (en) * | 2019-07-26 | 2021-05-18 | Niantic, Inc. | Background process for importing real-world activity data into a location-based game |
US11089112B2 (en) * | 2019-08-21 | 2021-08-10 | Facebook, Inc. | Low latency interactive media distribution using shared user hardware |
CN111617487B (zh) * | 2020-05-22 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 游戏应用中的帐号接入方法和装置、存储介质及电子设备 |
US11400378B2 (en) * | 2020-06-30 | 2022-08-02 | Sony Interactive Entertainment LLC | Automatic separation of abusive players from game interactions |
-
2022
- 2022-07-15 EP EP22841600.4A patent/EP4370223A1/en active Pending
- 2022-07-15 US US17/866,282 patent/US20230016152A1/en active Pending
- 2022-07-15 KR KR1020247002570A patent/KR20240025639A/ko unknown
- 2022-07-15 CN CN202280062078.9A patent/CN117980045A/zh active Pending
- 2022-07-15 CA CA3226751A patent/CA3226751A1/en active Pending
- 2022-07-15 JP JP2024502426A patent/JP2024524723A/ja active Pending
- 2022-07-15 AU AU2022312218A patent/AU2022312218A1/en active Pending
- 2022-07-15 WO PCT/IB2022/056553 patent/WO2023286032A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023286032A1 (en) | 2023-01-19 |
CA3226751A1 (en) | 2023-01-19 |
JP2024524723A (ja) | 2024-07-05 |
KR20240025639A (ko) | 2024-02-27 |
EP4370223A1 (en) | 2024-05-22 |
US20230016152A1 (en) | 2023-01-19 |
TW202319101A (zh) | 2023-05-16 |
AU2022312218A1 (en) | 2024-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7364627B2 (ja) | 並行現実ゲーム内の活動を用いたプレイヤーの現実世界位置の検証 | |
US9669296B1 (en) | Linking real world activities with a parallel reality game | |
US8550909B2 (en) | Geographic data acquisition by user motivation | |
US20220351518A1 (en) | Repeatability predictions of interest points | |
US11590423B2 (en) | Multi-user route tracking in an augmented reality environment | |
US11007429B2 (en) | Background process for importing real-world activity data into a location-based game | |
US20210228988A1 (en) | Background process for importing real-world activity data into a location-based game | |
CN117980045A (zh) | 减少防作弊数据流中的延迟 | |
US11687530B2 (en) | Sharded storage of geolocated data with predictable query response times | |
US20240075379A1 (en) | Dynamically Generated Local Virtual Events | |
US20240108989A1 (en) | Generating additional content items for parallel-reality games based on geo-location and usage characteristics | |
US20240265504A1 (en) | Regularizing neural radiance fields with denoising diffusion models | |
WO2023111995A1 (en) | Controlling augmented reality content via selection of real-world locations or objects | |
TW202247874A (zh) | 用於提供用於在一平行實境體驗中顯示之一虛擬元素之方法及電腦可讀儲存媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |