Register or Login To Download This Patent As A PDF
| United States Patent Application |
20080076573
|
| Kind Code
|
A1
|
|
Loehrer; John
|
March 27, 2008
|
NETWORK-BASED GAME SYSTEM
Abstract
A network-based game system includes a load balancer configured to receive
a first request and a second request from a game client application
running on a computer device. The first request comprises game logic
information and the second request includes persistent game-state
information. The network-based game system also includes a plurality of
game servers in connection with the load balancer, wherein each of the
game servers stores a game engine application configured to produce a
first response to the first request and a game-system-interface (GSI)
server in connection with the plurality of game servers wherein the GSI
stores a GSI program configured to produce a second response to the
second request.
| Inventors: |
Loehrer; John; (Scotts Valley, CA)
|
| Correspondence Address:
|
Xin Wen
3449 Rambow Drive
Palo Alto
CA
94306
US
|
| Serial No.:
|
530444 |
| Series Code:
|
11
|
| Filed:
|
September 8, 2006 |
| Current U.S. Class: |
463/42 |
| Class at Publication: |
463/42 |
| International Class: |
A63F 9/24 20060101 A63F009/24 |
Claims
1. A network-based game system, comprising:a load balancer configured to
receive a first request and a second request from a game client
application running on a computer device, wherein the first request
comprises game logic information and the second request comprises
persistent game-state information;a plurality of game servers in
connection with the load balancer, wherein each of the game servers
stores a game engine application configured to produce a first response
to the first request; anda game-system-interface (GSI) server in
connection with the plurality of game servers, wherein the GSI stores a
GSI program configured to produce a second response to the second
request.
2. The network-based game system of claim 1, wherein the load balancer is
configured to communicate with the computer device in a persistent
network connection.
3. The network-based game system of claim 1, wherein the load balancer is
configured to communicate with the plurality of game servers in
persistent network connections.
4. The network-based game system of claim 1, wherein the load balancer is
configured to route the first request or the second request to a game
sever in accordance with the status of the plurality of the game servers.
5. The network-based game system of claim 1, wherein the GSI server is
configured to communicate with the plurality of game servers
non-persistent network connections.
6. The network-based game system of claim 1, wherein at least one of the
plurality of game servers is configured to receive the second request and
to send a third request to the GSI server in response to the second
request.
7. The network-based game system of claim 6, wherein the at least one of
the plurality of game servers is configured to receive a third response
from the GSI server in response to the second request and send the second
response to the computer device in response to the third response.
8. The network-based game system of claim 1, wherein the first request
comprises one or more of game animation information, game statistics, or
game chats.
9. The network-based game system of claim 1, wherein the second request
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.
10. The network-based game system of claim 1, further comprising a data
base in communication with the GSI server.
11. The network-based game system of claim 10, wherein the GSI program is
configured to update information in the data base or retrieve information
from the database in response to the second request.
12. The network-based game system of claim 1, wherein the game engine
program or the GSI program is configured to send a message to
authenticate identification associated with a game client application.
13. The network-based game system of claim 12, wherein the identification
includes user identification, game session identification, or game room
identification.
14. The network-based game system of claim 1, wherein the game engine
application is configured to communicate with the game client application
in encrypted serialized messages.
15. A network-based game system, comprising:a load balancer configured to
receive a first request from a game client application running on a
computer device wherein the first request comprises game logic
information:a plurality of game servers in persistent network connections
with the load balancer, wherein each of the game servers stores a game
engine application configured to produce a first response to the first
request and to produce a second request, wherein the second request
comprises persistent game-state information; anda game-system-interface
(GSI) server in non-persistent network connections with the plurality of
game servers, wherein the GSI stores a GSI program configured to produce
a second response to the second request.
16. The network-based game system of claim 15, wherein the load balancer
is configured to route the first request to a game sever in accordance
with the status of the plurality of the game servers.
17. The network-based game system of claim 1, wherein at least one of the
plurality of game servers is configured to receive the second request and
to pass the second request to the GSI server.
18. The network-based game system of claim 1, wherein the at least one of
the plurality of game servers is configured to receive the second
response from the GSI server and send the second response to the computer
device.
19. The network-based game system of claim 15, further comprising a data
base in communication with the GSI server, wherein the GSI program is
configured to update information in the data base or retrieve information
from the database in response to the second request.
20. The network-based game system of claim 15, wherein the game engine
program or the GSI program is configured to send a message to
authenticate identification associated with a game client application,
wherein the identification includes user identifications game session
identification, or game room identification.
21. The network-based game system of claim 15, wherein the game engine
application is configured to communicate with the game client application
in a persistent network connection with the load balancer.
22. A method of providing a game over a computer network,
comprising:receiving a first request and a second request by a load
balancer from a game client application running on a computer device in a
persistent network connection with the load balancer wherein the first
request comprises game logic information and the second request comprises
persistent game-state information;producing a first response to the first
request by a game engine application running on one of a plurality of
game servers, wherein the plurality of game servers are in persistent
network connections with the load balancer; andproducing a second
response to the second request by a GSI program running on a
game-system-interface (GSI) server.
23. The method of claim 22, further comprisingrouting the first request or
the second request by the load balancer to a game sever in accordance
with the status of the plurality of the game servers.
24. The method of claim 22, wherein the GSI server is in non-persistent
network connections with the plurality of game servers.
25. The method of claim 22, further comprising:receiving the second
response by the at least one of the plurality of game servers from the
GSI server, andsending the second response from the at least one of the
plurality of game servers to the computer device.
26. The method of claim 22, further comprising:updating information in a
data base or retrieving information from the database in response to the
second request.
27. The method of claim 22, further comprising:authenticating an
identification associated with a game client application by the game
engine application, wherein the identification includes user
identification, game session identification or game room identification.
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 bidirectional. 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. An additional requirement for a
network-based game system is that the network communications with the
game client applications must be secure and not easily be attacked by
internet hackers.
SUMMARY
[0003]In one aspect, the present invention relates to a network-based game
system including a load balancer configured to receive a first request
and a second request from a game client application running on a computer
device, wherein the first request includes game logic information and the
second request includes persistent game-state information; a plurality of
game servers in connection with the load balancer, wherein each of the
game servers stores a game engine application configured to produce a
first response to the first request; and a game-system-interface (GSI)
server in connection with the plurality of game servers, wherein the GSI
stores a GSI program configured to produce a second response to the
second request.
[0004]In another aspect, the present invention relates to a network-based
game system, including a load balancer configured to receive a first
request from a game client application running on a computer device,
wherein the first request includes game logic information; a plurality of
game servers in persistent network connections with the load balancer,
wherein each of the game servers stores a game engine application
configured to produce a first response to the first request and to
produce a second request, wherein the second request includes persistent
game-state information; and a game-system-interface (GSI) server in
non-persistent network connections with the plurality of game servers,
wherein the GSI stores a GSI program configured to produce a second
response to the second request.
[0005]In yet another aspect, the present invention relates to a method of
providing a game over a computer network including receiving a first
request and a second request by a load balancer from a game client
application running on a computer device in a persistent network
connection with the load balancer, wherein the first request includes
game logic information and the second request comprises persistent
game-state information; producing a first response to the first request
by a game engine application running on one of a plurality of game
servers, wherein the plurality of game servers are in persistent network
connections with the load balancer; and producing a second response to
the second request by a GSI program running on a game-system-interface
(GSI) server. Implementations of the system may include one or more of
the following. The load balancer can communicate with the computer device
in a persistent network connection. The load balancer can communicate
with the plurality of game servers in persistent network connections. The
load balancer can route the first request or the second request to a game
sever in accordance with the status of the plurality of the game servers.
The GSI server can communicate with the plurality of game servers
non-persistent network connections. At least one of the plurality of game
servers can receive the second request and to send a third request to the
GSI server in response to the second request. The at least one of the
plurality of game servers can receive a third response from the GSI
server in response to the second request and send the second response to
the computer device in response to the third response. The first request
includes one or more of game animation information, game statistics, or
game chats. The second request includes 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
network-based game system can further include a data base in
communication with the GSI server. The GSI program can update information
in the data base or retrieve information from the database in response to
the second request. The game engine program or the GSI program can send a
message to authenticate identification associated with a game client
application. The identification includes user identification, game
session identification, or game room identification. The game engine
application can communicate with the game client application in encrypted
serialized messages.
[0006]Embodiments may include one or more of the following advantages. 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 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.
[0007]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.
[0008]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.
[0009]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.
[0010]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
[0011]FIG. 1 is a system diagram of a network-based game system.
[0012]FIG. 2 is a block diagram of an improved game architecture
compatible with the network-based game system.
[0013]FIG. 3 is a flow diagram for the network-based game system.
DETAILED DESCRIPTION
[0014]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.
[0015]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, one or
more load balancers 250, a plurality of game servers 141-143, and a
database 150. The data base 150 can for example be implemented as a
storage area network. The one load balancers 250 can be 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.
[0016]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.
[0017]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.
[0018]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.
[0019]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.
[0020]In accordance with the present specification, the game client
applications 206 and 207 communicate with the network-based game system
100 via one or more load balancers 250 in persistent communication
channels such as socket network connections. A load balancer 250 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 balancers 250 can
monitor the load level of the game servers 141-143. The load balancers
250 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.
[0021]The communications between the game client applications 206 and 207
and the game engine applications 301-303 (via the load balancers 250) can
include following two types:
[0022]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.
[0023]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 150.
[0024]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.
[0025]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 a 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.
[0026]The game client applications 206 and 207 can securely communicate
with a load balancer 250 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 250 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.
[0027]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 250) can be
interpreted by the game engine application 301-303 as that the game
client application 206 or 207 is leaving the game session.
[0028]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.
[0029]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 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.
[0030]A load balancer 250 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.
[0031]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 application 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.
[0032]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.
[0033]The server 450 that the GSI resides 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 150 can be
modified independently without affecting each other in system upgrades.
[0034]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
250 without the need to access a webpage.
[0035]The game client application 206 or 207 sends a request to a load
balancer 250 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 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.
[0036]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 engine applications 301-303 about the game session ID
and which game room the user has been assigned to (step 360). The game
client application enters the game room. The game client application 206
or 207 then requests the load of a game (step 360). 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 the game engine 301-303. Instructions inside the SWF also
instruct it to display the game environment and run the game
interactions.
[0037]GSI only really is an authentication provider. It can return a
session id for the GE server to use, and validate a username/password,
but our current thinking is that it will do less work than it does now
for tracking a user throughout the games. The game engine application is
responsible for this now.
[0038]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
150.
[0039]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. The following claims are
intended to encompass many such modifications. For 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.
[0040]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.
* * * * *