WO2014025830A1 - Methods and systems for updating online gaming clients - Google Patents

Methods and systems for updating online gaming clients Download PDF

Info

Publication number
WO2014025830A1
WO2014025830A1 PCT/US2013/053865 US2013053865W WO2014025830A1 WO 2014025830 A1 WO2014025830 A1 WO 2014025830A1 US 2013053865 W US2013053865 W US 2013053865W WO 2014025830 A1 WO2014025830 A1 WO 2014025830A1
Authority
WO
WIPO (PCT)
Prior art keywords
persistent connection
state data
initial
computer
connection
Prior art date
Application number
PCT/US2013/053865
Other languages
French (fr)
Inventor
Lawrence Cameron VAUGHAN
Original Assignee
South Point Poker Llc
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
Priority claimed from US13/569,128 external-priority patent/US20140045596A1/en
Priority claimed from US13/569,114 external-priority patent/US20140047431A1/en
Application filed by South Point Poker Llc filed Critical South Point Poker Llc
Publication of WO2014025830A1 publication Critical patent/WO2014025830A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/71Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/402Communication between platforms, i.e. physical link to protocol
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/50Features 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/55Details of game data or player data management
    • A63F2300/5526Game data structure

Definitions

  • This specification relates generally to online gaming, and more particularly, to methods and systems for dynamically updating an interactive gaming client.
  • Known gaming systems rely on physical gaming machines, tables, or other apparatus to operate.
  • games like poker have been played in-person, using playing cards and money or money equivalents.
  • gaming establishment operator In the context of a gaming establishment, such games can be monitored by the gaming establishment operator and regulated by gaming regulators.
  • gaming regulators Recent developments in legal and regulatory schemes have, or will, enable gaming outside of traditional gaming establishments. For example, games like poker may be able to be played remotely, using the Internet and electronic representations of cards and money.
  • Such online games require gaming software that is executed on remote client systems. Gaming software may need to be downloaded by remote client systems. In addition, during game play, remote client systems may need to receive game updates, including changes or additions to the gaming software and the game state for display by the gaming software. These downloads and updates may cause delays in the game experience. Accordingly, there is a need for methods and systems that dynamically update gaming software on demand. BRIEF DESCRIPTION OF THE INVENTION
  • a computer-implemented method for updating a client using a computer device coupled to a memory device includes receiving an initial connection request, receiving a persistent connection request, establishing a persistent connection in response to the persistent connection request, receiving a request for state data via the persistent connection, determining, by the computer device, the requested state data, and transmitting the requested state data via the persistent connection.
  • the method also includes receiving a user update via the persistent connection, and updating state data based on the user update.
  • a computer program product tangibly embodied in a non-transitory computer-readable storage device includes instructions that, when executed by a processor, cause the processor to receive an initial connection request, receive a persistent connection request, establish a persistent connection in response to the persistent connection request, receive a request for state data via the persistent connection, determine, by the processor, the requested state data, and transmit the requested state data via the persistent connection.
  • the instructions also cause the processor to receive a user update via the persistent connection, and update state data based on the user update.
  • a computer system including instructions stored on a non-transitory computer-readable medium.
  • the instructions are executable by at least one processor.
  • the computer system includes a connection manager configured to receive an initial connection request, and a game state manager configured to determine a current state.
  • the computer system also includes a persistent connection manager configured to receive a persistent connection request, establish a persistent connection in response to the persistent connection request, receive a request for state data via the persistent connection, transmit the requested state data via the persistent connection, wherein the requested state data is based on the current state determined by the game state manager, receive a user update via the persistent connection, and update, using the game state manager, state data based on the user update.
  • FIGS. 1-4 show exemplary embodiments of the methods and systems described herein.
  • FIG. 1 is a block diagram illustrating an example environment for online gaming.
  • FIG. 2 is a block diagram illustrating an exemplary gaming system for use with the environment in FIG. 1.
  • FIG. 3 is an exemplary method for updating gaming clients shown in FIG. 1.
  • FIG. 4 is a block diagram illustrating a representative computing device that may be used to implement the systems of FIGS. 1 and 2.
  • Embodiments of the methods and systems described herein enable a gaming system to deliver, in real-time and on-demand, updates to gaming clients.
  • the updates may include game components for playing the game, game data for updating the game status, and/or other data for keeping gaming clients in sync with the gaming system.
  • the gaming client makes an initial connection to the gaming server to download game components or assets and initial game data for starting the game.
  • a persistent connection is established between the gaming client and the gaming server for exchanging updates during game play.
  • the gaming client requests updates to the game state.
  • the gaming server provides updates to the gaming client. Updates may be provided on an as-needed basis, and may be stored in a datastore on the gaming client.
  • Updates may include updates to the game, e.g., a new version or security patches.
  • Updates may include updates to the game, e.g., a new version or security patches.
  • the methods and systems described herein may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof, wherein the technical effects may include at least one of: a) receiving an initial connection request; b) transmitting initial game assets and initial game state; c) receiving a persistent connection request; d) receiving a request for game state via the persistent connection; e) transmitting game state via the persistent connection; f) receiving a player action; and g) updating game state.
  • FIG. 1 is a diagram of an example environment 100 for online gaming.
  • Environment 100 includes clients 103, or user devices, that are communicatively connected, through a network 106, with a gaming system 109.
  • clients 103 include a mobile device 112 and a computer 1 15.
  • Mobile device 1 12 may be a cell phone, a tablet, etc.
  • Mobile device 112 and computer 1 15 may be similar, i.e., may have similar components, e.g., processors and memory, and similar functionality, and may be interchangeable.
  • the clients 103 for example, can be used by users who access online resources, such as websites, webpages, games, and gaming content that are provided by gaming system 109.
  • the clients 103 can include web browsers (e.g., by which users can access the resources).
  • the network 106 can include any combination of the Internet, local area networks (LANs), wide area networks (WANs), and other networks.
  • gaming system 109 is coupled to a user database 118 and a game database 121.
  • User database 1 18 contains information about users of gaming system 109, such as user names, passwords, email addresses, user game history and statistics, financial information, etc.
  • Game database 121 contains information about current and/or past games, including game state, game assets, game outcomes, users associated with each game, etc.
  • Game assets are the components needed by client 103 to play the game, such as graphics, computer-executable code, code modules, etc.
  • client 103 initiates a gaming session by connecting to gaming system 109 via network 106.
  • the game is web-based and client 103 uses a web browser to send a web request to gaming system 109.
  • client 103 may use game software to initiate the connection and otherwise communicate with gaming system 109.
  • a mobile app may be used to communicate with gaming system 109 via an application programming interface (API), web requests, remote procedure calls, etc.
  • API application programming interface
  • client 103 communicates with gaming system 109 and provides an interactive gaming interface for use by a user, or player.
  • Client 103 connects to gaming system 109 in order to authenticate a user, receive game components, receive game data, transmit game updates such as player moves, and otherwise participate in an online game.
  • the online game may be a multi-player game, more than one client 103 may be connected to gaming system 109 simultaneously such that each client 103 may participate in a game together.
  • Gaming system 109 may be capable of providing more than one game type and more than one simultaneous game.
  • gaming system 109 enables client 103 to play a game.
  • Games may include table games such as poker and blackjack, board games, sports, and/or any other game. Games are played as one or more players receive a game state, make a move based on the game state, and receive an updated game state based on moves made.
  • Game state may include a score of one or more players, player position, the next player to make a move, names and/or avatars/images of players, and/or any other data that represents the current state of a game.
  • game state may include the names of players, where players are positioned around a simulated poker table, how much money a player has bet, how many cards a player has in hand, the size of the pot, etc.
  • game state may include the current state of the game or any changes since the last current state was transmitted (i.e., incremental updates).
  • FIG. 2 is a block diagram of an exemplary gaming system 200 for use with environment 100 (shown in FIG. 1).
  • gaming system 109 includes a connection manager 205, a persistent connection manager 210, and a game state manager 215.
  • Gaming system 109 is configured to deliver game assets and game state to client 103.
  • connection manger 205 receives an initial connection from client 103.
  • the initial connection may be used to authenticate a user, transmit an initial set of game assets to client 103, and transmit an initial game state to client 103.
  • the initial set of game assets may include computer-executable code required to display and play a game, interact with the game, and/or communicate with gaming system 109.
  • Persistent connection manager 210 receives a persistent connection request from client 103.
  • the persistent connection and the initial connection may be similar (i.e., may both be web requests or other transmission control protocol (TCP) connections).
  • TCP transmission control protocol
  • the initial connection may be closed.
  • the persistent connection may remain open during and beyond the duration of the game. If the persistent connection is closed unintentionally, e.g., due to network problems, client 103 may re-establish the persistent connection with persistent connection manager 210.
  • the persistent connection enables client 103 and gaming system 109 to exchange information during a game, on-demand and in real time.
  • the persistent connection may be used to exchange state changes, game updates, game assets, and messages such as instant messages between players.
  • client 103 requests the game state from gaming system 109 and gaming system 109 sends the game state to client 103. More particularly, using the persistent connection, client 103 requests the game state. The request for the game state is received by the game state manager 215.
  • game state manager 215 is configured to maintain the current game state of each game in progress.
  • Game state manager 215 may store the current game states in game database 121.
  • game state manager 215 determines the current game state for the associated game, and transmits the game state to client 103 via the persistent connection.
  • client 103 may update a game user interface to reflect any changes in game state. More particularly, the game state may require additional game assets, such as additional computer- executable code or graphics. Client 103 may determine that, based on the game state, that additional game assets are required. Client 103 may request, using the persistent connection, the additional game assets. Gaming system 109 receives the request for additional game assets and responds with the requested game assets. [0029] Client 103 may request the game state from gaming system 109 at pre-determined time intervals, such as every 15 seconds, or in response to a user request. Alternatively, or additionally, gaming system 109 may use the persistent connection to push the game state to client 103. More particularly, when gaming system 109 detects a change in the game state, gaming system 109 may send the game state to client 103 via the persistent connection.
  • additional game assets such as additional computer- executable code or graphics.
  • Client 103 may determine that, based on the game state, that additional game assets are required. Client 103 may request, using the persistent connection, the additional game assets
  • client 103 may transmit the result of the action, a "user update,” to gaming system 109 via the persistent connection.
  • Client 103 may update the user interface to indicate the result of the action.
  • Game state manager 215 receives the result of the action and updates the game state accordingly.
  • client 103 makes an initial connection to connection manager 205 and receives initial game assets and an initial game state.
  • a persistent connection is established between client 103 and persistent connection manager 210.
  • client 103 and gaming system 109 exchange game state, player actions, and game assets.
  • Client 103 may request the game state throughout the game.
  • FIG. 3 is a flow chart of an exemplary method 300 for updating online gaming clients.
  • Method 300 includes steps that can be implemented as instructions and executed by one or more processors in one or more computer systems. In some implementations, method 300 can be performed by client 103 and/or gaming system 109.
  • an initial connection request is received 310, e.g., by gaming system 109.
  • An initial connection is established in response to the initial connection request.
  • initial game assets and initial game state are transmitted 320, e.g., from gaming system 109 to client 103.
  • a persistent connection request is received 330, e.g., by persistent connection manager 210.
  • a persistent connection is established in response to the persistent connection request.
  • a loop 340 operates to exchange game state and player actions between client 103 and gaming system 109. Loop 340 includes receiving a request for game state 350 via the persistent connection.
  • the game state is transmitted 360 via the persistent connection, e.g., from game state manager 215 to client 103.
  • a player action is received 370 from one or more clients 103.
  • the game state is updated 380 based on the player action(s) received. It should be appreciate that not every client 103 will transmit a player action during each iteration of loop 340. In the event that no player actions are transmitted during loop 340, then step 380 may be skipped.
  • FIG. 4 is a block diagram showing example or representative computing devices and associated elements that may be used to implement the systems of FIGS. 1 and 2.
  • FIG. 4 shows an example of a generic computing device 1000 and a generic mobile computing device 1050, which may be used with the techniques described here.
  • Computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
  • Computing device 1050 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.
  • the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • Computing device 1000 includes a processor 1002, memory 1004, a storage device 1006, a high-speed interface or controller 1008 connecting to memory 1004 and high-speed expansion ports 1010, and a low-speed interface or controller 1012 connecting to low-speed bus 1014 and storage device 1006.
  • Each of the components 1002, 1004, 1006, 1008, 1010, and 1012, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 1002 can process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or on the storage device 1006 to display graphical information for a GUI on an external input/output device, such as display 1016 coupled to high-speed controller 1008.
  • multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
  • multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multiprocessor system).
  • the memory 1004 stores information within the computing device 1000.
  • the memory 1004 is a volatile memory unit or units.
  • the memory 1004 is a non-volatile memory unit or units.
  • the memory 1004 may also be another form of computer-readable medium, such as a magnetic or optical disk.
  • the storage device 1006 is capable of providing mass storage for the computing device 1000.
  • the storage device 1006 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
  • a computer program product can be tangibly embodied in an information carrier.
  • the computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 1004, the storage device 1006, or memory on processor 1002.
  • the high-speed controller 1008 manages bandwidth- intensive operations for the computing device 1000, while the low-speed controller 1012 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only.
  • the high-speed controller 1008 is coupled to memory 1004, display 1016 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 1010, which may accept various expansion cards (not shown).
  • low-speed controller 1012 is coupled to storage device 1006 and low-speed bus 1014.
  • the low-speed bus 1014 which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • the computing device 1000 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1020, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1024. In addition, it may be implemented in a personal computer such as a laptop computer 1022. Alternatively, components from computing device 1000 may be combined with other components in a mobile device (not shown), such as device 1050. Each of such devices may contain one or more of computing device 1000, 1050, and an entire system may be made up of multiple computing devices 1000, 1050 communicating with each other.
  • Computing device 1050 includes a processor 1052, memory 1064, an input/output device such as a display 1054, a communication interface 1066, and a transceiver 1068, among other components.
  • the device 1050 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage.
  • a storage device such as a microdrive or other device, to provide additional storage.
  • Each of the components 1050, 1052, 1064, 1054, 1066, and 1068 are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 1052 can execute instructions within the computing device 1050, including instructions stored in the memory 1064.
  • the processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors.
  • the processor may provide, for example, for coordination of the other components of the device 1050, such as control of user interfaces, applications run by device 1050, and wireless communication by device 1050.
  • Processor 1052 may communicate with a user through control interface 1058 and display interface 1056 coupled to a display 1054.
  • the display 1054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology.
  • the display interface 1056 may comprise appropriate circuitry for driving the display 1054 to present graphical and other information to a user.
  • the control interface 1058 may receive commands from a user and convert them for submission to the processor 1052.
  • an external interface 1062 may be provide in communication with processor 1052, so as to enable near area communication of device 1050 with other devices.
  • External interface 1062 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
  • the memory 1064 stores information within the computing device 1050.
  • the memory 1064 can be implemented as one or more of a computer- readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.
  • Expansion memory 1074 may also be provided and connected to device 1050 through expansion interface 1072, which may include, for example, a SIMM (Single In Line Memory Module) card interface.
  • SIMM Single In Line Memory Module
  • expansion memory 1074 may provide extra storage space for device 1050, or may also store applications or other information for device 550.
  • expansion memory 1074 may include instructions to carry out or supplement the processes described above, and may include secure information also.
  • expansion memory 1074 may be provide as a security module for device 1050, and may be programmed with instructions that permit secure use of device 1050.
  • secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non- hackable manner.
  • the memory may include, for example, flash memory and/or NVRAM memory, as discussed below.
  • a computer program product is tangibly embodied in an information carrier.
  • the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 1064, expansion memory 1074, or memory on processor 1052, that may be received, for example, over transceiver 1068 or external interface 1062.
  • Device 1050 may communicate wirelessly through communication interface 1066, which may include digital signal processing circuitry where necessary. Communication interface 1066 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 1068. In addition, short-range communication may occur, such as using a Bluetooth, Wife, or other such transceiver (not shown). In addition, GPS (Global Positioning system) receiver module 1070 may provide additional navigation- and location-related wireless data to device 1050, which may be used as appropriate by applications running on device 1050.
  • GPS Global Positioning system
  • Device 1050 may also communicate audibly using audio codec 1060, which may receive spoken information from a user and convert it to usable digital information. Audio codec 1060 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1050. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1050.
  • Audio codec 1060 may receive spoken information from a user and convert it to usable digital information. Audio codec 1060 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1050. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1050.
  • the computing device 1050 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 1080. It may also be implemented as part of a smart phone 1082, personal digital assistant, a computer tablet, or other similar mobile device. [0049] Thus, various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
  • ASICs application specific integrated circuits
  • implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • a programmable processor which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • the systems and techniques described here can be implemented in a computing system (e.g., computing device 1000 and/or 1050) that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components.
  • the components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN”), a wide area network (“WAN”), and the Internet.
  • LAN local area network
  • WAN wide area network
  • the Internet the global information network
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
  • computing devices 1000 and 1050 are configured to receive and/or retrieve electronic documents from various other computing devices connected to computing devices 1000 and 1050 through a communication network, and store these electronic documents within at least one of memory 1004, storage device 1006, and memory 1064.
  • Computing devices 1000 and 1050 are further configured to manage and organize these electronic documents within at least one of memory 1004, storage device 1006, and memory 1064 using the techniques described herein.
  • the above-discussed embodiments of the invention may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof. Any such resulting program, having computer- readable and/or computer-executable instructions, may be embodied or provided within one or more computer-readable media, thereby making a computer program product, i.e., an article of manufacture, according to the discussed embodiments of the invention.
  • the computer readable media may be, for instance, a fixed (hard) drive, diskette, optical disk, magnetic tape, semiconductor memory such as readonly memory (ROM) or flash memory, etc., or any transmitting/receiving medium such as the Internet or other communication network or link.
  • the article of manufacture containing the computer code may be made and/or used by executing the instructions directly from one medium, by copying the code from one medium to another medium, or by transmitting the code over a network.

Abstract

Methods, systems, and apparatus for updating online gaming clients are provided. The method includes receiving an initial connection request, receiving a persistent connection request, establishing a persistent connection in response to the persistent connection request, receiving a request for state data via the persistent connection, determining, by the computer device, the requested state data, and transmitting the requested state data via the persistent connection. The method also includes receiving a user update via the persistent connection, and updating state data based on the user update.

Description

METHODS AND SYSTEMS FOR UPDATING
ONLINE GAMING CLIENTS
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is related to the following application filed on the same day as this application, which is herein incorporated by reference in its entirety: METHODS AND SYSTEMS FOR DETERMINING THE LOCATION OF ONLINE GAMING CLIENTS by inventor Lawrence Cameron Vaughan having Application Number US 13/569128.
BACKGROUND OF THE INVENTION
[0002] This specification relates generally to online gaming, and more particularly, to methods and systems for dynamically updating an interactive gaming client.
[0003] Known gaming systems rely on physical gaming machines, tables, or other apparatus to operate. Traditionally, games like poker have been played in-person, using playing cards and money or money equivalents. In the context of a gaming establishment, such games can be monitored by the gaming establishment operator and regulated by gaming regulators. Recent developments in legal and regulatory schemes have, or will, enable gaming outside of traditional gaming establishments. For example, games like poker may be able to be played remotely, using the Internet and electronic representations of cards and money.
[0004] Such online games require gaming software that is executed on remote client systems. Gaming software may need to be downloaded by remote client systems. In addition, during game play, remote client systems may need to receive game updates, including changes or additions to the gaming software and the game state for display by the gaming software. These downloads and updates may cause delays in the game experience. Accordingly, there is a need for methods and systems that dynamically update gaming software on demand. BRIEF DESCRIPTION OF THE INVENTION
[0005] In one embodiment, a computer-implemented method for updating a client using a computer device coupled to a memory device is provided. The method includes receiving an initial connection request, receiving a persistent connection request, establishing a persistent connection in response to the persistent connection request, receiving a request for state data via the persistent connection, determining, by the computer device, the requested state data, and transmitting the requested state data via the persistent connection. The method also includes receiving a user update via the persistent connection, and updating state data based on the user update.
[0006] In another embodiment, a computer program product tangibly embodied in a non-transitory computer-readable storage device is provided. The storage device includes instructions that, when executed by a processor, cause the processor to receive an initial connection request, receive a persistent connection request, establish a persistent connection in response to the persistent connection request, receive a request for state data via the persistent connection, determine, by the processor, the requested state data, and transmit the requested state data via the persistent connection. The instructions also cause the processor to receive a user update via the persistent connection, and update state data based on the user update.
[0007] In yet another embodiment, a computer system including instructions stored on a non-transitory computer-readable medium is provided. The instructions are executable by at least one processor. The computer system includes a connection manager configured to receive an initial connection request, and a game state manager configured to determine a current state. The computer system also includes a persistent connection manager configured to receive a persistent connection request, establish a persistent connection in response to the persistent connection request, receive a request for state data via the persistent connection, transmit the requested state data via the persistent connection, wherein the requested state data is based on the current state determined by the game state manager, receive a user update via the persistent connection, and update, using the game state manager, state data based on the user update.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIGS. 1-4 show exemplary embodiments of the methods and systems described herein.
[0009] FIG. 1 is a block diagram illustrating an example environment for online gaming.
[0010] FIG. 2 is a block diagram illustrating an exemplary gaming system for use with the environment in FIG. 1.
[0011 ] FIG. 3 is an exemplary method for updating gaming clients shown in FIG. 1.
[0012] FIG. 4 is a block diagram illustrating a representative computing device that may be used to implement the systems of FIGS. 1 and 2.
[0013] Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION OF THE INVENTION
[0014] Embodiments of the methods and systems described herein enable a gaming system to deliver, in real-time and on-demand, updates to gaming clients. The updates may include game components for playing the game, game data for updating the game status, and/or other data for keeping gaming clients in sync with the gaming system. The gaming client makes an initial connection to the gaming server to download game components or assets and initial game data for starting the game. A persistent connection is established between the gaming client and the gaming server for exchanging updates during game play. Using the persistent connection, the gaming client requests updates to the game state. Using the persistent connection, the gaming server provides updates to the gaming client. Updates may be provided on an as-needed basis, and may be stored in a datastore on the gaming client. Updates may include updates to the game, e.g., a new version or security patches. Embodiments of the methods and systems described herein enable a game to be provided incrementally, as needed by the gaming client, thereby reducing the amount of data that the gaming client has to download initially.
[0015] The following detailed description illustrates embodiments of the invention by way of example and not by way of limitation. It is contemplated that the invention has general application to online gaming, and it is contemplated that the invention may also be used for any online application or online interaction.
[0016] As used herein, an element or step recited in the singular and proceeded with the word "a" or "an" should be understood as not excluding plural elements or steps, unless such exclusion is explicitly recited. Furthermore, references to "one embodiment" of the present invention are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features.
[0017] The methods and systems described herein may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof, wherein the technical effects may include at least one of: a) receiving an initial connection request; b) transmitting initial game assets and initial game state; c) receiving a persistent connection request; d) receiving a request for game state via the persistent connection; e) transmitting game state via the persistent connection; f) receiving a player action; and g) updating game state.
[0018] FIG. 1 is a diagram of an example environment 100 for online gaming. Environment 100 includes clients 103, or user devices, that are communicatively connected, through a network 106, with a gaming system 109. In practice, there may be more or fewer clients 103. In the exemplary embodiment, clients 103 include a mobile device 112 and a computer 1 15. Mobile device 1 12 may be a cell phone, a tablet, etc. Mobile device 112 and computer 1 15 may be similar, i.e., may have similar components, e.g., processors and memory, and similar functionality, and may be interchangeable. The clients 103, for example, can be used by users who access online resources, such as websites, webpages, games, and gaming content that are provided by gaming system 109. The clients 103 can include web browsers (e.g., by which users can access the resources). The network 106 can include any combination of the Internet, local area networks (LANs), wide area networks (WANs), and other networks.
[0019] In the exemplary embodiment, gaming system 109 is coupled to a user database 118 and a game database 121. User database 1 18 contains information about users of gaming system 109, such as user names, passwords, email addresses, user game history and statistics, financial information, etc. Game database 121 contains information about current and/or past games, including game state, game assets, game outcomes, users associated with each game, etc. Game assets are the components needed by client 103 to play the game, such as graphics, computer-executable code, code modules, etc.
[0020] During operation, client 103 initiates a gaming session by connecting to gaming system 109 via network 106. In some embodiments, the game is web-based and client 103 uses a web browser to send a web request to gaming system 109. Alternatively, client 103 may use game software to initiate the connection and otherwise communicate with gaming system 109. For example, a mobile app may be used to communicate with gaming system 109 via an application programming interface (API), web requests, remote procedure calls, etc. Regardless of how client 103 connects to gaming system 109, client 103 communicates with gaming system 109 and provides an interactive gaming interface for use by a user, or player.
[0021] Client 103 connects to gaming system 109 in order to authenticate a user, receive game components, receive game data, transmit game updates such as player moves, and otherwise participate in an online game. As the online game may be a multi-player game, more than one client 103 may be connected to gaming system 109 simultaneously such that each client 103 may participate in a game together. Gaming system 109 may be capable of providing more than one game type and more than one simultaneous game.
[0022] Once connected, gaming system 109 enables client 103 to play a game. Games may include table games such as poker and blackjack, board games, sports, and/or any other game. Games are played as one or more players receive a game state, make a move based on the game state, and receive an updated game state based on moves made. Game state may include a score of one or more players, player position, the next player to make a move, names and/or avatars/images of players, and/or any other data that represents the current state of a game. For example, in a game of poker, game state may include the names of players, where players are positioned around a simulated poker table, how much money a player has bet, how many cards a player has in hand, the size of the pot, etc. When transmitted by gaming system 109, game state may include the current state of the game or any changes since the last current state was transmitted (i.e., incremental updates).
[0023] FIG. 2 is a block diagram of an exemplary gaming system 200 for use with environment 100 (shown in FIG. 1). In the exemplary embodiment, gaming system 109 includes a connection manager 205, a persistent connection manager 210, and a game state manager 215. Gaming system 109 is configured to deliver game assets and game state to client 103.
[0024] In the exemplary embodiment, connection manger 205 receives an initial connection from client 103. The initial connection may be used to authenticate a user, transmit an initial set of game assets to client 103, and transmit an initial game state to client 103. The initial set of game assets may include computer-executable code required to display and play a game, interact with the game, and/or communicate with gaming system 109.
[0025] Persistent connection manager 210 receives a persistent connection request from client 103. The persistent connection and the initial connection may be similar (i.e., may both be web requests or other transmission control protocol (TCP) connections). After the initial game assets and state are transmitted to client via the initial connection, the initial connection may be closed. In contrast, the persistent connection may remain open during and beyond the duration of the game. If the persistent connection is closed unintentionally, e.g., due to network problems, client 103 may re-establish the persistent connection with persistent connection manager 210. The persistent connection enables client 103 and gaming system 109 to exchange information during a game, on-demand and in real time.
[0026] Because the persistent connection is available to both gaming system 109 and client 103 during a game, the persistent connection may be used to exchange state changes, game updates, game assets, and messages such as instant messages between players. In the exemplary embodiment, client 103 requests the game state from gaming system 109 and gaming system 109 sends the game state to client 103. More particularly, using the persistent connection, client 103 requests the game state. The request for the game state is received by the game state manager 215.
[0027] In the exemplary embodiment, game state manager 215 is configured to maintain the current game state of each game in progress. Game state manager 215 may store the current game states in game database 121. In response to the request for the game state, game state manager 215 determines the current game state for the associated game, and transmits the game state to client 103 via the persistent connection.
[0028] Upon receiving the game state, client 103 may update a game user interface to reflect any changes in game state. More particularly, the game state may require additional game assets, such as additional computer- executable code or graphics. Client 103 may determine that, based on the game state, that additional game assets are required. Client 103 may request, using the persistent connection, the additional game assets. Gaming system 109 receives the request for additional game assets and responds with the requested game assets. [0029] Client 103 may request the game state from gaming system 109 at pre-determined time intervals, such as every 15 seconds, or in response to a user request. Alternatively, or additionally, gaming system 109 may use the persistent connection to push the game state to client 103. More particularly, when gaming system 109 detects a change in the game state, gaming system 109 may send the game state to client 103 via the persistent connection.
[0030] When the user associated with client 103 takes action by making a move, interacting with the user interface, or otherwise making a change to the game, client 103 may transmit the result of the action, a "user update," to gaming system 109 via the persistent connection. Client 103 may update the user interface to indicate the result of the action. Game state manager 215 receives the result of the action and updates the game state accordingly.
[0031] During operation, client 103 makes an initial connection to connection manager 205 and receives initial game assets and an initial game state. A persistent connection is established between client 103 and persistent connection manager 210. Using the persistent connection, client 103 and gaming system 109 exchange game state, player actions, and game assets. Client 103 may request the game state throughout the game.
[0032] FIG. 3 is a flow chart of an exemplary method 300 for updating online gaming clients. Method 300 includes steps that can be implemented as instructions and executed by one or more processors in one or more computer systems. In some implementations, method 300 can be performed by client 103 and/or gaming system 109.
[0033] Initially, an initial connection request is received 310, e.g., by gaming system 109. An initial connection is established in response to the initial connection request. Using the initial connection, initial game assets and initial game state are transmitted 320, e.g., from gaming system 109 to client 103. A persistent connection request is received 330, e.g., by persistent connection manager 210. A persistent connection is established in response to the persistent connection request. [0034] In the exemplary embodiment, a loop 340 operates to exchange game state and player actions between client 103 and gaming system 109. Loop 340 includes receiving a request for game state 350 via the persistent connection. The game state is transmitted 360 via the persistent connection, e.g., from game state manager 215 to client 103. A player action is received 370 from one or more clients 103. The game state is updated 380 based on the player action(s) received. It should be appreciate that not every client 103 will transmit a player action during each iteration of loop 340. In the event that no player actions are transmitted during loop 340, then step 380 may be skipped.
[0035] FIG. 4 is a block diagram showing example or representative computing devices and associated elements that may be used to implement the systems of FIGS. 1 and 2. FIG. 4 shows an example of a generic computing device 1000 and a generic mobile computing device 1050, which may be used with the techniques described here. Computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Computing device 1050 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
[0036] Computing device 1000 includes a processor 1002, memory 1004, a storage device 1006, a high-speed interface or controller 1008 connecting to memory 1004 and high-speed expansion ports 1010, and a low-speed interface or controller 1012 connecting to low-speed bus 1014 and storage device 1006. Each of the components 1002, 1004, 1006, 1008, 1010, and 1012, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 1002 can process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or on the storage device 1006 to display graphical information for a GUI on an external input/output device, such as display 1016 coupled to high-speed controller 1008. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multiprocessor system).
[0037] The memory 1004 stores information within the computing device 1000. In one implementation, the memory 1004 is a volatile memory unit or units. In another implementation, the memory 1004 is a non-volatile memory unit or units. The memory 1004 may also be another form of computer-readable medium, such as a magnetic or optical disk.
[0038] The storage device 1006 is capable of providing mass storage for the computing device 1000. In one implementation, the storage device 1006 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 1004, the storage device 1006, or memory on processor 1002.
[0039] The high-speed controller 1008 manages bandwidth- intensive operations for the computing device 1000, while the low-speed controller 1012 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller 1008 is coupled to memory 1004, display 1016 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 1010, which may accept various expansion cards (not shown). In the implementation, low-speed controller 1012 is coupled to storage device 1006 and low-speed bus 1014. The low-speed bus 1014, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
[0040] The computing device 1000 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1020, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1024. In addition, it may be implemented in a personal computer such as a laptop computer 1022. Alternatively, components from computing device 1000 may be combined with other components in a mobile device (not shown), such as device 1050. Each of such devices may contain one or more of computing device 1000, 1050, and an entire system may be made up of multiple computing devices 1000, 1050 communicating with each other.
[0041] Computing device 1050 includes a processor 1052, memory 1064, an input/output device such as a display 1054, a communication interface 1066, and a transceiver 1068, among other components. The device 1050 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 1050, 1052, 1064, 1054, 1066, and 1068, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
[0042] The processor 1052 can execute instructions within the computing device 1050, including instructions stored in the memory 1064. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device 1050, such as control of user interfaces, applications run by device 1050, and wireless communication by device 1050. [0043] Processor 1052 may communicate with a user through control interface 1058 and display interface 1056 coupled to a display 1054. The display 1054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 1056 may comprise appropriate circuitry for driving the display 1054 to present graphical and other information to a user. The control interface 1058 may receive commands from a user and convert them for submission to the processor 1052. In addition, an external interface 1062 may be provide in communication with processor 1052, so as to enable near area communication of device 1050 with other devices. External interface 1062 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
[0044] The memory 1064 stores information within the computing device 1050. The memory 1064 can be implemented as one or more of a computer- readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory 1074 may also be provided and connected to device 1050 through expansion interface 1072, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory 1074 may provide extra storage space for device 1050, or may also store applications or other information for device 550. Specifically, expansion memory 1074 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory 1074 may be provide as a security module for device 1050, and may be programmed with instructions that permit secure use of device 1050. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non- hackable manner.
[0045] The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 1064, expansion memory 1074, or memory on processor 1052, that may be received, for example, over transceiver 1068 or external interface 1062.
[0046] Device 1050 may communicate wirelessly through communication interface 1066, which may include digital signal processing circuitry where necessary. Communication interface 1066 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 1068. In addition, short-range communication may occur, such as using a Bluetooth, Wife, or other such transceiver (not shown). In addition, GPS (Global Positioning system) receiver module 1070 may provide additional navigation- and location-related wireless data to device 1050, which may be used as appropriate by applications running on device 1050.
[0047] Device 1050 may also communicate audibly using audio codec 1060, which may receive spoken information from a user and convert it to usable digital information. Audio codec 1060 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1050. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1050.
[0048] The computing device 1050 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 1080. It may also be implemented as part of a smart phone 1082, personal digital assistant, a computer tablet, or other similar mobile device. [0049] Thus, various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
[0050] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms "machine-readable medium" "computer-readable medium" refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine- readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and/or data to a programmable processor.
[0051] To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input. [0052] The systems and techniques described here can be implemented in a computing system (e.g., computing device 1000 and/or 1050) that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0053] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0054] In the example embodiment, computing devices 1000 and 1050 are configured to receive and/or retrieve electronic documents from various other computing devices connected to computing devices 1000 and 1050 through a communication network, and store these electronic documents within at least one of memory 1004, storage device 1006, and memory 1064. Computing devices 1000 and 1050 are further configured to manage and organize these electronic documents within at least one of memory 1004, storage device 1006, and memory 1064 using the techniques described herein.
[0055] In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims. [0056] It will be appreciated that the above embodiments that have been described in particular detail are merely example or possible embodiments, and that there are many other combinations, additions, or alternatives that may be included. For example, while online gaming has been referred to throughout, other applications of the above embodiments include online or web-based applications or other cloud services.
[0057] Also, the particular naming of the components, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, formats, or protocols. Further, the system may be implemented via a combination of hardware and software, as described, or entirely in hardware elements. Also, the particular division of functionality between the various system components described herein is merely exemplary, and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead performed by a single component.
[0058] Some portions of above description present features in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations may be used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules or by functional names, without loss of generality.
[0059] Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "identifying" or "displaying" or "providing" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
[0060] Based on the foregoing specification, the above-discussed embodiments of the invention may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof. Any such resulting program, having computer- readable and/or computer-executable instructions, may be embodied or provided within one or more computer-readable media, thereby making a computer program product, i.e., an article of manufacture, according to the discussed embodiments of the invention. The computer readable media may be, for instance, a fixed (hard) drive, diskette, optical disk, magnetic tape, semiconductor memory such as readonly memory (ROM) or flash memory, etc., or any transmitting/receiving medium such as the Internet or other communication network or link. The article of manufacture containing the computer code may be made and/or used by executing the instructions directly from one medium, by copying the code from one medium to another medium, or by transmitting the code over a network.
[0061] While the disclosure has been described in terms of various specific embodiments, it will be recognized that the disclosure can be practiced with modification within the spirit and scope of the claims.

Claims

WHAT IS CLAIMED IS:
1. A computer- implemented method for updating a client using a computer device coupled to a memory device, the method comprising: receiving an initial connection request; receiving a persistent connection request; establishing a persistent connection in response to the persistent connection request; receiving a request for state data via the persistent connection; determining, by the computer device, the requested state data; transmitting the requested state data via the persistent connection; receiving a user update via the persistent connection; and updating state data based on the user update.
2. The computer-implemented method of Claim 1, further comprising receiving a subsequent request for state data via the persistent connection and transmitting the updated state data via the persistent connection.
3. The computer-implemented method of Claim 1, further comprising establishing an initial connection in response to the initial connection request.
4. The computer-implemented method of Claim 3, further comprising transmitting an initial asset and initial state data via the initial connection.
5. The computer-implemented method of Claim 4, further comprising closing the initial connection after the initial asset and initial state data have been transmitted via the initial connection.
6. The computer-implemented method of Claim 1, wherein establishing a persistent connection comprises establishing a persistent connection using a hypertext transfer protocol.
7. The computer-implemented method of Claim 1, wherein determining, by the computer device, the requested state data comprises receiving state data from a database coupled to the computer device.
8. The computer-implemented method of Claim 1, wherein receiving an initial connection request comprises receiving an initial connection request from a web browser associated with the client.
9. A computer program product tangibly embodied in a non-transitory computer-readable storage device and comprising instructions that, when executed by a processor, cause the processor to: receive an initial connection request; receive a persistent connection request; establish a persistent connection in response to the persistent connection request; receive a request for state data via the persistent connection; determine, by the processor, the requested state data; transmit the requested state data via the persistent connection; receive a user update via the persistent connection; and update state data based on the user update.
10. The computer program product of Claim 9, further comprising instructions that when executed cause the processor to receive a subsequent request for state data via the persistent connection and transmitting the updated state data via the persistent connection.
11. The computer program product of Claim 9, further comprising instructions that when executed cause the processor to establish an initial connection in response to the initial connection request.
12. The computer program product of Claim 11, further comprising instructions that when executed cause the processor to transmit an initial asset and initial state data via the initial connection.
13. The computer program product of Claim 12, further comprising instructions that when executed cause the processor to close the initial connection after the initial asset and initial state data have been transmitted via the initial connection.
14. The computer program product of Claim 9, wherein establishing a persistent connection comprises establishing a persistent connection using a hypertext transfer protocol.
15. The computer program product of Claim 9, wherein determining, by the computer device, the requested state data comprises receiving state data from a database coupled to the computer device.
16. The computer program product of Claim 9, wherein receiving an initial connection request comprises receiving an initial connection request from a web browser associated with the client.
17. A computer system including instructions stored on a non-transitory computer-readable medium and executable by at least one processor, the computer system comprising: a connection manager configured to receive an initial connection request; a game state manager configured to determine a current state; and a persistent connection manager configured to: receive a persistent connection request; establish a persistent connection in response to the persistent connection request; receive a request for state data via the persistent connection; transmit the requested state data via the persistent connection, wherein the requested state data is based on the current state determined by said game state manager; receive a user update via the persistent connection; and update, using said game state manager, state data based on the user update.
18. The computer system of Claim 17, wherein said persistent connection manager is further configured to receive a subsequent request for state data via the persistent connection and transmit the updated state data via the persistent connection.
19. The computer system of Claim 17, wherein said persistent connection manager is configured to establish a persistent connection using a hypertext transfer protocol.
20. The computer system of Claim 17, wherein said game state manager is further configured to determine the current state by receiving state data from a database coupled to the computer system.
PCT/US2013/053865 2012-08-07 2013-08-06 Methods and systems for updating online gaming clients WO2014025830A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/569,128 2012-08-07
US13/569,114 2012-08-07
US13/569,128 US20140045596A1 (en) 2012-08-07 2012-08-07 Methods and systems for determining the location of online gaming clients
US13/569,114 US20140047431A1 (en) 2012-08-07 2012-08-07 Methods and systems for updating online gaming clients

Publications (1)

Publication Number Publication Date
WO2014025830A1 true WO2014025830A1 (en) 2014-02-13

Family

ID=50068535

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2013/053865 WO2014025830A1 (en) 2012-08-07 2013-08-06 Methods and systems for updating online gaming clients

Country Status (1)

Country Link
WO (1) WO2014025830A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060046810A1 (en) * 2004-08-30 2006-03-02 Kabushiki Kaisha Square Enix Network game not requiring continuous connectivity
US20070280109A1 (en) * 2004-03-03 2007-12-06 Jussi Jaatinen Method, a Device and a System for Transferring Data
KR20070119821A (en) * 2006-06-16 2007-12-21 김대원 System and method for backup/recovery of operating system, backup/recovery/update/install/run of game program and management of operating sysem
US20080076573A1 (en) * 2006-09-08 2008-03-27 John Loehrer Network-based game system
US20080083030A1 (en) * 2006-09-29 2008-04-03 Durham David M Method and apparatus for run-time in-memory patching of code from a service processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070280109A1 (en) * 2004-03-03 2007-12-06 Jussi Jaatinen Method, a Device and a System for Transferring Data
US20060046810A1 (en) * 2004-08-30 2006-03-02 Kabushiki Kaisha Square Enix Network game not requiring continuous connectivity
KR20070119821A (en) * 2006-06-16 2007-12-21 김대원 System and method for backup/recovery of operating system, backup/recovery/update/install/run of game program and management of operating sysem
US20080076573A1 (en) * 2006-09-08 2008-03-27 John Loehrer Network-based game system
US20080083030A1 (en) * 2006-09-29 2008-04-03 Durham David M Method and apparatus for run-time in-memory patching of code from a service processor

Similar Documents

Publication Publication Date Title
US20210049867A1 (en) Method and system for gaming revenue
US9017170B2 (en) Method and apparatus for interactive gameplay across multiple computing platforms
US20180071633A1 (en) Providing social network content in games
US20130045798A1 (en) Data viewing/modifying via data import/export architecture
US20140047431A1 (en) Methods and systems for updating online gaming clients
US8821296B1 (en) Network gaming system and casino management system link
US20140244575A1 (en) Method, system and program product for managing data representative of the personal experience of a user on an exercise equipment
US20150111643A1 (en) Systems and methods for interactive gameplay
US20150256415A1 (en) Browser notifications
CN103262065A (en) Method and system for transferring application state
US20140045596A1 (en) Methods and systems for determining the location of online gaming clients
US8562434B2 (en) Method and system for sharing speech recognition program profiles for an application
US9722869B2 (en) Sharing an application configuration among social networks
CN108140280A (en) For the method and system for income of playing
JP2019042607A (en) Synchronization method of online game, synchronization system of online game, server, client terminal, and synchronization program of online game
US20210320984A1 (en) Computer-readable non-transitory storage medium, terminal device, and information processing system
US20090088235A1 (en) Concentric puzzle video game
US9604130B1 (en) Social game play using social network features
JP2014176424A (en) Game system, game control method, and computer program
US10765939B2 (en) Information processing system, terminal device, computer-readable non-transitory storage medium, and information processing method
US10791198B2 (en) Information processing system, storage medium having stored therein information processing program, information processing apparatus, and information processing method
WO2014025830A1 (en) Methods and systems for updating online gaming clients
US11423108B2 (en) Interactive media network system
KR20190107535A (en) Method and system for game replay
US11654369B2 (en) Game system, game method, and game program

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13828237

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13828237

Country of ref document: EP

Kind code of ref document: A1