US20210220746A1 - Delegating Video Game Tasks Via a Sharing Service - Google Patents
Delegating Video Game Tasks Via a Sharing Service Download PDFInfo
- Publication number
- US20210220746A1 US20210220746A1 US15/675,281 US201715675281A US2021220746A1 US 20210220746 A1 US20210220746 A1 US 20210220746A1 US 201715675281 A US201715675281 A US 201715675281A US 2021220746 A1 US2021220746 A1 US 2021220746A1
- Authority
- US
- United States
- Prior art keywords
- computing device
- game
- game application
- application
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/847—Cooperative playing, e.g. requiring coordinated actions from several players to achieve a common goal
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/795—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for finding other players; for building a team; for providing a buddy list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/69—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
Definitions
- Video games can be challenging for even the most seasoned of players.
- the World Wide Web provides access to many forums, blogs, and other information sources that players can use to gain an advantage in a video game or learn how to complete certain game tasks, such as completing a level or beating a boss character.
- game tasks such as completing a level or beating a boss character.
- FIG. 1 is a system diagram showing an illustrative operating environment for the various embodiments disclosed herein.
- FIG. 2 is a block diagram showing aspects of a sharing component for sharing screen data and application data associated with one or more applications being executed by a computing device, according to an illustrative embodiment.
- FIG. 3 is a block diagram showing aspects of a sharing service, according to an illustrative embodiment.
- FIG. 4 is a flow diagram showing aspects of a method for delegating a game task, according to an illustrative embodiment.
- FIG. 5 is a flow diagram showing aspects of a method for accepting delegation of a game task, according to another illustrative embodiment.
- FIG. 6 is a flow diagram showing aspects of a method for sharing game control data, according to an illustrative embodiment.
- FIG. 7 a flow diagram showing aspects of a method for interrupting game control delegated by a first user to a second user, according to an illustrative embodiment.
- FIG. 8 a flow diagram showing aspects of a method for sharing screen data, according to an illustrative embodiment.
- FIG. 9 a flow diagram showing aspects of a method for providing game control data without the use of a sharing service, according to an illustrative embodiment.
- FIG. 10 a flow diagram showing aspects of a method for sharing game state data, according to an illustrative embodiment.
- FIG. 11 a flow diagram showing aspects of a method for exposing a sharing service application programming interface (“API”), according to an illustrative embodiment.
- API application programming interface
- FIG. 12 is a computer architecture diagram showing one illustrative computer hardware architecture for use in computing devices configured to implement the concepts and technologies disclosed herein in one embodiment.
- a first computing device is configured to execute a game application.
- the first computing device can receive a request from a first user to delegate play of the game application to a second user so that the second user can attempt to complete a game task on behalf of the first user by controlling the game application from a second computing device that is associated with the second user.
- Control of the game application can be made available from the second computing device to the first computing device via a sharing session that is created and managed by a sharing service to which the first computing device and the second computing device are connected.
- program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
- the operating environment 100 shown in FIG. 1 includes a computing device A 102 A and a computing device B 102 B, each operating as a part of and/or in communication with a communications network (“network”) 104 .
- the computing device A 102 A and the computing device B 102 B can each include a user computing device, such as a tablet computing device, a personal computer (“PC”), a desktop computer, a laptop computer, a notebook computer, a cellular phone or smartphone, other mobile computing devices, a personal digital assistant (“PDA”), video game system, set-top box, smart television, or the like.
- a user computing device such as a tablet computing device, a personal computer (“PC”), a desktop computer, a laptop computer, a notebook computer, a cellular phone or smartphone, other mobile computing devices, a personal digital assistant (“PDA”), video game system, set-top box, smart television, or the like.
- PDA personal digital assistant
- the functionality of the computing device A 102 A and/or the computing device B 102 B can be provided by a cloud-based computing platform that can be provided by one or more application servers, Web servers, data storage systems, network appliances, dedicated hardware devices, and/or other server computers or computing devices.
- the computing device A 102 A and/or the computing device B 102 B can include minimal hardware for connection to the cloud-based computing platform via the network 104 .
- the functionality of the computing device A 102 A and the computing device B 102 B is described herein as being provided by a user computing device. In light of the alternative embodiments of the computing device A 102 A and the computing device B 102 B described above, it should be understood that this example is illustrative, and should not be construed as being limiting in any way.
- the computing device A 102 A and the computing device B 102 B can communicate via the network 104 to access various services described herein.
- the computing device A 102 A and the computing device B 102 B can access a sharing service 106 and/or a gaming service 108 .
- the functionality of the sharing service 106 and the gaming service 108 can be provided by one or more application servers, Web servers, data storage systems, network appliances, dedicated hardware devices, and/or other server computers or computing devices.
- the sharing service 106 can be configured to execute one or more sharing applications 110 to create and manage one or more sharing sessions 112 during which the computing device A 102 A can share the entirety or specific portions of a screen A 114 A that is being locally presented by the computing device A 102 A via one or more displays, such as a display A 116 A, with the computing device B 102 B over the network 104 .
- the computing device B 102 B can share the entirety or specific portions of a screen B 114 B that is being locally presented by the computing device B 102 B via one or more displays, such as a display 116 B, with the computing device A 102 A over the network 104 .
- the sharing session 112 created by the sharing service 106 may support connections to any number of computing devices so that one or more users utilizing the various computing devices can share data with one another.
- the illustrated example is merely illustrative, and should not be construed as being limiting in any way.
- the sharing session 112 can be configured to support one-way communication whereby a designated source device is able to send data to one or more designated destination devices, but the one or more designated destination devices are unable to send data to the designated source device.
- the sharing session 112 can be configured to support two-way communication whereby two or more computing devices are able send data to and receive data from one another. As such, the sharing session 112 can be used for collaborative or sharing-only purposes.
- a user can provision another user with his or her security credentials, such as, but not limited to, username and password.
- a first user can provide his or her security credentials so that the second user can control one or more applications executing on a device associated with the first user via the sharing service 106 and/or gain access to other services such as the gaming service 108 on behalf of the first user.
- the security credentials may utilize any single-factor or multi-factor authentication scheme.
- a “screen” refers to the visual content and the arrangement of that content being output by a computing device for display on one or more displays.
- a “screen” is what is being displayed on one or more displays that are connected to or otherwise in communication with a computing device.
- a screen can include a snapshot of what is being displayed on one or more displays at a particular instance of time.
- a screen can additionally or alternatively include a data stream of what is being displayed on one or more displays over time. The latter case of a screen is sometimes referred to herein as a “screen stream.”
- the sharing service 106 can provide application data sharing, whereby data associated with one or more applications that are being executed by a computing device can be shared with one or more other computing devices that are connected to the sharing session 112 .
- Application data can include, but is not limited to, data derived from user input to an application being executed by a computing device and other data output by the application in response to the input.
- Application data can be shared discretely or as a stream of application data.
- application data includes game control data associated with input received to control a game application, as will be described in greater detail below.
- the sharing service 106 can create the sharing session 112 so that the computing device A 102 A can share data (shown as shared data A 118 A) with the computing device B 102 B. Likewise, the sharing service 106 can create the sharing session 112 so that the computing device B 102 B can share data (shown as shared data B 118 B) with the computing device B 102 B. As explained above, however, the illustrated example is merely illustrative, and should not be construed as being limiting in any way.
- the gaming service 108 can be configured to facilitate user interaction with one or more gaming service applications 120 that are executed by the gaming service 108 .
- the gaming service application(s) 120 can provide features such as, but not limited to, online cooperative multiplayer gaming, online competitive multiplayer gaming, chat features, messaging features, online leaderboards, achievement tracking features, advertising features, marketplace features, and friends list features.
- the gaming service application(s) 120 can additionally or alternatively provide or assist in providing a game task delegation feature, as will be described in greater detail below.
- the computing device 102 A can be configured to execute an operating system 122 and one or more application programs such as, for example, a game application 124 , a gaming service application programming interface (“API”) 126 , a sharing service API 128 , a sharing component 130 , other application 131 , and/or other application programs or components.
- the operating system 122 is a computer program for controlling the operation of the computing device A 102 A.
- the application programs are executable programs configured to execute on top of the operating system 122 to provide various functionality described herein.
- computing device B 102 B is not shown in the same configuration as the computing device A 102 A, it should be understood that the computing device B 102 B may be identically configured or may have more or less application programs and/or components than are illustrated for the computing device A 102 A.
- the game application 124 can be configured to provide an interactive video gaming experience whereby one or more players can control or otherwise interact with visual content that is presented on a display.
- the visual content can include, but is not limited to, characters, levels, maps, areas, stages, worlds, spaces, shapes, and objects.
- the visual content can be two-dimensional, three-dimensional, or a combination thereof.
- the game application 124 can also provide audial content such as, but not limited to, music, speech, and sound effects.
- the game application 124 can also provide haptic feedback, such as vibration feedback.
- the game application 124 can be designed to have one or more game tasks that the player(s) can complete.
- a game task can generally include anything one or more players can do by interacting with the visual content provided by the game application 124 .
- a game task might be for a player to control a virtual character to traverse a level from a pre-defined starting point to a pre-defined end point so as to complete or “beat” the level.
- a further game task using this example might be to control the virtual character to traverse a level while avoiding contact with certain objects or characters (e.g., enemies). It should be understood that these examples are illustrative, and should not be construed as being limiting in any way.
- the game application 124 can also be designed to have one or more objectives that can be completed by the player(s).
- An objective is a game task that is defined by a developer of the game application 124 .
- an objective is a goal or purpose of the game application 124 .
- the game application 124 may have multiple objectives.
- An objective can be discrete in that it is not linked in any way to another objective.
- an objective can be linked or otherwise combined with one or more other objectives.
- the game application 124 provides a sandbox in which the player(s) can create their own game tasks, which may be ongoing or fleeting for the player(s).
- the sandbox may be provided in addition to established objectives or in lieu thereof.
- the game application 124 can be designed to have one or more achievements.
- An achievement is an accolade provided to a player or group of players in recognition of a particular interaction with the game application 124 .
- An achievement can be as simple as starting the game application 124 for the first time (or some other number of times), interacting with certain features provided by the game application 124 (e.g., entering a certain menu or selecting a certain menu option such as a “hard” difficulty level), or completing one or more objectives.
- the game application 124 may notify the player(s) of the “unlocked” achievement by presenting an achievement alert.
- An achievement alert can be presented in a visual, audial, and/or haptic manner.
- the act of unlocking an achievement may be a game task. Unlocking an achievement may enable the ability to unlock additional achievements.
- Achievements can be defined by the developers(s) of the game application 124 , by the gaming service 108 , or by some other entity, including, for example, a player.
- achievements are managed locally by the computing device A 102 A, for example, by the game application 124 , by the operating system 122 , or by some other application program being executed by the computing device A 102 A.
- achievements are managed remotely in a cloud-based configuration by the gaming service 108 .
- a player can set up an account with the gaming service 108 .
- the account can include user identification and one or more security credentials to maintain security of the account.
- the achievements earned by a player can be associated with his or her account with the gaming service 108 so that, for example, if the player changes to a different computing device, the player can still access his or her achievements and be able to earn new achievements on the different computing device.
- the game application 124 can be designed to have one or more leaderboards.
- a leaderboard can track the completion of an objective in a manner so as to rank the completion of an objective among players. For example, an objective may be to obtain the highest score in a finite amount of time or using a finite number of lives, and a leaderboard associated with this objective can include a ranking of scores in a particular order, such as a list of scores ranked in descending order.
- leaderboards are managed locally by the computing device A 102 A, for example, by the game application 124 , by the operating system 122 , or by some other application program being executed by the computing device A 102 A.
- leaderboards are managed remotely in a cloud-based configuration by the gaming service 108 .
- a player can elect to upload or the game application 124 can automatically upload scores achieved by the player to the gaming service 108 .
- the gaming service 108 may present leaderboards for public viewing and/or private viewing, such as by a group of players selected by the player that elected to upload the score.
- the scores earned by a player can be associated with his or her account with the gaming service 108 so that if the player changes to a different computing device, the player can still try to beat his or her high score on the leaderboard using the same user identification.
- Input to the game application 124 can be provided via one or more input devices that are connected to or otherwise in communication with the computing device A 102 A. Input to the game application 124 can be used to control aspects of the game application 124 , such as, for example, controlling characters, navigating menus, and control towards completion of one or more game tasks.
- An input device can include, but is not limited to, a keyboard, mouse, joystick, game pad, touchpad, resistive touchscreen, capacitive touchscreen, multi-touch enabled touchscreen, still camera, video camera, microphone, infrared camera, motion control device, global positioning system (“GPS”) sensor, proximity sensor, motion sensor (e.g., accelerometer), ambient light sensor, moisture sensor, gyroscope, dance pad, steering wheel, flight yoke, pedal, musical instrument, toy musical instrument, and sports equipment.
- one or more input devices are built-in to the computing device A 102 A, such as a tablet computing device with a multi-touch enabled touchscreen.
- one or more input devices are connected to the computing device A 102 A using hardwire and/or wireless connection.
- the physical components and/or protocols utilized to establish and maintain one or more connections between an input device and the computing device A 102 A can be standards-based, non-standards-based, or proprietary.
- the computing device A 102 A can be configured to present the visual content provided by the game application 124 on one or more display devices that are built-in to or external to and in communication with the computing device A 102 A, such as the display A 116 A.
- the display A 116 A is an output device configured to present information in a visual form.
- the display A 116 A may present visual content provided by the game application 124 , graphical user interface (“GUI”) elements, text, images, video, notifications, virtual buttons, virtual keyboards, messaging data, Internet content, device status, time, date, calendar data, preferences, map information, location information, and any other information that is capable of being presented in a visual form.
- GUI graphical user interface
- the display A 116 A is a liquid crystal display (“LCD”) utilizing any active or passive matrix technology and any backlighting technology (if used).
- the display A 116 A is an organic light emitting diode (“OLED”) display.
- OLED organic light emitting diode
- Other display types are contemplated.
- the display A 116 A can include an input device such as a touchscreen or multi-touch enabled touchscreen.
- the display B 116 B can be likewise configured.
- the game application 124 can be configured to call one more methods exposed by the gaming service API 126 to access the gaming service 108 via the network 104 to take advantage of one or more of the features provided by the gaming service 108 .
- the game application 124 can also be configured to call one or more methods exposed by the sharing service API 128 to access the sharing service 106 via the network 104 .
- the sharing service API 128 can access the sharing component 130 to provide data to the sharing service 106 and receive data from the sharing service 106 during a sharing session.
- the sharing component 130 is illustrated and described in greater detail with reference to FIG. 2 .
- the game application 124 can provide one or more game tasks that can be completed by one or more players. For one reason or another, a player may be unable to complete a game task. For example, the game task may be too difficult for the player to complete, the player may be disinterested in the game task but is interested in a subsequent game task, the player lacks the time required to complete the game task, or for any number of other reasons. As a solution, the player can elect to delegate the game task to another player so that the other player can complete the task on behalf of the player that delegated the game task.
- a player A 132 A that is playing the game application 124 on the computing device A 102 A can elect to delegate the game task to a player B 132 B that is associated with the computing device B 102 B.
- the player B 132 B can accept or deny the game task. If the player B 132 B accepts the game task, the player B 132 B can attempt to complete the game task on behalf of the player A 132 A utilizing the computing device B 102 B.
- the computing device A 102 A communicates with the sharing service 106 to create the sharing session 112 to share the shared data A 118 A, wherein the shared data A 118 A includes a screen stream of the game application 124 being executed by the computing device A 102 A.
- the player B 132 B can provide input to the computing device B 102 B via one or more input devices that are connected to or otherwise in communication with the computing device B 102 B to play the game application 124 in an effort to complete the game task delegated by the player A 132 A to the player B 132 B.
- the player B 132 B can assist the player A 132 A to complete the game task, after which the sharing session 112 can be torn down and the player A 132 A can resume playing the game application 124 after the game task has been completed for him or her by the player B 132 B.
- the computing device A 102 A communicates with the sharing service 106 to create the sharing session 112 to share the shared data A 118 A, wherein the shared data A 118 A includes a game state of the game application 124 before a delegated game task has been completed.
- the computing device B 102 B receives the game state via the sharing session 112 and launches the same game application on the computing device B 102 B to load the game state.
- the game state is loaded and the player B 132 B can provide input to the computing device B 102 B via one or more input devices that are connected to or otherwise in communication with the computing device B 102 B to play the game application in an effort to complete the game task delegated by the player A 132 A.
- the computing device B 102 B can save a new game state of the game application 124 and can send the new game state as part of the shared data B 118 B over the shared session 112 to the computing device A 102 A.
- the player B 132 B can assist the player A 132 A to complete the game task, after which the computing device A 102 A can load the new game state and the player A 132 A can resume playing the game application 124 from a state that includes the completed game task.
- the player B 132 B is provisioned to play the game application 124 on behalf of the player A 132 A using the user identification of the player A 132 A.
- achievements, leaderboards, and other credits associated with the completion of a game task can be credited to the player A 132 A instead of the player B 132 B, although it is contemplated that both the player A 132 A and the player B 132 B may be acknowledged for completion of the game task.
- the player B 132 B may additionally or alternatively earn achievements, leaderboard position, and/or other credits that are not available to the player A 132 A for assisting the player A 132 A in completing the game task.
- the player B 132 B is given a finite amount of time to complete the game task. In some other embodiments, the player B 132 B is given an infinite amount of time to complete the game task.
- the player B 132 B is compensated for completing the game task.
- Compensation for completing the game task can include, but is not limited to, real currency, virtual currency, one or more in-game items for the game application 124 , one or more in-game items for another game application, and credit for the purchase of real or virtual products from an online merchant.
- a virtual currency may be represented by units, such as, but not limited to, “coins,” “points,” “virtual dollars,” and the like.
- a “unit” of virtual currency whether a coin, a point, a virtual dollar, or other unit, may have a value that is tied to a real currency, such as the U.S. dollar.
- a “coin” may represent, for example, 1/100 of a U.S. dollar or 1 U.S. cent within the gaming service 108 so that an item that costs $2.99 in U.S. dollars and cents would alternatively cost 299 coins.
- a virtual currency unit may be changed from time to time to accommodate changes in the value of the real currency to which it is tied or for any number of other reasons, such as those particular to the entity that provides the gaming service 108 . It should also be understood that items may be made available for purchase via the gaming service 108 using virtual currency, real currency, or a combination thereof as the method for payment.
- the gaming service 108 provides a marketplace through which players can purchase content, such as, for example, applications, game applications, game add-ons, in-game items, music, e-books, movies, and the like. Virtual currency exchanged as compensation for completing a game task may be used to purchase such content from the marketplace.
- the player A 132 A can set up an auction to solicit the help of another player to assist the player A 132 A in completing a game task identified in the auction.
- the auction feature can be hosted by the gaming service 108 . Users of the gaming service 108 can bid on the auction and the player A 132 A can select a bid as the winning bid.
- a bid can include an amount of compensation for completing the game task.
- a bid can also include a deadline by which the game task will be completed. In this manner, the player A 132 A can choose a winning bid based upon his or her needs with regard to completing the game task.
- the player A 132 A can delegate a game task to two or more players.
- the first of the two or more players to complete the game task can be compensated.
- all players are compensated, but the first player to complete the game task in compensated the highest amount, the second player is compensated a lower amount, and so on.
- the computing device A 102 A generates an invitation (“invite 134 ”) and sends the invite 134 to the gaming service 108 .
- the invite 134 can be addressed to the player 132 B.
- the player A 132 A and the player B 132 B may be in a friendship within the gaming service 108 , and the friendship allows the player A 132 A to send the invite 134 directly to the player B 132 B via a messaging feature provided by the gaming service 108 .
- a friendship in context of the gaming service 108 is a relationship between two users facilitated by the gaming service 108 that allows the users to connect to play multiplayer games, chat, and send messages to each other, including, for example, invites such as the invite 134 .
- the player B 132 B can then choose to accept or deny the invite 134 .
- the player B 132 B has accepted the invite 134 , and in response, the computing device B 102 B generates an invitation acceptance notification (“accept invite 136 ”) and sends the accept invite 136 to the gaming service 108 .
- the game application 124 can call the sharing service API 128 to establish the sharing session 112 to enable the player B 132 B to attempt to complete the game task utilizing one of the methodologies described above.
- the other application 131 can include one or more Web browser applications, one or more productivity applications (e.g., word processing, spreadsheet, and/or presentation applications), one or more design applications, or any other applications.
- the other application(s) 131 can be configured to call the sharing service API 128 to provide sharing features to users.
- the shared data A 118 A can be data shared by the other application 131 and the shared data B 118 B can be data shared by the computing device B 102 B that is useable by the other application 131 .
- FIG. 1 illustrates one network 104 , one sharing service 106 , one gaming service 108 , one game application 124 , one gaming service API 126 , one sharing service API 128 , one sharing component 130 , one other application 131 , and one operating system 122 .
- various implementations of the operating environment 100 include multiple networks 104 , sharing services 106 , gaming services 108 , game applications 124 , gaming service APIs 126 , sharing service APIs 128 , sharing components 130 , other applications 131 , and/or operating systems 122 .
- the illustrated embodiment should be understood as being illustrative, and should not be construed as being limiting in any way.
- the sharing component 130 is provided as part as client-side functionality for accessing the sharing service 106 .
- the sharing component 130 is provided as part of the operating system 122 (shown in FIG. 1 ).
- the sharing component 130 is given permissions to access features of the operating system 122 such as a rendering pipeline to effectively detect and compress a buffer of screen and/or application data that is to be streamed to the sharing service 106 as part of the shared data A 118 A (shown in FIG. 1 ).
- the illustrated sharing component 130 includes a screen sharing module 202 and an application data sharing module 204 .
- the screen sharing module 202 includes a screen data differential engine 206 , a screen data sender 208 , and a screen data receiver 210 .
- the screen data differential engine 206 is configured to calculate a difference between what screen data is currently being displayed and what screen data has already been sent to the sharing service 106 .
- the screen data differential engine 206 is also configured to send the difference to the sharing service 106 , thereby saving network and other resources. It is contemplated, however, that the sharing component 130 may share all screen data output by a computing device.
- the screen data sender 208 is configured to communicate with the sharing service 106 to send screen data to the sharing session 112 .
- the screen data receiver 210 is configured to communicate with the sharing service 106 to receive screen data from the sharing session 112 .
- the application data sharing module 204 includes a data compression engine 212 , an application data sender 214 , and an application data receiver 216 .
- the data compression engine 212 is configured to compress application data for sending to the sharing service 106 .
- the application data sender 214 is configured to communicate with the sharing service 106 to send application data to the sharing session 112 .
- the application data receiver 214 is configured to communicate with the sharing service 106 to receive application data from the sharing session 112 .
- the sharing service 106 receives screen data 302 A- 302 N and application data 304 A- 304 N from a plurality of computing devices (not shown).
- the sharing service 106 provides the screen data 302 A- 302 N to a screen stream multiplexer 306 .
- the screen stream multiplexer 306 is configured to receive the screen data 302 A- 302 N and multiplex the screen data 302 A- 302 N to generate multiplexed screen data 308 , which is then provided to a stream compressor 310 .
- the stream compressor 310 is configured to compress the multiplexed screen data 308 for delivery to one or more computing devices during a sharing session.
- the compression technology utilized by the stream compressor 310 can be selected based upon the needs of the sharing service 106 in providing a particular quality of service via a sharing session. As such, the compression level may be increased to conserve network resources or decreased to consume network resources based upon the availability of network resources to support the sharing session.
- the sharing service 106 provides the application data 304 A- 304 N to an application data stream multiplexer 312 .
- the application data multiplexer 312 is configured to receive the application data 304 A- 304 N and multiplex the application data 304 A- 304 N to generate multiplexed application data 314 , which is then provided to the stream compressor 310 for compression.
- FIG. 4 aspects of a method 400 for delegating a game task will be described in detail, according to an illustrative embodiment. It should be understood that the operations of the methods disclosed herein are not necessarily presented in any particular order and that performance of some or all of the operations in an alternative order(s) is possible and is contemplated. The operations have been presented in the demonstrated order for ease of description and illustration. Operations may be added, omitted, and/or performed simultaneously, without departing from the scope of the concepts and technologies disclosed herein.
- the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system.
- the implementation is a matter of choice dependent on the performance and other requirements of the computing system.
- the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These states, operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.
- the method 400 is described as being performed by a first computing device, such as the computing device A 102 A, via execution of one or more software modules such as, for example, the game application 124 , the gaming service API 126 , the sharing service API 128 , and/or the sharing component 130 .
- a first computing device such as the computing device A 102 A
- software modules such as, for example, the game application 124 , the gaming service API 126 , the sharing service API 128 , and/or the sharing component 130 .
- additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software including, but not limited to, the game application 124 , the gaming service API 126 , the sharing service API 128 , and/or the sharing component 130 .
- the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way.
- the method 400 begins at operation 402 , where the computing device A 102 A executes the game application 124 . From operation 402 , the method 400 proceeds to operation 404 , where the computing device A 102 A receives input from a first user, such as the player A 132 A. The input can be received via one or more input devices that are connected to or otherwise in communication with the computing device A 102 A. The input is provided by the first user towards the completion of a game task.
- a delegation request option is provided as part of the game application 124 and can be selected by the first user if the first user needs assistance in completing a game task.
- the delegation request option “pops up” after a pre-defined number of failed attempts by the first user in completing the game task. The pre-defined number may be set by a developer of the game application 124 .
- a delegation request option is made accessible to the game application 124 by one or more methods exposed by the gaming service API 126 or the sharing service API 128 .
- the method 400 proceeds to operation 408 , where the computing device A 102 A generates an invitation for the second user to attempt to complete the game task in response to the delegation request.
- invitation is generated by the game application 124 .
- the invitation is made accessible to the game application 124 by one or more methods exposed by the gaming service API 126 or the sharing service API 128 .
- the method 400 proceeds to operation 410 , where computing device A 102 A causes the invitation to be made available to the second user. From operation 410 , the method 400 proceeds to operation 412 , where the computing device A 102 A receives notification of acceptance of the invitation.
- the method 400 proceeds to operation 414 , where the computing device A 102 A initiates establishment of a sharing session via the sharing service 106 . From operation 414 , the method 400 proceeds to operation 416 , where the computing device A 102 A transfers control of the game application 124 to a second computing device, such as the computing device B 102 B, that is associated with the second user, such as the player B 132 B, via the sharing session. In this manner, the player B 132 B can assist the player A 132 A to complete the game task, after which the sharing session can be torn down and the player A 132 A can resume playing the game application 124 .
- a second computing device such as the computing device B 102 B
- the player B 132 B can assist the player A 132 A to complete the game task, after which the sharing session can be torn down and the player A 132 A can resume playing the game application 124 .
- the method 400 proceeds to operation 418 .
- the method 400 ends at operation 418 .
- the method 500 is described as being performed by a second computing device, such as the computing device B 102 B, via execution of one or more software modules such as, for example, the game application 124 , the gaming service API 126 , the sharing service API 128 , and/or the sharing component 130 .
- a second computing device such as the computing device B 102 B
- additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software including, but not limited to, the game application 124 , the gaming service API 126 , the sharing service API 128 , and/or the sharing component 130 .
- the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way.
- the method 500 begins at operation 502 , where the computing device B 102 B receives input to accept an invitation to attempt to complete a game task. From operation 502 , the method 500 proceeds to operation 504 , where the computing device B 102 B generates a notification of acceptance of the invitation to complete the game task. From operation 504 , the method 500 proceeds to operation 506 , where the computing device B 102 B sends the notification to the first computing device, such as the computing device A 102 A.
- the method 500 proceeds to operation 508 , where the computing device B 102 B connects to a sharing session provided by the sharing service 106 .
- the sharing session can be initiated by the first computing device in response to the notification of acceptance of the invitation.
- the method 500 proceeds to operation 510 , where the computing device B 102 B receives control of the game application 124 via the sharing session. From operation 510 , the method 500 proceeds to operation 512 , where the computing device B 102 B receives input to control the game application to complete the game task. From operation 512 , the method 500 proceeds to operation 514 , wherein the computing device B 102 B sends the input to control the game application 124 to the first computing device 102 via the sharing session.
- the method 500 proceeds to operation 516 .
- the method 500 ends at operation 516 .
- the method 600 begins at operation 602 , where a first computing device, such as the computing device A 102 A, and a second computing device, such as the computing device B 102 B both connect to a sharing session 112 provided by the sharing service 106 .
- the method 600 proceeds to operation 604 , where the computing device B 102 B receives game control input.
- the player B 132 B may provide game control input to the computing device B 102 B using one or more input devices in an attempt to complete one or more game tasks delegated to the player B 132 B by the player A 132 A.
- the method proceeds to operation 606 , where the computing device B 102 B sends game control data that is associated with the game control input to the sharing service 106 via the sharing session 112 for delivery to the computing device A 102 A.
- the game control data can include, but is not limited to, instructions that are useable by a game application, such as the game application 124 , to perform one or more actions.
- the method 600 proceeds to operation 608 , where the computing device A 102 A receives the game control data from the sharing service 106 and provides the game control data to the game application 124 that is executing on the computing device A 102 A. From operation 608 , the method 600 proceeds to operation 610 , where the game application 124 utilizes the game control data to perform one or more actions. From operation 610 , the method 600 proceeds to operation 612 , where the game application 124 presents the one or more actions via the display A 116 A.
- the game application 124 replays the one or more actions defined by instructions included in the game control data so that the player A 132 A can watch how the player B 132 B is attempting to complete one or more game tasks delegated to the player B 132 B by the player A 132 A. In this manner, the player A 132 A can decide whether or not the player B 132 B is performing in such a way that is acceptable to the player A 132 A, and if not, the player A 132 A can interrupt the replay, as will be described below in greater detail with reference to FIG. 7 .
- the method 600 proceeds to operation 614 .
- the method 600 ends at operation 614 .
- the method 700 begins at operation 702 , where the game application 124 utilizes game control data received from the computing device B 102 B via the sharing session 112 to perform one or more actions. From operation 702 , the method 700 proceeds to operation 704 , where the game application 124 determines if an interruption is received. In utilizing the game control data, the game application 124 can replay the game control input provided by the player B 132 B on the computing device A 102 A so that the player A 132 A can watch how the player B 132 B is performing.
- the player A 132 A can decide to interrupt the replay.
- the replay can be interrupted by the player A 132 A by providing some input to the game application 124 .
- the game application 124 can provide an icon can be selected by the player A 132 A or designate some other input to be used if the player A 132 A desires to stop the action perform in response to the game control data.
- the method 700 proceeds to operation 706 .
- the game application 124 generates an abort request and sends the abort request to the sharing service 106 .
- the method 700 proceeds to operation 708 , wherein the sharing service 106 receives the abort request and ends the sharing session 112 so that the computing device B 102 B can no longer provide the game control data to the computing device A 102 A.
- the player A 132 A can monitor how one or more game tasks are being handled and disconnect from a player to which he or she has designated one or more game tasks if the player is misbehaving or otherwise not performing up to his or her expectations.
- the method 700 proceeds to operation 710 , where the game application 124 returns control to the player A 132 A.
- the method 700 proceeds to operation 712 .
- the method 700 ends at operation 712 .
- the method 700 proceeds to operation 714 .
- the game application 124 determines if the one or more actions have been completed. For example, the game application 124 is no longer receiving the game control data via the sharing session 112 . If not, the method 700 proceeds from operation 714 to operation 702 . If so, the method 700 proceeds to operation 710 , where the game application 124 returns control to the player A 132 A. From operation 710 , the method 700 proceeds to operation 712 . The method 700 ends at operation 712 .
- the method 800 begins and proceeds to operation 802 , where a first computing device, such as the computing device A 102 A, and a second computing device, such as the computing device B 102 B, both connect to a sharing session 112 provided by the sharing service 108 .
- a first computing device such as the computing device A 102 A
- a second computing device such as the computing device B 102 B
- the method 800 proceeds to operation 804 , where the computing device B 102 B receives game control input.
- the player B 132 B may provide game control input to the computing device B 102 B using one or more input devices in an attempt to complete one or more game tasks delegated to the player B 132 B by the player A 132 A.
- the method 800 proceeds to operation 806 , where the computing device B 102 B generates screen data based at least in part upon the game control input received at operation 804 .
- the screen data includes a screen stream of visual output provided by a game application executed by the computing device B 102 B in response to the game control input.
- the game application may output data to a display that shows a character responding to the game control input, such as traversing a level, fighting an enemy, or performing some other action.
- the method proceeds to operation 808 , where the computing device B 102 B sends the screen data to the sharing service 106 via the sharing session 112 for delivery to the computing device A 102 A.
- the computing device B 102 B can provide the screen data to the sharing service 106 so that the computing device A 102 A can access the screen data via the sharing session 112 .
- the player A 132 A can watch what the player B 132 B is doing towards completing one or more game tasks delegated by the player A 132 A to the player B 132 B.
- the method 800 proceeds to operation 810 , where the computing device A 102 A receives the screen data from the sharing service 108 . From operation 810 , the method 800 proceeds to operation 812 , where the computing device A 102 A presents the screen data on a display, such as the display A 116 A.
- the method 800 proceeds to operation 814 .
- the method 800 ends at operation 814 .
- the player A 132 A may be able to interrupt the screen session 112 to terminate the screen sharing session if for some reason he or she determines the player B 132 B is misbehaving or otherwise not performing up to his or her expectations.
- the method 600 and the method 800 may be combined so as to share both game control data and screen data.
- FIG. 9 aspects of a method 900 for sharing game control data without the use of a sharing service will be described in detail, according to an illustrative embodiment.
- the methods described above with reference to FIGS. 4-8 utilize a sharing service, such as the sharing service 106 , to share screen data and/or application data such as game control data.
- the method 900 allows players to share game control data without the use of a sharing service.
- the method 900 may be useful for situations in which network connectivity cannot support a sharing service due to latency issues, bandwidth issues, reliability issues, or other issues.
- the method 900 begins at operation 902 , where a second computing device, such as the computing device B 102 B receives game control input.
- the game control input is received in response to a player associated with the second computing device, such as the player B 132 B who is associated with the computing device B 102 B, accepting an invite to complete one or more game tasks on behalf of another player, such as the player A 102 A.
- the game task is delegated directly to the player B 132 B, such as via the gaming service 108 .
- the game task is made available to a plurality of players via the gaming service 108 , and the player B 132 B selects the game task.
- the method 900 proceeds to operation 904 , where the computing device B 102 B sends game control data associated with the game control input to the computing device A 102 A via the network 104 .
- the game control data may be sent via a peer-to-peer connection established between the computing device A 102 A and the computing device B 102 B over the network 104 .
- the game control data may be sent to one or more servers configured to support delivery of the game control data.
- the one or more servers may or may not operate in at least partial support of the gaming service 108 .
- the method 900 proceeds to operation 906 , where the computing device A 102 A receives the game control data and provides the game control data to the game application 124 . From operation 906 , the method 900 proceeds to operation 908 , wherein the game application 124 utilizes the game control data to perform one or more actions.
- the method 900 proceeds to operation 910 , where the game application 124 determines if an interruption is received.
- the game application 124 can replay the game control input provided by the player B 132 B on the computing device A 102 A so that the player A 132 A can watch how the player B 132 B is performing. If the player A 132 A is not satisfied, he or she can decide to interrupt the replay.
- the replay can be interrupted by the player A 132 A by providing some input to the game application 124 .
- the game application 124 can provide an icon that can be selected by the player A 132 A or other input than can be used if the player A 132 A desires to stop the action performed in response to the game control data.
- the method 900 proceeds to operation 912 .
- the game application 124 returns control to the player A 132 A.
- the method 900 proceeds to operation 914 .
- the method 900 ends at operation 914 .
- the method 900 proceeds to operation 916 .
- the game application 124 determines if the one or more actions have been completed. For example, the game application 124 is no longer receiving the game control data via the network 104 . If not, the method 900 proceeds from operation 916 to operation 908 . If so, the method 900 proceeds to operation 912 , where the game application 124 returns control to the player A 132 A. From operation 912 , the method 900 proceeds to operation 914 . The method 900 ends at operation 914 .
- the method 1000 begins and proceeds to operation 1002 , where a second computing device, such as the computing device B 102 B, receives an invite to complete a game task.
- the game task is delegated directly to the player B 132 B, such as via the gaming service 108 .
- the game task is made available to a plurality of players via the gaming service 108 , and the player B 132 B selects the game task via the gaming service 108 , effectively accepting an invite.
- a game state can include a state of a game application before the delegated game task has been completed.
- a player delegating a game task may elect to provide a game state so that the player to whom the game task is delegated can begin his or her attempt to complete the game task in particular state of the game that has been achieved by the player delegating the game task.
- the player to whom the game task is delegated can begin his or her attempt to complete the delegated game task from a state other than a beginning state of a game application or other state that may not be conducive to being able to complete the delegated game task within a specific amount of time or under some other constraint.
- the game application is a role-playing game
- the player delegating the game task might have spent tens or even hundreds of hours developing his or her character and progressing through a storyline provided by the role-playing game.
- the player delegating the game task can provide a game state that captures the character's progression and place within the storyline so that the player to whom the game task is delegated can assume control of the character in an attempt to complete the game task with a character progressed in a certain manner and at a particular point in the storyline.
- game state is not referenced in the description of the methods illustrated in FIGS. 4-9 , the concept of game state can be utilized in those methods to provide a game state from which to start the player to whom a game task has been delegated, for example.
- the method 1000 proceeds to operation 1006 , where the computing device B 102 B loads the game state into a game application, such as copy of the game application 124 , thereby allowing the player B 132 B to start his or her attempt to complete the delegated game task from a state other than a beginning state (e.g., new game start) or a game state saved in association with previous play by the player B 132 B.
- a game application such as copy of the game application 124
- the method 1000 proceeds to operation 1008 . Also, if, at operation 1004 , the computing device 102 B determines that a game state has not been received, the method 1000 proceeds to operation 1008 .
- the computing device B 102 B receives game control input provided by the player B 102 B to complete the game task. From operation 1008 , the method 1000 proceeds to operation 1010 , where the computing device B 102 B generates a new game state that includes the completed game task. From operation 1010 , the method 1000 proceeds to operation 1012 , where the computing device B 102 B then sends the new game state to the computing device A 102 A.
- the computing device A 102 A can load the new game state into the game application 124 and resume play of the game application 124 at a state after the game task has been completed on his or her behalf.
- the method 1000 proceeds to operation 1014 .
- the method 1000 ends at operation 1014 .
- game states that include one or molre completed game tasks can be provided to the gaming service 108 .
- the gaming service 108 can offer a game state on behalf of the user or users that created the game state. In this manner, a particularly skilled player or groups of players can create game states that complete one or more game tasks which might be commonly difficult and therefore attractive to other players.
- a game state may be offered for free or for some compensation, such as one or more of the various compensations described herein above.
- the method 1100 begins at operation 1102 , where a computing device, such as the computing device A 102 A exposes the sharing service API 128 so that one or more applications, such as the game application 124 and/or the other application 131 , can call the sharing service API 128 to access the sharing service 106 .
- a computing device such as the computing device A 102 A exposes the sharing service API 128 so that one or more applications, such as the game application 124 and/or the other application 131 , can call the sharing service API 128 to access the sharing service 106 .
- the method 1100 proceeds to operation 1104 , where the computing device A 102 A receives a call to a method exposed by the sharing service API 128 to request creation of a sharing session, such as the sharing session 112 . From operation 1104 , the method 1100 proceeds to operation 1106 , where, in response to the call, the computing device A 102 A initiates creation of the sharing session 112 by connecting to the sharing service 106 . From operation 1106 , the method 1100 proceeds to operation 1108 , where the computing device A 102 A joins the sharing session 112 created by the sharing service 106 . One or more other computing devices, such as the computing device B 102 B, can then connect to the sharing session 112 to share data, such as the shared data B 118 B.
- the method 1100 proceeds to operation 1110 .
- the method 1100 ends at operation 1110 .
- FIG. 12 shows an example computer architecture for a computer 1200 capable of executing the software components described herein for delegating video game tasks via a sharing service in the manner presented above.
- the computer architecture shown in FIG. 12 illustrates a conventional server computer, workstation, desktop computer, laptop, electronic book reader, digital wireless phone, tablet computer, network appliance, set-top box, or other computing device.
- the computer architecture shown in FIG. 12 may be utilized to execute any aspects of the software components presented herein described as executing on the computing device A 102 A, the computing device B 102 B, the sharing service 106 , the gaming service 108 , or any other computing platform.
- the computer 1200 includes a baseboard, or “motherboard,” which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths.
- a baseboard or “motherboard”
- CPUs central processing units
- the CPUs 1202 are standard programmable processors that perform arithmetic and logical operations necessary for the operation of the computer 1200 .
- the CPUs 1202 perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states.
- Switching elements may generally include electronic circuits that maintain one of two binary states, such as flip-flops, and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements may be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units, or the like.
- the chipset 1204 provides an interface between the CPUs 1202 and the remainder of the components and devices on the baseboard.
- the chipset 1204 may provide an interface to a random access memory (“RAM”) 1206 , used as the main memory in the computer 1200 .
- the chipset 1204 may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”) 1208 or non-volatile RAM (“NVRAM”) for storing basic routines that that help to startup the computer 1200 and to transfer information between the various components and devices.
- ROM 1208 or NVRAM may also store other software components necessary for the operation of the computer 1200 in accordance with the embodiments described herein.
- the computer 1200 may operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as a local-area network (“LAN”), a wide-area network (“WAN”), the Internet, the network 104 , or any other networking topology known in the art that connects the computer 1200 to remote computers.
- the chipset 1204 includes functionality for providing network connectivity through a network interface controller (“NIC”) 1212 , such as a gigabit Ethernet adapter.
- NIC network interface controller
- the NIC 1210 may be capable of connecting the computer 1200 to other computing devices, such as the computing device A 102 A, the computing device B 102 B, the sharing service 106 , the gaming service 108 , a data storage system in, and the like, over the network 104 described above in regard to FIG. 1 . It should be appreciated that multiple NICs 1210 may be present in the computer 1200 , connecting the computer to other types of networks and remote computer systems.
- the computer 1200 may be connected to a mass storage device 1212 that provides non-volatile storage for the computer.
- the mass storage device 1212 may store system programs, application programs, other program modules, and data, which have been described in greater detail herein.
- the mass storage device 1212 may be connected to the computer 1200 through a storage controller 1214 connected to the chipset 1204 .
- the mass storage device 1212 may consist of one or more physical storage units.
- the storage controller 1214 may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a FIBRE CHANNEL (“FC”) interface, or other standard interface for physically connecting and transferring data between computers and physical storage devices.
- SAS serial attached SCSI
- SATA serial advanced technology attachment
- FC FIBRE CHANNEL
- the computer 1200 may store data on the mass storage device 1212 by transforming the physical state of the physical storage units to reflect the information being stored.
- the specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether the mass storage device 1212 is characterized as primary or secondary storage, or the like.
- the computer 1200 may store information to the mass storage device 1212 by issuing instructions through the storage controller 1214 to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit.
- Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description.
- the computer 1200 may further read information from the mass storage device 1212 by detecting the physical states or characteristics of one or more particular locations within the physical storage units.
- computer 1200 might have access to other computer-readable media to store and retrieve information, such as program modules, data structures, or other data.
- computer-readable media can be any available media that may be accessed by the computer 1200 , including computer-readable storage media and communications media.
- Communications media includes transitory signals.
- Computer-readable storage media includes volatile and non-volatile, removable and non-removable storage media implemented in any method or technology.
- computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information.
- Computer-readable storage media does not include transitory signals.
- the mass storage device 1212 may store an operating system 1216 , such as the operating system 122 , utilized to control the operation of the computer 1200 .
- the operating system comprises the LINUX operating system.
- the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Wash.
- the operating system may comprise the UNIX or SOLARIS operating systems. It should be appreciated that other operating systems may also be utilized.
- the mass storage device 1212 may store other system or application programs and data utilized by the computer 1200 .
- the mass storage device 1212 may store the gaming service API 126 , the sharing service API 128 , the sharing component 130 , the game application 124 , and/or the other application 131 .
- the mass storage device 1212 may store the sharing service application(s) 110 .
- the mass storage device 1212 may store the gaming service application(s) 120 .
- the mass storage device 1212 or other computer-readable storage media may be encoded with computer-executable instructions that, when loaded into the computer 1200 , transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein.
- These computer-executable instructions transform the computer 1200 by specifying how the CPUs 1202 transition between states, as described above.
- the computer 1200 has access to computer-readable storage media storing computer-executable instructions that, when executed by the computer, perform the various routines and operations described herein.
- the computer 1200 may also include an input/output controller 1218 for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller 1218 may provide output to a display device, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that the computer 1200 may not include all of the components shown in FIG. 12 , may include other components that are not explicitly shown in FIG. 12 , or may utilize an architecture completely different than that shown in FIG. 12 .
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Multimedia (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- General Engineering & Computer Science (AREA)
Abstract
Description
- This application is continuation of and claims the benefit of U.S. patent application Ser. No. 13/770,299, filed on Feb. 19, 2013 which is incorporated by reference herein in its entirety.
- In recent years, the adoption of computing devices such as smartphones, tablets, and electronic book readers (“e-readers”) has exposed many people to video games. This is in part due to the network-connectivity offered by these devices, and the robust application ecosystems that support the download of video games and other applications to these devices. As a result, video games have become a popular past-time for many people.
- Video games can be challenging for even the most seasoned of players. The World Wide Web provides access to many forums, blogs, and other information sources that players can use to gain an advantage in a video game or learn how to complete certain game tasks, such as completing a level or beating a boss character. There are, however, still occasions when a player lacks the skill to complete a game task. This can be disheartening to the player and may result in the player giving up, even if the player genuinely wants to proceed beyond the insurmountable game task.
- It is respect to these and other considerations that the disclosure made herein is presented.
-
FIG. 1 is a system diagram showing an illustrative operating environment for the various embodiments disclosed herein. -
FIG. 2 is a block diagram showing aspects of a sharing component for sharing screen data and application data associated with one or more applications being executed by a computing device, according to an illustrative embodiment. -
FIG. 3 is a block diagram showing aspects of a sharing service, according to an illustrative embodiment. -
FIG. 4 is a flow diagram showing aspects of a method for delegating a game task, according to an illustrative embodiment. -
FIG. 5 is a flow diagram showing aspects of a method for accepting delegation of a game task, according to another illustrative embodiment. -
FIG. 6 is a flow diagram showing aspects of a method for sharing game control data, according to an illustrative embodiment. -
FIG. 7 a flow diagram showing aspects of a method for interrupting game control delegated by a first user to a second user, according to an illustrative embodiment. -
FIG. 8 a flow diagram showing aspects of a method for sharing screen data, according to an illustrative embodiment. -
FIG. 9 a flow diagram showing aspects of a method for providing game control data without the use of a sharing service, according to an illustrative embodiment. -
FIG. 10 a flow diagram showing aspects of a method for sharing game state data, according to an illustrative embodiment. -
FIG. 11 a flow diagram showing aspects of a method for exposing a sharing service application programming interface (“API”), according to an illustrative embodiment. -
FIG. 12 is a computer architecture diagram showing one illustrative computer hardware architecture for use in computing devices configured to implement the concepts and technologies disclosed herein in one embodiment. - The following detailed description is directed to delegating video game tasks via a sharing service. According to one aspect disclosed herein, a first computing device is configured to execute a game application. The first computing device can receive a request from a first user to delegate play of the game application to a second user so that the second user can attempt to complete a game task on behalf of the first user by controlling the game application from a second computing device that is associated with the second user. Control of the game application can be made available from the second computing device to the first computing device via a sharing session that is created and managed by a sharing service to which the first computing device and the second computing device are connected.
- It should be also appreciated that the subject matter presented herein may be implemented as a computer process, a computer-controlled apparatus, a computing system, or an article of manufacture, such as a computer-readable storage medium. These and various other features will become apparent from a reading of the following disclosure and a review of the associated drawings.
- While the subject matter described herein is presented in the general context of program modules that execute on one or more computing devices, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
- Those skilled in the art will appreciate that the subject matter described herein may be practiced on or in conjunction with other computer system configurations beyond those described below, including multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, handheld computers, personal digital assistants, tablet computers, electronic book readers, wireless telephone devices, special-purposed hardware devices, network appliances, or the like. The embodiments described herein may also be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- In the following detailed description, references are made to the accompanying drawings that form a part hereof, and that show, by way of illustration, specific embodiments or examples. The drawings herein are not drawn to scale. Like numerals represent like elements throughout the several figures.
- Referring now to
FIG. 1 , aspects of oneoperating environment 100 for the various embodiments presented herein will be described. Theoperating environment 100 shown inFIG. 1 includes acomputing device A 102A and acomputing device B 102B, each operating as a part of and/or in communication with a communications network (“network”) 104. According to some embodiments, the computing device A 102A and thecomputing device B 102B can each include a user computing device, such as a tablet computing device, a personal computer (“PC”), a desktop computer, a laptop computer, a notebook computer, a cellular phone or smartphone, other mobile computing devices, a personal digital assistant (“PDA”), video game system, set-top box, smart television, or the like. - According to some other embodiments, the functionality of the computing device A 102A and/or the computing device B 102B can be provided by a cloud-based computing platform that can be provided by one or more application servers, Web servers, data storage systems, network appliances, dedicated hardware devices, and/or other server computers or computing devices. In these embodiments, the computing device A 102A and/or the computing device B 102B can include minimal hardware for connection to the cloud-based computing platform via the
network 104. For purposes of illustrating and describing the concepts and technologies disclosed herein, the functionality of the computing device A 102A and thecomputing device B 102B is described herein as being provided by a user computing device. In light of the alternative embodiments of thecomputing device A 102A and thecomputing device B 102B described above, it should be understood that this example is illustrative, and should not be construed as being limiting in any way. - The computing device A 102A and the
computing device B 102B can communicate via thenetwork 104 to access various services described herein. For example, the computing device A 102A and thecomputing device B 102B can access asharing service 106 and/or agaming service 108. The functionality of thesharing service 106 and thegaming service 108 can be provided by one or more application servers, Web servers, data storage systems, network appliances, dedicated hardware devices, and/or other server computers or computing devices. - The
sharing service 106 can be configured to execute one or more sharingapplications 110 to create and manage one ormore sharing sessions 112 during which the computing device A 102A can share the entirety or specific portions of ascreen A 114A that is being locally presented by the computing device A 102A via one or more displays, such as adisplay A 116A, with thecomputing device B 102B over thenetwork 104. Likewise, during thesharing session 112, thecomputing device B 102B can share the entirety or specific portions of ascreen B 114B that is being locally presented by thecomputing device B 102B via one or more displays, such as adisplay 116B, with thecomputing device A 102A over thenetwork 104. Although only two computing devices are shown, thesharing session 112 created by thesharing service 106 may support connections to any number of computing devices so that one or more users utilizing the various computing devices can share data with one another. As such, the illustrated example is merely illustrative, and should not be construed as being limiting in any way. - The
sharing session 112 can be configured to support one-way communication whereby a designated source device is able to send data to one or more designated destination devices, but the one or more designated destination devices are unable to send data to the designated source device. Alternatively, thesharing session 112 can be configured to support two-way communication whereby two or more computing devices are able send data to and receive data from one another. As such, thesharing session 112 can be used for collaborative or sharing-only purposes. - In some embodiments, a user can provision another user with his or her security credentials, such as, but not limited to, username and password. For example, a first user can provide his or her security credentials so that the second user can control one or more applications executing on a device associated with the first user via the
sharing service 106 and/or gain access to other services such as thegaming service 108 on behalf of the first user. It is contemplated that the security credentials may utilize any single-factor or multi-factor authentication scheme. - As used herein, a “screen” refers to the visual content and the arrangement of that content being output by a computing device for display on one or more displays. In other words, a “screen” is what is being displayed on one or more displays that are connected to or otherwise in communication with a computing device. A screen can include a snapshot of what is being displayed on one or more displays at a particular instance of time. A screen can additionally or alternatively include a data stream of what is being displayed on one or more displays over time. The latter case of a screen is sometimes referred to herein as a “screen stream.”
- In addition to screen sharing, the
sharing service 106 can provide application data sharing, whereby data associated with one or more applications that are being executed by a computing device can be shared with one or more other computing devices that are connected to thesharing session 112. Application data can include, but is not limited to, data derived from user input to an application being executed by a computing device and other data output by the application in response to the input. Application data can be shared discretely or as a stream of application data. In some embodiments, application data includes game control data associated with input received to control a game application, as will be described in greater detail below. - The
sharing service 106 can create thesharing session 112 so that thecomputing device A 102A can share data (shown as shareddata A 118A) with thecomputing device B 102B. Likewise, thesharing service 106 can create thesharing session 112 so that thecomputing device B 102B can share data (shown as shareddata B 118B) with thecomputing device B 102B. As explained above, however, the illustrated example is merely illustrative, and should not be construed as being limiting in any way. - The
gaming service 108 can be configured to facilitate user interaction with one or moregaming service applications 120 that are executed by thegaming service 108. The gaming service application(s) 120 can provide features such as, but not limited to, online cooperative multiplayer gaming, online competitive multiplayer gaming, chat features, messaging features, online leaderboards, achievement tracking features, advertising features, marketplace features, and friends list features. The gaming service application(s) 120 can additionally or alternatively provide or assist in providing a game task delegation feature, as will be described in greater detail below. - The
computing device 102A can be configured to execute anoperating system 122 and one or more application programs such as, for example, agame application 124, a gaming service application programming interface (“API”) 126, asharing service API 128, asharing component 130,other application 131, and/or other application programs or components. Theoperating system 122 is a computer program for controlling the operation of thecomputing device A 102A. The application programs are executable programs configured to execute on top of theoperating system 122 to provide various functionality described herein. Although thecomputing device B 102B is not shown in the same configuration as thecomputing device A 102A, it should be understood that thecomputing device B 102B may be identically configured or may have more or less application programs and/or components than are illustrated for thecomputing device A 102A. - The
game application 124 can be configured to provide an interactive video gaming experience whereby one or more players can control or otherwise interact with visual content that is presented on a display. The visual content can include, but is not limited to, characters, levels, maps, areas, stages, worlds, spaces, shapes, and objects. The visual content can be two-dimensional, three-dimensional, or a combination thereof. Thegame application 124 can also provide audial content such as, but not limited to, music, speech, and sound effects. Thegame application 124 can also provide haptic feedback, such as vibration feedback. - The
game application 124 can be designed to have one or more game tasks that the player(s) can complete. A game task can generally include anything one or more players can do by interacting with the visual content provided by thegame application 124. As a simple example, a game task might be for a player to control a virtual character to traverse a level from a pre-defined starting point to a pre-defined end point so as to complete or “beat” the level. A further game task using this example might be to control the virtual character to traverse a level while avoiding contact with certain objects or characters (e.g., enemies). It should be understood that these examples are illustrative, and should not be construed as being limiting in any way. - The
game application 124 can also be designed to have one or more objectives that can be completed by the player(s). An objective is a game task that is defined by a developer of thegame application 124. In other words, an objective is a goal or purpose of thegame application 124. Thegame application 124 may have multiple objectives. An objective can be discrete in that it is not linked in any way to another objective. Alternatively, an objective can be linked or otherwise combined with one or more other objectives. - In some embodiments, the
game application 124 provides a sandbox in which the player(s) can create their own game tasks, which may be ongoing or fleeting for the player(s). The sandbox may be provided in addition to established objectives or in lieu thereof. - The
game application 124 can be designed to have one or more achievements. An achievement is an accolade provided to a player or group of players in recognition of a particular interaction with thegame application 124. An achievement can be as simple as starting thegame application 124 for the first time (or some other number of times), interacting with certain features provided by the game application 124 (e.g., entering a certain menu or selecting a certain menu option such as a “hard” difficulty level), or completing one or more objectives. When a player performs a particular interaction that is tied to an achievement, the achievement becomes “unlocked.” Thegame application 124 may notify the player(s) of the “unlocked” achievement by presenting an achievement alert. An achievement alert can be presented in a visual, audial, and/or haptic manner. The act of unlocking an achievement may be a game task. Unlocking an achievement may enable the ability to unlock additional achievements. - Achievements can be defined by the developers(s) of the
game application 124, by thegaming service 108, or by some other entity, including, for example, a player. In some embodiments, achievements are managed locally by the computing device A 102A, for example, by thegame application 124, by theoperating system 122, or by some other application program being executed by thecomputing device A 102A. In some other embodiments, achievements are managed remotely in a cloud-based configuration by thegaming service 108. In these embodiments, a player can set up an account with thegaming service 108. The account can include user identification and one or more security credentials to maintain security of the account. The achievements earned by a player can be associated with his or her account with thegaming service 108 so that, for example, if the player changes to a different computing device, the player can still access his or her achievements and be able to earn new achievements on the different computing device. - The
game application 124 can be designed to have one or more leaderboards. A leaderboard can track the completion of an objective in a manner so as to rank the completion of an objective among players. For example, an objective may be to obtain the highest score in a finite amount of time or using a finite number of lives, and a leaderboard associated with this objective can include a ranking of scores in a particular order, such as a list of scores ranked in descending order. In some embodiments, leaderboards are managed locally by the computing device A 102A, for example, by thegame application 124, by theoperating system 122, or by some other application program being executed by thecomputing device A 102A. In some other embodiments, leaderboards are managed remotely in a cloud-based configuration by thegaming service 108. In these embodiments, a player can elect to upload or thegame application 124 can automatically upload scores achieved by the player to thegaming service 108. Thegaming service 108 may present leaderboards for public viewing and/or private viewing, such as by a group of players selected by the player that elected to upload the score. The scores earned by a player can be associated with his or her account with thegaming service 108 so that if the player changes to a different computing device, the player can still try to beat his or her high score on the leaderboard using the same user identification. - Input to the
game application 124 can be provided via one or more input devices that are connected to or otherwise in communication with thecomputing device A 102A. Input to thegame application 124 can be used to control aspects of thegame application 124, such as, for example, controlling characters, navigating menus, and control towards completion of one or more game tasks. An input device can include, but is not limited to, a keyboard, mouse, joystick, game pad, touchpad, resistive touchscreen, capacitive touchscreen, multi-touch enabled touchscreen, still camera, video camera, microphone, infrared camera, motion control device, global positioning system (“GPS”) sensor, proximity sensor, motion sensor (e.g., accelerometer), ambient light sensor, moisture sensor, gyroscope, dance pad, steering wheel, flight yoke, pedal, musical instrument, toy musical instrument, and sports equipment. In some embodiments, one or more input devices are built-in to the computing device A 102A, such as a tablet computing device with a multi-touch enabled touchscreen. In some other embodiments, one or more input devices are connected to the computing device A 102A using hardwire and/or wireless connection. The physical components and/or protocols utilized to establish and maintain one or more connections between an input device and thecomputing device A 102A can be standards-based, non-standards-based, or proprietary. - The
computing device A 102A can be configured to present the visual content provided by thegame application 124 on one or more display devices that are built-in to or external to and in communication with the computing device A 102A, such as thedisplay A 116A. Thedisplay A 116A is an output device configured to present information in a visual form. In particular, thedisplay A 116A may present visual content provided by thegame application 124, graphical user interface (“GUI”) elements, text, images, video, notifications, virtual buttons, virtual keyboards, messaging data, Internet content, device status, time, date, calendar data, preferences, map information, location information, and any other information that is capable of being presented in a visual form. In some embodiments, thedisplay A 116A is a liquid crystal display (“LCD”) utilizing any active or passive matrix technology and any backlighting technology (if used). In some embodiments, thedisplay A 116A is an organic light emitting diode (“OLED”) display. Other display types are contemplated. In addition, thedisplay A 116A can include an input device such as a touchscreen or multi-touch enabled touchscreen. Thedisplay B 116B can be likewise configured. - The
game application 124 can be configured to call one more methods exposed by thegaming service API 126 to access thegaming service 108 via thenetwork 104 to take advantage of one or more of the features provided by thegaming service 108. Thegame application 124 can also be configured to call one or more methods exposed by thesharing service API 128 to access thesharing service 106 via thenetwork 104. Thesharing service API 128 can access thesharing component 130 to provide data to thesharing service 106 and receive data from thesharing service 106 during a sharing session. Thesharing component 130 is illustrated and described in greater detail with reference toFIG. 2 . - As described above, the
game application 124 can provide one or more game tasks that can be completed by one or more players. For one reason or another, a player may be unable to complete a game task. For example, the game task may be too difficult for the player to complete, the player may be disinterested in the game task but is interested in a subsequent game task, the player lacks the time required to complete the game task, or for any number of other reasons. As a solution, the player can elect to delegate the game task to another player so that the other player can complete the task on behalf of the player that delegated the game task. - In the illustrated example, a
player A 132A that is playing thegame application 124 on thecomputing device A 102A can elect to delegate the game task to aplayer B 132B that is associated with thecomputing device B 102B. Theplayer B 132B can accept or deny the game task. If theplayer B 132B accepts the game task, theplayer B 132B can attempt to complete the game task on behalf of theplayer A 132A utilizing thecomputing device B 102B. - In some embodiments, the computing device A 102A communicates with the
sharing service 106 to create thesharing session 112 to share the shareddata A 118A, wherein the shared data A 118A includes a screen stream of thegame application 124 being executed by thecomputing device A 102A. In these embodiments, theplayer B 132B can provide input to thecomputing device B 102B via one or more input devices that are connected to or otherwise in communication with thecomputing device B 102B to play thegame application 124 in an effort to complete the game task delegated by the player A 132A to theplayer B 132B. In this manner, theplayer B 132B can assist the player A 132A to complete the game task, after which thesharing session 112 can be torn down and theplayer A 132A can resume playing thegame application 124 after the game task has been completed for him or her by theplayer B 132B. - In some other embodiments, the computing device A 102A communicates with the
sharing service 106 to create thesharing session 112 to share the shareddata A 118A, wherein the shared data A 118A includes a game state of thegame application 124 before a delegated game task has been completed. In these embodiments, thecomputing device B 102B receives the game state via thesharing session 112 and launches the same game application on thecomputing device B 102B to load the game state. The game state is loaded and theplayer B 132B can provide input to thecomputing device B 102B via one or more input devices that are connected to or otherwise in communication with thecomputing device B 102B to play the game application in an effort to complete the game task delegated by theplayer A 132A. After the game task is completed, thecomputing device B 102B can save a new game state of thegame application 124 and can send the new game state as part of the shareddata B 118 B over the sharedsession 112 to thecomputing device A 102A. In this manner, theplayer B 132B can assist the player A 132A to complete the game task, after which thecomputing device A 102A can load the new game state and theplayer A 132A can resume playing thegame application 124 from a state that includes the completed game task. - In some embodiments, the
player B 132B is provisioned to play thegame application 124 on behalf of theplayer A 132A using the user identification of theplayer A 132A. As such, achievements, leaderboards, and other credits associated with the completion of a game task can be credited to theplayer A 132A instead of theplayer B 132B, although it is contemplated that both the player A 132A and theplayer B 132B may be acknowledged for completion of the game task. Theplayer B 132B may additionally or alternatively earn achievements, leaderboard position, and/or other credits that are not available to theplayer A 132A for assisting theplayer A 132A in completing the game task. - In some embodiments, the
player B 132B is given a finite amount of time to complete the game task. In some other embodiments, theplayer B 132B is given an infinite amount of time to complete the game task. - In some embodiments, the
player B 132B is compensated for completing the game task. Compensation for completing the game task can include, but is not limited to, real currency, virtual currency, one or more in-game items for thegame application 124, one or more in-game items for another game application, and credit for the purchase of real or virtual products from an online merchant. - A virtual currency may be represented by units, such as, but not limited to, “coins,” “points,” “virtual dollars,” and the like. A “unit” of virtual currency, whether a coin, a point, a virtual dollar, or other unit, may have a value that is tied to a real currency, such as the U.S. dollar. A “coin” may represent, for example, 1/100 of a U.S. dollar or 1 U.S. cent within the
gaming service 108 so that an item that costs $2.99 in U.S. dollars and cents would alternatively cost 299 coins. It should be understood that the value of a virtual currency unit may be changed from time to time to accommodate changes in the value of the real currency to which it is tied or for any number of other reasons, such as those particular to the entity that provides thegaming service 108. It should also be understood that items may be made available for purchase via thegaming service 108 using virtual currency, real currency, or a combination thereof as the method for payment. - In some embodiments, the
gaming service 108 provides a marketplace through which players can purchase content, such as, for example, applications, game applications, game add-ons, in-game items, music, e-books, movies, and the like. Virtual currency exchanged as compensation for completing a game task may be used to purchase such content from the marketplace. - In some embodiments, the
player A 132A can set up an auction to solicit the help of another player to assist theplayer A 132A in completing a game task identified in the auction. The auction feature can be hosted by thegaming service 108. Users of thegaming service 108 can bid on the auction and theplayer A 132A can select a bid as the winning bid. A bid can include an amount of compensation for completing the game task. A bid can also include a deadline by which the game task will be completed. In this manner, theplayer A 132A can choose a winning bid based upon his or her needs with regard to completing the game task. - In some embodiments, the
player A 132A can delegate a game task to two or more players. The first of the two or more players to complete the game task can be compensated. Alternatively, all players are compensated, but the first player to complete the game task in compensated the highest amount, the second player is compensated a lower amount, and so on. - In the illustrated example, the computing device A 102A generates an invitation (“invite 134”) and sends the
invite 134 to thegaming service 108. Theinvite 134 can be addressed to theplayer 132B. For example, the player A 132A and theplayer B 132B may be in a friendship within thegaming service 108, and the friendship allows the player A 132A to send theinvite 134 directly to theplayer B 132B via a messaging feature provided by thegaming service 108. A friendship in context of thegaming service 108 is a relationship between two users facilitated by thegaming service 108 that allows the users to connect to play multiplayer games, chat, and send messages to each other, including, for example, invites such as theinvite 134. Theplayer B 132B can then choose to accept or deny theinvite 134. In the illustrated example, theplayer B 132B has accepted theinvite 134, and in response, thecomputing device B 102B generates an invitation acceptance notification (“acceptinvite 136”) and sends the acceptinvite 136 to thegaming service 108. Once theinvite 134 is accepted, thegame application 124 can call thesharing service API 128 to establish thesharing session 112 to enable theplayer B 132B to attempt to complete the game task utilizing one of the methodologies described above. - The
other application 131 can include one or more Web browser applications, one or more productivity applications (e.g., word processing, spreadsheet, and/or presentation applications), one or more design applications, or any other applications. In some embodiments, the other application(s) 131 can be configured to call thesharing service API 128 to provide sharing features to users. For example, the shareddata A 118A can be data shared by theother application 131 and the shareddata B 118B can be data shared by thecomputing device B 102B that is useable by theother application 131. -
FIG. 1 illustrates onenetwork 104, onesharing service 106, onegaming service 108, onegame application 124, onegaming service API 126, onesharing service API 128, onesharing component 130, oneother application 131, and oneoperating system 122. It should be understood, however, that various implementations of the operatingenvironment 100 includemultiple networks 104, sharingservices 106,gaming services 108,game applications 124,gaming service APIs 126,sharing service APIs 128, sharingcomponents 130,other applications 131, and/oroperating systems 122. As such, the illustrated embodiment should be understood as being illustrative, and should not be construed as being limiting in any way. - Turning now to
FIG. 2 , additional aspects of thesharing component 130 will be described, according to an illustrative embodiment. In some embodiments, thesharing component 130 is provided as part as client-side functionality for accessing thesharing service 106. In some embodiments, thesharing component 130 is provided as part of the operating system 122 (shown inFIG. 1 ). In some embodiments, thesharing component 130 is given permissions to access features of theoperating system 122 such as a rendering pipeline to effectively detect and compress a buffer of screen and/or application data that is to be streamed to thesharing service 106 as part of the shareddata A 118A (shown inFIG. 1 ). - The illustrated
sharing component 130 includes ascreen sharing module 202 and an applicationdata sharing module 204. Thescreen sharing module 202 includes a screen datadifferential engine 206, ascreen data sender 208, and ascreen data receiver 210. The screen datadifferential engine 206 is configured to calculate a difference between what screen data is currently being displayed and what screen data has already been sent to thesharing service 106. The screen datadifferential engine 206 is also configured to send the difference to thesharing service 106, thereby saving network and other resources. It is contemplated, however, that thesharing component 130 may share all screen data output by a computing device. - The
screen data sender 208 is configured to communicate with thesharing service 106 to send screen data to thesharing session 112. Thescreen data receiver 210 is configured to communicate with thesharing service 106 to receive screen data from thesharing session 112. - The application
data sharing module 204 includes adata compression engine 212, anapplication data sender 214, and anapplication data receiver 216. Thedata compression engine 212 is configured to compress application data for sending to thesharing service 106. Theapplication data sender 214 is configured to communicate with thesharing service 106 to send application data to thesharing session 112. Theapplication data receiver 214 is configured to communicate with thesharing service 106 to receive application data from thesharing session 112. - Turning now to
FIG. 3 , additional aspects of thesharing service 106 will be described. InFIG. 3 , thesharing service 106 receivesscreen data 302A-302N andapplication data 304A-304N from a plurality of computing devices (not shown). Thesharing service 106 provides thescreen data 302A-302N to ascreen stream multiplexer 306. Thescreen stream multiplexer 306 is configured to receive thescreen data 302A-302N and multiplex thescreen data 302A-302N to generate multiplexedscreen data 308, which is then provided to astream compressor 310. Thestream compressor 310 is configured to compress the multiplexedscreen data 308 for delivery to one or more computing devices during a sharing session. The compression technology utilized by thestream compressor 310 can be selected based upon the needs of thesharing service 106 in providing a particular quality of service via a sharing session. As such, the compression level may be increased to conserve network resources or decreased to consume network resources based upon the availability of network resources to support the sharing session. - The
sharing service 106 provides theapplication data 304A-304N to an applicationdata stream multiplexer 312. Theapplication data multiplexer 312 is configured to receive theapplication data 304A-304N and multiplex theapplication data 304A-304N to generate multiplexedapplication data 314, which is then provided to thestream compressor 310 for compression. - Turning now to
FIG. 4 , aspects of amethod 400 for delegating a game task will be described in detail, according to an illustrative embodiment. It should be understood that the operations of the methods disclosed herein are not necessarily presented in any particular order and that performance of some or all of the operations in an alternative order(s) is possible and is contemplated. The operations have been presented in the demonstrated order for ease of description and illustration. Operations may be added, omitted, and/or performed simultaneously, without departing from the scope of the concepts and technologies disclosed herein. - It also should be understood that the methods disclosed herein can be ended at any time and need not be performed in its entirety. Some or all operations of the methods, and/or substantially equivalent operations, can be performed by execution of computer-readable instructions included on a computer storage media, as defined herein. The term “computer-readable instructions,” and variants thereof, as used herein, is used expansively to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on various system configurations including single-processor or multiprocessor systems, minicomputers, mainframe computers, personal computers, hand-held computing devices, microprocessor-based, programmable consumer electronics, combinations thereof, and the like.
- Thus, it should be appreciated that the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These states, operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.
- The
method 400 is described as being performed by a first computing device, such as the computing device A 102A, via execution of one or more software modules such as, for example, thegame application 124, thegaming service API 126, thesharing service API 128, and/or thesharing component 130. It should be understood that additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software including, but not limited to, thegame application 124, thegaming service API 126, thesharing service API 128, and/or thesharing component 130. Thus, the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way. - The
method 400 begins atoperation 402, where the computing device A 102A executes thegame application 124. Fromoperation 402, themethod 400 proceeds tooperation 404, where the computing device A 102A receives input from a first user, such as theplayer A 132A. The input can be received via one or more input devices that are connected to or otherwise in communication with thecomputing device A 102A. The input is provided by the first user towards the completion of a game task. - From
operation 404, themethod 400 proceeds tooperation 406, where the computing device A 102A receives a delegation request from the first user to delegate play of thegame application 124 to a second user, such as theplayer B 132B, for completion of the game task. In some embodiments, a delegation request option is provided as part of thegame application 124 and can be selected by the first user if the first user needs assistance in completing a game task. In some embodiments, the delegation request option “pops up” after a pre-defined number of failed attempts by the first user in completing the game task. The pre-defined number may be set by a developer of thegame application 124. In some embodiments, a delegation request option is made accessible to thegame application 124 by one or more methods exposed by thegaming service API 126 or thesharing service API 128. - From
operation 406, themethod 400 proceeds tooperation 408, where the computing device A 102A generates an invitation for the second user to attempt to complete the game task in response to the delegation request. In some embodiments, invitation is generated by thegame application 124. In some embodiments, the invitation is made accessible to thegame application 124 by one or more methods exposed by thegaming service API 126 or thesharing service API 128. - From
operation 408, themethod 400 proceeds tooperation 410, where computing device A 102A causes the invitation to be made available to the second user. Fromoperation 410, themethod 400 proceeds tooperation 412, where the computing device A 102A receives notification of acceptance of the invitation. - From
operation 412, themethod 400 proceeds tooperation 414, where the computing device A 102A initiates establishment of a sharing session via thesharing service 106. Fromoperation 414, themethod 400 proceeds tooperation 416, where the computing device A 102A transfers control of thegame application 124 to a second computing device, such as thecomputing device B 102B, that is associated with the second user, such as theplayer B 132B, via the sharing session. In this manner, theplayer B 132B can assist the player A 132A to complete the game task, after which the sharing session can be torn down and theplayer A 132A can resume playing thegame application 124. - From
operation 416, themethod 400 proceeds tooperation 418. Themethod 400 ends atoperation 418. - Turning now to
FIG. 5 , aspects of amethod 500 for accepting delegation of a game task will be described in detail, according to an illustrative embodiment. Themethod 500 is described as being performed by a second computing device, such as thecomputing device B 102B, via execution of one or more software modules such as, for example, thegame application 124, thegaming service API 126, thesharing service API 128, and/or thesharing component 130. It should be understood that additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software including, but not limited to, thegame application 124, thegaming service API 126, thesharing service API 128, and/or thesharing component 130. Thus, the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way. - The
method 500 begins atoperation 502, where thecomputing device B 102B receives input to accept an invitation to attempt to complete a game task. Fromoperation 502, themethod 500 proceeds tooperation 504, where thecomputing device B 102B generates a notification of acceptance of the invitation to complete the game task. Fromoperation 504, themethod 500 proceeds tooperation 506, where thecomputing device B 102B sends the notification to the first computing device, such as thecomputing device A 102A. - From
operation 506, themethod 500 proceeds tooperation 508, where thecomputing device B 102B connects to a sharing session provided by thesharing service 106. The sharing session can be initiated by the first computing device in response to the notification of acceptance of the invitation. - From
operation 508, themethod 500 proceeds tooperation 510, where thecomputing device B 102B receives control of thegame application 124 via the sharing session. Fromoperation 510, themethod 500 proceeds tooperation 512, where thecomputing device B 102B receives input to control the game application to complete the game task. Fromoperation 512, themethod 500 proceeds tooperation 514, wherein thecomputing device B 102B sends the input to control thegame application 124 to the first computing device 102 via the sharing session. - From
operation 514, themethod 500 proceeds tooperation 516. Themethod 500 ends atoperation 516. - Turning now to
FIG. 6 , aspects of amethod 600 for sharing game control data using thesharing service 106 will be described in detail, according to an illustrative embodiment. Themethod 600 begins atoperation 602, where a first computing device, such as the computing device A 102A, and a second computing device, such as thecomputing device B 102B both connect to asharing session 112 provided by thesharing service 106. - From
operation 602, themethod 600 proceeds tooperation 604, where thecomputing device B 102B receives game control input. For example, theplayer B 132B may provide game control input to thecomputing device B 102B using one or more input devices in an attempt to complete one or more game tasks delegated to theplayer B 132B by theplayer A 132A. - From
operation 604, the method proceeds tooperation 606, where thecomputing device B 102B sends game control data that is associated with the game control input to thesharing service 106 via thesharing session 112 for delivery to thecomputing device A 102A. The game control data can include, but is not limited to, instructions that are useable by a game application, such as thegame application 124, to perform one or more actions. - From
operation 606, themethod 600 proceeds tooperation 608, where the computing device A 102A receives the game control data from thesharing service 106 and provides the game control data to thegame application 124 that is executing on thecomputing device A 102A. Fromoperation 608, themethod 600 proceeds tooperation 610, where thegame application 124 utilizes the game control data to perform one or more actions. Fromoperation 610, themethod 600 proceeds tooperation 612, where thegame application 124 presents the one or more actions via thedisplay A 116A. In some embodiments, thegame application 124 replays the one or more actions defined by instructions included in the game control data so that theplayer A 132A can watch how theplayer B 132B is attempting to complete one or more game tasks delegated to theplayer B 132B by theplayer A 132A. In this manner, theplayer A 132A can decide whether or not theplayer B 132B is performing in such a way that is acceptable to theplayer A 132A, and if not, theplayer A 132A can interrupt the replay, as will be described below in greater detail with reference toFIG. 7 . - From
operation 612, themethod 600 proceeds tooperation 614. Themethod 600 ends atoperation 614. - Turning now to
FIG. 7 , aspects of amethod 700 for interrupting game control delegated by a first user to a second user will be described in detail, according to an illustrative embodiment. Themethod 700 begins atoperation 702, where thegame application 124 utilizes game control data received from thecomputing device B 102B via thesharing session 112 to perform one or more actions. Fromoperation 702, themethod 700 proceeds tooperation 704, where thegame application 124 determines if an interruption is received. In utilizing the game control data, thegame application 124 can replay the game control input provided by theplayer B 132B on the computing device A 102A so that theplayer A 132A can watch how theplayer B 132B is performing. If the player A 132A is not satisfied, theplayer A 132A can decide to interrupt the replay. In some embodiments, the replay can be interrupted by theplayer A 132A by providing some input to thegame application 124. For example, thegame application 124 can provide an icon can be selected by theplayer A 132A or designate some other input to be used if theplayer A 132A desires to stop the action perform in response to the game control data. - If, at
operation 704, thegame application 124 receives an interruption, themethod 700 proceeds tooperation 706. Atoperation 706, thegame application 124 generates an abort request and sends the abort request to thesharing service 106. Fromoperation 706, themethod 700 proceeds tooperation 708, wherein thesharing service 106 receives the abort request and ends thesharing session 112 so that thecomputing device B 102B can no longer provide the game control data to thecomputing device A 102A. In this manner, theplayer A 132A can monitor how one or more game tasks are being handled and disconnect from a player to which he or she has designated one or more game tasks if the player is misbehaving or otherwise not performing up to his or her expectations. Fromoperation 708, themethod 700 proceeds tooperation 710, where thegame application 124 returns control to theplayer A 132A. Fromoperation 710, themethod 700 proceeds tooperation 712. Themethod 700 ends atoperation 712. - If, at
operation 704, thegame application 124 does not receive an interruption, themethod 700 proceeds tooperation 714. Atoperation 714, thegame application 124 determines if the one or more actions have been completed. For example, thegame application 124 is no longer receiving the game control data via thesharing session 112. If not, themethod 700 proceeds fromoperation 714 tooperation 702. If so, themethod 700 proceeds tooperation 710, where thegame application 124 returns control to theplayer A 132A. Fromoperation 710, themethod 700 proceeds tooperation 712. Themethod 700 ends atoperation 712. - Turning now to
FIG. 8 , aspects of amethod 800 for sharing screen data will be described in detail, according to an illustrative embodiment. Themethod 800 begins and proceeds tooperation 802, where a first computing device, such as the computing device A 102A, and a second computing device, such as thecomputing device B 102B, both connect to asharing session 112 provided by thesharing service 108. - From
operation 802, themethod 800 proceeds tooperation 804, where thecomputing device B 102B receives game control input. For example, theplayer B 132B may provide game control input to thecomputing device B 102B using one or more input devices in an attempt to complete one or more game tasks delegated to theplayer B 132B by theplayer A 132A. - From
operation 804, themethod 800 proceeds tooperation 806, where thecomputing device B 102B generates screen data based at least in part upon the game control input received atoperation 804. In some embodiments, the screen data includes a screen stream of visual output provided by a game application executed by thecomputing device B 102B in response to the game control input. For example, as theplayer B 132B provides input via a controller or other input device, the game application may output data to a display that shows a character responding to the game control input, such as traversing a level, fighting an enemy, or performing some other action. - From
operation 806, the method proceeds tooperation 808, where thecomputing device B 102B sends the screen data to thesharing service 106 via thesharing session 112 for delivery to thecomputing device A 102A. Thecomputing device B 102B can provide the screen data to thesharing service 106 so that thecomputing device A 102A can access the screen data via thesharing session 112. In this manner, theplayer A 132A can watch what theplayer B 132B is doing towards completing one or more game tasks delegated by the player A 132A to theplayer B 132B. - From
operation 808, themethod 800 proceeds tooperation 810, where the computing device A 102A receives the screen data from thesharing service 108. Fromoperation 810, themethod 800 proceeds tooperation 812, where the computing device A 102A presents the screen data on a display, such as thedisplay A 116A. - From
operation 812, themethod 800 proceeds tooperation 814. Themethod 800 ends atoperation 814. - In some embodiments, the
player A 132A may be able to interrupt thescreen session 112 to terminate the screen sharing session if for some reason he or she determines theplayer B 132B is misbehaving or otherwise not performing up to his or her expectations. In some embodiments, themethod 600 and themethod 800 may be combined so as to share both game control data and screen data. - Turning now to
FIG. 9 , aspects of amethod 900 for sharing game control data without the use of a sharing service will be described in detail, according to an illustrative embodiment. The methods described above with reference toFIGS. 4-8 utilize a sharing service, such as thesharing service 106, to share screen data and/or application data such as game control data. Themethod 900 allows players to share game control data without the use of a sharing service. Themethod 900 may be useful for situations in which network connectivity cannot support a sharing service due to latency issues, bandwidth issues, reliability issues, or other issues. - The
method 900 begins atoperation 902, where a second computing device, such as thecomputing device B 102B receives game control input. The game control input is received in response to a player associated with the second computing device, such as theplayer B 132B who is associated with thecomputing device B 102B, accepting an invite to complete one or more game tasks on behalf of another player, such as theplayer A 102A. In some embodiments, the game task is delegated directly to theplayer B 132B, such as via thegaming service 108. In some embodiments, the game task is made available to a plurality of players via thegaming service 108, and theplayer B 132B selects the game task. - From
operation 902, themethod 900 proceeds tooperation 904, where thecomputing device B 102B sends game control data associated with the game control input to the computing device A 102A via thenetwork 104. The game control data may be sent via a peer-to-peer connection established between the computing device A 102A and thecomputing device B 102B over thenetwork 104. Alternatively, the game control data may be sent to one or more servers configured to support delivery of the game control data. The one or more servers may or may not operate in at least partial support of thegaming service 108. - From
operation 904, themethod 900 proceeds tooperation 906, where the computing device A 102A receives the game control data and provides the game control data to thegame application 124. Fromoperation 906, themethod 900 proceeds tooperation 908, wherein thegame application 124 utilizes the game control data to perform one or more actions. - From
operation 908, themethod 900 proceeds tooperation 910, where thegame application 124 determines if an interruption is received. In utilizing the game control data, thegame application 124 can replay the game control input provided by theplayer B 132B on the computing device A 102A so that theplayer A 132A can watch how theplayer B 132B is performing. If the player A 132A is not satisfied, he or she can decide to interrupt the replay. In some embodiments, the replay can be interrupted by theplayer A 132A by providing some input to thegame application 124. For example, thegame application 124 can provide an icon that can be selected by theplayer A 132A or other input than can be used if theplayer A 132A desires to stop the action performed in response to the game control data. - If, at
operation 910, thegame application 124 receives an interruption, themethod 900 proceeds tooperation 912. Atoperation 912, thegame application 124 returns control to theplayer A 132A. Fromoperation 912, themethod 900 proceeds tooperation 914. Themethod 900 ends atoperation 914. - If, at
operation 910, thegame application 124 does not receive an interruption, themethod 900 proceeds tooperation 916. Atoperation 916, thegame application 124 determines if the one or more actions have been completed. For example, thegame application 124 is no longer receiving the game control data via thenetwork 104. If not, themethod 900 proceeds fromoperation 916 tooperation 908. If so, themethod 900 proceeds tooperation 912, where thegame application 124 returns control to theplayer A 132A. Fromoperation 912, themethod 900 proceeds tooperation 914. Themethod 900 ends atoperation 914. - Turning now to
FIG. 10 , aspects of amethod 1000 for sharing game state data will be described in detail, according to an illustrative embodiment. Themethod 1000 begins and proceeds tooperation 1002, where a second computing device, such as thecomputing device B 102B, receives an invite to complete a game task. In some embodiments, the game task is delegated directly to theplayer B 132B, such as via thegaming service 108. In some embodiments, the game task is made available to a plurality of players via thegaming service 108, and theplayer B 132B selects the game task via thegaming service 108, effectively accepting an invite. - From
operation 1002, themethod 1000 proceeds tooperation 1004, where thecomputing device B 102B determines if a game state has been received. A game state can include a state of a game application before the delegated game task has been completed. In some embodiments, a player delegating a game task may elect to provide a game state so that the player to whom the game task is delegated can begin his or her attempt to complete the game task in particular state of the game that has been achieved by the player delegating the game task. In this manner, the player to whom the game task is delegated can begin his or her attempt to complete the delegated game task from a state other than a beginning state of a game application or other state that may not be conducive to being able to complete the delegated game task within a specific amount of time or under some other constraint. For example, if the game application is a role-playing game, the player delegating the game task might have spent tens or even hundreds of hours developing his or her character and progressing through a storyline provided by the role-playing game. In this example, the player delegating the game task can provide a game state that captures the character's progression and place within the storyline so that the player to whom the game task is delegated can assume control of the character in an attempt to complete the game task with a character progressed in a certain manner and at a particular point in the storyline. Although the concept of game state is not referenced in the description of the methods illustrated inFIGS. 4-9 , the concept of game state can be utilized in those methods to provide a game state from which to start the player to whom a game task has been delegated, for example. - If, at
operation 1004, thecomputing device 102B determines that a game state has been received, themethod 1000 proceeds tooperation 1006, where thecomputing device B 102B loads the game state into a game application, such as copy of thegame application 124, thereby allowing theplayer B 132B to start his or her attempt to complete the delegated game task from a state other than a beginning state (e.g., new game start) or a game state saved in association with previous play by theplayer B 132B. - From
operation 1006, themethod 1000 proceeds tooperation 1008. Also, if, atoperation 1004, thecomputing device 102B determines that a game state has not been received, themethod 1000 proceeds tooperation 1008. Atoperation 1008, thecomputing device B 102B receives game control input provided by theplayer B 102B to complete the game task. Fromoperation 1008, themethod 1000 proceeds tooperation 1010, where thecomputing device B 102B generates a new game state that includes the completed game task. Fromoperation 1010, themethod 1000 proceeds tooperation 1012, where thecomputing device B 102B then sends the new game state to thecomputing device A 102A. Thecomputing device A 102A can load the new game state into thegame application 124 and resume play of thegame application 124 at a state after the game task has been completed on his or her behalf. - From
operation 1012, themethod 1000 proceeds tooperation 1014. Themethod 1000 ends atoperation 1014. - In some embodiments, game states that include one or molre completed game tasks can be provided to the
gaming service 108. Thegaming service 108 can offer a game state on behalf of the user or users that created the game state. In this manner, a particularly skilled player or groups of players can create game states that complete one or more game tasks which might be commonly difficult and therefore attractive to other players. A game state may be offered for free or for some compensation, such as one or more of the various compensations described herein above. - Turning now to
FIG. 11 , aspects of amethod 1100 for exposing a sharing service API, such as thesharing service API 128, will be described in detail, according to an illustrative embodiment. Themethod 1100 begins atoperation 1102, where a computing device, such as the computing device A 102A exposes thesharing service API 128 so that one or more applications, such as thegame application 124 and/or theother application 131, can call thesharing service API 128 to access thesharing service 106. - From
operation 1102, themethod 1100 proceeds tooperation 1104, where the computing device A 102A receives a call to a method exposed by thesharing service API 128 to request creation of a sharing session, such as thesharing session 112. Fromoperation 1104, themethod 1100 proceeds tooperation 1106, where, in response to the call, the computing device A 102A initiates creation of thesharing session 112 by connecting to thesharing service 106. Fromoperation 1106, themethod 1100 proceeds tooperation 1108, where the computing device A 102A joins thesharing session 112 created by thesharing service 106. One or more other computing devices, such as thecomputing device B 102B, can then connect to thesharing session 112 to share data, such as the shareddata B 118B. - From
operation 1108, themethod 1100 proceeds tooperation 1110. Themethod 1100 ends atoperation 1110. -
FIG. 12 shows an example computer architecture for acomputer 1200 capable of executing the software components described herein for delegating video game tasks via a sharing service in the manner presented above. The computer architecture shown inFIG. 12 illustrates a conventional server computer, workstation, desktop computer, laptop, electronic book reader, digital wireless phone, tablet computer, network appliance, set-top box, or other computing device. The computer architecture shown inFIG. 12 may be utilized to execute any aspects of the software components presented herein described as executing on the computing device A 102A, thecomputing device B 102B, thesharing service 106, thegaming service 108, or any other computing platform. - The
computer 1200 includes a baseboard, or “motherboard,” which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths. In one illustrative embodiment, one or more central processing units (“CPUs”) 1202 operate in conjunction with achipset 1204. TheCPUs 1202 are standard programmable processors that perform arithmetic and logical operations necessary for the operation of thecomputer 1200. - The
CPUs 1202 perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states. Switching elements may generally include electronic circuits that maintain one of two binary states, such as flip-flops, and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements may be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units, or the like. - The
chipset 1204 provides an interface between theCPUs 1202 and the remainder of the components and devices on the baseboard. Thechipset 1204 may provide an interface to a random access memory (“RAM”) 1206, used as the main memory in thecomputer 1200. Thechipset 1204 may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”) 1208 or non-volatile RAM (“NVRAM”) for storing basic routines that that help to startup thecomputer 1200 and to transfer information between the various components and devices. TheROM 1208 or NVRAM may also store other software components necessary for the operation of thecomputer 1200 in accordance with the embodiments described herein. - According to various embodiments, the
computer 1200 may operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as a local-area network (“LAN”), a wide-area network (“WAN”), the Internet, thenetwork 104, or any other networking topology known in the art that connects thecomputer 1200 to remote computers. Thechipset 1204 includes functionality for providing network connectivity through a network interface controller (“NIC”) 1212, such as a gigabit Ethernet adapter. - For example, the
NIC 1210 may be capable of connecting thecomputer 1200 to other computing devices, such as the computing device A 102A, thecomputing device B 102B, thesharing service 106, thegaming service 108, a data storage system in, and the like, over thenetwork 104 described above in regard toFIG. 1 . It should be appreciated thatmultiple NICs 1210 may be present in thecomputer 1200, connecting the computer to other types of networks and remote computer systems. - The
computer 1200 may be connected to amass storage device 1212 that provides non-volatile storage for the computer. Themass storage device 1212 may store system programs, application programs, other program modules, and data, which have been described in greater detail herein. Themass storage device 1212 may be connected to thecomputer 1200 through astorage controller 1214 connected to thechipset 1204. Themass storage device 1212 may consist of one or more physical storage units. Thestorage controller 1214 may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a FIBRE CHANNEL (“FC”) interface, or other standard interface for physically connecting and transferring data between computers and physical storage devices. - The
computer 1200 may store data on themass storage device 1212 by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether themass storage device 1212 is characterized as primary or secondary storage, or the like. - For example, the
computer 1200 may store information to themass storage device 1212 by issuing instructions through thestorage controller 1214 to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description. Thecomputer 1200 may further read information from themass storage device 1212 by detecting the physical states or characteristics of one or more particular locations within the physical storage units. - In addition to the
mass storage device 1212 described above, thecomputer 1200 might have access to other computer-readable media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable media can be any available media that may be accessed by thecomputer 1200, including computer-readable storage media and communications media. Communications media includes transitory signals. Computer-readable storage media includes volatile and non-volatile, removable and non-removable storage media implemented in any method or technology. For example, computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information. Computer-readable storage media does not include transitory signals. - The
mass storage device 1212 may store anoperating system 1216, such as theoperating system 122, utilized to control the operation of thecomputer 1200. According to one embodiment, the operating system comprises the LINUX operating system. According to another embodiment, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Wash. According to further embodiments, the operating system may comprise the UNIX or SOLARIS operating systems. It should be appreciated that other operating systems may also be utilized. Themass storage device 1212 may store other system or application programs and data utilized by thecomputer 1200. For instance, when utilized to implement the computing device A 102A, themass storage device 1212 may store thegaming service API 126, thesharing service API 128, thesharing component 130, thegame application 124, and/or theother application 131. When utilized to implement thesharing service 106, themass storage device 1212 may store the sharing service application(s) 110. When utilized to implement the gaming service, themass storage device 1212 may store the gaming service application(s) 120. - In one embodiment, the
mass storage device 1212 or other computer-readable storage media may be encoded with computer-executable instructions that, when loaded into thecomputer 1200, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein. These computer-executable instructions transform thecomputer 1200 by specifying how theCPUs 1202 transition between states, as described above. According to one embodiment, thecomputer 1200 has access to computer-readable storage media storing computer-executable instructions that, when executed by the computer, perform the various routines and operations described herein. - The
computer 1200 may also include an input/output controller 1218 for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller 1218 may provide output to a display device, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that thecomputer 1200 may not include all of the components shown inFIG. 12 , may include other components that are not explicitly shown inFIG. 12 , or may utilize an architecture completely different than that shown inFIG. 12 . - Based on the foregoing, it should be appreciated that technologies for delegating video game tasks via a sharing service have been presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts, and mediums are disclosed as example forms of implementing the claims.
- The subject matter described above is provided by way of illustration only and should not be construed as limiting. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.
Claims (21)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/675,281 US20210220746A1 (en) | 2013-02-19 | 2017-08-11 | Delegating Video Game Tasks Via a Sharing Service |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/770,299 US9731206B2 (en) | 2013-02-19 | 2013-02-19 | Delegating video game tasks via a sharing service |
US15/675,281 US20210220746A1 (en) | 2013-02-19 | 2017-08-11 | Delegating Video Game Tasks Via a Sharing Service |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/770,299 Continuation US9731206B2 (en) | 2013-02-19 | 2013-02-19 | Delegating video game tasks via a sharing service |
Publications (1)
Publication Number | Publication Date |
---|---|
US20210220746A1 true US20210220746A1 (en) | 2021-07-22 |
Family
ID=51351578
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/770,299 Active 2033-07-16 US9731206B2 (en) | 2013-02-19 | 2013-02-19 | Delegating video game tasks via a sharing service |
US15/675,281 Abandoned US20210220746A1 (en) | 2013-02-19 | 2017-08-11 | Delegating Video Game Tasks Via a Sharing Service |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/770,299 Active 2033-07-16 US9731206B2 (en) | 2013-02-19 | 2013-02-19 | Delegating video game tasks via a sharing service |
Country Status (1)
Country | Link |
---|---|
US (2) | US9731206B2 (en) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014030035A1 (en) * | 2012-08-22 | 2014-02-27 | Freescale Semiconductor, Inc. | Method and system for obtaining run-time information associated with executing an executable |
US9672051B2 (en) | 2013-02-19 | 2017-06-06 | Amazon Technologies, Inc. | Application programming interface for a sharing service |
US20140274359A1 (en) * | 2013-03-13 | 2014-09-18 | Big Fish Games, Inc. | Multi-player collaborative play of a game |
US11148042B2 (en) * | 2013-12-23 | 2021-10-19 | Ebay Inc. | Geo location questing |
US9672138B1 (en) * | 2015-03-27 | 2017-06-06 | Amazon Technologies, Inc. | Enabling communication between an application developer and an application tester |
EP3313541A1 (en) * | 2015-06-26 | 2018-05-02 | Interdigital Patent Holdings, Inc. | Method and system for facilitating the transfer of game or virtual reality state information |
US20170111304A1 (en) * | 2015-10-15 | 2017-04-20 | International Business Machines Corporation | Motivational tools for electronic messages |
US10238965B2 (en) * | 2016-04-28 | 2019-03-26 | Sony Interactive Entertainment America Llc | Cloud gaming device handover |
US10335688B2 (en) | 2016-06-03 | 2019-07-02 | Microsoft Technology Licensing, Llc | Administrative control features for hosted sessions |
TWI656792B (en) * | 2017-01-12 | 2019-04-11 | 沈國曄 | Method of playing interactive videos across platforms |
US11102264B2 (en) | 2018-01-12 | 2021-08-24 | Facebook, Inc. | Methods and systems for initiating a coordinated effect |
US11372698B2 (en) * | 2018-01-12 | 2022-06-28 | Meta Platforms, Inc. | Coordinated effects in experiences |
US11019305B2 (en) | 2018-01-12 | 2021-05-25 | Facebook, Inc. | Coordinated effects in videos |
US20190282895A1 (en) * | 2018-03-13 | 2019-09-19 | Microsoft Technology Licensing, Llc | Control sharing for interactive experience |
US10874947B2 (en) * | 2018-03-23 | 2020-12-29 | Sony Interactive Entertainment LLC | Connecting a player to expert help in real-time during game play of a gaming application |
JP6713525B2 (en) * | 2018-12-19 | 2020-06-24 | 任天堂株式会社 | Information processing system, information processing apparatus, information processing program, and information processing method |
US11065545B2 (en) * | 2019-07-25 | 2021-07-20 | Sony Interactive Entertainment LLC | Use of machine learning to increase or decrease level of difficulty in beating video game opponent |
CN111160960A (en) * | 2019-12-20 | 2020-05-15 | 中国建设银行股份有限公司 | Service promotion method and device based on electronic red packet, computer equipment and readable storage medium |
CN111773664B (en) * | 2020-07-10 | 2021-07-27 | 网易(杭州)网络有限公司 | Game data processing method and device, storage medium and electronic device |
CN112206539B (en) * | 2020-10-19 | 2022-08-05 | 珠海金山网络游戏科技有限公司 | Game role sharing method and device |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8016675B2 (en) * | 2002-02-07 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | Network-based game system and method |
JP3952896B2 (en) | 2002-07-30 | 2007-08-01 | キヤノン株式会社 | Coordinate input device, control method therefor, and program |
WO2004096397A1 (en) * | 2003-04-29 | 2004-11-11 | Koninklijke Philips Electronics N.V. | Game has locally saved pointer to state saved elsewhere |
US20070021216A1 (en) * | 2005-07-19 | 2007-01-25 | Sony Ericsson Mobile Communications Ab | Seamless gaming method and apparatus |
CN101385016A (en) | 2005-12-23 | 2009-03-11 | 因坎多公司 | Systems and method for multi-media transfer |
US20070191104A1 (en) | 2006-02-14 | 2007-08-16 | Leviathan Entertainment, Llc | Online Game Environment that Facilitates Sponsorship Contracts |
US8454442B2 (en) | 2006-02-14 | 2013-06-04 | Leviathan Entertainment, Llc | Player assistance system for a video game |
US8075404B2 (en) | 2006-07-03 | 2011-12-13 | Microsoft Corporation | Multi-player gaming |
CN101115019B (en) | 2006-07-28 | 2010-05-12 | 中国科学院声学研究所 | Peer-to-peer networking file sharing service network structure |
US8333641B2 (en) | 2006-12-14 | 2012-12-18 | Sullivan C Bart | Wireless video game system and method |
US20090118016A1 (en) * | 2007-11-01 | 2009-05-07 | Guy Ben-Artzi | System and method for mobile games |
US20090163272A1 (en) * | 2007-12-21 | 2009-06-25 | Microsoft Corporation | Connected gaming |
US8409010B2 (en) | 2009-05-05 | 2013-04-02 | Microsoft Corporation | Massively multiplayer game with shared gameplay experience |
US8226485B1 (en) | 2009-08-13 | 2012-07-24 | Zynga Inc. | Multiuser game with friend proxy automated characters |
JP5193242B2 (en) | 2010-03-11 | 2013-05-08 | 株式会社コナミデジタルエンタテインメント | Game system, game part execution support method, and program |
US8438294B2 (en) | 2010-04-07 | 2013-05-07 | Apple Inc. | Application programming interface, system, and method for collaborative online applications |
US9595161B2 (en) * | 2010-11-14 | 2017-03-14 | Nguyen Gaming Llc | Social gaming |
US20120142429A1 (en) | 2010-12-03 | 2012-06-07 | Muller Marcus S | Collaborative electronic game play employing player classification and aggregation |
US8328643B1 (en) | 2011-09-26 | 2012-12-11 | Zynga Inc. | Crew creation for quest progression |
US10086292B2 (en) | 2011-08-02 | 2018-10-02 | Zynga Inc. | Low-friction response in a social game |
US20130041790A1 (en) * | 2011-08-12 | 2013-02-14 | Sivakumar Murugesan | Method and system for transferring an application state |
EP2853299B1 (en) * | 2011-09-29 | 2020-07-22 | Sony Interactive Entertainment Europe Limited | Game assistance system and method |
US8956211B2 (en) * | 2012-03-08 | 2015-02-17 | Tipping Point Group, Llc | Method and system for linking casino games and on-line social network games |
US8882588B2 (en) * | 2012-03-21 | 2014-11-11 | Sony Computer Entertainment America Llc | Method and apparatus for use in reserving a position within a simulation for another user |
US9672051B2 (en) | 2013-02-19 | 2017-06-06 | Amazon Technologies, Inc. | Application programming interface for a sharing service |
US8954611B2 (en) * | 2013-03-21 | 2015-02-10 | Nextbit Systems Inc. | Mechanism for sharing states of applications and devices across different user profiles |
-
2013
- 2013-02-19 US US13/770,299 patent/US9731206B2/en active Active
-
2017
- 2017-08-11 US US15/675,281 patent/US20210220746A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140235326A1 (en) | 2014-08-21 |
US9731206B2 (en) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9731206B2 (en) | Delegating video game tasks via a sharing service | |
CA2901694C (en) | Delegating video game tasks via sharing service | |
US10536492B2 (en) | Application programming interface for a sharing service | |
US10434417B1 (en) | Changing user experience using application events and selected actions | |
JP5968366B2 (en) | Method and system for implementing a game center with player specific options and statistics | |
US8961315B1 (en) | Providing tasks to users during electronic game play | |
WO2012166631A1 (en) | Extensible architecture for navigating a hierarchy | |
US10543422B1 (en) | Providing synchronized and integrated video gaming | |
JP2010523206A (en) | Context Gamer Options menu | |
US20120309510A1 (en) | Personalized information for a non-acquired asset | |
US9985999B1 (en) | Changing an application between a single-user session and a multi-user session | |
AU2015100300A4 (en) | Methods and systems for providing a game center having player specific options and statistics | |
KR20140089460A (en) | Method and mobile device for providing item | |
US20150112782A1 (en) | Methods and Systems for Unified Vault and Rewards within Real Money Applications | |
CN114053695A (en) | Game data sharing method and device, electronic equipment and readable medium | |
KR20140132034A (en) | Method of processing a user interface for purchasing a item, Computer readable storage medium of recording the method and a user's device | |
CN110138832A (en) | A kind of online business object sending method, device, medium and electronic equipment | |
KR20220061766A (en) | Method, apparatus and computer program for providing advertisement in online game |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AMAZON TECHNOLOGIES, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PARACHA, SALMAN AFTAB;STEPHENS, CHRISTOPHER ANDREW;KUO, CALVIN YUE-REN;AND OTHERS;SIGNING DATES FROM 20170816 TO 20171129;REEL/FRAME:044331/0024 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |