Referring now to
While the discussion which follows will focus on on-line gaming, it should be understood that the 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.
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, one architecture (such as architecture 1) may be implemented such that it is underneath another 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.
To provide the always-on features and functions described in the co-pending Applications mentioned above, such as presence management/proxying, real-time launching of services, and game playing the components shown in
The architecture 1 in
More specifically, in one embodiment of the present invention, the device 200 may interact with the agent 3 through an interface 2b. Many times the device 200 will be a hand-held device (or handset for short). To simplify the explanation which follows we may refer to the device 200 as simply a handset, it being understood that this is just one example of the type of device that may make use of the messages provided by the present invention. In addition, though in our discussion we may state that the device or handset 200 generates, exchanges or forwards messages, many times it is the interface 2b and/or client 2/applications client 2a that is actually involved in generating, forwarding and/or receiving messages.
Like the client 2 and applications client 2a, the interface 2b may comprise hardware, software, firmware or some combination of the three. When embodied in software/firmware, interface 2b may comprise one or more programs/applications that may be co-located and stored on a computer readable medium 20 of some sort which may be, in turn, embedded within handset 200. When stored on one or more mediums, a program/application may comprise code that controls the features and functions of interface 2b. In yet an additional embodiment of the invention, the interface 2b comprises software that works in conjunction with an air interface of handset 200.
Continuing, within handset 200 the client 2 and interface 2b may typically handle all communications, including the exchange of messages with agent 3. In one alternative embodiment of the invention, the interface 2b may be part of the client 2. For the sake of simplicity, we shall assume this is the case for the remainder of this discussion. However, it should be realized that this is an optional feature of the present invention. In accordance with an embodiment of the present invention, the client 2 may generate messages formatted as binary User Datagram Protocol (UDP) packets (i.e., “short binary messages”) in order to minimize airlink delays and to make the implementation of the network 1 and its many agents 3,300 scalable. In general, the messages generated by both the client 2 and agent 3 may be structured as follows:
The message header of such a message may include the following fields from the structure above. First, the “SrcID” field (e.g., 4 bytes in length). This field identifies the component that is sending or forwarding a message. In messages sent from the handset 200 to the agent 3, this field contains the identification (ID) of the handset. The ID is typically assigned by a provisioning server (not shown in
The next field that may be part of the header is the “DstID” field. It too may be 4 bytes in length. This field may be used to identify the recipient of a message. The third field that may be part of the header is a “SeqNo” field. Again, it may be 4 bytes in length. This field may be used to indicate the sequence number of a given message. The next field that may be part of the header is the “Authentication” field. As with the other fields it may be 4 bytes in length. This field may be used to hold content/information to authenticate a sender of a message. It may also be used to assure that a message has not been corrupted or altered by an unauthorized third party (e.g., by sniffing). The last field that will be discussed herein which may be part of the header is a “SubMsgs” field. In accordance with an exemplary embodiment of the present invention, this field may in fact comprise a sequence of one or more sub-messages.
The following discussion will highlight some examples of sub-messages so that the reader may gain an understanding of the present invention. In general, sub-messages may be classified into four categories: state sync, presence update, game playing, and common sub-messages. It should be noted that the present invention places no restriction on the number or type of sub-messages that may be contained in a single message. Instead, a particular combination may be purely based on timing, performance or other considerations.
Further, it should be noted that if a particular message contains at least one sub-message that requires an acknowledgement (“ACK”) message, then one ACK message should be generated by the recipient of the message. Depending on the type and requirement of each sub-message, an ACK message itself may contain one or more sub-messages.
In accordance with one embodiment of the invention, the general structure of a sub-message may take the form of:
The three sub-fields of the sub-message above may be further described as follows below. It should be noted that where a number of bytes is indicated as a length of a given sub-field this is merely an exemplary length. Other lengths may be substituted without changing the principles of the present invention. The sub-fields are:
We now turn to a more detailed discussion of the state sync, presence update, game playing, and common sub-messages mentioned above.
In accordance with one embodiment of the present invention, a state sync sub-message is used to synchronize the handset 200 and agent 3, for example. This type of sub-message is usually sent during a “power on” or initialization time period during which the device 200, and in particular, the client 2/interface 2b, may be enabled. Various information that is stored by the device 200 (and/or agent 3 if it is the agent that is being powered up) may be updated or synchronized during this time period. One examples of such information are: game list(s), buddy list(s), home screen features, game screen features, and buddy screen features, to name just a few examples.
As is known by those skilled in the art, the handset 200 and agent 3 may lose synchronization with one another when, for example, changes occur to either one of them. For example, when a user changes the features of the device 200 the agent 3 may not automatically detect these changes. Such changes may involve adding/deleting a buddy to/from a buddy list or may be triggered when a new game is downloaded. To insure the device 200 and agent 3 are once again synchronized, the device 200 may generate and forward a message containing a sync state sub-message related to a given type of information or change. On the agent 3 side, a sync state sub-message may be generated and sent in order to refresh icons or keys on a display, keypad or the like (not shown in
The present invention provides for the generation of a plurality of state sync sub-messages. In accordance with one embodiment of the invention, at the beginning of a synchronization process, the handset 200 may generate and send a “Sync Request” sub-message to the agent 3, along with five checksums, each checksum associated with a different type of state information.
In accordance with the present invention, the agent 3 may associate a different checksum with: (a) a most recent version of a particular type of information, and (b) a previous version of the information. For example, upon receiving a “Sync Request” sub-message from the handset 200, the agent 3 may be operable to compare the received checksum in the sub-message with, for example, two versions of a checksum previously stored. Thereafter, the agent 3 may be further operable to determine which, if any, information is out of sync and which side (handset or agent) has the most recent version of the information.
Once it has received a Sync Request, the agent 3 maybe operable to generate and send a “Sync Response” sub-message back to handset 200. If it happens that the agent 3 has the latest version of a particular type of information, the latest state/version of this information may be piggybacked (i.e., included in) as a part of the “Sync Response” sub-message. If, however, the handset 200 has the latest version, then the handset 200 may be operable to generate and send a “Sync Update” sub-message to the agent 3 after receiving the “Sync Response” sub-message from the agent 3. Coming full circle, the agent 3 may yet be further operable to generate and send a “Sync Update Response” sub-message to the device 200 as an acknowledgement of sorts. The following are examples of the structure of some of the sync state sub-messages just discussed:
In accordance with an embodiment of the invention, all of the checksums may have a length of 2 bytes by default, unless otherwise indicated.
The next type of sync state sub-message is a Sync Response sub-message:
The next type of sync state sub-message is a Sync Update sub-message:
The fourth type of sync state sub-message is a Sync Update Response sub-message:
The final, exemplary type of sync state sub-message is an Offline sub-message. This type of sub-message may be generated and sent by a handset to an agent to indicate that the handset is going offline.
The next type of sub-message is a “presence update” sub-message. This type of sub-message may, for example, enable the handset 200 to subscribe and/or unsubscribe to receive the presence status (e.g. active/inactive) of other devices. A more detailed explanation of the presence status of a device is given in co-pending U.S. patent application No. ______, mentioned above.
In accordance with an embodiment of the present invention, the handset 200 may receive updated presence status information after first subscribing to receive this information by generating and sending a “Subscribe” presence update sub-message to the agent 3. Alternatively, if the handset 200 generates an “Unsubscribe” sub-message it will not receive presence update information. Conversely, the agent 3 may forward the presence status of a buddy to the handset 200 by generating and sending a “Notify”, presence status sub-message.
In a further embodiment of the invention, the handset 200 may also provide its own presence status (e.g., active/inactive) to the agent 3 by generating and sending an “Availability Update”, presence update sub-message to the agent 3. This may be useful when, for example, a user wishes to enter, or exit, an on-line game or a group/lobby associated with such a game.
The following are examples of the structure, format and content of the presence update sub-messages just mentioned. It should be noted for the sake of completeness, that some of these sub-messages may require an acknowledgement message.
The third type of sub-message is a game playing sub-message. This type of sub-message may be generated and sent by the device 200 to the agent 3 to: (a) play a game with an anonymous player; (b) invite a buddy(s) to play a game with the user of device 200; or (c) accept an invitation to play a game with a buddy, to give just a few examples.
The following are examples of the structure, format and content of some specific game playing sub-messages provided by the present invention. Again, it should be noted for the sake of completeness that some of these sub-messages may require an acknowledgement message.
The last type of exemplary sub-message discussed herein is so-called a common sub-message. One common sub-message is an acknowledgement (ACK) sub-message. This type of sub-message may be generated and sent by either a handset or agent. It is a generic sub-message that may be used to confirm the receipt of a message or sub-message. The second type of common sub-message is a “Keepalive” sub-message. This is an optional sub-message that may be generated and sent by a handset to an agent on a periodic basis, typically during an “idle” time period (e.g., once every 5 minutes). This type of sub-message enables an agent to receive and maintain the presence status of a handset. It may not be necessary for the handset to generate this type of sub-message if the handset's presence status information is available from another source. The following are examples of the structure, format and content of acknowledgement and Keepalive sub-messages provided by the present invention.
Up until now, the discussion has focused on those messages that may be exchanged between a handset and an agent. However, interfaces between the client 2 and game client 2a, between the agent 3 and lobby 4, and between the lobby 4 and game server 5 are also provided by the present invention.
The above discussion sets forth some examples of methods and devices provided by the present invention for enabling the exchange of messages between components of an always-on network. The true scope of the present invention, however, is provided by the claims that follow where it should be noted that the term “device” is meant to include devices, like device 200 for example, and/or their associated users.
Co-pending U.S. patent application Ser. Nos. ______, ______, and ______, incorporated by reference in full herein as if set forth in full herein, disclose methods and devices which, among other things, enables users to conduct communication sessions (e.g., on-line games) quickly and with greatly reduced airlink time/bandwidth than previously thought possible. In general, the co-pending Applications just mentioned disclose “always-on” methods and devices because even when a user of a device is inactive (e.g., her device is powered-off) an “always-on agent” may act as a proxy and continue to act on behalf of the user/user's device during a given communication session.