U.S. patent application number 11/533756 was filed with the patent office on 2008-03-20 for real-time gaming system having scalable database.
Invention is credited to John Loehrer.
Application Number | 20080070688 11/533756 |
Document ID | / |
Family ID | 39232991 |
Filed Date | 2008-03-20 |
United States Patent
Application |
20080070688 |
Kind Code |
A1 |
Loehrer; John |
March 20, 2008 |
REAL-TIME GAMING SYSTEM HAVING SCALABLE DATABASE
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.
Inventors: |
Loehrer; John; (Scotts
Valley, CA) |
Correspondence
Address: |
Xin Wen
3449 Rambow Drive
Palo Alto
CA
94306
US
|
Family ID: |
39232991 |
Appl. No.: |
11/533756 |
Filed: |
September 20, 2006 |
Current U.S.
Class: |
463/42 |
Current CPC
Class: |
A63F 13/79 20140902;
H04L 67/1029 20130101; A63F 13/12 20130101; H04L 67/1027 20130101;
A63F 2300/5533 20130101; A63F 13/352 20140902; A63F 2300/513
20130101; H04L 67/1008 20130101; H04L 67/1002 20130101 |
Class at
Publication: |
463/42 |
International
Class: |
A63F 9/24 20060101
A63F009/24 |
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.
Description
TECHNICAL FIELD
[0001] This application relates to a game system, more
specifically, a network-based game system.
BACKGROUND
[0002] 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
[0003] 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.
[0004] 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.
[0005] 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.
[0006] 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.
[0007] 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.
[0008] 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.
[0009] 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.
[0010] 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.
[0011] 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.
[0012] 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.
[0013] 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
[0014] FIG. 1 is a system diagram of a network-based game
system.
[0015] FIG. 2 is a block diagram of a game architecture compatible
with the network-based game system.
[0016] FIG. 3 is a flow diagram for the network-based game
system.
[0017] FIG. 4 is a block diagram for an enhanced GSI application
and a scalable data base system.
[0018] FIG. 5 is a data flow diagram for an enhanced GSI
application and a scalable data base system.
[0019] FIG. 6 shows a flow chart for updating a scalable data base
system in a network-based game system.
DETAILED DESCRIPTION
[0020] 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.
[0021] 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.
[0022] 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.TM. from Microsoft, Netscape.TM. from
AOL, and Firebox.TM. 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.
[0023] 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.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] 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:
[0028] 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.
[0029] 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.
[0030] 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.
[0031] 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.
[0032] 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.
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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.
[0037] 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.
[0038] 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.
[0039] 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.
[0040] 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.
[0041] 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.
[0042] 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.
[0043] 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).
[0044] 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.
[0045] 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.
[0046] 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.
[0047] 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.
[0048] 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.
[0049] 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.
[0050] 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.
[0051] 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).
[0052] 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.
[0053] 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.
[0054] 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.
* * * * *
References