U.S. patent application number 14/597481 was filed with the patent office on 2015-05-07 for methods and devices for maintaining sessions based on presence status information.
This patent application is currently assigned to ALCATEL-LUCENT USA INC.. The applicant listed for this patent is Alcatel-Lucent USA Inc.. Invention is credited to Girish P. Chandranmenon, Fang Hao, Scott C. Miller, Sarit Mukherjee, Tejas Naik.
Application Number | 20150126287 14/597481 |
Document ID | / |
Family ID | 38434792 |
Filed Date | 2015-05-07 |
United States Patent
Application |
20150126287 |
Kind Code |
A1 |
Chandranmenon; Girish P. ;
et al. |
May 7, 2015 |
Methods And Devices For Maintaining Sessions Based On Presence
Status Information
Abstract
Sessions, such as on-line gaming sessions, are maintained by
proxy agents on behalf of users even when the users are inactive.
The agents, along with other components, form a novel "always-on"
architecture that greatly reduces the time it takes to initiate and
carry out sessions.
Inventors: |
Chandranmenon; Girish P.;
(Edison, NJ) ; Hao; Fang; (Morganville, NJ)
; Miller; Scott C.; (Freehold, NJ) ; Mukherjee;
Sarit; (Morganville, NJ) ; Naik; Tejas;
(Edison, NJ) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Alcatel-Lucent USA Inc. |
Murray Hill |
NJ |
US |
|
|
Assignee: |
ALCATEL-LUCENT USA INC.
Murray Hill
NJ
|
Family ID: |
38434792 |
Appl. No.: |
14/597481 |
Filed: |
January 15, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11393900 |
Mar 31, 2006 |
8965978 |
|
|
14597481 |
|
|
|
|
Current U.S.
Class: |
463/42 |
Current CPC
Class: |
H04L 51/043 20130101;
H04L 29/08684 20130101; H04L 67/327 20130101; G06Q 10/107 20130101;
H04L 67/24 20130101; A63F 13/795 20140902; H04L 67/22 20130101;
H04L 67/306 20130101; H04L 29/08675 20130101; H04L 51/046
20130101 |
Class at
Publication: |
463/42 |
International
Class: |
A63F 13/795 20060101
A63F013/795 |
Claims
1. A method for forming one or more groups associated with one or
more on-line gaming sessions comprising: receiving one or more
identities of one or more third party users; determining the
availability of the identified third party users; comparing
profiles of the identified and available third party users, with
attributes of a request to initiate an on-line gaming session of a
game by a user, to determine the gaming skill level of the third
party users; forming a gaming group containing those third party
users that are not currently involved in a gaming session of the
game, and have the substantially same gaming skill level as that
required by the request from the compared, identified and available
users along with the user that initiated the request; and
initiating the on-line gaming session of the game for the formed
gaming group.
2. The method as in claim 1 further comprising: forwarding
requirements of the request on to a third party lobby to identify
the third party users that satisfy the request; receiving an
identification of each third party user that satisfies the request;
and forming the gaming group containing those third party users
that are not currently involved in a gaming session of the game and
satisfy the request along with the user that initiated the
request.
3. The method as in claim 1 further comprising: monitoring a
presence status of a client device associated with the user; and
maintaining an on-line gaming session on behalf of the user even
when the status indicates the client device is inactive.
4. The method as in claim 3 further comprising forwarding messages
to the client device when the client device is active, wherein the
messages were received when the client device was inactive.
5. The method as in claim 4 wherein the messages are forwarded
wirelessly.
6. The method as in claim 3 further comprising forwarding messages
to the client device in order to update one or more indicators,
wherein at least one of the indicators is associated with presence
status information of the one or more third party users.
7. The method as in claim 1 further comprising: forwarding the
request from the client device, to initiate an on-line gaming
session, to a proxy agent; and receiving messages at the client
device from the proxy agent during an active presence state,
wherein the messages were originally received by the agent when the
client device was inactive.
8. The method as in claim 7 further comprising exchanging signaling
messages between the client device and the proxy agent using short
binary messages.
9. The method as in claim 7 wherein the request is forwarded
wirelessly from the client device to the proxy agent.
10. The method as in claim 7 further comprising receiving one or
more messages from the agent at the client device, wherein at least
one of the messages is used to update at least one indicator
associated with presence status information of the one or more
third party users.
11. A system for forming one or more groups associated with one or
more on-line gaming sessions comprising: a memory storing
instructions to implement a lobby, the lobby operable to: receive
one or more identities of one or more third party users; determine
the availability of the identified third party users; compare
profiles of the identified and available third party users with
attributes of a request to initiate an on-line gaming session of a
game by a user, to determine the gaming skill level of the third
party users; forming a gaming group containing those third party
users that are not currently involved in a gaming session of the
game, and have the substantially same gaming skill level as that
required by the request from the compared, identified and available
users along with the user that initiated the request; and initiate
the on-line gaming session of the game for the formed gaming
group.
12. The system as in claim 11 wherein the memory comprises
instructions further operable to: forward requirements of the
request on to a third party lobby to identify the third party users
that satisfy the request; receive an identification of each third
party user that satisfies the request; and form the gaming group
containing those third party users that are not currently involved
in a gaming session of the game, and satisfy the request along with
the user that initiated the request.
13. The system as in claim 11 further comprising: a proxy agent,
the agent operable to monitor a presence status of a client device
associated with the user; and maintain an on-line gaming session on
behalf of the user even when the status indicates the client device
is inactive.
14. The system as in claim 13, wherein the proxy agent is further
operable to forward messages to the client device when the client
device is active, wherein the messages were received when the
client device was inactive.
15. The system as in claim 14, wherein the messages are forwarded
wirelessly.
16. The system as in claim 13, wherein the proxy agent is further
operable to collect presence status information concerning the one
or more third party users even when the client device is
inactive.
17. The system as in claim 13, wherein the proxy agent is further
operable to forward messages to the client device in order to
update one or more indicators, wherein at least one of the
indicators is associated with presence status information of the
one or more third party users.
18. The system as in claim 11 further comprising: a client device,
the device operable to: forward the request to a proxy agent; and
receive messages from the proxy agent during an active presence
state, wherein the messages were originally received by the agent
when the client device was inactive.
19. The system as in claim 18, wherein the device is further
operable to exchange signaling messages with the proxy agent using
short binary messages.
20. The system as in claim 18, wherein the device is operable to
forward the request wirelessly to the proxy agent.
21. The system as in claim 18, wherein the device is further
operable to receive one or more messages from the agent, wherein at
least one of the messages is used to update at least one indicator
associated with presence status information of the one or more
third party users.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 11/393,900, filed Mar. 31, 2006 and set forth in full
herein.
BACKGROUND OF THE INVENTION
[0002] There is presently an explosion in the number of people that
are involved in playing on-line games over the Internet and other
networks. These games allow for interactive play between one or
more persons within a game. In parallel with this development has
come an increase in the amount of signaling and information
messages which must be sent over a network in order to enable
interactive, on-line gaming to grow. Some of the changes which
service providers of such networks face include: (a) how to make
on-line gaming more personalized; (b) how to reduce any delays
caused by the network; (c) how to increase the interactive nature
of such games; and (d) how to use their existing networks to
achieve these goals without greatly increasing their costs.
[0003] As an example of (a), it is desirable to provide a user who
wishes to play an on-line game with the means of knowing when his
or her best friends (sometimes referred to as "buddies") are also
on-line and available to play a game. Similarly, if a buddy is
on-line and available to play a game it is desirable to be able to
initiate such a game very quickly. In so doing, it is desirable to
enable a service provider to offer these features without the need
to spend a lot of money upgrading or changing their existing
network.
SUMMARY OF THE INVENTION
[0004] To achieve the desires stated above and others the present
invention provides novel architectures that allow users to more
easily and quickly communicate with one another to carry out all
kinds of communication-related sessions, including on-line gaming.
In one embodiment of the invention, an "always-on" architecture
includes an "always-on" client that initiates an "always-on"
session with an "always-on" proxy agent. Thereafter, the agent is
operable to maintain a session on behalf of the client even if the
client becomes inactive (e.g., a device that includes the client is
no longer powered-on, etc.). Even though the client may be
inactive, the agent may screen or otherwise filter information
messages intended for the client. When the client finally becomes
active again the agent may forward screened messages to the client.
Because the agent acts on behalf of the client, communication
sessions can be initiated and resumed quickly.
[0005] To ensure that substantially little airlink time is used, in
a further embodiment of the invention the client and agent may
exchange messages formatted as short binary messages or in another
format that helps conserve airlink and/or bandwidth.
[0006] The novel architecture may also include an "always-on lobby"
as well. In one embodiment of the invention a lobby may be operable
to form and maintain user groups, where each group may be
associated with a particular type of application (e.g., on-line
games).
[0007] Each of the three components of the architecture, namely the
client, agent and lobby may take the form of one or more firmware
or software applications that are stored on a computer readable
medium, such as a compact disk, hard drive, memory, processor or
some combination of the just mentioned devices. These devices in
turn may be incorporated within a larger wired or wireless device,
such as a telephone, personal digital assistant (PDA), gaming
device, computer (desk-top or laptop), server, or some kind of
management device, etc.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 depicts a block diagram of an architecture in
accordance with embodiments of the present invention.
[0009] FIG. 2 depicts messaging and signaling events which occur
during the authentication and authorization of a user with a
network according to embodiments of the present invention.
[0010] FIGS. 3 and 4 depict messaging and signaling flows between a
user and anonymous players interested in playing a game using local
matching according to embodiments of the present invention.
[0011] FIG. 5 depicts messaging and signaling flows to initiate a
game using global matching according to embodiments of the present
invention.
DETAILED DESCRIPTION OF THE INVENTION, WITH EXAMPLES
[0012] Referring now to FIG. 1 there is shown an architecture 1 in
accordance with one embodiment of the present invention. This
architecture 1 may be used by a service provider to deliver one or
more services in a manner that is faster than previously thought
possible while requiring a minimal amount of changes or upgrades to
the provider's network. As shown, the architecture 1 comprises at
least one always on client 2, at least one always on proxy agent 3,
and at least one always on lobby 4. Also shown are at least one
other applications client 2a (e.g., gaming client), applications
engine 3 (e.g., gaming engine) and one or more optional third party
agents, such as agent 300. The client 2 and applications client 2a
may comprise one or more software or firmware programs/applications
that may be co-located and stored on a single computer readable
medium 20 or some sort which may be, in turn, embedded within a
larger device 200, such as a wired or wireless telephone, PDA,
computer, gaming device, or a device which combines one or more
functions (e.g., mail and voice messaging), etc. Alternatively, the
client 2 and applications client 2a may be stored on more than one
medium or stored on separate mediums. Likewise, the agent 3 and
lobby 4 may also comprise one or more applications and may also be
stored on some kind of computer readable medium 30, 40,
respectively, that are also part of one or more larger devices,
such as a server 34 or the like. Though shown as one component 34,
it should be understood that the agent 3 and lobby 4 may be
separate components/applications and need not be co-located. When
stored on a computer readable medium, the features and functions of
components 2, 2a, 3, 4 and 5 may be carried out and/or controlled
by code making up a respective application or the like.
[0013] While the discussion which follows will focus on on-line
gaming, it should be understood that the "always-on" architectures
provided by the present invention may be used for any number of
services; that is, they are not limited to just gaming services,
applications or activities.
[0014] In addition, it should be understood that a service provider
may chose to implement an always-on architecture provided by the
present invention in any number of ways. For example, an
architecture (such as architecture 1) may be implemented by a
service provider such that it is "underneath" another communication
application (e.g., gaming application). That is to say any third
party communication applications the service provider has available
may lay on top of the always-on architecture.
[0015] We will discuss each of the elements of architecture 1 in
the following order: the client 2; followed by the agent 3,
followed by the lobby 4.
[0016] In one embodiment of the present invention, the client 2 may
comprise a so called "thin component" that runs on a larger device
such as a wireless telephone, PDA, laptop computer, a device which
combines more than one function (email and voice), or the like.
[0017] When a device 200 which incorporates the client 2 (and/or
applications client 2a) powers on, the client 2 is operable to
execute an initialization process. During this time period, the
client 2 communicates with a provisioning server or the like (not
shown in FIG. 1) in order to receive the identity of the proxy
agent 3 that has been provisioned to (i.e., assigned to) the client
2. In accordance with one embodiment of the invention, the
provisioning server may select an agent that is close to the client
2.
[0018] In one embodiment of the present invention, to begin a
session, whether a gaming session or another type of communication
session, the client 2 is operable to forward a registration
instruction to the so-identified proxy agent 3 in order to being a
synchronization process that establishes an initial session between
the client 2 and identified agent 3. During this synchronization
process the client 2 and agent 3 exchange signaling messages with
one another that may be formatted, for example, as short binary
messages. Because the messages are so formatted, each exchange
requires substantially little airlink time.
[0019] After the client 2 and agent 3 have been synchronized, the
agent 3 may be further operable to forward information messages to
the client 2. These messages may be used by the client 2 to
generate one or more menus that may be displayed on a display (not
such in FIG. 1) of the device 200. The information messages may
also be formatted as short binary messages. Each menu may in turn
include one or more icons or indicators (e.g. soft or hard-keys)
representing a number of values. For example, one icon may
represent the games, applications or activities a user of the
device 200 is involved in most often. Another icon may represent
the individuals (i.e., "buddies") that the user communications with
(e.g., plays games with) most often. Still another icon may
represent those individuals who are presently available and/or
desirable to communicate with the user. The icons just mentioned
are just a few of the many icons and/or indicators that may be
generated and displayed on a display associated with the device
200. A more detailed discussion of the types of menus and icons
that may be displayed on a device like device 200 may be found in
co-pending U.S. patent application Ser. No. 11/393,886,
incorporated herein in full as if set forth herein in full.
[0020] The initialization, synchronization, signaling and
information messages which are exchanged between the client 2 and
agent 3 may be sent wirelessly or via a wired communication
channel. Similarly, each of the components shown in FIG. 1 may be
wired or wireless devices.
[0021] As will be discussed in more detail below, the types of
information messages that the agent 3 may send to the client 2 may
vary depending on the functions being carried out by the agent 3.
For example, the agent may be operable to monitor the communication
habits of a user of device 200. Based on information that the agent
3 collects during this monitoring, the agent may process, analyze,
and update (collectively referred to as "process") this information
to identify patterns. Based on these patterns the agent may forward
messages on to the client 2 in order to update one or more icons or
menus, etc. that the user accesses in order to carry out an
activity/application. In addition to monitoring the habits of a
user, the agent 3 may also be operable to monitor the "presence
status" of the user of the device 200. By presence status is meant,
for example, whether or not the device 200 is powered up, or
whether the user is actively using the device 200 (e.g., depressing
soft keys or selecting icons).
[0022] In further embodiments of the invention, the agent 3 may
also monitor the presence status of other users, such as the user
of the device which is associated with agent 300, and pass this
information on to the device 200 via the client 2. In yet
additional embodiments of the invention the agent 3 may act as a
proxy on behalf of the device 200 and client 2 even when the device
200 is inactive. Before going further, when we refer to the
operation of device 200 it should be understood that many of the
operations are carried out and/or controlled by the client
application/component 2.
[0023] Backtracking somewhat, suppose after the client 2 and agent
3 are synchronized the agent 3 forwards information messages to the
client 2 concerning those games that are available to be played by
the user of device 200 and those buddies presently available to
play such a game. These messages are used to create one or more
icons, such as an icon that combines the games available and
buddies available information into one "buddies presently available
to play a game" icon. This icon intuitively presents information to
the user of device 200 without requiring the user to "drill down"
or navigate as the case may be through multiple levels of menus.
Suppose further that sometime after the icon is displayed the user
depresses or otherwise selects this icon (or key) in order to
invoke or begin a game with those buddies who are presently
available. Upon the depression of a key or selection of an icon a
signal is sent to the agent 3 from the client 2 that informs the
agent 3 of the user's request to play a game (or, in general, to
become active in an application associated with the icon selected
by the user).
[0024] Before going further, it should be understood that, in an
alternative embodiment of the invention, the agent 3 forwards
information messages to the client 2 only after receiving a signal
indicating that the user has selected an icon or depressed a key.
When a user selects a key, for example, this ensures that the user
and device 200 are in an active state. Only when a user or device
200 is in an active state is it really necessary for the agent 3 to
forward information messages to, for example, update the icons,
etc., within menus displayed on the device 200. That is, of the
user is inactive (e.g., inattentive, not using the display or
keyboard of device 200, etc.) any updates sent by the agent 3 would
not be seen by the user anyway. Not only would the information be
ignored, but valuable airlink time would have been used
unnecessarily. Thus, by waiting until the user or device 200 are in
an active state, valuable airlink time is conserved.
[0025] Continuing with the example above, upon receipt of a signal
indicating the user has selected an icon to being playing a game
with the buddies that are presently available to play a game, the
agent 3 is operable to process this signal and, if appropriate,
forward a request signal on to the agent(s) associated with each of
the buddies. For example, such a request may be forwarded to third
party agent 300. Third party agent 300 may respond in a number of
ways. One response may indicate that its associated user (via an
associated client) is not only available, but desires to play a
game with the user of device 200. Other responses may indicate that
the third party user does not desire to play a game, etc. In a
similar fashion, the agent 3 may forward such requests to each
third party agent associated with each buddy or individual that is
associated with the icon selected by the user of device 200. Upon
receiving the response from all of the third party agents, the
agent 3 is operable to determine which individuals have agreed to
play a game with the user of device 200 (or, more generally, which
individuals have agreed to communicate or carry out an activity
with the user).
[0026] In a further embodiment of the invention, the agent 3 may be
operable to forward those identifies of third party users that have
agreed to play a game with the user of device 200 to the lobby 4.
Upon receipt of these identities, the lobby 4 is operable to
generate a "group" associated with the game or
application/activity. Once a group is formed the lobby 4 is further
operable to forward a request on to the game server 5 in order to
obtain game and server specific information necessary to initiate
the game requested by the user of device 200 (e.g., game server
identity, session ID, etc.).
[0027] Before we discuss the operation of the lobby 4, however,
more can be said about the operation of the agent 3. In the example
given above it was assumed that the agent 3 was not aware of the
presence status or preferences of the third party users associated
with the request to play a game. This need not be the case. In yet
additional embodiments of the invention, the agent 3 (in fact each
agent) may be operable to receive the presence status, preferences,
and other information related to other users. This information can
be stored or cached within the agent 3 or delivered in a "just in
time" manner (e.g., on-demand). With this information in hand, the
agent 3 may first process this information and determine whether a
particular third party user is in fact presently available to play
a game before forwarding a request signal on to the agent of such a
third party user.
[0028] This ability to store the presence status and preferences of
other users may greatly reduce the time required to form a group
interested in playing a game as well as reduce the amount of
airlink time that is used. No longer must the user of device 200
wait for each third party user to respond to a request. Instead,
the agent 3 may have knowledge of a third party user's presence
status (e.g., active/inactive) at the time the agent 3 receives a
signal from client 2 to initiate a game. If such is the case, then
the agent 3 may take alternative steps to inform the lobby 4 which
of the invited third party users are actually available to play a
game. For example, the agent 3 may compare the request from client
2 with the presence states of all third party users in its memory
and, thereafter, only provide the lobby 4 with the identities of
those third party uses whose presence status indicates they are
truly presently available to play a game.
[0029] In yet additional embodiments of the invention, the agent 3
is continuously collecting the presence status and preferences of
both the user of device 200 and one or more third party users. This
information may be collected from third party agents, the third
party users, or from other sources, such as a presence server.
[0030] Throughout this discussion the word "session" is used. It
should be understood that by session is meant the time period which
elapses between the time an application, feature or function is
selected by, for example, accessing an icon, key, etc. . . . on
device 200 or agent 3 and the time when the user/agent decides to
terminate the application, feature or function. Many times the
words "session" and "application" will be used interchangeably. In
the context of our discussion this is acceptable in order to avoid
making the explanations herein overly complicated. That said, it
should be understood that a session is a time period while an
application is stored on a component in network 1. With this in
mind, the present invention provides for alternative embodiments
where the agent 3 acts as a proxy agent on behalf of the client 2
and its associated user. [0031.] Because the agent 3 may collect
information regarding the communication habits (e.g., gaming
activity), presence status and preferences (to name just a few
examples of such collected information) associated with the user of
device 200 and other users, the agent 3 is prepared to act on the
user's behalf without necessarily communicating with the user. This
ability makes it possible to reduce the amount of signaling and
other messages that are exchanged between the agent 3 and client 2
which in turn, conserves valuable airlink time.
[0031] Backtracking yet again, in a further embodiment of the
invention, prior to communicating with a client 2 the agent 3 is
initially operable to register its identify with a provisioning
server (not shown in FIG. 1). In response, the server assigns the
agent 3 to a client, in this case client 2. The provisioning server
keeps track of the client/agent assignments among other things.
Upon registering with the server and being assigned a client, the
agent 3 is operable to receive stored information associated with
the user of client 2 and device 200 (e.g., a profile of the user's
communication activity, preferences, habits, patterns of usage,
etc.), Because this information is stored by the server, the agent
which serves the client 2 may be changed as needed from time to
time. It should be noted, however, that during any given instance
of time, a single agent is assigned to a single client.
[0032] In accordance with the present invention, the agent 3 may
act as a proxy for the client 2 and its associated user in many
different instances, only a few of which will be discussed herein.
Any attempt to provide an exhaustive list of instances would
require a substantially longer discussion and is not necessary for
an understanding of the present invention. We have mentioned above
an example of one type of session where the agent 3 acts as a
proxy, namely, the ability of an agent to determine which third
party users are presently available to play a game with a user
without communicating with the client 2 or device 200. In general,
the agent 3 may be operable to carry out many of the features and
functions of the client 2 and device 200 without first
communicating with either. For example, the agent 3 may be
programmed or otherwise designed to act as a proxied receiver or
transmitted of information messages to/from other third party
users. To the extent the agent 3 has been given the capability of
device 200, and may act on its behalf without exchanging signaling
messages, etc., with the device, this may greatly conserve airlink
time and speed up communications between the user of device 200 and
another third party user. No longer must the third party wait for
the exchange of signaling messages followed by information messages
to receive a response back from the user. Instead, such a response
may be generated by the agent 3.
[0033] Up until now our discussion has assumed that the client 2,
device 200 and/or user is active (e.g., accessing the display of
device 200, etc.). In further embodiments of the invention the
agent 3 may act as a proxy agent even when the client 2, device 200
and/or its user are inactive.
[0034] For example, when the device 200 powers down the agent 3 is
nonetheless operable to maintain a previously initiated session.
Such a session may, for example, involve one or more other third
party devices/users. During the time period when the device 200 is
inactive the agent 3 may be operable to carry out many of the
functions and features of device 200 on its behalf (and its
associated user of source) as well as carry out its own presence
status monitoring discussed above and below. In alternative
embodiments of the invention, the agent 3 may also be configured
(e.g., programmed, or designed) to act as a proxy for the user in a
game session the user had previously been involved in. Those
knowledgeable in the art of gaming may refer to this capability as
"roboting".
[0035] Another example of acting as a proxy agent is as follows.
Suppose information messages intended for the user of device 200
are sent while the device 200 is powered down. Instead of
needlessly attempting to forward these on to the device 200 by
first sending a signaling message to determine whether the device
200 is powered on (which is how many existing techniques work), the
agent 3 is operable to intercept, filter or otherwise screen
(collectively referred to as "screen") these messages. Because the
agent 3 is capable of monitoring the presence states of device 200
etc., it knows in advance whether or not the device 200 is active
(e.g., powered up/on). Thus, upon receipt of a message intended for
the user of device 200 the agent 3 may be operable to forward the
message on to the device 200 only if the device 200 or user is
active, for example. This ability to act on behalf of the user of
device 200 while the user is inactive combined with the other
features/functions of the agent 3 discussed above may greatly
reduce the time it takes to respond to a message from a third
party, not to mention that this may also greatly conserve the
airlink time or bandwidth capacity of a service provider's
network.
[0036] Because it is operable to screen messages, agent 3 may also
be operable to act as a spam filter, screening out those messages
the agent 3 determines to be spam or, alternatively, malicious
messages.
[0037] In addition to screening messages during a proxied session,
the agent 3 may also store messages intended for the device 200. In
accordance with yet another embodiment of the present invention,
once the device 2 powers up or the user otherwise becomes active
(e.g., makes a selection using the display or keyboard associated
with device 200) the agent 3 may be operable to forward messages
the agent 3 has stored or cached on behalf of the device 200 while
the device or user was inactive.
[0038] In addition to forwarding stored messages, once the device
200 becomes active again the agent 3 may be operable to forward
information to update (or create) one or more of the keys, icons or
menus displayed on, or otherwise associated with a keyboard, of
device 200. For example, the agent 3 may forward updated presence
status information for a user's buddies or for anonymous
individuals that are presently available to play a game with the
user of device 200. The forwarded information may also include
those games or applications that are now available to be accessed
by the user. Though the device 200 may be operable to create and
forward the icons, menus, etc. itself, alternatively, the agent 3
may be operable to create formatted messages that can then be used
by the device 200 to create or update an icon, key, menu without
much processing by the device 200.
[0039] With respect to the roboting features provided by the
present invention, the agent 3 may be operable to carry out a set
of instructions on behalf of the user of device 200 that were
provided by the user of device 200 prior to its becoming inactive,
for example.
[0040] In one of the examples discussed above, the agent 3 forwards
the lobby 4 the identities of those third party users who are
presently available to play a game with the user of device 200. We
now continue with this example in order to point out some of the
features and functions of lobbies provided by the present
invention, such as lobby 4.
[0041] In general, lobbies provided by the present invention carry
out: (1) group formation and management, and (b) matchmaking
activities associated with sessions. A lobby, such as lobby 4, may
be operable to maintain a plurality of groups. For example, the
lobby 4 may form and manage groups that contain: (1) those users
who are interested in playing a particular game or games; (2) those
users who have played a particular game or games; and (3) those
users who have the same skill level in a particular game or games,
to give just a few examples of the types of groups that can be
created and managed by the lobby 4.
[0042] In a further embodiment of the invention the lobby 4 may use
its matchmaking functions to determine whether the third party
users, whose identities it has received from agent 3, should indeed
be made a part of the same group. Perhaps the user of device 200
has mistakenly requested someone who does not have the same skill
level as the user to join the game. The lobby 4 may be operable to
compare the skill level of each identified user with the skill
level contained in the request to ensure this requirement is met.
The lobby 4 may carry out this comparison by comparing skill levels
it has stored with the skill level in the request. This comparison
is just one example of the matchmaking capabilities of the lobby
4.
[0043] Assuming, for the sake of the example we began earlier, that
upon receiving each identity of the invited third party users the
lobby 4 determines through its matchmaking functions that each user
is qualified to play a game or otherwise communicate with the user
of device 200. Thereafter, the lobby 4 is operable to form a group
that consists of all of the identified third party users along with
the user of device 200. Having now formed and stored a group, the
lobby is further operable to invoke its management functions in
order to send a group formation indication to the agent 3 which is
relayed on to the client 2. In this manner, the user of device 200
may receive an icon, key or some other kind of indication/indicator
that a group has been formed to play a game, for example.
[0044] In addition to interfacing with the agent 3, the lobby 4 may
also invoke its management functions to interface with an
applications server, such as game engine/server 5, and other
lobbies (not shown in FIG. 1). The lobby 4 may interface with the
server 5 in order to request, and receive, information and signals
(e.g., a game session ID) related to initiating, maintaining and
terminating an application/session that involves the server 5, such
as a game. The lobby 4 may forward the application/session
information to the agent 3 which relays this information on to the
user of device 200 as well as on to the agents associated with the
third party users that are included in the group formed by the
lobby 4. Alternatively, if a third party user and/or her agent are
not associated with the lobby 4, the lobby 4 may forward the
application/session information on to the lobby that is associated
with the third party user and/or her agent so that the third party
user will be able to participate in the game or other
application/activity.
[0045] Upon receiving the application/session information, the
client 2 may be operable to communicate with the applications
client 2a in order to request that the client 2a create a link with
the server 5 to begin the application (e.g., being the game). In a
similar manner, each third party client that receives the
application/session information invokes its own applications client
to contact the server 5 (or a server associated with a game
session) in order to begin participating in the game.
[0046] As indicated earlier on, the lobby 4 (as well as the client
2, applications client 2a and agents 3 and 300) may comprise one or
more software or firmware applications that are stored on some sort
of computer readable medium using known methods, including by
downloading components on to a medium. In alternative embodiments
of the invention, the matchmaking and management functions, as well
as other functions, of the lobby 4 may be separated into different
sub-components/applications. For example, the lobby 4 may comprise:
(i) a session management sub-component 4a; (ii) a communications
server sub-component 4b; and (iii) a comparison/matchmaking
sub-component 4c.
[0047] In one embodiment of the present invention, the session
management sub-component 4a may be operable to provide users with
information concerning a given application/session, such as when a
session has started or can begin (e.g., the game session ID
mentioned beforehand). The session manager may also be operable to
govern the participation of users in a game by deleting existing
users, or adding new ones, when appropriate to a
game/activity/application.
[0048] In accordance with the present invention, the communication
server sub-component 4b may be operable to relay information
messages between one or more clients/users in a group that are
participating in, or who had been participating, in a session.
These messages may comprise voice, text, video and/or multimedia
content for example.
[0049] Again, though the primary type of application/session
discussed herein is a game, it should be understood that many
different types of applications/sessions, such as voice
conferencing or the like, may be handled by the techniques of the
present invention.
[0050] The last sub-component mentioned above was the matchmaking
sub-component 4c, whose functions we have discussed before. One
other function that may be carried out by the sub-component is the
addition/deletion of one or more third party users from a session
based on whether or not each user is active or inactive (i.e.,
their presence status). This helps those still active informed of
the status of all the other users, for example.
[0051] For the most part the examples above focus on third party
users that are known to the user of device 200. It should be
understood that the features and functions of the agent 3, lobby 4
and client 2 may also be used to invite, identify, qualify or
otherwise add/delete third party users that are unknown to the user
of device 200 (though they may be known to the lobby 4, for
example). These users may be referred to as anonymous users.
[0052] For example, the client 2 may send a request to the agent 3
to invite any user that has a certain skill level to join a game
without providing the agent 3 with the identity of the invitees.
The agent 3 may refer such an invitation to the lobby 4 which may
consult its stored groups or user profiles to identify qualified
anonymous users. Once one or more users are identified by the lobby
4 the lobby may form a group consisting of one or more of the
identified individuals and the user of device 200 who initiated the
request. The lobby 4 may select the individuals in any number of
ways, including randomly, or according to some order.
[0053] It may occur that the lobby 4 cannot form a group that meets
the requirements of a request initiated by the user of device 200.
When this occurs the local lobby 4 ("local" because it is
associated with agent 3 and client 2) may forward the requirements
of the request on to one or more, third party or remote global
lobbies (not shown in FIG. 1). Each global lobby then attempts to
identify users (and their profiles) that have attributes which
satisfy the requirements of the request. Each global lobby has
knowledge of many more users and their preferences, etc., that may
satisfy the request than the local lobby 4. An identification of
some sort of each user is sent to the locally lobby 4 by the
respective global lobby. Thereafter, the local lobby 4 may form a
group.
[0054] For the sake of completeness the reader may wish to consult
FIG. 2 through 5 which depict messaging and signaling flows that
occur between the components shown in FIG. 1 according to the
embodiments of the present invention.
[0055] Although we will not discuss the signaling and message flows
depicted in these figures in detail, it should be understood that
these flows are just some of the flows between components of the
present invention. Further details concerning the messages
exchanged between the components shown in FIG. 1, their formats and
content may be found in co-pending U.S. patent application Ser. No.
11/393,885, incorporated herein in full as if set forth in full
herein.
[0056] The above discussion has attempted to set forth some
examples of the features and functions of the present invention.
The true scope of the present invention, however, is set forth in
the claims that follow.
* * * * *