U.S. Pat. No. 10,201,755
SYSTEM AND METHOD FOR PROVIDING A PLATFORM FOR REAL TIME INTERACTIVE GAME PARTICIPATION
AssigneePick A Play Networks Inc
Issue DateFebruary 17, 2017
Illustrative Figure
Abstract
A method is disclosed of providing real time interactive participation during a game by a plurality of users through a plurality of game clients, respectively, wherein progress of the game is defined by a plurality of plays, the method is implemented by a system in which one or more nodes on a network are configured to communicate with a plurality of game clients and a central system, each node including one or more servers, the one or more servers are programmed to execute the method, the method comprising: requesting, by a game client, to communicate with the central system via a node in a cluster; searching for a node in the cluster with available bandwidth to communicate with the game client; initiating a direct connection between the client and the node with available bandwidth for communication; assigning the node the game client to enable direct communication relating to the game between the game client and the node; receiving, via the game client, a selection from the user of a play in the game, the selected play having a risk and/or reward; and receiving, an actual play based on the actual outcome in the game.
Description
DETAILED DESCRIPTION OF THE INVENTION FIG. 1depicts a block of an example system100in which a platform for real time interactive game participation operates. This platform (200as discussed in more detail below) is used to create gaming experiences for any type of game (i.e., event) including adding entertainment value to live sporting events such as football or baseball contests on television. The platform allows viewers of a game, i.e., users of the platform, to analyze the game, predict outcomes, and compete against other viewers across the globe. The platform delivers real-time content synchronized with the happenings of a live event on TV (or alternatively a recorded event), responding to viewer interaction, and potentially scaling to millions of viewers worldwide. This is described in more detail below. System100includes a central system102and several game clients104,106,108,110that access program modules and data (as described below) from central system100via network112. Clients104,106,108,110may communicate with central system102over network112wirelessly (e.g., wireless carrier networks, WIFI) or alternatively a wired connection (e.g., cable, ISDN) as described in more detail below. Network112may be the Internet, Local area network (LAN), the combination of Internet and LAN or any other network known to those skilled in the art. System100also includes client114that communicates with central system102over a local area network (LAN) via wireless or wired connection as known to those skilled in the art. System100further includes sports and other third party systems (e.g., football and baseball)116in which sports and other game data (e.g., game statistics) are used by central system102(i.e., the platform described herein). This data may be transmitted via Satellite or other communication means. However, client114may be connected directly to central system102as known to those skilled in the art. An operator or administrator typically uses client114for (a control room, described below, on) the platform (200below) described herein. Central system102comprises one or more servers that ...
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1depicts a block of an example system100in which a platform for real time interactive game participation operates. This platform (200as discussed in more detail below) is used to create gaming experiences for any type of game (i.e., event) including adding entertainment value to live sporting events such as football or baseball contests on television. The platform allows viewers of a game, i.e., users of the platform, to analyze the game, predict outcomes, and compete against other viewers across the globe. The platform delivers real-time content synchronized with the happenings of a live event on TV (or alternatively a recorded event), responding to viewer interaction, and potentially scaling to millions of viewers worldwide. This is described in more detail below.
System100includes a central system102and several game clients104,106,108,110that access program modules and data (as described below) from central system100via network112. Clients104,106,108,110may communicate with central system102over network112wirelessly (e.g., wireless carrier networks, WIFI) or alternatively a wired connection (e.g., cable, ISDN) as described in more detail below. Network112may be the Internet, Local area network (LAN), the combination of Internet and LAN or any other network known to those skilled in the art. System100also includes client114that communicates with central system102over a local area network (LAN) via wireless or wired connection as known to those skilled in the art. System100further includes sports and other third party systems (e.g., football and baseball)116in which sports and other game data (e.g., game statistics) are used by central system102(i.e., the platform described herein). This data may be transmitted via Satellite or other communication means. However, client114may be connected directly to central system102as known to those skilled in the art. An operator or administrator typically uses client114for (a control room, described below, on) the platform (200below) described herein.
Central system102comprises one or more servers that are typically connected via a local area network (LAN). The one or more servers may include a web server. These servers may be located at various locations across network112. Each server includes several internal components (e.g., processor, memory, drives, etc.), databases, software modules and applications (e.g., browser) as known to those skilled in the art.
Clients104,106,108,110,114may be mobile devices or personal computers. A mobile device may be a smartphones, cellular telephones, tablets, PDAs, or other devices equipped with industry standard (e.g., HTML, HTTP etc.) browsers or any other application having wireless (e.g., cellular, Bluetooth, IEEE 802.11b etc.) or wired access (e.g., Ethernet) via networking (e.g., TCP/IP) to nearby and/or remote computers, peripherals, and appliances, etc. TCP/IP (transfer control protocol/Internet protocol) is the most common means of communication today between clients or between clients and systems (servers), each client having an internal TCP/IP/hardware protocol stack, where the “hardware” portion of the protocol stack could be Ethernet, Token Ring, Bluetooth, IEEE 802.11b, or whatever software protocol is needed to facilitate the transfer of IP packets over a local area network. The mobile devices typically include a processor, memory, operating system such as iOS or Android, video electronics, display and other components as known to those skilled in the art.
Personal computer may be a laptop or desktop that includes conventional components including a processor, memory (Random Access Memory (RAM) and Read Only Memory (ROM)), hard drive, graphics card and network card for interfacing with the network as known to those skilled in the art. The personal computers each will also include operating system (OS software) and other software applications such as a web browser. The OS may be Microsoft Windows, but other operating systems may be used. The personal computer may be connect to central system102wirelessly (e.g., WIFI) or wired connection as discussed above. The personal computer also typically includes a display, keyboard and mouse (pointing device) as known to those skilled in the art.
Sports system or other third party system116(e.g., football or baseball) includes a cluster of one or more servers that comprise sporting applications and data relating to sport teams, players, game statistics etc. for sports fans to access as known by those skilled in the art. The National Football League (NFL) and Major League Baseball (MLB) are examples of sports organizations that generate and provide applications and data, which are used by central system102to derive data for the platform (200below) users. These systems typically have several servers connected across a local area network (LAN) and/or the Internet as known to those skilled in the art.
FIG. 2depicts a block diagram of the software modules/applications and databases associated with platform200ofFIG. 1. In particular, platform200comprises modules/applications such as control room202, game updater204, pick submitter206, score keeper208, game output predictor210, pick a play212and databases such as game database214, sports system and other third party data215, user database216and advertiser database218. Control room202, game updater204, pick submitter206, score keeper208and game predictor210are configured as part of central system102and pick a play is an application/module installed and implemented on each of clients104,106,108and110to access the modules and databases on central system102. However, those skilled in the art know that some or all modules/applications/databases may be part of another system and/or clients. Sport system and third party data215may be streamed live or alternatively stored as part of a database.
Control room202is a module/application on central system102and available to human operators or administrators of platform200. Control room202enables operators to watch a live football game (contest) and quickly and accurately enter/input facts/data about the game in real time. For example, the operator will enter each possession, outcome, play outcome, penalty, score, timeout etc. Specifically, an operator may enter a first down, kick off, and periods for play selection (i.e., “open” and “closed” times whereby play options are available and no longer available for the user to play, respectively). Computational human (user) assistance is available throughout a contest/game. For other sports, the operator enters other data relating to that sport. Play option selections are available for users similar to football or any other sport. An example view of a control room is shown inFIG. 7. In some embodiments, the operator may be any user across the network112(whether individual or third party.)
Game updater204is a module/application that communicates between control room202and game database214. Game updater204receives and validates input data from control room202. Specifically, game updater204will validate operator credentials and data entries from one, two or more operators (from one or more control rooms202), if more than one operator is used. In addition, game updater214may receive data215from the sport and third party systems116. Game updater204is configured to have write privileges only (to databases214and data215), but those skilled in the art know that game updater204may have been assigned other privileges for platform200.
Pick a play212is an application/module that may be downloaded and installed on each game client104,106,108,110that enables users (players) to use platform200and play a game. In short, the pick a play module212will present the user with the current details for the next event in the game, i.e., the next play along with several selections for the play before each actual televised sports play. Each selection will be an option to select or predict the next outcome for that play with different risk and rewards.
In one embodiment, application/module212will present a user with player position options such as a quarterback, running back, tight end/wide receiver and defensive selections. If a user selects the quarterback option, a user believes a pass is expected. In another embodiment, application/module212will present a user with specific player actions to select such a run, blitz, pass etc. In either embodiment, a user will be presented with a current set of facts about the current game state (e.g., game stats such as 30 yard line, time in game, 4th down and 2 yards to go for a 1st down etc.). In addition, a user will be presented with probable sports outcomes (e.g. 30% of time a specified action is taken with the current stats) that are calculated by the game output predictor210as described below. A user will be provided with a certain amount of points and the user can predict the outcome of possessions and plays (making picks) to win points and potentially, prizes. Three representations of screen shots of the pick a play module/application on game clients are shown inFIGS. 8A-8C.
Score keeper206is a module/application that communicates with game database212only as shown inFIG. 2but those skilled in the art know that score keeper may be configured for communication differently. Score keeper206is configured to register changes with database214. That is, score keeper208functions to publish and subscribe to database214any and all new scores and other updates. When a user submitted picks and the corresponding play or possession outcomes are both present, score keeper206will evaluate each and all picks and plays in a game (after each play) and assign a score for each user (player). Those pick scores are then added to previous pick scores and the sum for each player is collected and transmitted in real time to a user's pick a play application (game client) wherein a leaderboard publishes the scores of users (players).
Pick submitter208is a module/application wherein user picks are received for the next play (e.g., a possession in football), and both user and his/her picks are validated and then transmitted to game database214for subsequent use by score keeper206. Validation involves pick authentication and time stamp embossing.
Game outcome predictor210is a module/application configured to calculate the probability outcomes for each option offered for user selection per play. These calculations may be made with an artificial neural network prediction or other algorithm as known to those skilled in the art. In such an example neural network, data is written to a data store through one or more input receptors, which replicates the input across all cluster nodes. The data is then processed in a series of hidden layers. The data store then transmits fully processed output to appropriate recipients that are connected to a specific node via a computer network. For example, game updater204may be configured as an input receptor as it receives input from control room module202, from which a representation of the current state of the football game is updated and maintained in a hidden layer and eventually (within a few thousandths of a second) transmitted to recipients (game clients)). Pick submitter208is typically configured as an input receptor in the neural network. Score keeper208is a process that operates entirely in the hidden layer of a neural network. Neural networks such as feed forward back propagation and universal approximators are examples.
Game database214is a database, as known to those skilled in the art, for storing game data relating to game plays, player information, play prediction statistics, user picks, etc. Game updater204and pick submitter208transmit data to game database214.
User database216is a database, as known to those skilled in the art, for storing data relating to registered users such as names, email addresses, preferences, game favorites and other useful user data.
Advertiser database216is a database, as known to those skilled in the art, for storing data relating to advertisers and advertisements that have registered to be provided to users during play on the pick a play application/module.
Note that the databases shown inFIG. 2may be in a multi-master replication format, i.e., the database data may be distributed so that any number of users can access data relevant to their tasks without interfering with the works of others (minimal latency as described below). In addition, the data disclosed herein are stored in database structures but those skilled in the art know that other data structures exist as a storage mechanism.
FIG. 3depicts a high level diagram of the data flow between game clients302-312and the modules of platform200for real time interactive game participation. In particular, several game clients302-312(same functionality and components as game clients104-108) are shown in communication with several platform200modules including pick submitters208, scorekeeper206, game updater204and control room modules202. Game data flow is also shown with respect to these modules and game clients. Data215from sports and other third party systems116may also be employed.
FIG. 4depicts the architecture400for platform200for real time interactive game participation. In brief, the modules and databases of platform200are generally organized in computer clusters as known to those skilled in the art. Each cluster may have any number of nodes based on computation, memory and bandwidth demands of system100, and each node may have one or more servers for computing. Architecture400depicts the interaction between the modules and databases inFIG. 2with respect to these nodes of the clusters. In particular, pick a play data are transmitted between pick a play module/application210(game client104and also represented as node402) and game database214(stored across several nodes408). In this respect, the pick a play data are transmitted through load balancer404and output dispatchers (nodes)406as known to those skilled in the art. The pick a play data from pick a play application/module212(on game client104and also represented by node402) is also transmitted to game database214via pick submitter208(on node410where it is stored and executed). An operator (administrator) transmits data between control room202(client114also represented as node412) and game database214(nodes408) via load balancer404and output dispatchers406as well as via game updater204(node414). Data is transmitted between game database214and score keeper module206(node420) via a dispatcher422. Prediction data is transmitted between data outcome predictor210(node416) and game database214via dispatcher418. Data is transmitted between score keeper206(node) and database214via dispatcher422.
FIG. 5depicts a diagram of example network connection for communication between game client104(for example) and a network for deploying platform200for real time interactive game participation. Specifically, the diagram depicts example network connections with respect to architecture400shown inFIG. 4. The network connection is an efficient low-latency network connection for near time communication that provides real time data to a user of pick a play module/application212. This is described in more detail below.
FIG. 6depicts example application process steps of the example connection inFIG. 5for providing the efficient low-latency network connection. Steps600-608represent a game client's first request with an available node (i.e., with sufficient bandwidth) on a network for establishing communication with that node for using platform200, and steps610-614represent game client's subsequent requests for communication with that node. In particular, execution begins at step600wherein a client sends encrypted packets (pick) to load balancer402, and at step602, load balancer404receives such data packets. Execution proceeds to step604wherein load balancer404decrypts and analyzes the packet meta-data. At step606, load balancer402404queries dispatcher nodes406to find an available node (the least busy node) for transmission. Execution proceeds to step608wherein load balancer402assigns game client104to a particular dispatcher node406and dispatcher node406maintains the open connection for subsequent direct communication.
Now, for subsequent communication requests, execution begins at step650wherein dispatcher node406decrypts an incoming request from client game104and holds the connection open between client104and node406. Execution then proceeds to step652wherein, when a dispatch message is available, the message is immediately encrypted and returned to game client104through the open connection. Execution then proceeds to step654wherein game client104receives the dispatched message and immediately sends a new request to be held open by dispatcher406.
In practice and as an example of the communication by client104with a network supporting platform200, data moves through architecture400in the following steps: (1) a user opens pick a play application/module212via client104; (2) client104makes a request to load balancer404; (3) load balancer404finds (searches for) an appropriate node in a cluster (i.e., with available bandwidth including geographical proximity) to communicate with client104; (4) the node initiates direct connection with client104and all game updates flow through this connection; (5) the user enters a game and submits a play and pick via pick a play application/module212, brokered by pick submitter208; (6) operator/administrator selects (i.e., review and interpretation of a play) an actual play outcome, brokered by game updater204, and the play outcome is immediately sent through the connection established in step (4); (7) client104updates pick a play application/module212(screen) with the play outcome; (8) score keeper module206runs and tally's a leaderboard for a given game; (9) the leaderboard is immediately sent through connection established in step (4); and (10) client104updates the leaderboard on client104screen. This is the basic operation of data movement.
The embodiments described herein support one game played by multiple users as well as multiple games simultaneously broadcasted and played by multiple users.
It is to be understood that the disclosure teaches examples of the illustrative embodiments and that many variations of the invention can easily be devised by those skilled in the art after reading this disclosure and that the scope of the present invention is to be determined by the claims below.
Claims
- A method of providing real time interactive participation during a game by a plurality of users through a plurality of game clients, respectively, wherein progress of the game is defined by a plurality of plays, the method is implemented by a system in which one or more nodes on a network are configured to communicate with a plurality of game clients and a central system, each node including one or more servers, the one or more servers are programmed to execute the method, the method comprising: requesting, by a game client to a first node, to communicate with the central system via the first node in a cluster of nodes;searching, by the first node, for a second node in the cluster of nodes with available bandwidth to communicate with the game client;assigning the second node to the game client to enable direct communication relating to the game between the game client and the second node;initiating, by the second node, a direct communication between the game client and the second node with available bandwidth for communication;receiving, via the game client, a selection from the user of a play in the game, the selected play having a risk and/or reward;and receiving, via the central system, an actual play based on an actual outcome in the game.
- The method of claim 1 wherein assigning a value to the user if the actual play matches the user selected play.
- The method of claim 1 wherein the first node is a load balancer.
- The method of claim 1 further comprising generating a plurality of options of a play in the game offered for selection by the user, each option of the plurality of options of a play is associated with a risk and/or reward.
- The method of claim 3 further comprising: calculating the probability outcomes for each option for a play offered to the user for selection.
- The method of claim 4 wherein calculating includes using an artificial neural network algorithm.
- The method of claim 1 further comprising discontinuing communication between the first node and the second node after communication has been initiated between the second node and the game client.
- A system of providing real time interactive participation during a game by a plurality of users through a plurality of game clients, respectively, wherein progress of the game is defined by a plurality of plays, the system comprising one or more nodes connected via a network configured to communicate with a plurality of game clients and a data store for storing a game database wherein data relating to the game is stored, the system programmed to execute the computer program modules, the modules comprising: a control room module that enables an operator to view a game and enter data relating to states of the game in real time;a game updater module that communicates with the control room module and the game database, the game updater validates input data received from the control room module;a pick a play module that generates a plurality of options of plays for users' selection before an actual play transpires in a game and enables the users to select an option of the plurality of options, each option represents a prediction of a next outcome for the actual play with a risk and reward;and a score keeper module that communicates with the game database and configured to register changes in score with the game database.
- The system of claim 8 wherein the modules further comprise: a pick submitter module that communicates with the game database and configured to receive and transmit user selections for a next play to game database for use by the score keeper.
- The system of claim 9 wherein the modules further comprise a game outcome predictor module that communicates with the pick a play module and game database, the game outcome predictor module configured to calculate probability outcomes for each option offered for user selection per play.
- The system of claim 10 wherein the game output predictor module is configured to calculate using an artificial neural network prediction algorithm.
- The system of claim 10 further wherein the game output predictor module is further configured to store calculated probability outcome data.
- The system of claim 12 wherein the data store is configured to replicate the calculated probability outcome data across one or more nodes within a cluster.
- The system of claim 13 wherein the data store is configured to transmit the calculated probability outcome data to game clients of users that are connected to a node via the network.
- The system of claim 8 wherein the game updater module is configured to receive data input from the control room module and update a current state of the game.
- The system of claim 15 where the game updater is further configured to transmit to the current state of the game clients of the users.
- A system for providing a platform for real time interactive game participation by a user through a game client, the system comprising (1) a data store for storing a game database wherein data relating to a game is stored and (2) a plurality of nodes on a network coupled to the data store for communicating with the game database, the plurality of nodes including a load balancer, the system configured to execute method steps, the method steps comprising: requesting, by the game client to the load balancer, to uncover a node of the plurality of nodes on the network with available bandwidth for communicating with the game client;establishing communication between the node and the game client once the node is uncovered;discontinuing communication between the load balancer and the node after communication has been established between the node and the game client;and transmitting user game play selections, actual play outcomes and/or game state data between the game client and the node via the network.
- The system of claim 17 wherein the method further comprise assigning, by the load balancer, a game client to the node after the node has been uncovered and maintaining an open connection for subsequent communication.
- The system of claim 17 wherein the game is a sporting event.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.