Method and system providing spectator information for a multimedia application

A method and system for allowing spectators to experience multimedia information over a network generated by an online video game running on a participant's device comprises a participant system and a universal spectator client system. A participant may utilize a device to experience game play. Each spectator may also have an associated device, which may allow the spectator to receive multimedia information generated by the participant system over a network. A spectator may experience multimedia information generated by a participant regardless of whether the spectator has the same title installed on an associated device and regardless of whether the associated spectator device provides the same capabilities and functionality as the participant device.

BACKGROUND

The sophistication of computer gaming has steadily increased since the early days of computer based games. Modern computer games provide sophisticated multimedia environments involving 3-D graphics and sound to gamers and may allow multiplayer interaction over a network such as the Internet. Gaming enthusiasts typically play computer games on a platform, which may be, for example, a personal computers or dedicated gaming consoles such a the Xbox Video Game Console manufactured by Microsoft Corporation.

The rich depth of modern gaming generates gaming communities of enthusiasts who may desire to share their experiences, tips, hints, opinions, etc. It is desirable to share an actual multimedia experience between a gamer and an interested spectator. In particular, providing interested spectators access to the experience of a particular game provides a self-sustaining marketing environment for game titles and gaming platforms in which spectators may become immersed in the multimedia experience of game play before they have actually purchased a particular game title or gaming platform. In addition, as games have become rich multimedia experiences unto themselves, viewing of game play may become of interest to the general public regardless of whether they ultimately desire to play the game.

However, several issues arise with respect to providing spectators access to a gaming environment. First, the spectator may not have access to the same platform as the gamer. The platforms on which spectators may desire to experience game play may provide a heterogeneous set of resources for graphics and sound generation. In addition, potential spectators may be coupled to a network with varying degrees of bandwidth capability. For example, a spectator may own a personal computer but not a gaming console on which a gamer plays a particular title. Alternatively, a spectator may have access to the same platform as a gamer but may not have installed the specific title on their platform that they desire to observe.

Thus, a need exists for a method and system in which interested spectators may observe game play of a gamer on a wide variety of platforms and regardless of whether the spectators have access to the gaming title itself or the platform on which the game is played.

SUMMARY

According to one embodiment, a method and system for allowing spectators to experience multimedia information over a network generated by an online video game running on a participant's device comprises a participant system and a universal spectator client system. A participant may utilize a device to experience game play. Each spectator may also have an associated device, which may allow the spectator to receive multimedia information generated by the participant system over a network. A spectator may experience multimedia information generated by a participant regardless of whether the spectator has the same title installed on an associated device and regardless of whether the associated spectator device provides the same capabilities and functionality as the participant device.

A participant system may be installed on a device associated with a participant of a video game that may wish to share the participant's user experience with one or more spectators. The spectator system may comprise a participant process and a participant interface process. The participant process may perform functions to capture information from a frame buffer on the participant system and an audio buffer on the participant system, render the information as a multimedia signal, encode the multimedia signal and transmit the multimedia signal to spectators. The participant interface process may display a GUI to a participant that shows current game play as well as information relating to online spectators categorized by particular video games. A universal spectator client may be installed on each device associated with a potential spectator. The universal spectator client may comprise a spectator process and a spectator interface process. The spectator process may operate to receive encoded multimedia signals for video games generated by a participant system on a participant device and display the multimedia information. The spectator interface process may provide a GUI to allow spectators to select games they desire to observe as well as view the online status of participants. The universal spectator client may be scalable and may be installed on a heterogeneous array of possible spectator devices.

A spectator server may comprise a spectator/participant negotiation process to negotiate spectator sessions between participants and one or more spectators as elected by the participants and spectators. The spectator server may also comprise a spectator database that may store information regarding spectators and participants as well as permissions information in which participants may designate which spectators are allowed to view a particular video game. The spectator server may also track online status for participants and spectators in order to update the participant systems and universal spectator clients of the status of potential users.

Using the SACS, users may identify themselves with one or more community groups, which identify users having certain shared values, preferences, viewpoints, ideologies, etc. At least one content descriptor may be defined, which indicates an attribute or feature that content may exhibit to a varying extent.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

FIG. 1Adetects an exemplary environment in which a spectator system may be deployed. An arbitrary number of users105a-105dmay each be associated with a respective device having various functionality and capabilities. For example, user105amay be associated with video game console135a, user105bmay be associated with the videogame console135b, user105cmay be associated with a personal computer140and user105dmay be associated with a cellular telephone117. The devices may exhibit heterogeneous functionality and capabilities. For example, the capabilities of video game consoles135a135bmay differ markedly from the capabilities of cellular telephone117as far as processing power, graphics capability, the ability to render audio, etc. Each of the devices, i.e., video game console135a, videogame console135b, personal computer140and cellular telephone117in each be coupled to a network125, which may be the Internet and associated World Wide Web.

Each user105a-105dmay act as a participant in playing a video game or as a spectator in experiencing the game play conducted by another user who is acting as a participant. Whether a user105a-105dacts as a participant or spectator may depend upon the particular status and configuration of their respective device.

Devices135a,135b,140and cellular telephone117may each provide a platform for hosting a video game providing a multimedia to a respective user incorporating graphics and sound. A video game also referred to herein as a video game title or title may comprise program instructions, resources, multimedia content involving sound and graphics etc., which when executed on a respective device may provide a multimedia experience to a user.

A participant system (shown inFIG. 1B) may be deployed on any of the devices135a,135b,140and117in order to share the respective user's105a-105dgaming experience with other users acting as spectators via network125. Thus, a participant system deployed on a device may allow a user to act as a participant sharing his or her game play with others. For example, user105ausing video game console may run a particular game title on videogame console135aand may desire to share his or her experience with users one105b-105d. A participant system may be deployed on videogame console135ain order to provide shared experience of user105aacting as participant to users105b-105dacting as spectators. The participant system may capture multimedia information from the running title on video game console135aand provide that multimedia information to users105b-105via network125. The participant system may provide the multimedia information from the running game title on video game console135aregardless of whether users105b-105dacting as spectators have the same game title installed on their respective devices as that running on video game console135aand regardless of whether the devices105b-105dhave the same capabilities or functionality as videogame console135a.

An expanded view of a video game console135aon which a participant system may be deployed is also shown inFIG. 1A. Video game console135amay include network interface107, GPU (“Graphics Processing Unit”)110, CPU (“Central Processing Unit”)115, frame buffer111, audio buffer109and rendering buffer108. CPU115may provide a general purpose computer that may concurrently execute any number of processes or tasks. Video game titles running on videogame console135a(not shown inFIG. 1) may each comprise a process or task executed by CPU115. Memory block121may store program instructions and/or data relating to processes or tasks executed by CPU115. Thus, CPU115may retrieve or store data in memory block121in order to perform processing. For example, videogame titles may be stored in memory block121and CPU115may access these instructions.

GPU110may provide a specialized and dedicated processor for performing graphics processing and rendering. GPU110may utilize frame buffer111and rendering buffer109in order to perform graphics processing and rendering. Frame buffer111may be a video output device that displays a video display from a complete frame of data. Information in frame buffer111may comprise color values for every pixel to be displayed on a display device140. Data in frame buffer111may be subject to further processing and rendering by GPU111the result of which may be stored in rendering buffer109. Additional rendering may include personal information of a user105a.

Audio buffer109may store rendered audio data relating to a video game title executing on video came console135. Data stored in audio buffer may be digital audio samples of audio information.

CPU110may interact with network interface107to cause information to be transmitted over network125. In addition, CPU110may interact with network interface107in order to receive information transmitted over network125, for example, for other users such as users105b-105d. Video game console135amay output rendered video for display on display device142and rendered audio for playback on audio device144.

FIG. 1Bdepicts an exemplary deployment of a participant system for sharing multimedia information for a video game with spectators. User105amay be associated with video game console135awhile user105bmay be associated with video game console135b. User105amay have installed video game titles190a-190con video game console135awhile user105bmay have installed only video game title190con video game console135b. User105amay desire to share, for example, multimedia information related to game play for video game title190arunning on video game console135awith user105beven though video game title190ais not installed on video game console135b. Thus, participant system220installed on a particular device allows a respective user to act as a participant and therefore share game play experience with others who act as spectators. AlthoughFIG. 1Bshows participant system220installed only on a single device (video game console135a), it should be understood that participant system220may be installed on a number of devices.

To accomplish this, participant system220(described in detail below) may be deployed on video game console135aand universal spectator client180described in detail below may be installed on video game console135b. Universal spectator client180, in general, operates to receive and render received multimedia information on a device and therefore allows a user who has installed universal spectator client180to act as a spectator. Universal spectator client180may be a scalable process that may be adapted to run on any type of device and account for the respective capabilities of that device. Thus, althoughFIG. 1Bshows only a single device with a universal spectator client180deployed, it should be understood that a universal spectator client180may be deployed on any number of devices coupled to network125so that users of those respective devices may act as spectators with respect to game play on video game console135a.

Spectator system220may capture multimedia information generated during game play of video game title190aconcurrently with the running of video game title190on video game console135a, render, encode and transmit the multimedia information via network125to universal spectator client180deployed on video game console135b.

Spectator server294may maintain state information regarding spectators online and connected to network125and their online status as well as participants connected to network125and their online status. Spectator server294may retrieve this information and provide appropriate information to participant system220so that participant system220can display a list of available spectators to user105ausing video game console135a. Similarly, spectator server294may provide information regarding participants and games available to be viewed by potential spectators via, for example, universal spectator client180on video game console135b.

It should be understood that a user may act as a participant alone with respect to certain video games, as a spectator alone with respect to certain video games and/or as a spectator and participant with respect to particular video games. Thus, althoughFIG. 1Bshows spectator system220and universal client180as installed on different devices, it should be understood that spectator system220and universal client180may be installed on a single device allowing an associated user for that device to act both as a participant and as a spectator with respect to particular video games.

FIG. 2Ashows an exemplary structure of a participant system according to one embodiment. Participant system220may be deployed on a device associated with a user that desires to act as a participant and thereby share multimedia information for running game titles with other users acting as spectators. For example, participant system220may be deployed on video game console135ain order to allow user105ato act as a participant and thereby share game play with users105b-105dacting as spectators.

Spectator system220may comprise one or more processes or tasks executed by CPU115as well as state data. For example, as shown inFIG. 2A, spectator system220may comprise a participant process203and participant interface process230. The details of a participant process203and spectator interface process will be described in detail below. As depicted inFIG. 2A, spectator system220may execute concurrently with other tasks or processes running on CPU115and in particular a game process210for which a user acting as a participant may desire to share multimedia information with other users acting as spectators. AlthoughFIG. 2Aonly shows one such concurrently running game process210, it should be understood that any number of game processes may run concurrently with participant system220on CPU115.

FIG. 2Bshows an exemplary architecture of a participant process according to one embodiment. Participant process220may comprise frame capture module250, audio capture module255, rendering module260, encoding module265and network communication module270. It is assumed that participant process220runs on a device associated with a user that desires to act as a participant with respect to one or more video games and share this information with spectators. Thus, participant process220may run on a device that includes an exemplary architecture such as that shown inFIG. 1aand may include a CPU115, GPU110, memory121, network interface107, frame buffer111, audio buffer109and rendering buffer108.

Frame capture module250may retrieve video data from frame buffer111on a periodic basis. Similarly audio capture module255may retrieve audio data from audio buffer109on a periodic basis. Video data retrieved by frame capture module250and audio data retrieved by audio capture module255are provided to rendering module260, which multiplexes video and audio data into a single multimedia signal288, which is then provided to encoding module265. Encoding module may perform any type of encoding or compression on the multimedia signal288received from rendering module260. For example, encoding module265may employ MPEG or other suitable encoding and compression scheme to the multimedia signal288to generate an encoded multimedia signal290which may then be provided to network communication module270. Network communication module performs packetization and other data preparation in order to prepare for the transmission of the encoded multimedia signal for transmission over a network such as network125.

FIG. 2Cshows an exemplary architecture of a participant interface process according to one embodiment. Participant interface process230may comprise spectator list module285and GUI module280. Participant interface process230may update information to a user acting as a participant regarding spectators that are online and wish to observe game play for a particular game. As will be described in detail below, a participant may allow or disallow certain other users from acting as spectators with respect to particular games. A participant may desire to disallow another from acting as a spectator for various reasons. For example, if a certain game involves a high degree of violence, a game player might desire to disallow potential spectators under a certain age from viewing game play. GUI module280may provide functionality for displaying a user interface for a spectator process as described in detail below.

Participant list module285may retrieve a list of all spectators sorted by game that are currently online via, for example, spectator server294shown inFIG. 1Bas described below. GUI module280may display the retrieved information using a dedicated participant GUI described in detail below.

FIG. 2Dshows an exemplary architecture of a spectator server according to one embodiment. Spectator sever294may comprise spectator/participant negotiation process294and spectator database237. Spectator database237may store and update state and permissions information relating to participants and spectators with respect to particular video games as well as keep track of particular user's allowed or disallowed status and additional information regarding the platform capabilities of devices utilized by particular spectators. An exemplary schema of a spectator database237is described below.

Spectator/participant negotiation process294may be a process executed on spectator server294. Spectator/participant negotiation process294may perform negotiation functions to allow particular spectators to experience game play of particular participants. In particular, as described in detail below, spectator/participant negotiation process294may utilize state information stored in spectator database to perform this negotiation.

FIG. 2Eshows an exemplary architecture of a universal spectator client according to one embodiment. Universal client180may allow a user operating a particular device to act as a spectator with respect to particular video game titles running on devices associated with users acting as participants regardless of whether the spectator has the same game titles as the participant installed on their device and regardless of whether the spectator is utilizing the same platform as the participant.

Universal spectator client180may be executed by a CPU115on a device associated with a spectator. Universal spectator client180may comprise spectator process237and spectator interface process. As described in detail below, spectator process237may act to receive shared multimedia information from participants who desire to share game play sessions and display that information on the associated spectator device. Spectator interface process239as described below may act to display a list of participants and associated video games that the spectator may observe as well as provide other interface functionality to allow the spectator to initiate, terminate or configure spectator sessions.

FIG. 2Fshows an exemplary architecture of a spectator interface process according to one embodiment. Spectator interface process239may comprise participant list module212and GUI module299. Participant list process212may update information to a spectator regarding participants that are online and wish to share game play for a particular game. As will be described in detail below, a participant may allow or disallow certain other users from acting as spectators with respect to particular games. GUI module299may provide functionality for displaying a user interface for a universal client process as described in detail below.

Participant list module212may retrieve a list of all participants sorted by game that are currently online via, for example, spectator server294shown inFIG. 1Bas described below. GUI module299may display the retrieved information using a dedicated spectator GUI described in detail below.

FIG. 3is a flowchart of an exemplary process executed by a participant process in order to capture and distribute to spectators multimedia information relating to video games running on a device. The process is initiated in305and may be initiated when a participant elects to share a video game experience with one or more spectators. In307, input is received from a participant regarding a selected game for which the participant desires to share multimedia game play information as well as a list of allowed spectators who may observe the game. According to one embodiment, this information may be captured by a participant interface process230described above with respect toFIG. 2A. The information may be propagated to spectator server294to update a spectator database regarding the allowed spectators. In310, a timer is initiated. In315, it is determined whether the timer has expired. If not (‘No’ branch of315) flow continues with315and the timer is checked again. If so (“Yes” branch of315), in330video data currently in the frame buffer is captured. In335, audio data currently in the audio buffer is captured. In340, the video and audio data respectively captured from the video and audio buffers is rendered into a composite multimedia signal. In345, the multimedia signal is encoded using any number of encoding, compression and/or encryption schemes. In350, the encoded signal is transmitted over a network to spectators selected in step307.

FIG. 4Ais a schema of an exemplary spectator database that may be deployed at a spectator server. Spectator database schema407may include spectator table475, participant table481, game table470, quality table480, allowed spectator table490, and device table492.

Spectator table475may store information regarding spectators and may include spectator ID field422, spectator name field425and IP address field410. Spectator ID field422may store a unique identifier for a spectator. Spectator name field425may store an alphanumeric string representing a name of a spectator. IP address field410may store a current IP address associated with a spectator.

Participant table481may store information regarding participants and may include participant ID field485, participant name field487and IP address field489. Participant ID field485may store a unique identifier for a participant. Participant name field487may store an alphanumeric string representing a name of a participant. IP address field489may store a current IP address associated with a participant.

Game table470may store information regarding particular game titles and may include game ID field410and game name field415. Game ID field may store a unique identifier for a game. Game name field415may store an alphanumeric string representing the name of a game.

Device table492may store information relating to particular devices associated by users. Device table492may include device ID field421, video profile field424, audio profile426and processor profile428. Device ID field421may store a unique identifier for a device. Video profile field424may store information regarding the video capabilities of the corresponding device including such information as screen resolution, etc. Audio profile426may information relating to the corresponding audio capabilities of the device. Processor profile428may store information regarding the capabilities of the processor associated with the device such as the clock speed, etc.

Quality table480may store information regarding quality of content to be delivered to a spectator. Quality ID field420stores a unique ID for a quality. Video quality field425stores a parameter indicating a desired video quality. The video quality parameter stored in the video quality field425may specify a resolution, bit rate, compression ratio, etc. Audio quality field427stores a parameter indicating a desired audio quality. The audio quality parameter stored in the audio quality field427may specify a bit rate, compression ratio, etc.

Allowed spectator table490may associate participants with allowed spectators for particular video games. Allowed spectator table490may include participant ID field485, spectator ID field422, game ID field410, quality ID field420and device ID field421. Thus, allowed spectator table490may relate a participant ID485to a spectator ID422with respect to a game ID410that the spectator may observe at a specific quality ID420and on a specific device ID420.

FIG. 4Bshows an exemplary process executed by a spectator list module that may be part of a participant system. It is assumed for this example that a participant system is deployed on a device associated with a user that desires to act as a participant with respect to one or more video games. It is further assumed that spectators may utilize a device with universal spectator client180installed. Universal spectator client180may perform actions to propagate information regarding the online status of spectators to spectator server294as described below with respect toFIG. 4C.

Spectator list module285may operate to retrieve information regarding allowed online spectators from spectator server294as well as propagate the online status of the participant to spectator server294. The process is initiated in451. In452, spectator list module285may transmit online status of the participant to spectator server294. This information may be used to allow potential spectators to learn that a participant for particular games and is online. In particular, spectator server294may receive the online status information of the participant and update spectator database237to reflect that the participant is online. Spectator server294may update the IP address field489of participant table481to indicate that the participant is online. Setting IP address field489of participant table481to ‘NULL’ may indicate that the participant is offline.

In453, spectator list module285may retrieve a list of all allowed spectators for all games on the participant's device on which spectator list module is currently running from spectator server294. This information may be retrieved from spectator database237at spectator server294and in particular, allowed spectator table490. Once this information is retrieved, spectator list module285may poll spectator server294to determine which of the allowed spectators are currently online and their respective IP addresses. In457, the information retrieved from spectator server294may be displayed to the participant via spectator interface process230.

FIG. 4Cshows an exemplary process executed by a participant list module that may be part of a universal spectator client. It is assumed for this example that a universal client module180is deployed on a device associated with a user that desires to act as a spectator with respect to one or more video games. It is further assumed that participants may utilize a device with a spectator system220installed. As described above, spectator system220may perform actions to propagate information regarding the online status of the respective participant to spectator server294so spectators using universal client180may learn of this status by polling spectator server294and initiate a spectator session.

Participant list module212may operate to retrieve information regarding allowed online participants from spectator server294as well as propagate the online status of the spectator on which the universal spectator client is installed. The process is initiated in472. In473, the online status of the spectator is transmitted to spectator server294to allow potential participants to learn that the user is a spectator in particular games and is online. In particular, spectator server294may receive the online status information of the participant and update spectator database237to reflect that the participant is online. Spectator server294may update the IP address field410of spectator table489to indicate that the spectator is online. Setting IP address field410of spectator table489to ‘NULL’ may indicate that the spectator is offline. In475, participant list module212may retrieve a list of all allowed participants and associated online status information for which the spectator is allowed to serve as a spectator. This information may be retrieved from spectator database237at spectator server294and in particular, allowed spectator table490. In479, the information retrieved from spectator server294is displayed on universal spectator client180in a GUI. This process may be performed by GUI module299.

In483participant list module may receive a desired game for a game that the spectator is allowed and the spectator wishes experience. In485, the spectator session is initiated. This may involve transmitting certain information to spectator server294and requesting permission from the participant of the requested video game. The process ends in491.

FIG. 4Dshows an exemplary participant interface GUI that may be generated by a GUI module that may be part of a participant interface process. Participant interface461may be displayed on a device on which a user plays a video game and may desire to share the video game experience with various spectators. The participant interface461may comprise a game play pane446, a game pane442and an allowed spectators pane444. Game play pane446may show the actual game play as the participant plays a game. Game pane442may allow a user to select a particular game for play. Allowed spectators pane444may show allowed spectators for the game. Thus, the exemplary display inFIG. 4Bshows that a user has selected a game “Claw Puppet” for play and the allowed spectators for “Claw Puppet” are GameLover295, Darth, Dino, GameGirl, Joe15, GameAlice, Henry and GameJoy1707. Participant interface may allow the participant to select those particular allowed spectators for which the participant desires to share a game play session. This information may be received by participant interface, which may then cause a participant process220to begin sharing the game play with the particular users selected.

According to an alternative embodiment, one or more spectators may indicate a desire to receive multimedia information regarding an upcoming multimedia session but may in fact not be online during the actual occurrence of the session. The spectators may provide an indication to a user of a multimedia system hosting the session that they would desire to view the session. Upon commencement of the session, the system may determine whether the interested spectators are online. If they are not online during the session, the system may cause the storage of the multimedia information generated during the session. At a later time, upon receiving a signal that the interested spectators are online, the system may initiate streaming of the stored multimedia information to the interested spectators.

FIG. 5shows an exemplary computing environment in which aspects of the example embodiments may be implemented. Computing system environment500is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the described example embodiments. Neither should computing environment500be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in exemplary computing environment500.

With reference toFIG. 5, an exemplary system for implementing the example embodiments includes a general purpose computing device in the form of a computer510. Components of computer510may include, but are not limited to, a processing unit520, a system memory530, and a system bus521that couples various system components including the system memory to processing unit520. Processing unit520may represent multiple logical processing units such as those supported on a multi-threaded processor. System bus521may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus). System bus521may also be implemented as a point-to-point connection, switching fabric, or the like, among the communicating devices.

System memory530includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)531and random access memory (RAM)532. A basic input/output system533(BIOS), containing the basic routines that help to transfer information between elements within computer510, such as during start-up, is typically stored in ROM531. RAM532typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit520. By way of example, and not limitation,FIG. 5illustrates operating system534, application programs535, other program modules536, and program data537.

Computer510may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 6illustrates a hard disk drive540that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive551that reads from or writes to a removable, nonvolatile magnetic disk552, and an optical disk drive555that reads from or writes to a removable, nonvolatile optical disk556, such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. Hard disk drive541is typically connected to system bus521through a non-removable memory interface such as interface540, and magnetic disk drive551and optical disk drive555are typically connected to system bus521by a removable memory interface, such as interface550.

The drives and their associated computer storage media discussed above and illustrated inFIG. 5, provide storage of computer readable instructions, data structures, program modules and other data for computer510. InFIG. 5, for example, hard disk drive541is illustrated as storing operating system544, application programs545, other program modules546, and program data547. Note that these components can either be the same as or different from operating system534, application programs535, other program modules536, and program data537. Operating system544, application programs545, other program modules546, and program data547are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into computer510through input devices such as a keyboard562and pointing device561, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to processing unit520through a user input interface560that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor591or other type of display device is also connected to system bus521via an interface, such as a video interface590. In addition to the monitor, computers may also include other peripheral output devices such as speakers597and printer596, which may be connected through an output peripheral interface595.

Computer510may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer580. Remote computer580may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer510, although only a memory storage device581has been illustrated inFIG. 5. The logical connections depicted inFIG. 5include a local area network (LAN)571and a wide area network (WAN)573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, computer510is connected to LAN571through a network interface or adapter570. When used in a WAN networking environment, computer510typically includes a modem572or other means for establishing communications over WAN573, such as the Internet. Modem572, which may be internal or external, may be connected to system bus521via user input interface560, or other appropriate mechanism. In a networked environment, program modules depicted relative to computer510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 5illustrates remote application programs585as residing on memory device581. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.

Computing environment500typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by computing environment500. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computing environment500. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.