REAL-TIME GAMING SYSTEM HAVING SCALABLE DATABASE

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.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
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

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.

Patent History
Publication number: 20080070688
Type: Application
Filed: Sep 20, 2006
Publication Date: Mar 20, 2008
Inventor: John Loehrer (Scotts Valley, CA)
Application Number: 11/533,756
Classifications
Current U.S. Class: Network Type (e.g., Computer Network, Etc.) (463/42)
International Classification: A63F 9/24 (20060101);