US20080070688A1 - Real-time gaming system having scalable database - Google Patents

Real-time gaming system having scalable database Download PDF

Info

Publication number
US20080070688A1
US20080070688A1 US11/533,756 US53375606A US2008070688A1 US 20080070688 A1 US20080070688 A1 US 20080070688A1 US 53375606 A US53375606 A US 53375606A US 2008070688 A1 US2008070688 A1 US 2008070688A1
Authority
US
United States
Prior art keywords
game
data base
state information
network
persistent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/533,756
Inventor
John Loehrer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/533,756 priority Critical patent/US20080070688A1/en
Publication of US20080070688A1 publication Critical patent/US20080070688A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • A63F13/12
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • 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/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • 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/51Server architecture
    • A63F2300/513Server architecture server hierarchy, e.g. local, regional, national or dedicated for different tasks, e.g. authenticating, billing
    • 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
    • A63F2300/5533Game data structure using program state or machine event data, e.g. server keeps track of the state of multiple players on in a multiple player game
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Definitions

  • This application relates to a game system, more specifically, a network-based game system.
  • Interactive online digital entertainment has advanced on many fronts in recent years, especially with respect to video gaming. For example, users can login to websites to find an opponent and then a game of chess or a card game in the virtual world. As a player may be competing against another player, the communication is bi-directional. However, not all video games can be played online. For a game of chess where time to make a move does not have an immediate and consequential effect on the outcome, players have time to contemplate the next move, counter move, game strategy and so on and the game does not need to provide real-time feedback. However, in a majority of real-time video games, time needed to make a decision and act upon that decision is relatively short so that players involved feel a sense of realism and engagement.
  • the present invention relates to a network-based game system including a game-system-interface (GSI) server configured to receive an instruction related to persistent game-state information from a game client application running on a remote computer device; a data base system comprising a master data base and a slave data base, wherein the master data base and the slave data base comprise substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and a router configured to direct the instruction to one of the master data base or the slave data base to allow the persistent game-state information to be written to or retrieved from the one of the master data base or the slave data base in response to the instruction.
  • GTI game-system-interface
  • the present invention relates to a method of providing a game over a computer network.
  • the method includes receiving an instruction related to persistent game-state information from a game client application running on a remote computer device; retrieving the persistent game-state information from or writing the persistent game-state information to a master data base or a slave data base in response to the instruction, wherein the master data base and the slave data base store substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and synchronizing changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base.
  • the present invention relates to a method for providing uninterrupted gaming service during a data-base structure update in a network-based gaming system.
  • the method includes receiving first persistent game-state information from a game client application running on a remote computer device; authenticating at least one of user identification, game session identification, or game room identification in the request; writing a first portion of the first persistent game-state information to a first data-base structure in a master data bases; changing a second data-base structure in a slave data base; writing a second portion of the first persistent game-state information to the second data-base structure after the step of changing a second data-base structure; changing the first data-base structure such that the first data-base structure becomes substantially the same as the second data-base structure; and synchronizing the first persistent game-state information stored in the first data structure and the first persistent game-state information stored in the second data structure.
  • Implementations of the system may include one or more of the following.
  • the master data base and the slave data base can be configured to synchronize changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base.
  • the instruction can include writing persistent game-state information to the data base system or retrieving the persistent game-state information from the data base system.
  • the data base system can include a plurality of storage devices in connection with the router and the master data base and the slave data base are stored on two different storage devices in the plurality of storage devices.
  • the master data base and the slave data base can share the same network address for communication with the router or the GSI server.
  • the data base system can include a plurality of pairs of master data bases and slave data bases in connection with the router, and wherein the router is configured to direct the instruction to one of the plurality of pairs of the master data base and the slave data base in accordance with a user identification associated with the instruction.
  • the GSI server can store a GSI program that comprises a GST controller that is configured extract the instruction from a message received from the game client application.
  • the GSI controller can de-serialize the message received from the game client application.
  • the GSI program can include a GSI model that is configured to initiate a database access object or a database object, wherein the database access object or the database object is configured to communicate with the router in response to the instruction.
  • the data base system can be configured to return a response message in response to the instruction.
  • the network-based game system can further include a game server configured to store a game engine application, wherein the game engine application is configured to receive the instruction related to persistent game-state information from a game client application and send the instruction to the GSI server.
  • the game engine application or the GSI program can send a message to authenticate user identification, game session identification, or game room identification associated with a game client application.
  • the persistent game-state information can include one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
  • Embodiments may include one or more of the following advantages.
  • the disclosed system and methods provide a scalable data base system suitable for providing network-based gaming service in real time to a large number of game players.
  • the data base system can provide high data access rates to enable real-time responses to a large number of game sessions.
  • Gaming status information can be instantaneously updated to the data base system and thus assuring accuracy of the gaming data in the data base system at each point of time.
  • the disclosed data base system includes a plurality of distributed data base clusters that can be easily scaled up to hold data for increased number of users or game sessions.
  • Each cluster can include a master data base and a slave data base that provides performance reliability and allow flexible and reliable updates of the data base structure.
  • the scalable distributed data base clusters also allow the data base system to be implemented at low cost while providing fast and reliable data accesses.
  • the enhanced GSI application includes a flexible network interface that allows the GSI application to handle data communications with data base systems in different formats and protocols.
  • the disclosed system and methods provide a simplified game architecture for a network-based game system.
  • a game client application running one a game player's computer device can communicate with a load balancer in the network-based game system in a persistent network connection.
  • the load balancer routes requests or instruction from the game client application to a game engine application on a game server.
  • the game engine application makes requests and sends information to a game system interface (GSI) when needed.
  • GSI game system interface
  • the game client application no longer needs to communicate with the GSI in non-persistent network connections.
  • the elimination of the non-persistent network connection simplifies the communications between the game client application and the network-based system.
  • a single persistent connection to a game server at a consistent gateway IP address is much easier to maintain than multiple connections to many different possible services in some network-based game systems.
  • the persistent network connections between the game client application and the load balancer provide more robust communications between the game client application and the network-based game system.
  • the persistent network connections allow instantaneous information exchanges with the game client applications in real time.
  • the persistent network connections have much lower probability of connection failures than non-persistent network connections.
  • the persistent network communications allow a large number of client game applications to be played without network latency at multiple remote locations.
  • the disclosed system and methods also improves network security for communications with the game client applications.
  • the game client applications and the network-based game system can communicate in persistent and authenticated network connections.
  • the communications are first validated and authenticated by game engine applications on the game servers.
  • the GSI receives requests or updates from the game client applications only through the game engine applications after the validation and authentication, that is, the communications to and from GSI are internal to the network-based game system.
  • This architecture design removes the need for network security for non-persistent network connections between GSI and game client applications in some network-based game systems.
  • the persistent network connection between the game client application and the game engine application are stateful.
  • the game engine application is thus much better equipped to validate and authenticate requests from the game claim applications. As a result, the network security is much improved for the network-based game system.
  • the disclosed system and methods also improve the efficiency and scalability of the network-based game system.
  • the requests from a large number of game client applications can be intelligently routed by a load balancer to a plurality of game servers in accordance with the up/down status and the load levels of the game servers.
  • the game servers in the network-based game system can thus be more efficiently utilized and network traffic can be minimized.
  • the network-based game system can also be more easily scaled up by increasing the number of game servers to accommodate the communication needs with increased number of game client applications.
  • FIG. 1 is a system diagram of a network-based game system.
  • FIG. 2 is a block diagram of a game architecture compatible with the network-based game system.
  • FIG. 3 is a flow diagram for the network-based game system.
  • FIG. 4 is a block diagram for an enhanced GSI application and a scalable data base system.
  • FIG. 5 is a data flow diagram for an enhanced GSI application and a scalable data base system.
  • FIG. 6 shows a flow chart for updating a scalable data base system in a network-based game system.
  • a network-based game system 100 can support game applications running on remote computer devices 106 and 107 through a communication network 105 .
  • the communication network 105 can include various wired, wireless, satellite communication arrangements including but not limited to a wide area network such as the Internet, a local area network, a cellular phone network under various communication protocols such as 2G, 2.5G and 3G, Global System for Mobile Communications (GSM), General Packet Radio Service (GPRS), EDGE, Code Division Multiple Access (CDMA), Wideband CDMA, TD-SCDMA, Universal Mobile Telecommunications System (UMTS), etc., city wide wires network such as WiMax, and wireless local area network (WLAN) such as Wi-Fi wireless communication standards such as IEEE 802.11, Wi-Max, and IEEE 806.16, and others.
  • the computer devices 106 and 107 can include personal computers, portable digital assistance (PDA) devices, cell phones, digital image capture devices, and dedicated game devices such as Microsoft XBOX, SONY PlayStation OR PS2, Nintendo gaming machines GameCube,
  • the network-based game system 100 can include a load balancer 115 , one or more web servers 121 - 124 , one or more session servers 130 , a plurality of game servers 141 - 143 , and a data base system 150 .
  • the data base system 150 can for example be implemented as a storage area network.
  • the load balancer 115 can include one or a system of servers that are designed to ensure redundancy and reliability for the network-based game system 100 .
  • the network-based game system 100 can be operated by a game service provider such as Gaia Interactive Inc. based in California, USA.
  • the network-based game system 100 can provide a website such as www.gaiaonline.com on the Internet to host a game community and provide various game services such as games, discussion groups, forums, and e-mails etc.
  • a player can sign up at the website to own his or her own account. The player can also personalize his or her own profiles. The player can also set up a list of buddies. He or she may play with some of the buddies in multi-player network-based games.
  • the network-based system 100 can store game statistics and other game properties associated with a player in a networked storage device, available and updatable to the game player.
  • a game player can access the web site of the game service provider using computer devices 106 and 107 with a web browser application executed on the computer devices 106 or 107 .
  • the web browser applications are available from several manufacturers including Internet ExplorerTM from Microsoft, NetscapeTM from AOL, and FireboxTM from Mozilla and so on.
  • Various Internet browsing applications are available to cellular phones, PDAs, game consoles, which are also compatible with the disclosed system and methods.
  • FIG. 2 depicts interactions between various components in a game architecture 200 compatible with the network-based game system 100 .
  • Game client applications 206 and 207 reside on the computer devices 106 and 107 .
  • the game client applications 206 and 207 can be executed by a plug-in to the web browser application.
  • the game client applications 206 and 207 can include game logic for one or more games and enable animation display for the games.
  • the web-browser plug-in can enable the web browser to audio or video messages and properly display vector graphics images independent of the manufacturer or the version of the web browser.
  • the web-browser plug-in can allow animations to be properly scaled to as web browser window is resized.
  • the game client application 206 or 207 can use the web browser's communication API (Application Programming Interface) to communicate with the network-based game system 100 .
  • API Application Programming Interface
  • the computer devices 106 and 107 can be installed with Flash plug-in produced by Macromedia Inc.
  • Flash is a bandwidth friendly and browser independent vector-graphic animation technology. Animation is choreographed using one or more sequential timelines in which actions and interactions are defined.
  • the Flash plug-in can be downloaded, installed, and attached to a web browser.
  • the Flash plug-in allows the web browser to play SWF (Small Web Format) movie clips in the web-browser it finds referenced in a webpage.
  • SWF Small Web Format
  • Each SWF movie clip can include a unique game.
  • the SWF movie clips contain the game logic as well as animations, images, and other effects.
  • the SWF movie clip can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in and libraries of APIs developed for the network-based game system 100 .
  • Macromedia's Flash MX and Freehand applications and other Flash files can also be viewed through a Web browser plug-in (or the Flash player) or multimedia applications that access the player directly.
  • Flash files can include sound. Flash can use the FLA files for source files and SWF files for the Flash movies. Flash files are space-efficient and suitable for interactions, comparing to other movie files (AVI, MPG, etc.) files.
  • the game client application 206 or 207 can be written in one or more SWF movie clips to be loaded in the web browser. Each game client application 206 or 207 can correspond to one or more games.
  • the SWF movie clips include game logic as well as animations, images, and other effects.
  • the SWF movie clips can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in.
  • a library of APIs can be developed for the SWF movie clips that can be re-used in multiple games.
  • the game client applications 206 and 207 communicate with the network-based game system 100 via the load balancer 115 in persistent communication channels such as socket network connections.
  • a load balancer 115 can monitor the status of the game servers 141 - 143 , for example, whether one of the game servers 141 - 143 is on or off.
  • the load balancer 115 can monitor the load level of the game servers 141 - 143 .
  • the load balancer 115 can direct a request from a game client application 206 or 207 to a game server 141 - 143 that is available and has relatively low load level so that the capacity of the game servers 141 - 143 can be efficiently utilized.
  • the requests or updates from the game client applications 206 and 207 to the game engine applications 301 - 303 via the load balancer 115 can include instructions that involve different types of information.
  • the communications between the game client applications 206 and 207 and the game engine applications 301 - 303 can include:
  • Game logic information that does not need to be stored permanently on data storage beyond a game session.
  • the game logic information can include positions of a soccer-ball on a soccer field as the ball is being kicked around; the positions or the postures of a player's avatar as the player moves across the soccer field, and the instant message chat communication among the players in a game room, including text-based chats and emoticons.
  • the game logic information can be handled by the game engines alone.
  • Persistent game-state information that is usually of use beyond a single game session.
  • the persistent game-state information may include for example, user account information, attributes and statistics associated with a game player such as his or her game scores, game currency or game credits that the player owns, an inventory for tools and weapons owned by a player, an update of a buddie list, etc.
  • the persistent game-state information is handled by the GSI program 400 , and can be updated and stored in the data base system 150 .
  • the GSI program 400 can store game room ID and game session ID in a local memory, which are typically cleared after the end of a game session. But the game room ID and the game session ID can be stored for hours and can be retrieved during this period of time for authentication of users and game client applications 206 and 207 .
  • the game engine application 301 - 303 can instantaneously respond to calls from the game client applications 206 and 207 to ensure real-time performance of the game sessions.
  • the GSI program 400 on the other hand can respond to the game engine application 301 - 303 in the typical time frame of 0.001-0.1 milliseconds, depending on network latency and the processing time.
  • the GSI program 400 can reliably respond to requests, but not necessarily in real time.
  • the GSI program 400 can store the persistent game-state information into the player's account on the database 150 , which can include game status information such that the player can retrieve the information after the specific game session is closed.
  • the game client applications 206 and 207 can securely communicate with the load balancer 115 and thus with the game engine application 301 - 303 , and the GSI program 400 in encrypted serialized messages.
  • Each game engine application 301 - 303 can choose to communicate in specific serialization communication protocol such as PHP (Hypertext Preprocessor), XML, AMF, XML-RPC (Remote Procedure Call), etc.
  • a library of serialization communication protocols is stored on a computer device connected to the network-based game system 100 available to the game engine application 301 - 303 and the GSI program 400 .
  • the library provides rules for encryption and decryption of the serialized messages under different protocols.
  • the communication protocols can be independent of the game logic, the game rooms, and the game engine applications.
  • a call from a game client application 206 or 207 can include a token that specifies gaming protocols such as PHP, XML, AMF, XML-RPC, etc.
  • the load balancer 115 can also direct a call from a game client application 206 or 207 to a game server 141 - 143 that can interpret the protocols required by the specific call.
  • the game server 141 , 142 , or 143 can keep an open socket connection with the computer device 106 or 107 .
  • the game engine application 301 - 303 and the game client application 206 or 207 can send and receive TCP/IP messages to and from each other by writing and reading data through the socket connection. Messages can be sent and received from either the game server 141 (or 142 and 143 ) or the computer device 106 or 107 at any time.
  • the persistent network connection allows instantaneous two-way communications and guarantees the games updated in real time without network latency during a game session.
  • the persistency of the network connection between the game client application 206 or 207 and the game engine application 301 - 303 typically last through a game session.
  • a loss of connection in the persistent communication can be interpreted as that the game client application 206 or 207 has left the game.
  • a stop in the two-way communications between the game client application 206 or 207 and the game engine application 301 - 303 (via the load balancer 115 ) can be interpreted by the game engine application 301 - 303 as that the game client application 206 or 207 is leaving the game session.
  • the game engine application 301 - 303 is compatible with different server software implementations such as Sushi Multiuser Server available at “www.wok2.de”, ElectroServer 3 available at “www.electrotank.com”, and Terazona Network Engine available at “www.zona.net”.
  • the network-based game system 100 can include game engine applications 301 - 303 developed using different server software. Different server software may require serialized messages encrypted under different serialization protocols.
  • each game client application 206 or 207 can be supported by a game engine application 301 - 303 with a persistent connection in the network-based game system 100 .
  • the game client application 206 or 207 can pull information related to the specific game or game session from the game engine application 301 - 303 .
  • the game engine application 301 - 303 can also update the game client application 206 or 207 with animations and short-term game logic information that do not need to be permanently stored.
  • the game client application 206 or 207 can request the saving of the game results.
  • the game engine application 301 - 303 can validate the data to be saved on the data base system 150 by the GSI program 400 and returns whether or not the saving is succeeded.
  • the game engine application 301 - 303 can also gather information about all the players in the same game room and broadcast the information to the game room.
  • the game engine application 301 - 303 can establish the players in the same game room as peers.
  • the game engine application 301 - 303 can conduct peer-to-peer communications in real time by broadcasting a player's actions or events over that player's game client application to other peers' game client applications in the same game room.
  • Each game client application 206 or 207 in the game room can construct a message and request the game engine application 301 - 303 to forward to the message another peer or all the peers in the same game room.
  • the load balancer 115 can control the load balance and the distribution of players and game sessions in the game rooms across multiple game servers 141 - 143 .
  • a game engine application 301 - 303 includes programmed game logic for each game and can control the game flow.
  • the game engine application 301 - 303 can decide when to retrieve user information from the GSI program 400 and store information to the GSI program 400 .
  • Many game players each running a game client applications can play in a common game session.
  • the game players can, for example, compete with each other in a ball game or fishing game in the game session.
  • the game players playing can also be depicted as playing in a same game room.
  • the game engine application 301 - 303 can broadcast updates to many game client applications 206 and 207 running on many computer devices 106 , 107 that are in the same game room.
  • the GSI program 400 serves as an interface for the game servers 141 - 143 to the database 150 .
  • the game engine application 301 - 303 can communicate with the GSI program 400 in trusted intra-network connections.
  • the game engine application 301 - 303 can contact the GSI program 400 to verify that game rooms for a given game are not duplicated by accident.
  • the game client applications 206 and 207 updates the game engine application 301 - 303 with game statistics and game player information such as game scores, game equipment, game location.
  • the game engine application 301 - 303 can pass the persistent game-state information to the GSI program 400 .
  • Tokens and validation keys can also be passed from the GSI program 400 to the game engine application 301 - 303 and in turn to the game client applications 206 and 207 to make sure different actions are occurring in the correct order and are not being spoofed by the client game application 206 or 207 .
  • the game client application 206 or 207 may be required to return the tokens and keys combined with other variables to ensure that the game's integrity has not been compromised.
  • the game engine application 301 - 303 can communicate with the GSI program 400 over its own local host loop-back IP address (since the GSI program 400 can be installed and run on the same computer as the game engine application 301 - 303 ), eliminating network latency between the game engine application 301 - 303 and the GSI program 400 .
  • the game engine application 301 - 303 can act as a controller that can monitor the loads of game servers 141 - 143 and the status of the game rooms.
  • the game engine application 301 - 303 can intelligently assign the game client applications 206 and 207 an appropriate game room according to the loads of the game servers 141 - 143 and the status of the game rooms.
  • the game engine application 301 - 303 can also store game room ID, user ID, and game session ID in a local memory for verifying game client applications 206 and 207 without necessarily going through the GSI program 400 .
  • the GSI resides in a GSI server 450 that can be one of the web servers 121 - 123 , one of the game servers 141 - 143 , or another server connected to the computer network in the network-based game system 100 .
  • the GSI program 400 can reside on any of the web servers 121 - 123 and the game servers 141 - 143 .
  • Using GSI program 400 as an interface is beneficial because the game servers 141 - 143 and the data base system 150 can be modified independently without affecting each other in system upgrades.
  • a game player can access a game service website such as www.gaiaonline.com operated by Gaia Interactive Inc., based in California, USA.
  • the game player can initiate a game session by clicking a game client application 206 or 207 on a computer device 106 or 107 (step 310 ).
  • the game client application 206 or 207 can be presented on a web page presented by a web browser application.
  • a game session refers to an active connection between the client game application 206 or 207 and other programs such as game engine application 301 - 303 stored in the network-based game system 100 .
  • the game client application 206 or 207 can also be in the form of stream media (e.g.
  • a game session can be initiated by a game client application 206 or 207 by contacting and authenticating with a game engine application 301 - 303 via a load balancer 115 without the need to access a webpage.
  • the game client application 206 or 207 sends a request to the load balancer 115 to request long in the user using a password (step 310 ).
  • the load balancer 350 directs the authorization request to a game engine application 301 - 303 on a game server 141 - 143 (step 330 ).
  • the game engine application 301 - 303 passes the request to GSI program 400 (step 340 ).
  • the GSI program 400 verifies the user ID and password using information retrieved from the data base system 150 .
  • the GSI program 400 creates a new session ID for the user at login (step 350 ). If the game room exists, the GSI can assign the game client application 206 or 207 to an existing one.
  • the GSI program 400 creates, validates the game room, and stores the game room ID.
  • the GSI program 400 returns validation message to the game engine application 301 - 303 to confirm the authenticity of the user ID and the game session ID.
  • the validation message can include the game session ID and game room ID in association with the user ID.
  • the game engine application 301 - 303 hold the user ID and the game session ID for future identification purposes.
  • the game engine application 301 - 303 communicates a validation message to the game client applications 206 or 207 about the game session ID and which game room the user has been assigned to (step 360 ).
  • the game client application 206 or 207 enters the game room.
  • the game client application 206 or 207 then requests the load of a game.
  • a SWF file is loaded by the plug-in at the request of the web browser.
  • the SWF is executed by a Flash Plugin. Instructions inside the SWF tell it to connect to a game engine application 301 - 303 . Instructions inside the SWF also instruct it to display the game environment and run the game interactions.
  • the game client applications 206 or 207 can update the game engine application 301 - 303 with game statistics, and persistent game-state information such as scores, equipment, and the amount of currency owned by the user.
  • the game engine application 301 - 303 can pass the persistent game-state information to the GSI program 400 (step 370 ), which in turn can update the information in the data base system 150 (step 380 ).
  • the GSI program 400 can include two application layers: a GSI controller 401 and one or more GSI models 402 .
  • the GSI program 630 can be built on a hybridized MVC (Model View Controller) architecture including the two application layers
  • the GSI controller 401 handles the communications with the game engine applications 301 - 303 .
  • the GSI controller 401 can serialize or de-serialize the messages received from or sent to the game engine applications 301 - 303 .
  • the GSI controller 401 can access a game protocol library for interpreting serialized messages under different protocols.
  • the application logic is processed by the GSI model 402 .
  • the GSI controller 401 is a gateway responsible for controlling and responding to the requests from the game engines 301 - 303 .
  • the game engine application 301 - 303 can receive a series of discreet requests for specific information from the game client applications 206 and 207 .
  • the specific requests can include queries to the data base system 150 for retrieving or updating persistent game-state information.
  • the GSI controller 401 can de-serialize a message from a game engine application 301 - 303 and a de-serialized message to a specific GSI model 402 .
  • the GSI model 402 contains the application logic for each particular call.
  • the GSI model 402 interprets the de-serialize messages and accepts the parameters carried in the message.
  • the GSI model 402 can extract information from the data base system 150 and returns a response to the GSI controller 401 .
  • the GSI controller 401 serializes the responses from the GSI model 402 using the same protocol as the initial request and then returns the responses back to the game engine application 301 - 303 .
  • the data base system 150 can include a router 155 and a plurality of storage devices 151 - 153 that are connected to the router 155 in a computer network.
  • the data stored in the data base system 150 can be structured by a plurality of clusters 550 and 560 .
  • Each cluster 550 or 560 can store information for a relatively short list of users, for example, 10,000 users instead of hundreds of thousands of users.
  • the amount of the user gaming data stored at the cluster level is selected to optimize the access speed of the individual clusters.
  • the relatively short user list helps to assure user game information can be rapidly retrieved and written for each cluster.
  • the router 155 includes software responsible for directing the data retrieval and writing calls to the correct clusters.
  • the call directions can be implemented in a variety of ways such as look-up table, hashing, or data range based on the user ID.
  • the cluster 550 can include a master data base 551 and a slave data base 552 .
  • the cluster 560 can include a master data base 561 and a slave data base 562 .
  • the master data base 551 and the slave data base 552 comprise substantially the same data-base structures for storing persistent game-state information comprises one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
  • the master data base 551 and the slave data base 552 can share the same network address (or URL) in the cluster 550 for communication with the router 155 or the GSI server 450 .
  • the cluster 550 points the network traffic to one of the master data base 551 and the slave data base 552 .
  • the network traffic is always directed to the master data base 551 by default. In another implementation, there is not a default data base in the pair.
  • the network traffic can be directed to either one of the master data base 551 or the slave data base 552 .
  • the URL can be pointed to the master data base 551 at which the data is retrieved or written for communications with the GSI program 400 .
  • the slave data base 552 is synchronized with the master data base 551 .
  • the cluster 550 can hot swap the URL link to the slave database 552 to allow the master data base 551 to be repaired without affecting the real-time performance of the network-based game system 100 .
  • the master data bases 551 , 561 and the slave data bases 552 , 562 for each cluster 550 and 560 can be distributed on different storage devices 151 - 153 .
  • the application logic accessible to GSI models 402 can be broken down into several application layers to allow the GSI program 400 to be a flexible interface for different data base formats and protocols.
  • the GSI controller 401 After receiving a request from a game client application 206 or 207 , the GSI controller 401 evaluates the request and determines which communication protocol is to be used. The communication protocol may be indicated in a header in the request message or stored at a storage location defined by an URL.
  • the GSI controller 401 then instantiates a view object from a game protocol library to de-serialize the request.
  • the view object can include decryption and encryption rules for the protocol.
  • the view object de-serializes the request and returns the request in a standardized format to the GSI controller 401 .
  • the GSI controller 401 evaluates the request.
  • the GSI controller 401 instantiates a GSI model 402 to handle different sections of the request.
  • the GSI model 402 accepts the parameters passed in by the GSI controller 401 and returns a response.
  • the GSI controller 401 captures the result of these operations and passes them to the view object.
  • the view object serializes the response.
  • the GSI controller 401 returns the serialized response to the game client application 206 and 207 .
  • the GSI model 402 can initiate a Data Access Object (DAO).
  • DAO Data Access Object
  • a database query e.g. SQL query
  • DBO database object
  • the game status information in the request is retrieved or written in the clusters 550 and 560 stored in the storage devices 151 - 153 .
  • the disclosed data base system 151 and the GSI program also allow data-base structures in the data bases to be reliably and flexibly updated without affecting the performance of the network-based game system 100 .
  • the network traffic i.e. the database URL
  • the data updates and retrieval from the GSI program 400 is directed to the master database 551 .
  • the data base structure of the slave data base 552 is updated (step 620 ). For example, a column can be added to the data table in the slave data base 552 .
  • the network traffic is then swapped to the slave database 552 (step 630 ).
  • the data updates and retrieval from the GSI program 400 is directed to the slave database 552 .
  • the data base structure of the master data base 551 is updated while the slave database 552 is taking the workload from GSI program 400 (step 640 ).
  • the master data base 551 and the slave database 552 are synchronized (step 650 ).
  • the user gaming data in the old data-base structure as well as the incrementally changed data-base structure are both synchronized.
  • the network traffic i.e. the database URL
  • the disclosed data base system is compatible with different designs and formats.
  • the DBO in the GSI program can be connected to a proxy server that is connected to a plurality of clusters in the data base system.
  • the proxy server can handle the data communications between the GSI model and a plurality of clusters.
  • the proxy server can provide a unified network interface data base clusters that are stored in different structures and distributed in different locations.
  • the game logic can also be remotely stored on a server in connection with the network-based game system, instead of on a computer device 106 or 207 .
  • the server may be able to store more complex game logic than game client applications.
  • the remotely stored game logic can be activated remotely in real-time with secure processing on the servers or downloaded to the game players' computer devices 106 and 107 before a session starts.
  • each game engine application can support one or many game client applications and thus many game logics.
  • the game engine applications 301 - 303 can be implemented on different game platforms that may be provided by different game service providers, which allow game players to access a wide range of network-based game engine applications based on different game platforms.
  • Different game client applications can be installed on the computer devices to run specific games supported by the game platforms of the corresponding game engine applications.
  • a single game server or a single game engine application can simultaneously support one or many game client applications.

Abstract

A network-based game system includes a game-system-interface server configured to receive an instruction related to persistent game-state information from a game client application running on a remote computer device, a data base system comprising a master data base and a slave data base, wherein the master data base and the slave data base comprise substantially the same data-base structure configured to store persistent game-state information for a plurality of users, and a router configured to direct the instruction to one of the master data base or the slave data base to allow the persistent game-state information to be written to or retrieved from the one of the master data base or the slave data base in response to the instruction.

Description

    TECHNICAL FIELD
  • This application relates to a game system, more specifically, a network-based game system.
  • BACKGROUND
  • Interactive online digital entertainment has advanced on many fronts in recent years, especially with respect to video gaming. For example, users can login to websites to find an opponent and then a game of chess or a card game in the virtual world. As a player may be competing against another player, the communication is bi-directional. However, not all video games can be played online. For a game of chess where time to make a move does not have an immediate and consequential effect on the outcome, players have time to contemplate the next move, counter move, game strategy and so on and the game does not need to provide real-time feedback. However, in a majority of real-time video games, time needed to make a decision and act upon that decision is relatively short so that players involved feel a sense of realism and engagement. In such a real-time game, action must occur in close proximity to real life events. Real-time action is required for the action games, simulation games such as flight simulators and sport games. In most cases persistent communications, scoring, player attributes, etc. cannot be offered together with real-time realism and engagement. Scalability is another challenge to the network-based game application. While some existing network-based systems can handle tens of thousands of game players, it is a serious challenge to provide game applications in real time to millions of players reliably and simultaneously.
  • SUMMARY
  • In one aspect, the present invention relates to a network-based game system including a game-system-interface (GSI) server configured to receive an instruction related to persistent game-state information from a game client application running on a remote computer device; a data base system comprising a master data base and a slave data base, wherein the master data base and the slave data base comprise substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and a router configured to direct the instruction to one of the master data base or the slave data base to allow the persistent game-state information to be written to or retrieved from the one of the master data base or the slave data base in response to the instruction.
  • In another aspect, the present invention relates to a method of providing a game over a computer network. The method includes receiving an instruction related to persistent game-state information from a game client application running on a remote computer device; retrieving the persistent game-state information from or writing the persistent game-state information to a master data base or a slave data base in response to the instruction, wherein the master data base and the slave data base store substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and synchronizing changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base.
  • In yet another aspect, the present invention relates to a method for providing uninterrupted gaming service during a data-base structure update in a network-based gaming system. The method includes receiving first persistent game-state information from a game client application running on a remote computer device; authenticating at least one of user identification, game session identification, or game room identification in the request; writing a first portion of the first persistent game-state information to a first data-base structure in a master data bases; changing a second data-base structure in a slave data base; writing a second portion of the first persistent game-state information to the second data-base structure after the step of changing a second data-base structure; changing the first data-base structure such that the first data-base structure becomes substantially the same as the second data-base structure; and synchronizing the first persistent game-state information stored in the first data structure and the first persistent game-state information stored in the second data structure. Implementations of the system may include one or more of the following. The master data base and the slave data base can be configured to synchronize changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base. The instruction can include writing persistent game-state information to the data base system or retrieving the persistent game-state information from the data base system. The data base system can include a plurality of storage devices in connection with the router and the master data base and the slave data base are stored on two different storage devices in the plurality of storage devices. The master data base and the slave data base can share the same network address for communication with the router or the GSI server. The data base system can include a plurality of pairs of master data bases and slave data bases in connection with the router, and wherein the router is configured to direct the instruction to one of the plurality of pairs of the master data base and the slave data base in accordance with a user identification associated with the instruction. The GSI server can store a GSI program that comprises a GST controller that is configured extract the instruction from a message received from the game client application. The GSI controller can de-serialize the message received from the game client application. The GSI program can include a GSI model that is configured to initiate a database access object or a database object, wherein the database access object or the database object is configured to communicate with the router in response to the instruction. The data base system can be configured to return a response message in response to the instruction. The network-based game system can further include a game server configured to store a game engine application, wherein the game engine application is configured to receive the instruction related to persistent game-state information from a game client application and send the instruction to the GSI server. The game engine application or the GSI program can send a message to authenticate user identification, game session identification, or game room identification associated with a game client application. The persistent game-state information can include one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
  • Embodiments may include one or more of the following advantages. The disclosed system and methods provide a scalable data base system suitable for providing network-based gaming service in real time to a large number of game players. The data base system can provide high data access rates to enable real-time responses to a large number of game sessions. Gaming status information can be instantaneously updated to the data base system and thus assuring accuracy of the gaming data in the data base system at each point of time.
  • The disclosed data base system includes a plurality of distributed data base clusters that can be easily scaled up to hold data for increased number of users or game sessions. Each cluster can include a master data base and a slave data base that provides performance reliability and allow flexible and reliable updates of the data base structure. Moreover, the scalable distributed data base clusters also allow the data base system to be implemented at low cost while providing fast and reliable data accesses.
  • Furthermore, functionalities for the communications with the data base system have been integrated in an enhanced GSI application. The enhanced GSI application includes a flexible network interface that allows the GSI application to handle data communications with data base systems in different formats and protocols.
  • The disclosed system and methods provide a simplified game architecture for a network-based game system. A game client application running one a game player's computer device can communicate with a load balancer in the network-based game system in a persistent network connection. The load balancer routes requests or instruction from the game client application to a game engine application on a game server. The game engine application makes requests and sends information to a game system interface (GSI) when needed. The game client application no longer needs to communicate with the GSI in non-persistent network connections. The elimination of the non-persistent network connection simplifies the communications between the game client application and the network-based system. A single persistent connection to a game server at a consistent gateway IP address is much easier to maintain than multiple connections to many different possible services in some network-based game systems.
  • In addition, the persistent network connections between the game client application and the load balancer provide more robust communications between the game client application and the network-based game system. The persistent network connections allow instantaneous information exchanges with the game client applications in real time. The persistent network connections have much lower probability of connection failures than non-persistent network connections. The persistent network communications allow a large number of client game applications to be played without network latency at multiple remote locations.
  • The disclosed system and methods also improves network security for communications with the game client applications. The game client applications and the network-based game system can communicate in persistent and authenticated network connections. The communications are first validated and authenticated by game engine applications on the game servers. The GSI receives requests or updates from the game client applications only through the game engine applications after the validation and authentication, that is, the communications to and from GSI are internal to the network-based game system. This architecture design removes the need for network security for non-persistent network connections between GSI and game client applications in some network-based game systems. Furthermore, the persistent network connection between the game client application and the game engine application are stateful. The game engine application is thus much better equipped to validate and authenticate requests from the game claim applications. As a result, the network security is much improved for the network-based game system.
  • Furthermore, the disclosed system and methods also improve the efficiency and scalability of the network-based game system. The requests from a large number of game client applications can be intelligently routed by a load balancer to a plurality of game servers in accordance with the up/down status and the load levels of the game servers. The game servers in the network-based game system can thus be more efficiently utilized and network traffic can be minimized. The network-based game system can also be more easily scaled up by increasing the number of game servers to accommodate the communication needs with increased number of game client applications.
  • Details of one or more embodiments are set forth in the accompanying drawing and in the description below. Other features, objects, and advantages of the invention will become apparent from the description and drawings, and from the claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a system diagram of a network-based game system.
  • FIG. 2 is a block diagram of a game architecture compatible with the network-based game system.
  • FIG. 3 is a flow diagram for the network-based game system.
  • FIG. 4 is a block diagram for an enhanced GSI application and a scalable data base system.
  • FIG. 5 is a data flow diagram for an enhanced GSI application and a scalable data base system.
  • FIG. 6 shows a flow chart for updating a scalable data base system in a network-based game system.
  • DETAILED DESCRIPTION
  • Referring to FIG. 1, a network-based game system 100 can support game applications running on remote computer devices 106 and 107 through a communication network 105. The communication network 105 can include various wired, wireless, satellite communication arrangements including but not limited to a wide area network such as the Internet, a local area network, a cellular phone network under various communication protocols such as 2G, 2.5G and 3G, Global System for Mobile Communications (GSM), General Packet Radio Service (GPRS), EDGE, Code Division Multiple Access (CDMA), Wideband CDMA, TD-SCDMA, Universal Mobile Telecommunications System (UMTS), etc., city wide wires network such as WiMax, and wireless local area network (WLAN) such as Wi-Fi wireless communication standards such as IEEE 802.11, Wi-Max, and IEEE 806.16, and others. The computer devices 106 and 107 can include personal computers, portable digital assistance (PDA) devices, cell phones, digital image capture devices, and dedicated game devices such as Microsoft XBOX, SONY PlayStation OR PS2, Nintendo gaming machines GameCube, or GameBoy.
  • The network-based game system 100 can include a load balancer 115, one or more web servers 121-124, one or more session servers 130, a plurality of game servers 141-143, and a data base system 150. The data base system 150 can for example be implemented as a storage area network. The load balancer 115 can include one or a system of servers that are designed to ensure redundancy and reliability for the network-based game system 100. The network-based game system 100 can be operated by a game service provider such as Gaia Interactive Inc. based in California, USA. The network-based game system 100 can provide a website such as www.gaiaonline.com on the Internet to host a game community and provide various game services such as games, discussion groups, forums, and e-mails etc. A player can sign up at the website to own his or her own account. The player can also personalize his or her own profiles. The player can also set up a list of buddies. He or she may play with some of the buddies in multi-player network-based games. As described below, the network-based system 100 can store game statistics and other game properties associated with a player in a networked storage device, available and updatable to the game player.
  • A game player can access the web site of the game service provider using computer devices 106 and 107 with a web browser application executed on the computer devices 106 or 107. The web browser applications are available from several manufacturers including Internet Explorer™ from Microsoft, Netscape™ from AOL, and Firebox™ from Mozilla and so on. Various Internet browsing applications are available to cellular phones, PDAs, game consoles, which are also compatible with the disclosed system and methods.
  • FIG. 2 depicts interactions between various components in a game architecture 200 compatible with the network-based game system 100. Game client applications 206 and 207 reside on the computer devices 106 and 107. The game client applications 206 and 207 can be executed by a plug-in to the web browser application. The game client applications 206 and 207 can include game logic for one or more games and enable animation display for the games. The web-browser plug-in can enable the web browser to audio or video messages and properly display vector graphics images independent of the manufacturer or the version of the web browser. The web-browser plug-in can allow animations to be properly scaled to as web browser window is resized. The game client application 206 or 207 can use the web browser's communication API (Application Programming Interface) to communicate with the network-based game system 100.
  • For example, the computer devices 106 and 107 can be installed with Flash plug-in produced by Macromedia Inc. Flash is a bandwidth friendly and browser independent vector-graphic animation technology. Animation is choreographed using one or more sequential timelines in which actions and interactions are defined. The Flash plug-in can be downloaded, installed, and attached to a web browser. The Flash plug-in allows the web browser to play SWF (Small Web Format) movie clips in the web-browser it finds referenced in a webpage. Each SWF movie clip can include a unique game. The SWF movie clips contain the game logic as well as animations, images, and other effects. The SWF movie clip can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in and libraries of APIs developed for the network-based game system 100. Macromedia's Flash MX and Freehand applications and other Flash files can also be viewed through a Web browser plug-in (or the Flash player) or multimedia applications that access the player directly. Flash files can include sound. Flash can use the FLA files for source files and SWF files for the Flash movies. Flash files are space-efficient and suitable for interactions, comparing to other movie files (AVI, MPG, etc.) files.
  • The game client application 206 or 207 can be written in one or more SWF movie clips to be loaded in the web browser. Each game client application 206 or 207 can correspond to one or more games. The SWF movie clips include game logic as well as animations, images, and other effects. The SWF movie clips can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in. A library of APIs can be developed for the SWF movie clips that can be re-used in multiple games.
  • In accordance with the present specification, the game client applications 206 and 207 communicate with the network-based game system 100 via the load balancer 115 in persistent communication channels such as socket network connections. A load balancer 115 can monitor the status of the game servers 141-143, for example, whether one of the game servers 141-143 is on or off. The load balancer 115 can monitor the load level of the game servers 141-143. The load balancer 115 can direct a request from a game client application 206 or 207 to a game server 141-143 that is available and has relatively low load level so that the capacity of the game servers 141-143 can be efficiently utilized.
  • The requests or updates from the game client applications 206 and 207 to the game engine applications 301-303 via the load balancer 115 can include instructions that involve different types of information. For example, the communications between the game client applications 206 and 207 and the game engine applications 301-303 can include:
  • a) Game logic information that does not need to be stored permanently on data storage beyond a game session. In a soccer game, for example, the game logic information can include positions of a soccer-ball on a soccer field as the ball is being kicked around; the positions or the postures of a player's avatar as the player moves across the soccer field, and the instant message chat communication among the players in a game room, including text-based chats and emoticons. The game logic information can be handled by the game engines alone.
  • b) Persistent game-state information that is usually of use beyond a single game session. The persistent game-state information may include for example, user account information, attributes and statistics associated with a game player such as his or her game scores, game currency or game credits that the player owns, an inventory for tools and weapons owned by a player, an update of a buddie list, etc. The persistent game-state information is handled by the GSI program 400, and can be updated and stored in the data base system 150.
  • Not all the information handled by the GSI program 400 needs to be stored beyond a game session. For example, the GSI program 400 can store game room ID and game session ID in a local memory, which are typically cleared after the end of a game session. But the game room ID and the game session ID can be stored for hours and can be retrieved during this period of time for authentication of users and game client applications 206 and 207.
  • In general, the game engine application 301-303 can instantaneously respond to calls from the game client applications 206 and 207 to ensure real-time performance of the game sessions. The GSI program 400 on the other hand can respond to the game engine application 301-303 in the typical time frame of 0.001-0.1 milliseconds, depending on network latency and the processing time. The GSI program 400 can reliably respond to requests, but not necessarily in real time. The GSI program 400 can store the persistent game-state information into the player's account on the database 150, which can include game status information such that the player can retrieve the information after the specific game session is closed.
  • The game client applications 206 and 207 can securely communicate with the load balancer 115 and thus with the game engine application 301-303, and the GSI program 400 in encrypted serialized messages. Each game engine application 301-303 can choose to communicate in specific serialization communication protocol such as PHP (Hypertext Preprocessor), XML, AMF, XML-RPC (Remote Procedure Call), etc. A library of serialization communication protocols is stored on a computer device connected to the network-based game system 100 available to the game engine application 301-303 and the GSI program 400. The library provides rules for encryption and decryption of the serialized messages under different protocols. The communication protocols can be independent of the game logic, the game rooms, and the game engine applications. In fact, the disclosed system allows different game client applications 206 and 207 using many different communication protocols to enter the same game room at the same time. A call from a game client application 206 or 207 can include a token that specifies gaming protocols such as PHP, XML, AMF, XML-RPC, etc. The load balancer 115 can also direct a call from a game client application 206 or 207 to a game server 141-143 that can interpret the protocols required by the specific call.
  • The game server 141, 142, or 143 can keep an open socket connection with the computer device 106 or 107. The game engine application 301-303 and the game client application 206 or 207 can send and receive TCP/IP messages to and from each other by writing and reading data through the socket connection. Messages can be sent and received from either the game server 141 (or 142 and 143) or the computer device 106 or 107 at any time. The persistent network connection allows instantaneous two-way communications and guarantees the games updated in real time without network latency during a game session. The persistency of the network connection between the game client application 206 or 207 and the game engine application 301-303 typically last through a game session. A loss of connection in the persistent communication can be interpreted as that the game client application 206 or 207 has left the game. A stop in the two-way communications between the game client application 206 or 207 and the game engine application 301-303 (via the load balancer 115) can be interpreted by the game engine application 301-303 as that the game client application 206 or 207 is leaving the game session.
  • The game engine application 301-303 is compatible with different server software implementations such as Sushi Multiuser Server available at “www.wok2.de”, ElectroServer 3 available at “www.electrotank.com”, and Terazona Network Engine available at “www.zona.net”. The network-based game system 100 can include game engine applications 301-303 developed using different server software. Different server software may require serialized messages encrypted under different serialization protocols.
  • During a game session, each game client application 206 or 207 can be supported by a game engine application 301-303 with a persistent connection in the network-based game system 100. The game client application 206 or 207 can pull information related to the specific game or game session from the game engine application 301-303. The game engine application 301-303 can also update the game client application 206 or 207 with animations and short-term game logic information that do not need to be permanently stored. The game client application 206 or 207 can request the saving of the game results. The game engine application 301-303 can validate the data to be saved on the data base system 150 by the GSI program 400 and returns whether or not the saving is succeeded. The game engine application 301-303 can also gather information about all the players in the same game room and broadcast the information to the game room. The game engine application 301-303 can establish the players in the same game room as peers. The game engine application 301-303 can conduct peer-to-peer communications in real time by broadcasting a player's actions or events over that player's game client application to other peers' game client applications in the same game room. Each game client application 206 or 207 in the game room can construct a message and request the game engine application 301-303 to forward to the message another peer or all the peers in the same game room.
  • The load balancer 115 can control the load balance and the distribution of players and game sessions in the game rooms across multiple game servers 141-143. A game engine application 301-303 includes programmed game logic for each game and can control the game flow. The game engine application 301-303 can decide when to retrieve user information from the GSI program 400 and store information to the GSI program 400. Many game players each running a game client applications can play in a common game session. The game players can, for example, compete with each other in a ball game or fishing game in the game session. The game players playing can also be depicted as playing in a same game room. In the multi-player game sessions, the game engine application 301-303 can broadcast updates to many game client applications 206 and 207 running on many computer devices 106, 107 that are in the same game room.
  • The GSI program 400 serves as an interface for the game servers 141-143 to the database 150. The game engine application 301-303 can communicate with the GSI program 400 in trusted intra-network connections. The game engine application 301-303 can contact the GSI program 400 to verify that game rooms for a given game are not duplicated by accident. During the game sessions, the game client applications 206 and 207 updates the game engine application 301-303 with game statistics and game player information such as game scores, game equipment, game location. The game engine application 301-303 can pass the persistent game-state information to the GSI program 400. Tokens and validation keys can also be passed from the GSI program 400 to the game engine application 301-303 and in turn to the game client applications 206 and 207 to make sure different actions are occurring in the correct order and are not being spoofed by the client game application 206 or 207. The game client application 206 or 207 may be required to return the tokens and keys combined with other variables to ensure that the game's integrity has not been compromised. The game engine application 301-303 can communicate with the GSI program 400 over its own local host loop-back IP address (since the GSI program 400 can be installed and run on the same computer as the game engine application 301-303), eliminating network latency between the game engine application 301-303 and the GSI program 400.
  • In other embodiments, the game engine application 301-303 can act as a controller that can monitor the loads of game servers 141-143 and the status of the game rooms. The game engine application 301-303 can intelligently assign the game client applications 206 and 207 an appropriate game room according to the loads of the game servers 141-143 and the status of the game rooms. The game engine application 301-303 can also store game room ID, user ID, and game session ID in a local memory for verifying game client applications 206 and 207 without necessarily going through the GSI program 400.
  • The GSI resides in a GSI server 450 that can be one of the web servers 121-123, one of the game servers 141-143, or another server connected to the computer network in the network-based game system 100. In other words, the GSI program 400 can reside on any of the web servers 121-123 and the game servers 141-143. Using GSI program 400 as an interface is beneficial because the game servers 141-143 and the data base system 150 can be modified independently without affecting each other in system upgrades.
  • Referring to FIG. 3, to start a game, a game player can access a game service website such as www.gaiaonline.com operated by Gaia Interactive Inc., based in California, USA. The game player can initiate a game session by clicking a game client application 206 or 207 on a computer device 106 or 107 (step 310). The game client application 206 or 207 can be presented on a web page presented by a web browser application. In the present invention, a game session refers to an active connection between the client game application 206 or 207 and other programs such as game engine application 301-303 stored in the network-based game system 100. The game client application 206 or 207 can also be in the form of stream media (e.g. Flash SWF) so a game can keep loading as game-play starts. In some embodiments, a game session can be initiated by a game client application 206 or 207 by contacting and authenticating with a game engine application 301-303 via a load balancer 115 without the need to access a webpage.
  • The game client application 206 or 207 sends a request to the load balancer 115 to request long in the user using a password (step 310). The load balancer 350 directs the authorization request to a game engine application 301-303 on a game server 141-143 (step 330). The game engine application 301-303 passes the request to GSI program 400 (step 340). The GSI program 400 verifies the user ID and password using information retrieved from the data base system 150. The GSI program 400 creates a new session ID for the user at login (step 350). If the game room exists, the GSI can assign the game client application 206 or 207 to an existing one. If the game room does not exist, the GSI program 400 creates, validates the game room, and stores the game room ID. The GSI program 400 returns validation message to the game engine application 301-303 to confirm the authenticity of the user ID and the game session ID.
  • The validation message can include the game session ID and game room ID in association with the user ID. The game engine application 301-303 hold the user ID and the game session ID for future identification purposes. The game engine application 301-303 communicates a validation message to the game client applications 206 or 207 about the game session ID and which game room the user has been assigned to (step 360). The game client application 206 or 207 enters the game room. The game client application 206 or 207 then requests the load of a game. For example, a SWF file is loaded by the plug-in at the request of the web browser. The SWF is executed by a Flash Plugin. Instructions inside the SWF tell it to connect to a game engine application 301-303. Instructions inside the SWF also instruct it to display the game environment and run the game interactions.
  • During the game session, the game client applications 206 or 207 can update the game engine application 301-303 with game statistics, and persistent game-state information such as scores, equipment, and the amount of currency owned by the user. The game engine application 301-303 can pass the persistent game-state information to the GSI program 400 (step 370), which in turn can update the information in the data base system 150 (step 380).
  • Referring to FIG. 4, the GSI program 400 can include two application layers: a GSI controller 401 and one or more GSI models 402. For example, the GSI program 630 can be built on a hybridized MVC (Model View Controller) architecture including the two application layers The GSI controller 401 handles the communications with the game engine applications 301-303. The GSI controller 401 can serialize or de-serialize the messages received from or sent to the game engine applications 301-303. The GSI controller 401 can access a game protocol library for interpreting serialized messages under different protocols. The application logic is processed by the GSI model 402. The GSI controller 401 is a gateway responsible for controlling and responding to the requests from the game engines 301-303. The game engine application 301-303 can receive a series of discreet requests for specific information from the game client applications 206 and 207. The specific requests can include queries to the data base system 150 for retrieving or updating persistent game-state information.
  • The GSI controller 401 can de-serialize a message from a game engine application 301-303 and a de-serialized message to a specific GSI model 402. The GSI model 402 contains the application logic for each particular call. The GSI model 402 interprets the de-serialize messages and accepts the parameters carried in the message. The GSI model 402 can extract information from the data base system 150 and returns a response to the GSI controller 401. The GSI controller 401 serializes the responses from the GSI model 402 using the same protocol as the initial request and then returns the responses back to the game engine application 301-303.
  • The data base system 150 can include a router 155 and a plurality of storage devices 151-153 that are connected to the router 155 in a computer network. Referring to FIG. 5, the data stored in the data base system 150 can be structured by a plurality of clusters 550 and 560. Each cluster 550 or 560 can store information for a relatively short list of users, for example, 10,000 users instead of hundreds of thousands of users. The amount of the user gaming data stored at the cluster level is selected to optimize the access speed of the individual clusters. The relatively short user list helps to assure user game information can be rapidly retrieved and written for each cluster. The router 155 includes software responsible for directing the data retrieval and writing calls to the correct clusters. The call directions can be implemented in a variety of ways such as look-up table, hashing, or data range based on the user ID.
  • The cluster 550 can include a master data base 551 and a slave data base 552. Similarly, the cluster 560 can include a master data base 561 and a slave data base 562. The master data base 551 and the slave data base 552 comprise substantially the same data-base structures for storing persistent game-state information comprises one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
  • The master data base 551 and the slave data base 552 can share the same network address (or URL) in the cluster 550 for communication with the router 155 or the GSI server 450. At each point of time, the cluster 550 points the network traffic to one of the master data base 551 and the slave data base 552. In one implementation, the network traffic is always directed to the master data base 551 by default. In another implementation, there is not a default data base in the pair. The network traffic can be directed to either one of the master data base 551 or the slave data base 552. For example, the URL can be pointed to the master data base 551 at which the data is retrieved or written for communications with the GSI program 400. The slave data base 552 is synchronized with the master data base 551. If an error occurs to the network connection to the master data base 551, the cluster 550 can hot swap the URL link to the slave database 552 to allow the master data base 551 to be repaired without affecting the real-time performance of the network-based game system 100. To ensure system reliability against potential device failures, the master data bases 551, 561 and the slave data bases 552, 562 for each cluster 550 and 560 can be distributed on different storage devices 151-153.
  • Referring to FIG. 5, the application logic accessible to GSI models 402 can be broken down into several application layers to allow the GSI program 400 to be a flexible interface for different data base formats and protocols. After receiving a request from a game client application 206 or 207, the GSI controller 401 evaluates the request and determines which communication protocol is to be used. The communication protocol may be indicated in a header in the request message or stored at a storage location defined by an URL. The GSI controller 401 then instantiates a view object from a game protocol library to de-serialize the request. The view object can include decryption and encryption rules for the protocol. The view object de-serializes the request and returns the request in a standardized format to the GSI controller 401. The GSI controller 401 evaluates the request. The GSI controller 401 instantiates a GSI model 402 to handle different sections of the request. The GSI model 402 accepts the parameters passed in by the GSI controller 401 and returns a response. The GSI controller 401 captures the result of these operations and passes them to the view object. The view object serializes the response. The GSI controller 401 returns the serialized response to the game client application 206 and 207.
  • The GSI model 402 can initiate a Data Access Object (DAO). A database query (e.g. SQL query) is instantiated to update the database system 150. The GSI model 402 can further initiate a database object (DBO). The game status information in the request is retrieved or written in the clusters 550 and 560 stored in the storage devices 151-153.
  • The disclosed data base system 151 and the GSI program also allow data-base structures in the data bases to be reliably and flexibly updated without affecting the performance of the network-based game system 100. Referring to FIG. 6, using cluster 550 as an example, the network traffic (i.e. the database URL) is first pointed to the master database 551 (step 610). The data updates and retrieval from the GSI program 400 is directed to the master database 551. The data base structure of the slave data base 552 is updated (step 620). For example, a column can be added to the data table in the slave data base 552. The network traffic is then swapped to the slave database 552 (step 630). The data updates and retrieval from the GSI program 400 is directed to the slave database 552. The data base structure of the master data base 551 is updated while the slave database 552 is taking the workload from GSI program 400 (step 640). After the master data base 551 is changed to the same data base structure as the slave database 552, the master data base 551 and the slave database 552 are synchronized (step 650). The user gaming data in the old data-base structure as well as the incrementally changed data-base structure are both synchronized. The network traffic (i.e. the database URL) can be again swapped to point to the master database 551 (step 660).
  • Although specific embodiments of the present invention have been illustrated in the accompanying drawings and described in the foregoing detailed description, it will be understood that the invention is not limited to the particular embodiments described herein, but is capable of numerous rearrangements, modifications, and substitutions without departing from the scope of the invention. For example, the disclosed data base system is compatible with different designs and formats. For example, the DBO in the GSI program can be connected to a proxy server that is connected to a plurality of clusters in the data base system. The proxy server can handle the data communications between the GSI model and a plurality of clusters. The proxy server can provide a unified network interface data base clusters that are stored in different structures and distributed in different locations.
  • In another example, the game logic can also be remotely stored on a server in connection with the network-based game system, instead of on a computer device 106 or 207. The server may be able to store more complex game logic than game client applications. The remotely stored game logic can be activated remotely in real-time with secure processing on the servers or downloaded to the game players' computer devices 106 and 107 before a session starts. Moreover, each game engine application can support one or many game client applications and thus many game logics.
  • Furthermore, the game engine applications 301-303 can be implemented on different game platforms that may be provided by different game service providers, which allow game players to access a wide range of network-based game engine applications based on different game platforms. Different game client applications can be installed on the computer devices to run specific games supported by the game platforms of the corresponding game engine applications. Moreover, a single game server or a single game engine application can simultaneously support one or many game client applications.

Claims (20)

1. A network-based game system, comprising:
a game-system-interface (GSI) server configured to receive an instruction related to persistent game-state information from a game client application running on a remote computer device;
a data base system comprising a master data base and a slave data base, wherein the master data base and the slave data base comprise substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and
a router configured to direct the instruction to one of the master data base or the slave data base to allow the persistent game-state information to be written to or retrieved from the one of the master data base or the slave data base in response to the instruction.
2. The network-based game system of claim 1, wherein the master data base and the slave data base are configured to synchronize changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base.
3. The network-based game system of claim 1, wherein the instruction comprises writing persistent game-state information to the data base system or retrieving the persistent game-state information from the data base system.
4. The network-based game system of claim 1, wherein the data base system comprises a plurality of storage devices in connection with the router and the master data base and the slave data base are stored on two different storage devices in the plurality of storage devices.
5. The network-based game system of claim 1, wherein the master data base and the slave data base share the same network address for communication with the router or the GSI server.
6. The network-based game system of claim 1, wherein the data base system comprises a plurality of pairs of master data bases and slave data bases in connection with the router, and wherein the router is configured to direct the instruction to one of the plurality of pairs of the master data base and the slave data base in accordance with a user identification associated with the instruction.
7. The network-based game system of claim 1, wherein the GSI server is configured to store a GSI program that comprises a GST controller that is configured extract the instruction from a message received from the game client application.
8. The network-based game system of claim 7, wherein the GSI controller is configured to de-serialize the message received from the game client application.
9. The network-based game system of claim 7, wherein the GSI program comprises a GSI model that is configured to initiate a database access object or a database object, wherein the database access object or the database object is configured to communicate with the router in response to the instruction.
10. The network-based game system of claim 1, wherein the data base system is configured to return a response message in response to the instruction.
11. The network-based game system of claim 1, further comprising a game server configured to store a game engine application, wherein the game engine application is configured to receive the instruction related to persistent game-state information from a game client application and send the instruction to the GSI server.
12. The network-based game system of claim 11, wherein the game engine application or the GSI program is configured to send a message to authenticate user identification, game session identification, or game room identification associated with a game client application.
13. The network-based game system of claim 1, wherein the persistent game-state information comprises one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
14. A method of providing a game over a computer network, comprising:
receiving an instruction related to persistent game-state information from a game client application running on a remote computer device;
retrieving the persistent game-state information from or writing the persistent game-state information to a master data base or a slave data base in response to the instruction, wherein the master data base and the slave data base store substantially the same data-base structure configured to store persistent game-state information for a plurality of users; and
synchronizing changes in the persistent game-state information in one of the master data base and the slave data base to the other one of the master data base and the slave data base.
15. The method of claim 14, wherein the instruction comprises writing persistent game-state information to the data base system or retrieving the persistent game-state information from the data base system.
16. The method of claim 14, wherein the master data base and the slave data base share the same network address for communication with the remote computer device.
17. The network-based game system of claim 14, wherein the persistent game-state information comprises one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
18. A method for providing uninterrupted gaming service during a data-base structure update in a network-based gaming system, comprising:
receiving first persistent game-state information from a game client application running on a remote computer device;
authenticating at least one of user identification, game session identification, or game room identification in the request;
writing a first portion of the first persistent game-state information to a first data-base structure in a master data bases;
changing a second data-base structure in a slave data base;
writing a second portion of the first persistent game-state information to the second data-base structure after the step of changing a second data-base structure;
changing the first data-base structure such that the first data-base structure becomes substantially the same as the second data-base structure; and
synchronizing the first persistent game-state information stored in the first data structure and the first persistent game-state information stored in the second data structure.
19. The method of claim 18, further comprising retrieving second persistent game-state information from the second data-base structure after the step of changing a second data-base structure.
20. The method of claim 18, further comprising writing second persistent game-state information to the first data-base structure or retrieving second persistent game-state information from the first data-base structure after the step of changing the first data-base structure.
US11/533,756 2006-09-20 2006-09-20 Real-time gaming system having scalable database Abandoned US20080070688A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/533,756 US20080070688A1 (en) 2006-09-20 2006-09-20 Real-time gaming system having scalable database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/533,756 US20080070688A1 (en) 2006-09-20 2006-09-20 Real-time gaming system having scalable database

Publications (1)

Publication Number Publication Date
US20080070688A1 true US20080070688A1 (en) 2008-03-20

Family

ID=39232991

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/533,756 Abandoned US20080070688A1 (en) 2006-09-20 2006-09-20 Real-time gaming system having scalable database

Country Status (1)

Country Link
US (1) US20080070688A1 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082985A1 (en) * 2004-06-15 2008-04-03 Gagner Mark B Gaming Software Providing Operating System Independence
US20090170607A1 (en) * 2007-12-31 2009-07-02 Industrial Technology Research Institute System for downloading real-time interaction data through mobile and broadcast converged networks and method thereof
US20100190553A1 (en) * 2007-06-19 2010-07-29 Wms Gaming Inc. Plug-in architecture for a wagering game network
US20100306675A1 (en) * 2009-06-01 2010-12-02 International Business Machines Corporation Peer-to-peer based content delivery in a virtual universe
US8151004B1 (en) * 2007-07-13 2012-04-03 Adobe Systems Incorporated File processing to accelerate image viewer initialization
US20130137511A1 (en) * 2011-11-25 2013-05-30 Electronics And Telecommunications Research Institute Distributed server system and method for streaming game service
US9445949B1 (en) 2013-05-31 2016-09-20 Kabam, Inc. System and method for processing commands in an online game
US9616330B1 (en) 2013-05-31 2017-04-11 Kabam, Inc. System and method for updating a game state in an online game
US20170289133A1 (en) * 2016-03-31 2017-10-05 Electronic Arts Inc. Authentication identity management for mobile device applications
US11167212B1 (en) * 2019-06-20 2021-11-09 Amazon Technologies, Inc. Maintaining session state using redundant servers
US11465045B1 (en) 2019-06-20 2022-10-11 Amazon Technologies, Inc. Maintaining session state using redundant servers
CN115501610A (en) * 2022-09-26 2022-12-23 广州星火文化科技有限公司 Abnormal data processing method and system for game system

Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5237658A (en) * 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
US5241630A (en) * 1990-11-13 1993-08-31 Compaq Computer Corp. Device controller with a separate command path between a host and the device and a separate data path including a first in, first out memory between the host and the device
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5303244A (en) * 1991-03-01 1994-04-12 Teradata Fault tolerant disk drive matrix
US5325363A (en) * 1992-05-11 1994-06-28 Tandem Computers Incorporated Fault tolerant power supply for an array of storage devices
US5586257A (en) * 1994-05-05 1996-12-17 Perlman; Stephen G. Network architecture to support multiple site real-time video games
US5838909A (en) * 1996-05-23 1998-11-17 Sandcastle, Inc. Reducing latency when synchronizing access to a multi-user database over a network
US5867566A (en) * 1993-10-15 1999-02-02 Linkusa Corporation Real-time billing system for a call processing system
US6077161A (en) * 1997-09-12 2000-06-20 Wisler; James M. Multiplayer card games having card plays to foundations
US6152824A (en) * 1997-03-06 2000-11-28 Mpath Interactive, Inc. Online gaming architecture
US6192470B1 (en) * 1998-07-29 2001-02-20 Compaq Computer Corporation Configuration sizer for selecting system of computer components based on price/performance normalization
US6251017B1 (en) * 1999-04-21 2001-06-26 David Leason Game or lottery with a reward validated and/or redeemed online
US20030032409A1 (en) * 2001-03-16 2003-02-13 Hutcheson Stewart Douglas Method and system for distributing content over a wireless communications system
US20040013253A1 (en) * 1993-10-15 2004-01-22 Hogan Steven J. Call processing rate quote system and method
US6716102B2 (en) * 2001-03-09 2004-04-06 Microsoft Corporation Method and apparatus for displaying information regarding stored data in a gaming system
US20040068536A1 (en) * 2000-07-14 2004-04-08 Demers Timothy B. Multimedia player and browser system
US20040073823A1 (en) * 1999-04-23 2004-04-15 Lunsford Eric M. System and method for detection of an accessory device connection status
US20040097287A1 (en) * 2002-11-14 2004-05-20 Richard Postrel Method and system for gaming over a computer network
US20040152517A1 (en) * 2000-02-14 2004-08-05 Yon Hardisty Internet based multiplayer game system
US20040152519A1 (en) * 2000-11-14 2004-08-05 Andy Wang Multi-player game employing dynamic re-sequencing
US20040167928A1 (en) * 2002-09-24 2004-08-26 Darrell Anderson Serving content-relevant advertisements with client-side device support
US6835137B1 (en) * 1998-08-06 2004-12-28 Namco Limited Game apparatus and communication game system
US20050038753A1 (en) * 2003-02-07 2005-02-17 Wei Yen Static-or-dynamic and limited-or-unlimited content rights
US6884162B2 (en) * 2000-12-01 2005-04-26 Sony Corporation System and method to support gaming in an electronic network
US20050143174A1 (en) * 2003-08-19 2005-06-30 Goldman Daniel P. Systems and methods for data mining via an on-line, interactive game
US20050171832A1 (en) * 2004-01-29 2005-08-04 Yahoo! Inc. Method and system for sharing portal subscriber information in an online social network
USRE38812E1 (en) * 1994-10-12 2005-10-04 Acres Gaming Incorporated Method and apparatus for operating networked gaming devices
US7004839B2 (en) * 2000-07-12 2006-02-28 Kabushiki Kaisha Sega Communication game system, communication game method, and storage medium

Patent Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5241630A (en) * 1990-11-13 1993-08-31 Compaq Computer Corp. Device controller with a separate command path between a host and the device and a separate data path including a first in, first out memory between the host and the device
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5303244A (en) * 1991-03-01 1994-04-12 Teradata Fault tolerant disk drive matrix
US5237658A (en) * 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
US5325363A (en) * 1992-05-11 1994-06-28 Tandem Computers Incorporated Fault tolerant power supply for an array of storage devices
US20040013253A1 (en) * 1993-10-15 2004-01-22 Hogan Steven J. Call processing rate quote system and method
US5867566A (en) * 1993-10-15 1999-02-02 Linkusa Corporation Real-time billing system for a call processing system
US5586257A (en) * 1994-05-05 1996-12-17 Perlman; Stephen G. Network architecture to support multiple site real-time video games
USRE38812E1 (en) * 1994-10-12 2005-10-04 Acres Gaming Incorporated Method and apparatus for operating networked gaming devices
US5838909A (en) * 1996-05-23 1998-11-17 Sandcastle, Inc. Reducing latency when synchronizing access to a multi-user database over a network
US6152824A (en) * 1997-03-06 2000-11-28 Mpath Interactive, Inc. Online gaming architecture
US6077161A (en) * 1997-09-12 2000-06-20 Wisler; James M. Multiplayer card games having card plays to foundations
US6192470B1 (en) * 1998-07-29 2001-02-20 Compaq Computer Corporation Configuration sizer for selecting system of computer components based on price/performance normalization
US6835137B1 (en) * 1998-08-06 2004-12-28 Namco Limited Game apparatus and communication game system
US6251017B1 (en) * 1999-04-21 2001-06-26 David Leason Game or lottery with a reward validated and/or redeemed online
US20040073823A1 (en) * 1999-04-23 2004-04-15 Lunsford Eric M. System and method for detection of an accessory device connection status
US20040152517A1 (en) * 2000-02-14 2004-08-05 Yon Hardisty Internet based multiplayer game system
US7004839B2 (en) * 2000-07-12 2006-02-28 Kabushiki Kaisha Sega Communication game system, communication game method, and storage medium
US20040068536A1 (en) * 2000-07-14 2004-04-08 Demers Timothy B. Multimedia player and browser system
US20040152519A1 (en) * 2000-11-14 2004-08-05 Andy Wang Multi-player game employing dynamic re-sequencing
US6884162B2 (en) * 2000-12-01 2005-04-26 Sony Corporation System and method to support gaming in an electronic network
US6716102B2 (en) * 2001-03-09 2004-04-06 Microsoft Corporation Method and apparatus for displaying information regarding stored data in a gaming system
US20030032409A1 (en) * 2001-03-16 2003-02-13 Hutcheson Stewart Douglas Method and system for distributing content over a wireless communications system
US20040167928A1 (en) * 2002-09-24 2004-08-26 Darrell Anderson Serving content-relevant advertisements with client-side device support
US20040097287A1 (en) * 2002-11-14 2004-05-20 Richard Postrel Method and system for gaming over a computer network
US20050038753A1 (en) * 2003-02-07 2005-02-17 Wei Yen Static-or-dynamic and limited-or-unlimited content rights
US20050143174A1 (en) * 2003-08-19 2005-06-30 Goldman Daniel P. Systems and methods for data mining via an on-line, interactive game
US20050171832A1 (en) * 2004-01-29 2005-08-04 Yahoo! Inc. Method and system for sharing portal subscriber information in an online social network

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8544001B2 (en) 2004-06-15 2013-09-24 Wms Gaming Inc. Gaming software providing operating system independence
US20080082985A1 (en) * 2004-06-15 2008-04-03 Gagner Mark B Gaming Software Providing Operating System Independence
US20100190553A1 (en) * 2007-06-19 2010-07-29 Wms Gaming Inc. Plug-in architecture for a wagering game network
US8449394B2 (en) * 2007-06-19 2013-05-28 Wms Gaming Inc. Plug-in architecture for a wagering game network
US8151004B1 (en) * 2007-07-13 2012-04-03 Adobe Systems Incorporated File processing to accelerate image viewer initialization
US8402168B1 (en) * 2007-07-13 2013-03-19 Adobe Systems Incorporated File processing to accelerate image viewer initialization
US20090170607A1 (en) * 2007-12-31 2009-07-02 Industrial Technology Research Institute System for downloading real-time interaction data through mobile and broadcast converged networks and method thereof
US8550917B2 (en) * 2007-12-31 2013-10-08 Industrial Technology Research Institute System for downloading real-time interaction data through mobile and broadcast converged networks and method thereof
US8276084B2 (en) * 2009-06-01 2012-09-25 International Business Machines Corporation Peer-to-peer based content delivery in a virtual universe
US20100306675A1 (en) * 2009-06-01 2010-12-02 International Business Machines Corporation Peer-to-peer based content delivery in a virtual universe
US20130137511A1 (en) * 2011-11-25 2013-05-30 Electronics And Telecommunications Research Institute Distributed server system and method for streaming game service
US9445949B1 (en) 2013-05-31 2016-09-20 Kabam, Inc. System and method for processing commands in an online game
US9616330B1 (en) 2013-05-31 2017-04-11 Kabam, Inc. System and method for updating a game state in an online game
US10220313B1 (en) 2013-05-31 2019-03-05 Electronic Arts Inc. System and method for updating a game state in an online game
US20170289133A1 (en) * 2016-03-31 2017-10-05 Electronic Arts Inc. Authentication identity management for mobile device applications
US10631164B2 (en) * 2016-03-31 2020-04-21 Electronic Arts Inc. Authentication identity management for mobile device applications
US11363013B2 (en) 2016-03-31 2022-06-14 Electronic Arts Inc. Authentication identity management for mobile device applications
US11870772B2 (en) 2016-03-31 2024-01-09 Electronic Arts Inc. Authentication identity management for mobile device applications
US11167212B1 (en) * 2019-06-20 2021-11-09 Amazon Technologies, Inc. Maintaining session state using redundant servers
US11465045B1 (en) 2019-06-20 2022-10-11 Amazon Technologies, Inc. Maintaining session state using redundant servers
CN115501610A (en) * 2022-09-26 2022-12-23 广州星火文化科技有限公司 Abnormal data processing method and system for game system

Similar Documents

Publication Publication Date Title
US20080070688A1 (en) Real-time gaming system having scalable database
US20080076573A1 (en) Network-based game system
US7695370B2 (en) Massively scalable multi-player game system
US20070087829A1 (en) Multi-player game architecture
US20070184903A1 (en) Network-based game system capable of serving massive number of game players
US20070050838A1 (en) Multi-protocol game engine
US7794315B2 (en) Role play system
US7833096B2 (en) Button encounter system
US20090325712A1 (en) Player character matchmaking with distributed peer-to-peer functionality
US8762430B1 (en) Key subscription for distributed systems
US20040116186A1 (en) Distance based distributed online game server system
US8562441B1 (en) Secure, parallel, and independent script execution
US20070099702A1 (en) Network-based gaming system
US20120077580A1 (en) Dynamic asset and obstacle generation in online games
US20140004960A1 (en) Dynamic player match-making for social games
US9320968B1 (en) Online game with matching of different data types
US10471350B2 (en) Persistent game sessions with multiplayer support
Caltagirone et al. Architecture for a massively multiplayer online role playing game engine
US20070021212A1 (en) Persistent and effecient game architecture
US11285395B2 (en) GPU authentication
EP2375694B1 (en) Networking system and method for a social networking server, client and entertainment device
KR100895199B1 (en) System and method for setting a character's moving path in virtual space world
Vähä Applying microservice architecture pattern to a design of an MMORPG backend
Trinta et al. Evaluating a middleware for crossmedia games
US20130244792A1 (en) Game environment utilizing a lock free memory system

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION