Method and system for saving snapshots of gameplay executed on a game cloud system and used to later initiate gameplay execution by any user
The system allows users to capture and utilize gameplay snapshots for efficient navigation in cloud-based gaming, addressing navigation challenges by enabling direct access to desired game sections and optimizing server resources.
Patent Information
- Application Number
- JP2024102927
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2017-01-20
- Filing Date
- 2024-06-26
- Publication Date
- 2025-10-24
- Estimated Expiration
- 2037-05-12
AI Technical Summary
In cloud-based gaming, users often face difficulty in navigating video games with multiple options, leading to dead ends or undesirable outcomes without prior knowledge, requiring exhaustive exploration to find suitable directions.
A system and method for capturing and storing snapshots of gameplay across multiple users, generating a timeline for display, and enabling users to jump to specific points in the game using these snapshots, allowing seamless traversal and preview of gameplay.
Enables users to efficiently navigate complex games by previewing and jumping to desired sections, reducing repetitive play and optimizing server resources by starting gameplay from intermediate points, thereby enhancing user experience and server efficiency.
Smart Images

Figure 0007759999000001 
Figure 0007759999000002 
Figure 0007759999000003
Abstract
Description
[Technical Field]
[0001] A method and system for saving snapshots of gameplay that can be used to later initiate gameplay execution by any user, executed on a game cloud system. [Background technology]
[0002] Cloud-based systems use computing resources (hardware and software) to deliver services over a network (e.g., the Internet). In the context of gaming, the services enable streaming of content to remote clients, where most processing occurs on a server and can be distributed. Input provided at the remote client then drives the execution of the video game without the need for dedicated game hardware at the client's location. Cloud-based gaming has therefore become increasingly popular, as users find it easier to access more video game titles without complex hardware limitations and game providers find it easier to manage game code from a centralized location.
[0003] When a user is progressing through gameplay of a video game that may present multiple options that lead to different outcomes, it can be difficult to determine which direction to steer the gameplay. For example, a user may want to avoid directions that do not lead to any apparent progress in gameplay, but without prior knowledge obtained through an external source, the user cannot avoid certain directions that result in dead ends. In some cases, a user may exhaust all possible directions that the video game may present in a certain portion of the game before finding a suitable direction that leads to an outcome that advances the gameplay. In a video game, it may be desirable to avoid playing all possible directions. It is in this context that embodiments of the present disclosure arise. Summary of the Invention
[0004] Embodiments of the present disclosure relate to systems and methods that store snapshots generated at various points during gameplay by multiple users of a video game, generate a timeline that is displayable to the users during gameplay of the video game, and use the snapshots to jump to gameplay by the same or another user beginning at a point corresponding to a selected snapshot. Several inventive embodiments of the present disclosure are described below.
[0005] In one embodiment, a method for traversing a game world is disclosed. The method includes capturing multiple snapshots generated from multiple instances of a video game executed in association with multiple users. The method further includes displaying a first timeline of a first user playing the video game, the first timeline including snapshot images of at least one user's video game progress relative to a current rendered image of the first instance of the video game being executed in association with the first user. The method also includes displaying multiple first snapshot images associated with the first user in the first timeline in multiple first thumbnails, the multiple first snapshots including at least one rendered image illustrating the first user's past progress relative to the current rendered image. The method further includes displaying multiple second snapshots associated with a second user in multiple second thumbnails, the multiple second snapshots including at least one rendered image illustrating the second user's progress at a point in the video game after the current rendered image.
[0006] In another embodiment, a method for traversing a game world is disclosed. The method includes executing a first instance of a video game on a game cloud system associated with a first user playing the video game. The method includes capturing a plurality of first snapshots of a first plurality of rendered images generated in association with the execution of the first instance of the video game, each of the first snapshots being associated with a unique point of progression within the video game. The method further includes capturing a plurality of second snapshots of a second plurality of rendered images generated in association with the execution of a second instance of the video game associated with a second user playing the video game. The method further includes displaying a timeline showing the progress of the first user and the second user playing the video game, the timeline being displayed concurrently with current rendered images generated from the execution of the first instance.
[0007] In yet another embodiment, a game cloud system configured for traversing a game world is disclosed. The game cloud system includes: a game server configured to manage multiple virtual game engines configured to execute multiple instances of a video game associated with multiple users playing the video game, the virtual game engines configured to capture multiple snapshots of rendered images generated from the execution of the multiple instances, and corresponding snapshots enabling execution of the instance of the video game starting from the corresponding snapshot. The game cloud system includes a snapshot data store for storing the multiple snapshots. The game cloud system includes: a first virtual game engine configured to execute a first instance of the video game associated with a first user, the first virtual game engine configured to generate a first timeline for the first user playing the video game, the first timeline including a plurality of first snapshot images including at least one rendered image illustrating a past progress of the first user compared to a current rendered image of the first instance, and a plurality of second snapshots associated with a second user, the plurality of second snapshots including at least one rendered image illustrating the second user's progress at a point in the video game after the current rendered image.
[0008] In another embodiment, a method for traversing a game world is disclosed. The method includes executing a video game via a streaming game service, where the video game is rendered on a display of a user device communicating over a network, the user device being associated with a first user. The method includes generating multiple scenes of the video game for the display of the user device, where the scenes progress through different paths in the video game. The method also includes generating a timeline for display with the currently rendered scene, where the timeline includes a plurality of first thumbnails representing snapshot images associated with progression of the video game by the first user and a plurality of second thumbnails representing snapshot images associated with future progression of the video game by a second user, where selecting a first thumbnail within the plurality of second thumbnails enables jumping to a future state of the video game rendered for the second user.
[0009] Other aspects of the present disclosure will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention. [Brief explanation of the drawings]
[0010] The present disclosure may be best understood by referring to the following description taken in conjunction with the accompanying drawings.
[0011] [Figure 1] 1 illustrates a system used to store snapshots generated during gameplay of a multi-user video game run over a cloud gaming network, according to one embodiment of the present disclosure.
[0012] [Figure 2]1 illustrates a system diagram for enabling access to and playing video games stored in a game cloud system (GCS), storing snapshots generated in connection with gameplay, previewing stored gameplay via snapshots, traversing video games via snapshots, and jumping to stored gameplay via snapshots, according to an embodiment of the present disclosure.
[0013] [Figure 3A] 1 is an illustration of a timeline displayed during a user's gameplay of a video game, the timeline showing snapshot images of the user's gameplay and snapshot images of another user's gameplay, according to one embodiment of the present disclosure.
[0014] [Figure 3B] 1 is an illustration of one or more timelines displayed during a user's gameplay of a video game, according to one embodiment of the present disclosure, the timelines showing snapshot images of one or more users' gameplay of the video game.
[0015] [Figure 4A] 1 is an illustration of a timeline showing snapshot images of gameplay of at least one user of a video game, where selection of a snapshot allows for an enlarged view of the snapshot image, according to one embodiment of the present disclosure.
[0016] [Figure 4B] 1 is an illustration of a timeline, each showing snapshot images of gameplay of at least one user of a video game, where selection of a snapshot allows for an enlarged view of the snapshot image, according to one embodiment of the present disclosure.
[0017] [Figure 5A]1 is an illustration of a node graph of gameplay of a video game, according to one embodiment of the present disclosure, the node graph being displayed along with a timeline during gameplay of the video game by a user, the timeline showing snapshot images of the user's gameplay and snapshot images of another user's gameplay.
[0018] [Figure 5B] 1 is an illustration of a universal node graph or node tree showing all possible paths available in a video game, according to one embodiment of the present disclosure.
[0019] [Figure 5C] 1 is an illustration of a node graph showing a node hierarchy generated in association with snapshots captured during gameplay of a video game, according to one embodiment of the present disclosure, the node graph being displayed along with a timeline during gameplay of the video game by a user, the timeline showing snapshot images of the user's gameplay and snapshot images of another user's gameplay.
[0020] [Figure 5D] 1 is an expanded illustration of a node graph showing a snapshot node hierarchy generated in association with snapshots captured during gameplay of a video game having a non-linear progression portion, according to one embodiment of the present disclosure.
[0021] [Figure 6A] 1 is an illustration of a cluster of snapshot nodes linearly aligned in proximity to a selected snapshot node, which may be selected through a timeline or a node graph, according to one embodiment of the present disclosure.
[0022] [Figure 6B]1 is an illustration of a cluster of snapshot nodes non-linearly aligned in proximity to a selected snapshot node, which may be selected through a timeline or a node graph, according to one embodiment of the present disclosure.
[0023] [Figure 6C] 1 is an illustration of a snapshot image corresponding to a cluster of snapshot nodes closely aligned to a selected snapshot, according to one embodiment of the present disclosure. [Figure 6D] 1 is an illustration of a snapshot image corresponding to a cluster of snapshot nodes closely aligned to a selected snapshot, according to one embodiment of the present disclosure. [Figure 6E] 1 is an illustration of a snapshot image corresponding to a cluster of snapshot nodes closely aligned to a selected snapshot, according to one embodiment of the present disclosure. [Figure 6F] 1 is an illustration of a snapshot image corresponding to a cluster of snapshot nodes closely aligned to a selected snapshot, according to one embodiment of the present disclosure.
[0024] [Figure 7] 1 is an illustration of snapshots captured during gameplay of a video game and storing each of those snapshots in one or more master files of a snapshot database, according to one embodiment of the present disclosure.
[0025] [Figure 8] 1 is an illustration of multiple segments of a user's gameplay of a video game, including an intervening jump by the user to a separate jump gameplay based on a snapshot captured during another gameplay of the video game by the same or another user, according to one embodiment of the present disclosure.
[0026] [Figure 9]1 is a flow diagram illustrating steps in a method for traversing a game world according to one embodiment of the present disclosure.
[0027] [Figure 10] FIG. 1 illustrates components of a head-mounted display according to an embodiment of the present disclosure.
[0028] [Figure 11] 1 is a block diagram of a gaming system configured to provide video streams to one or more clients over a network, according to various embodiments of the present invention; DETAILED DESCRIPTION OF THE INVENTION
[0029] Although the following detailed description includes many specific details for purposes of illustration, anyone skilled in the art will appreciate that numerous variations and modifications to the following details are within the scope of the present disclosure. Accordingly, the aspects of the present disclosure set forth below are set forth without any loss of generality to, and without imposing limitations on, the claims that follow this description.
[0030] Generally speaking, various embodiments of the present disclosure describe systems and methods, particularly when implemented on a cloud-based gaming system, that provide for saving snapshots generated during gameplay of a video game by multiple users, navigating the video game, previewing the video game, and jumping to selected points within the video game to experience another user's gameplay. The snapshots may be displayed in a timeline for the user playing the video game. A selected snapshot within the timeline includes metadata and / or information that enables instantiation of an instance of the video game at a jump point within the video game corresponding to the selected snapshot. Even though the requesting user may be different from the original user, the video game instance beginning at the jump point is executed in conjunction with the original user generating the selected snapshot during previously executed gameplay. Embodiments of the present disclosure provide for a method for loading and executing a previously unavailable instance of a video game of the same or another user. In this manner, users can actively preview other users' gameplay without jeopardizing their own gameplay. Also, users can actively preview their own previous gameplay without jeopardizing their own current gameplay. It is in this context that embodiments of the present disclosure arise.
[0031] Accordingly, embodiments of the present disclosure provide additional user benefits for game applications. For example, embodiments of the present disclosure allow users to jump to any portion of a game application based on previous gameplay of that game application. For example, in some embodiments, through selection of a snapshot image (e.g., a screenshot), corresponding snapshot information is accessed to enable jumping to the game application. In this manner, users can quickly play mini-sections of a game application for enjoyment or discover how to navigate different sections of the game application. Access to mini-sections is achieved without the user having to load the game application using an initial startup sequence. Furthermore, because users do not have to play the entire game to reach sections of interest (e.g., level bosses or a battle with the final boss) but can go directly to these sections of interest for quick gameplay, popular and obsolete applications may attract renewed interest. Yet other embodiments achieve the above results and provide additional benefits and advantages, including better utilization of the game server, because instead of executing an initial sequence from the beginning (e.g., when a user first loads a game application from scratch), the game server only needs to execute the game application starting directly from an intermediate point or jump point. Thus, by directly uploading the code necessary to start the game from the selected jump point, the game server skips the initial sequence and any further executable sequences to proceed to the jump point within the game application.
[0032] With the above general understanding of various embodiments, exemplary details of the embodiments will now be described with reference to the various figures.
[0033] Throughout the specification, references to "video games" are meant to represent any type of interactive application that is directed through the execution of input commands. For purposes of example only, interactive applications include applications for games, word processing, video processing, video game processing, etc. Furthermore, the terms video games and game applications are interchangeable.
[0034] FIG. 1 illustrates a system used to save snapshots generated during gameplay of a multi-user video game running over a cloud gaming network, preview gameplay of one or more users of the video game, traverse the video game, and jump to selected points within the video game to experience gameplay of the same or another user, according to one embodiment of the present disclosure.
[0035] In some embodiments, the cloud gaming network may include multiple virtual machines (VMs) running on a host machine's hypervisor, with one or more virtual machines configured to execute a game processor module that supports single-player or multiplayer video games and utilizes hardware resources available to the host's hypervisor. In other embodiments, the cloud gaming network is configured to support multiple local computing devices supporting multiple users, where each local computing device may be running an instance of a video game, such as in a single-player or multiplayer video game. For example, in a multiplayer mode, while the video game is running locally, the cloud gaming network simultaneously receives information (e.g., game state data) from each local computing device and distributes that information across one or more local computing devices accordingly. This allows each user to interact with other users (e.g., through corresponding characters in the video game) in the gaming environment of the multiplayer video game. In this manner, the cloud gaming network coordinates and connects the gameplay of each user within the multiplayer gaming environment.
[0036] As shown, system 10 includes a game server 205 executing a game processor module 210 that provides access to multiple interactive video games. Game server 205 may be any type of server computing device available in the cloud and may be configured as one or more virtual machines running on one or more hosts. For example, game server 205 may manage the virtual machines that support game processor 210.
[0037] The client device 100 is configured to request access to a video game over a network 150, such as the Internet, and to render an instance of the video game executed by a game server 205 and delivered to a display device 12 associated with a user 5. For example, the user 5 may interact with an instance of the video game running on a game processor 210 through the client device 100. The client device 100 may also include a game execution engine 111 configured for local execution of the video game. The client device 100 may receive input from various types of input devices, such as a game controller 6, a tablet computer 11, a keyboard, gestures captured by a video camera, a mouse, a touchpad, etc. The client device 100 may be any type of computing device having at least a memory and a processor module connectable to the game server 205 over the network 150. Some examples of the client device 100 include a personal computer (PC), a game console, a home theater device, a general-purpose computer, a mobile computing device, a tablet, a phone, or any other type of computing device that may interact with the game server 205 to execute an instance of the video game.
[0038] Client device 100 is configured to receive images delivered by game server 205 or rendered locally by game execution engine 111, and to display the rendered images on display 12. For example, the rendered images may be associated with an instance of a video game running on game execution engine 211 of game server 205 associated with user 5. In particular, client device 100 is configured to interact with the instance of the video game associated with user 5's gameplay, such as by input commands used to drive gameplay.
[0039] Further, client device 100 is configured to interact with game server 205 to capture and store snapshots of user 5's gameplay as he or she plays the video game. In addition, client device 100 is configured to interact with game server 205 to display a timeline including snapshots of user 5's gameplay and snapshots of saved gameplay of other users playing the same video game. Each snapshot allows user 5 to jump to the saved gameplay at a jump point within the video game corresponding to the selected snapshot. In this case, the saved gameplay may, in one embodiment, be associated with another user different from user 5.
[0040] More specifically, game processor 210 of game server 205 is configured to generate snapshots of user 5's gameplay as he plays the video game. Other game processors of game server 205 associated with other virtual machines are configured to execute instances of the video game associated with the gameplay of other users and to capture snapshots during those gameplays. As previously introduced, the instances of the video game are executing on game execution engine 211 in association with user 5's gameplay.
[0041] The snapshot generator 212 is configured to capture multiple snapshots generated from the gameplay of the user 5. Each snapshot provides information that enables execution of an instance of the video game starting from a point in the video game associated with the corresponding snapshot. The snapshots are generated automatically during gameplay of the video game by the user 5. In an embodiment, each portion of the snapshot is stored in an associated database that is configured independently or under the data store 140. In another embodiment, the snapshots may be generated manually upon command by the user 5. In this manner, any user through selection of a corresponding snapshot can jump to the gameplay of the user 5 at the point in the video game associated with the corresponding snapshot. The game processor 210 is configured to access information in the database 140 to enable jumping to any user's saved gameplay based on the corresponding snapshot. That is, a requesting user can begin playing the video game at the jump point corresponding to the selected snapshot using the game character of the gameplay of the original user who generated and saved the snapshot.
[0042] In particular, each snapshot includes metadata and / or information to enable execution of an instance of the video game beginning at a point in the video game corresponding to the snapshot. For example, in user 5's gameplay, a snapshot may be generated at a particular point in the progression of the video game, such as mid-level. Relevant snapshot information is stored in one or more databases in database 140. Pointers may be used to associate information in each database that corresponds to a particular snapshot. In this manner, another user wishing to experience user 5's gameplay may select a snapshot that corresponds to a point in the video game that interests them.
[0043] A snapshot contains a snapshot image of the scene rendered at that point. The snapshot images are stored in snapshot image database 146. The snapshot images, presented in the form of thumbnails in the timeline, provide a view into the user's gameplay at a corresponding point in the user's progression through the video game.
[0044] A snapshot also includes game state data that defines the state of the game at that point. For example, the game state data may include game characters, game objects, game object attributes, game attributes, game object states, graphic overlays, etc. In this way, the game state data enables the generation of the game environment that existed at the corresponding point in the video game. The game state data may also include the state of any devices used to render gameplay, such as the state of the CPU, GPU, memory, register values, program counter values, programmable DMA state, data buffered for DMA, audio chip state, CD-ROM state, etc. The game state data may also identify which portions of executable code need to be loaded to run the video game from that point. Not all game state data need be captured and stored; only enough data is required for the executable code to start the game at the point corresponding to the snapshot. The game state data is stored in game state database 145.
[0045] The snapshots also include user-saved data. Generally, the user-saved data includes information that personalizes the video game for the corresponding user. This includes information related to the user's character, whereby the video game is rendered with a character (e.g., shape, appearance, clothing, weaponry, etc.) that may be unique to that user. In this manner, the user-saved data enables the generation of a character for the corresponding user's gameplay, with the character having a state corresponding to the point in the video game associated with the snapshot. For example, the user-saved data may include a game difficulty level selected by the user 5 when playing the game, a game level, character attributes, character location, number of remaining lives, total possible number of available lives, defensive measures, prizes, a time counter value, etc. The user-saved data may also include, for example, user profile data that identifies the user 5. The user-saved data is stored in database 141.
[0046] In addition, the snapshot also includes random seed data generated by the artificial intelligence (AI) module 215. The random seed data may not be part of the original game code, but may be added to the overlay to make the game environment appear more realistic and / or appealing to the user. That is, the random seed data provides additional features for the game environment that will be present at the corresponding point in the user's gameplay. For example, AI characters may be randomly generated and provided in the overlay. The AI characters are not associated with any user playing the game, but are placed in the game environment to enhance the user experience. By way of example, these AI characters may randomly walk down the streets in an urban scene. In addition, other objects may be generated and provided in the overlay. For example, clouds in the background and birds flying in space may be generated and provided in the overlay. The random seed data is stored in the random seed database 143.
[0047] In this manner, another user wishing to experience user 5's gameplay may select a snapshot that corresponds to a point in the video game of interest. For example, a user's selection of a snapshot image presented at a node in the timeline or node graph can cause jump execution engine 216 of game processor 210 to access the corresponding snapshot, instantiate another instance of the video game based on the snapshot, and execute the video game beginning at the point in the video game corresponding to the snapshot. In this manner, the snapshot allows the requesting user to jump to user 5's gameplay at the point corresponding to the snapshot.
[0048] Game processor 210 includes a timeline generator 213 that displays a timeline of User 5 playing a video game. The timeline includes snapshot images of at least one user (e.g., User 5 and / or other users) progressing through a video game, the snapshot images presented in relation to a current rendered image of the instance of the video game being executed in association with User 5. Each snapshot image corresponds to a particular snapshot captured at a particular point in User 5's progression through the video game. For example, snapshots and snapshot images generated in association with User 5's gameplay correspond to points in the video game that occur before the current rendered image of the instance of the video game being executed in association with User 5's gameplay. That is, User 5 has previously played through those points in the video game, and multiple snapshots and snapshot images have been generated corresponding to those points.
[0049] Additionally, snapshots generated in association with the second user's gameplay and their corresponding snapshot images may correspond to points in the video game that occur before or after the current rendered image of user 5's gameplay. That is, the second user may be further along in playing the video game than user 5. Thus, snapshots corresponding to the second user's gameplay may occur at points in the video game before the current rendered image associated with user 5's gameplay, or may occur at points after the current rendered image. The timeline may include snapshot images corresponding to points in the video game that occur after the current rendered image and / or may include snapshot images corresponding to points in the video game that occur before the current rendered image.
[0050] The snapshots presented in the timeline may, in one embodiment, be used by user 5 to access other users' gameplay. That is, selection of a selected snapshot in the timeline allows user 5 to jump to another user's gameplay at the point corresponding to the snapshot. For example, jump game execution engine 216 collects snapshots (e.g., metadata and / or information) from various databases (e.g., from database 140) to begin execution of the video game at the point corresponding to the selected snapshot. In one embodiment, user 5's gameplay is not affected by jumping to another user's gameplay.
[0051] In another embodiment, snapshots presented in the timeline may be used by user 5 to access points in the user's own gameplay that occur before the current rendered image. For example, snapshots may be generated during user 5's gameplay and presented in the timeline. User 5's selection of a snapshot may enable execution engine 216 to gather snapshots (e.g., metadata and / or information) from various databases (e.g., from database 140) to begin execution of the video game at an earlier point corresponding to the selected snapshot. In this manner, user 5 may return to and replay a portion of the video (e.g., an earlier level). In one embodiment, user 5's current gameplay is not affected by jumping to the same user's earlier gameplay.
[0052] The game processor 210 also includes a node graph generator 214. As the user 5 progresses through the video game, a path through the game is generated. Different users may generate different paths through the video game, especially if the video game is complex. A path may be part of a common logical path established by the video game, where the common logical path includes all paths any user may take while playing the video game. Thus, a path associated with user 5's gameplay may be a subset of the common logical path and defines user 5's progression through the video game. Logical nodes may be defined at various points within the common logical path. For example, by way of illustration, nodes may be established at the start of the game, the start of a level, the end of the game, the end of a level, a branching point that allows a user to choose between two or more optional paths, a key point within the video game, etc.
[0053] Additionally, nodes may be defined at various points in a path associated with user 5's gameplay, or more generally, in a path associated with any user's gameplay. For example, nodes may be defined in relation to snapshots. These nodes may be defined at periodic intervals (e.g., every minute, every five minutes, every ten minutes, etc.). Additionally, these nodes may be manually defined by the user. By way of example, these nodes may also be established at the start of a game, the start of a level, the end of a game, the end of a level, branching points that allow a user to choose between two or more optional paths, key points in a video game, etc.
[0054] FIG. 2 illustrates a system diagram 200 for enabling access and playing of video games stored in a game cloud system (GCS) 201, according to an embodiment of the present disclosure. Generally speaking, the game cloud system GCS 201 may be a cloud computing system operating over a network 220 to support multiple users. Additionally, the GCS 201 is configured to store snapshots generated during gameplay of a video game by multiple users, which can be used to launch an instance of the video game for a requesting user, beginning at a point in the video game corresponding to the snapshot. In addition, the GCS 201, through the use of snapshots, allows users to traverse the video game and preview past and future scenes in the video game. Furthermore, the snapshots allow a requesting user to jump to a selected point in the video game through a corresponding snapshot to experience another user's gameplay. In particular, the system 200 includes the GCS 201, one or more social media providers 240, and a user device 230, all of which are connected over the network 220 (e.g., the Internet). One or more user devices may be connected to network 220 to access services provided by GCS 201 and social media provider 240 .
[0055] In one embodiment, the game cloud system 201 includes a game server 205, a video recorder 271, a tag processor 273, an account manager 274 including a user profile manager, a game selection engine 275, a game session manager 285, user access logic 280, a network interface 290, and a social media manager 295. The GCS 201 may further include multiple game storage systems, such as a game state store, a random seed store, a user saved data store, a snapshot store, etc., which may generally be stored in the data store 140. Other game storage systems may include a game code store 261, a recorded game store 262, a tag data store 263, a video game data store 264, and a game network user store 265. In one embodiment, the GCS 201 is a system that may provide game applications, services, game-related digital content, and interconnectivity between systems, applications, users, and social networks. The GCS 201 may communicate with the user device 230 and the social media provider 240 via the network interface 290 through a social media manager 295. The social media manager 295 may be configured to associate one or more friends. In one embodiment, each social media provider 240 includes at least one social graph 245 that describes the social network connections for the user.
[0056] User U0 can access services provided by GCS 201 through game session manager 285, where user U0 may be representative of user 5 in FIG. 1 . For example, account manager 274 enables authentication and access to GCS 201 by user U0. Account manager 274 stores information about member users. For example, a user profile for each member user may be managed by account manager 274. In this manner, member information may be used by account manager 274 for authentication purposes. For example, account manager 274 may be used to update and manage user information about member users. Additionally, game titles owned by member users may be managed by account manager 274. In this manner, video games stored in data store 264 are made available to any member user who owns those video games.
[0057] In one embodiment, a user, e.g., user U0, may access services provided by GCS 201 and social media provider 240 via user device 230 through a connection on network 220. User device 230 may include any type of device having a processor and memory, wired or wireless, portable or non-portable. In one embodiment, user device 230 may be a smartphone, a tablet computer, or a hybrid that provides touchscreen capabilities in a portable form factor. One exemplary device may include a mobile phone device that runs an operating system and provides access to a variety of applications (apps) that can be acquired via network 220 and run on a local portable device (e.g., smartphone, tablet, laptop, desktop, etc.).
[0058] The user device 230 includes a display 232 that acts as an interface for the user U0 to send input commands 236 and to display data and / or information 235 received from the GCS 201 and social media providers 240. The display 232 may be configured as a touchscreen or a display typically provided by a flat panel display, a cathode ray tube (CRT), or other device capable of rendering a display. Alternatively, the user device 230 may have its display 232 separate from the device, similar to a desktop or laptop computer.
[0059] In one embodiment, user device 130 is configured to communicate with GCS 201 to enable user U0 to play a video game. In some embodiments, GCS 201 may include multiple virtual machines (VMs) running on a host machine's hypervisor, with one or more virtual machines configured to execute a game processor module that utilizes hardware resources available to the host's hypervisor. For example, user U0 may select an available video game in video game data store 264 (e.g., by game title, etc.) via game selection engine 275. The video game may be played in a single-player gaming environment or in a multiplayer gaming environment. In this manner, the selected video game is enabled and loaded for execution by game server 205 on GCS 201. In one embodiment, game play is first performed on GCS 201 such that user device 230 receives a stream of game video frames 235 from GCS 201, and user input commands 236 that drive the game play are sent back to GCS 201. Video frames 235 received from the streaming gameplay are shown on the display 232 of the user device 230. In other embodiments, the GCS 201 is configured to support multiple local computing devices supporting multiple users, with each local computing device running an instance of a video game, such as a single-player video game or a multiplayer video game. For example, in a multiplayer gaming environment, while the video game is running locally, the cloud gaming network simultaneously receives information (e.g., game state data) from each local computing device and distributes that information across one or more local computing devices accordingly. Each user can thereby interact with other users (e.g., through their corresponding characters in the video game) within the gaming environment of the multiplayer video game.In this way, the cloud gaming network coordinates and connects the gameplay for each of the users within the multiplayer gaming environment.
[0060] In one embodiment, after user U0 selects an available game title to play, a game session for the selected game title may be launched by user U0 through game session manager 285. Game session manager 285 first accesses the game state store in data store 140 to retrieve the saved game state, if any, of the last session (for the selected game) played by user U0. This allows user U0 to restart game play from the stopping point of the previous game play. Once the resume or start point is identified, game session manager 285 may notify the game execution engine in game processor 210 to execute game code for the selected game title from game code store 261. After the game session is launched, game session manager 285 may pass game video frames 235 (i.e., streaming video data) to a user device, e.g., user device 230, via network interface 290.
[0061] During gameplay, the game session manager 285 may communicate with the game processor 210, the recording engine 271, and the tag processor 273 to generate or save a recording (e.g., video) of the gameplay or gameplay session. In one embodiment, the video recording of the gameplay may include tag content entered or provided during gameplay and other game-related metadata. Tag content may also be saved via snapshots. The video recording of the gameplay, along with any game metrics corresponding to the gameplay, may be saved in the recorded game store 262. Any tag content may be saved in the tag data store 263.
[0062] During game play, the game session manager 285 may communicate with the game processor 204 to deliver and retrieve user input commands 236 that are used to affect the outcome of corresponding game play of the video game. Input commands 236 entered by the user U0 may be transmitted from the user device 230 to the game session manager 285 of the GCS 201. The input commands 236, including input commands used to drive game play, may include user interactive input, such as including tag content (e.g., text, images, video recording clips, etc.). The game input commands and any user play metrics (e.g., the length of time the user plays the game) may be stored in a game network user store. Selection information regarding game play for the video game may be used to enable features that may be available to the user.
[0063] As gameplay is performed on the GCS 201 by multiple users, information generated and stored from those gameplays allows any requesting user to experience the gameplay of other users, particularly as the gameplay is performed on the GCS 201. In particular, the GCS 201 is configured to store snapshots generated by the gameplay of users playing video games through the GCS 201. In the case of user U0, the user device provides an interface that allows user U0 to interact with the video game during gameplay. Snapshots of user U0's gameplay are generated and stored on the GCS 201.
[0064] The user device 130 is also configured to provide an interface that allows the user U0 to preview the video game using snapshots. For example, by viewing gameplay or snapshot images of one or more users, the user U0 can preview one or more portions of the video game at any point within the video game, as long as another user has already played through that point and generated a snapshot. Furthermore, as described in more detail below, the snapshots and / or snapshot images presented within the timeline may provide the user with a preview into the video game at various points without necessarily playing the video game at that point. For example, by viewing the snapshots and / or snapshot images, the timeline may indicate the direction in which the video game should continue at a particular point within the video game. If the direction would lead the user to a dead end or an undesirable outcome, the user may choose to avoid taking the path within the video game that leads to those points corresponding to the snapshots. On the other hand, if the direction would lead to a desirable outcome (e.g., loot, an interesting battle, or dialogue), the user may choose to take the path within the video game that leads to those points corresponding to the snapshots. Additionally, user device 130 is configured to provide an interface that allows user U0 to traverse the video game. For example, as described in more detail below, the snapshots may be used to generate a node graph that shows paths taken by one or more users progressing through the video game. A user may interface with the node graph to display snapshots and / or snapshot images at selected nodes in the node graph that provide the user with a preview into the video game at various nodes in the video game without necessarily playing the video game at those points.If a direction in the node graph leads the user to a dead end or an undesired outcome, the user may choose to avoid taking node paths in the video game that lead to those points corresponding to the nodes. On the other hand, if a direction in the node graph leads to a desirable outcome, the user may choose to take node paths in the video game that lead to those points corresponding to the nodes.
[0065] Additionally, user device 130 is configured to provide an interface that allows user U0 or another user to jump to a selected point in the video game using a snapshot generated in the user U0's or another user's gameplay. In this manner, user U0 can experience any other user's gameplay or return to review and / or replay their own gameplay. That is, the requesting user plays the video game using the character used in and corresponding to the gameplay, with the corresponding gameplay snapshot.
[0066] 3-8 are described within the context of a user playing a video game. Generally, the video game may be any interactive game that responds to user input. For illustrative purposes only, the video game described with respect to FIGS. 3-8 may be an adventure game in which a character encounters various obstacles and challenges while traveling through a world. The character may travel through the video game on foot or through any mechanized means. Additionally, the character may encounter one or more challenges that may lead to delays as the character progresses through the video game.
[0067] Throughout the specification, the use of time in one or more of the timelines of Figures 3-8 is meant to indicate the progression of a video game, and not necessarily to indicate a measure of the length of time a user plays the video game.
[0068] 3A is an illustration of a timeline 310a displayed during a user's gameplay of a video game, the timeline showing snapshot images of the user's gameplay and snapshot images of another user's gameplay, according to one embodiment of the disclosure. Further, the timeline 310a, in one embodiment, is generated by the timeline generator 213 of the game processor 210 of the game server 205 of the GCS 201. The timeline 310a may be used to quickly preview previous gameplay by the user and the gameplay of one or more other users.
[0069] While the game execution engine 211 of the game processor 210 instantiates an instance of a video game, a window 350a and a timeline 310a are displayed. For example, window 300 shows a rendered image 305 of a user's gameplay of a particular video game. The rendered image is associated with a current point in the user's progression through the video game. As shown, in rendered image 305, a character 306 representing the user in the gameplay is riding a motorcycle. The character 306 is traveling along a road through a mountainous region and encounters a rockfall 307. In the user's gameplay, the character is selected to be a male with short, spiky hair, as shown in rendered image 305. At this point, the user may be dissatisfied with their progression in the video game and may want to explore a way to navigate around the rockfall. For example, the user may want to preview another user's gameplay to explore solutions that allow the user to pass the rockfall and to explore future experiences within the video game at points beyond the user's current progression, as represented by rendered image 305. Exploration of these other gameplays may be enabled through timeline 310a, and more specifically, snapshot images and their corresponding snapshots as displayed in timeline 310a. As previously introduced, the snapshots enable execution of the corresponding video game instance beginning at a point in the video game associated with the corresponding snapshot. In particular, further selection by the user of a snapshot image presented in the timeline or at a node in the node graph enables jump execution engine 216 of game processor 210 to access the corresponding snapshot, instantiate another instance of the video game based on the snapshot, and execute the video game beginning at the point in the video game corresponding to the snapshot.
[0070] The timeline 310a is displayed in a window 350a. Generally, multiple timelines containing snapshot images of one or more gameplays of one or more users may be displayed in the window 350a. As shown in FIG. 3A, the window 350a may display a single timeline 310a, where the timeline 310a includes snapshot images of gameplay by the user and snapshot images of gameplay by another user. The snapshot images are presented as thumbnails and / or in a window and are displayed in relation to the current rendered image of the video game within the user's gameplay. For example, a snapshot image occurring before the point in the video game represented by the current rendered image 305 may be displayed to the left of the empty thumbnail 340c, and a snapshot image occurring after the point may be displayed to the right of the thumbnail 340c. As will be further described with respect to FIG. 3B, the window 350a may also display additional timelines containing snapshot images of one or more gameplays of the video game by one or more users. The timelines indicate the progression of the video game and do not necessarily indicate a measure of the length of time the users play the video game.
[0071] In particular, timeline 310a includes snapshot images of the user's gameplay. For example, multiple snapshot images (e.g., images 340a, 340b, ...) corresponding to snapshots captured during the user's gameplay are displayed as thumbnails and / or in the windowed timeline 310a. Viewing the snapshot images together provides a brief history of the user's gameplay. For example, snapshot image 340a shows character 306 riding a motorcycle down a ramp or cliff. At this point in the game, character 306 has two available lives, as indicated by the two circles in the upper left corner of snapshot image 340a. Later, in the user's progression through the video game, snapshot image 340b shows character 306 (still with two available lives) riding the motorcycle through a forest and approaching a mountain. Current rendering image 305 shown in window 300 indicates that character 306 has reached the mountain and is approaching falling rocks 307. At this point, character 306 has two available lives.
[0072] Because the rendered image 305 is currently displayed and represents the user's progress through the video game, only snapshot images representing previous gameplay by the user are displayed. These snapshot images typically represent points in the game that occur before the point represented by the currently displayed rendered image 305. For illustrative purposes only, the total number of possible lives for a character provides a rough estimate of the user's progress in the video game. However, some video games may allow a user to progress forward or backward as they play the video game. In any case, only snapshot images corresponding to previous rendered images may be displayed in the timeline 310a for the user, in one embodiment. These snapshot images are displayed in relation to the current rendered image 305 in the timeline 310a, which is represented by an empty thumbnail 340c. For example, the snapshot images may be displayed to the left of the empty thumbnail 340c. Additionally, ordering may be achieved between two snapshot images by displaying a first snapshot image captured at a first point in the video game to the left of a second snapshot image that occurs at a second point that occurs after the first point in the user's overall progression through the video game. In another embodiment, thumbnail 340c may have drawn image 305 positioned to indicate the user's current progression through timeline 310a.
[0073] Snapshot images representing points in the video game occurring before the current rendered image 305 may be displayed in a manner that distinguishes them from snapshot images representing points in the video game occurring after the current rendered image 305, i.e., future points. In one embodiment, the snapshot images may be grayed out, i.e., snapshot images corresponding to points occurring before the current rendered image 305 are displayed with a lower brightness and / or resolution than snapshot images corresponding to points occurring later in the progression of the video game. Other embodiments are supported, such as showing snapshot images with cross-hatching or blurring the snapshot images.
[0074] Additionally, the timeline 310a includes snapshot images of gameplay by another user. These other users may, in one embodiment, be friends discovered through the social media manager 295. The snapshot images may also correspond to gameplay by random users or highly interested users, such as users with high scores in a video game. For illustrative purposes only, in the example provided with respect to FIGS. 3-8, these other users are referred to as friends of the current user, such as a first friend F1, a second friend F2, and a third friend F3. The first friend F1 plays a character 308 depicted as a woman with long hair. The second friend F2 plays a character 309 depicted as a man with a full head of hair. The third friend F3 plays a character 303 depicted as a bald man.
[0075] In particular, timeline 310a includes snapshot images of gameplay by a second user (e.g., friend F1 playing female character 308). For example, multiple snapshot images (e.g., images 360d, 360e, 360f, ...) corresponding to snapshots captured during gameplay by the second user are displayed in the thumbnails and / or windowed timeline 310a. These snapshot images are displayed in relation to the current rendered image 305. For example, snapshot images 360d, 360e, and 360f, displayed to the right of blank thumbnail 340c, occur at a point in the video game after the current rendered image 305. Snapshot images (e.g., snapshot images 360a, 360b, and 360c) that are not shown in timeline 310a but occur at points in the video game around or before the current rendered image may also optionally be shown, as will be further described with respect to timeline 310b displayed in window 350b of FIG. 3B .
[0076] The snapshot images, viewed together, provide a short history of the second user's (e.g., friend F1's) gameplay at a future point occurring after the current rendered image 305. For example, snapshot image 360d shows character 308 figuring out how to cross a river and with three available lives. Further along in the video game, character 308, now with four available lives, is battling a bear in snapshot image 360e. Further along in the video game, character 308, now with five available lives, is shown driving a car through the desert in snapshot image 360f.
[0077] In one embodiment, the timeline may be modified depending on the user's progress through the video game and the available snapshot images. For example, snapshot images that occur too far in the past (e.g., for the user or other users) relative to the current rendered image 305 may not be displayed, and snapshot images that occur too far in the future (e.g., for other users) may also not be displayed. Additionally, as other users are changed and / or replaced, the corresponding snapshot images are updated in the timeline.
[0078] 3B is an illustration of multiple timelines displayed during a user's gameplay of a video game, according to one embodiment of the present disclosure, where the timelines show snapshot images of one or more users' gameplay of the video game. The timelines are displayed in window 350b. In one embodiment, window 350b is displayed with a current rendering image 305 of the user's gameplay. For example, timelines 310b, 320, and 330 are displayed in window 350b in one embodiment and are generated by timeline generator 213 of game processor 210 of game server 205 of GCS 201. The timelines may be used to quickly preview previous gameplay by the user and the gameplay of one or more other users (e.g., friends, random users, users of interest, etc.).
[0079] As shown, timeline 310b includes snapshot images (e.g., 340a, 340b, ...) of a user's gameplay, as described above with respect to Figure 3A. These snapshot images may be displayed in thumbnail form as shown in Figure 3B and are positioned relative to the current rendered image 305. For example, these snapshot images may be displayed to the left of the current rendered image 305, as described above, and are generally positioned such that the first snapshot images are located to the left of later-occurring snapshot images.
[0080] Additionally, timeline 310b includes multiple snapshot images (360a, 360b, 360c, 360d, 360e, 360f, ...) corresponding to snapshots captured during gameplay by a second user (e.g., first friend F1 playing female character 308). These snapshot images are displayed in timeline 310b within thumbnails and positioned relative to the current drawn image 305, as described above. More specifically, snapshot images (e.g., snapshot images 360a, 360b, and 360c) corresponding to gameplay by friend F1 and occurring at points in the video game surrounding or before the current drawn image may also, optionally, be included below the user's snapshot images (e.g., 340a, 340b). Snapshot images (e.g., 360a, 360b, ...) occurring at points in the progression of the video game before the current drawn image may be positioned to the left of empty thumbnail 340c. As indicators of game progression, snapshot images 360a-c indicate that a character has two available lives. Snapshot image 360c occurs at approximately the same point in the video game progression as current rendered image 305 and is located approximately below empty thumbnail 340c. For example, snapshot image 360c and current rendered image 305 both show corresponding characters each with two available lives. Furthermore, as previously described, the snapshot images in timeline 310b may be generally arranged such that a first snapshot image is located to the left of a later-occurring snapshot image. Arrow 399 may link to a snapshot image associated with a second user, friend F1.
[0081] Viewed together, the snapshot images provide a brief history of the gameplay of the first friend F1. For example, friend F1's character 308 is first shown riding a motorcycle on a city road in snapshot image 360a. Later, as friend F1 progresses through the video game, snapshot image 360b shows character 308 (with two available lives) riding the motorcycle through a forest and approaching a mountain. Further along in the video game, character 308 is riding the motorcycle on a mountain road in snapshot image 360c. For example, friend F1's character 308 may have maneuvered around a rockfall that the user's character 306 is currently encountering in rendered image 305. Later, character 308 (with three available lives) is shown approaching a river in snapshot image 360d. Progressing still further, character 308 (with four possible lives) is shown battling a bear in snapshot image 360e, and then character 308 (with five possible lives) is shown driving a car through the desert in snapshot image 360f.
[0082] Window 350b shows another timeline 320 related to the gameplay of another user, such as a second friend F2. As shown, timeline 320 includes snapshot images (370a, 370b, 370c, 370d, 370e, ...) of friend F2's gameplay. These snapshot images may be displayed in thumbnails and, in one embodiment, are positioned relative to the current drawn image 305. For example, snapshot images (e.g., 370a, 370b, ...) occurring at points in the progression of the video game before the current drawn image are positioned approximately to the left of blank thumbnail 340c. These snapshot images may be easily identified by graying out the displayed content, as described above. Snapshot image 370c occurs at approximately the same point in the progression of the video game as the current drawn image 305 and is positioned approximately below blank thumbnail 340c. Snapshot images (e.g., 370d, 370e, ...) that occur at points in the progression of the video game after the current rendered image are positioned approximately to the right of blank thumbnail 340c. Additionally, as previously mentioned, the snapshot images in timeline 320 may be arranged such that, generally, the first snapshot image is located to the left of snapshot images that occur later.
[0083] Viewed together, the snapshot images provide a brief history of the gameplay of a second friend F2. For example, friend F2's character 309 (with two available lives) is first shown walking across a river in snapshot image 370a. Later, in friend F2's progression through the video game, snapshot image 370b shows character 309 traversing a forest on foot and approaching a higher mountain range. Progressing even further, character 309 (with two available lives) is shown reaching the top of the wrong mountain in snapshot image 370c. Still later, character 309 (with four available lives) is shown free climbing up a steep mountain side in snapshot image 370d, and then still later in snapshot image 370e, crossing a lake by boat.
[0084] Window 350b shows another timeline 330 related to the gameplay of another user, such as a third friend F3. As shown, timeline 330 includes snapshot images (380a, 380b, 380c, 380d, 380e, 380f, ...) of friend F3's gameplay. These snapshot images may be displayed in thumbnails and, in one embodiment, are positioned relative to the current drawn image 305. For example, snapshot images (e.g., 380a, 380b, ...) occurring at points in the progression of the video game before the current drawn image are positioned approximately to the left of blank thumbnail 340c. These snapshot images may be easily identified by graying out the displayed content, as described above. Snapshot image 380c occurs at approximately the same point in the progression of the video game as the current drawn image 305 and is positioned approximately below blank thumbnail 340c. Snapshot images (e.g., 380d, 380e, 380f, ...) that occur at points in the progression of the video game after the current rendered image are positioned approximately to the right of blank thumbnail 340c. Additionally, as previously mentioned, the snapshot images in timeline 320 may be arranged such that, generally, the first snapshot image is located to the left of snapshot images that occur later.
[0085] Viewed together, the snapshot images provide a brief history of the gameplay of a third friend F3. For example, friend F3's character 303 (with two available lives) is first shown riding a motorcycle through a forest in snapshot image 380a. Later, in friend F3's progression through the video game, snapshot image 380b shows character 303 (with two available lives) wading across a river. Still further in friend F3's progression through the video game, character 3039 (with three available lives) is shown kayaking down a waterfall in snapshot image 380c. Still later, character 303 is shown crossing a lake in a motorboat in snapshot image 380d, and then, in snapshot image 380e, character 303 is shown docking the boat. Still later in the progression, character 303 (with five available lives) is shown flying to his next destination in an airplane in snapshot image 380f.
[0086] Although referred to as different timelines, all timelines within the window may be referred to as one timeline belonging to the user playing the video game. Additionally, timelines associated with other users (e.g., portions of timelines 320, 330, and 310) may be replaced with the new user's timeline in one embodiment. In this manner, a rotating snapshot image of the user may be shown to the user. In another embodiment, more timelines may be shown, or fewer timelines may be shown for clarity.
[0087] In yet another embodiment, the timeline in window 350a or 350b may display snapshot images related to an entirely different game or content. For example, the timeline may be shown to attract a user to preview and try another video game or to view other content. In another embodiment, one or more timelines of one or more users may be shown to a new user interested in playing a video game. The new user may not necessarily be playing the video game, but may be interested in previewing the gameplay of others who are playing the video game. In other cases, the new user may be new to the video game. By way of example, the method for previewing a game world may be implemented in a video game having a linear or non-linear progression according to one embodiment of the present disclosure. In particular, the method includes capturing multiple snapshots generated from multiple gameplays of multiple users playing the video game. As previously described, each snapshot enables execution of an instance of the video game beginning at a point in the video game corresponding to the snapshot, such as the location in the video game where the snapshot was captured. The method includes generating for display a first timeline for a first user, the first timeline including a first plurality of thumbnails including a first plurality of snapshot images of the first user's gameplay as it progresses through the video game. The method may include presenting other timelines. For example, the method may include generating for display a second timeline for a second user, the second timeline including a second plurality of thumbnails including a second plurality of snapshot images of the second user's gameplay as it progresses through the video game.
[0088] In embodiments, the timeline generated for one or more users may be associated with a video game having a linear progression, multiple linear progressions, a non-linear progression, or a combination thereof. For example, in a video game having a linear progression, points in the video game may occur linearly relative to one another, such that a first point precedes a second point in the corresponding linear progression. Branching points may present two or more linear extensions, each associated with its own linear progression. In other embodiments, in a video game having a non-linear progression, points in the video game may not have any relationship to one another, since the video game is non-linear with respect to the progression of the video game. For example, a non-linear video game may have multiple storylines that operate in parallel without any relationship to one another, such as a video game exploring different parts of a world or different entire worlds, and may or may not have a primary goal. In that case, the timeline shown for a particular user may correspond to the same storyline involving the user or to other storylines. Furthermore, storylines may operate without any relationship to one another, such that corresponding storylines may be generated in a non-linear manner within a portion of a world being explored or even within an entire world being explored. In the case of a non-linear video game, the snapshots shown in a particular timeline for another player may be arbitrarily positioned relative to the current rendered image for the user, the timeline for the user, or the timelines for the other players. In yet other embodiments, a video game may include linear and non-linear portions. For example, in the case of a video game in which different parts of the world or different entire worlds are explored in a non-linear fashion, exploration of a particular part of the world or within one entire world may follow a linear progression.
[0089] 4A is an illustration of a timeline 310a presented in window 350a, according to one embodiment of the present disclosure. Timeline 310a shows snapshot images of gameplay of at least one user's video game, first introduced in FIG. 3A, with selection of a snapshot enabling a close-up view of the snapshot image. As previously described, window 300 shows a current rendered image 305 of a user's gameplay of the video game. Timeline 310a includes snapshot images (340a, 340b, ...) of gameplay by a user (playing character 306) at points in the progression of the video game occurring before the current rendered image 305. Timeline 310a also includes snapshot images (360d, 360e, 360f, ...) of gameplay by another user (e.g., friend F1 playing character 308) at points in the progression of the video game occurring after the current rendered image 305.
[0090] More specifically, the snapshot images are presented in the timeline 310a via thumbnails. Therefore, depending on the size of the thumbnail, the rendered image may be too small to show much detail. A user may select a snapshot for enlargement. For example, in one embodiment, a user may roll a cursor 490a over a thumbnail presenting snapshot image 360e. Other methods, such as touching the displayed snapshot image on a touchscreen, are supported for selecting a snapshot image for enlargement. A window 410 is generated and displayed in approximately the same area as the selected thumbnail. The window 410 displays the rendered snapshot image 360e, where the window 410 is large enough to give the user a better view of the snapshot image 360e.
[0091] For clarity, a blown-up image of snapshot image 360e is presented in box 420. However, in one embodiment, through further selection of window 410 and / or snapshot image 360e, box 420 may be displayed as a window showing an even larger version of snapshot image 360e than that presented in window 410. As previously described, snapshot image 360e is associated with the gameplay of another user (e.g., friend F1 playing female character 308) and shows character 308 encountering a bear. By scrolling through the snapshot images presented in timeline 310a and viewing the enlarged images, the user can preview friend F1's gameplay. In this manner, further selection by the user of a selected snapshot image presented in timeline 310a and / or a node in a node graph (described below) enables jump execution engine 216 of game processor 210 to access the corresponding snapshot, instantiate another instance of the video game based on the snapshot, and execute the video game beginning at the point in the video game corresponding to the snapshot. For example, a user may experience the gameplay of another user (eg, friend F1), or may return to re-experience and / or re-play their own gameplay.
[0092] FIG. 4B is an illustration of one or more timelines presented in window 350b, each showing snapshot images of gameplay of at least one user's video game, with selection of a snapshot allowing for a close-up view of the snapshot image, according to one embodiment of the present disclosure. The timelines shown in FIG. 4B were previously described with respect to FIG. 3B and include timelines 310b, 320, and 330. In particular, timeline 310b includes snapshot images of gameplay by a user playing character 306 at points in the progression of the video game occurring before the current rendered image 305. Timeline 310b further includes snapshot images corresponding to snapshots captured during gameplay by friend F1 playing character 308 at points in the progression of the video game occurring before, approximately contemporaneously with, and after the current rendered image 305. The snapshot images, in one embodiment, are presented within thumbnails. Timeline 320 includes snapshot images (370a, 370b, 370c, 370d, 370e, ...) corresponding to snapshots captured during gameplay by friend F2 playing character 309 at points in the progression of the video game occurring before, approximately contemporaneously, and after current rendered image 305. Timeline 330 includes snapshot images corresponding to snapshots captured during gameplay by friend F3 playing character 303 at points in the progression of the video game occurring before, approximately contemporaneously, and after current rendered image 305. As shown in Figure 4B, interaction with the snapshot images for timeline 320 will be further described; therefore, the snapshot images in timelines 310b and 330 have not been labeled for ease of understanding.
[0093] More specifically, snapshot images are presented in timelines 310b, 320, and 330 via thumbnails. Thus, depending on the size of the thumbnail, the rendered image may be too small to show much detail. A user may select a snapshot in any of the timelines for enlargement. FIG. 4A illustrates selection of a snapshot image in a timeline associated with a user, and FIG. 4B illustrates selection of a snapshot image for enlargement in one of the timelines corresponding to a friend. For example, in one embodiment, a user may rotate cursor 490b over a thumbnail presenting snapshot image 370d in timeline 320. Other methods, such as touching the displayed snapshot image on a touchscreen, are supported for selecting a snapshot image for enlargement. An enlarged window 460 is generated and displayed in approximately the same area as the selected thumbnail. Window 460 displays the rendered snapshot image 370d, where window 460 is large enough (e.g., larger than the corresponding thumbnail) to give the user a better view of snapshot image 370d.
[0094] For clarity and understanding, a blown-up image of snapshot image 370d is presented in box 465. However, in one embodiment, through further selection of window 460 and / or snapshot image 370d, box 465 may be displayed as a window showing an even larger version of snapshot image 370d than that presented in window 460. As previously described, snapshot image 370d is associated with friend F2's gameplay and shows character 309 free climbing up a sheer rock face. By scrolling through the snapshot images presented in timeline 320 and viewing the enlarged image, the user can preview friend F2's gameplay. In this manner, further selection by the user of a selected snapshot image presented in timeline 320 or a node in the user's corresponding node graph (described in further detail below) enables jump execution engine 216 of game processor 210 to access the corresponding snapshot, instantiate another instance of the video game based on the selected snapshot, and execute the video game beginning at the point in the video game corresponding to the selected snapshot.
[0095] 5A is an illustration of a node graph 530 of gameplay of a video game, which is displayed during a user's gameplay of the video game along with timelines 310b, 320, and 330 in window 350b, first introduced in FIG. 3B. In particular, timeline 310b shows snapshot images of a user's gameplay playing character 306 and another user's (e.g., friend F1 playing character 308) gameplay at a point in time, timeline 320 shows snapshot images of gameplay by friend F2 playing character 309, and timeline 330 shows snapshot images of gameplay by friend F3 playing character 303. The snapshot images in each of the timelines are presented in relation to a current rendered image 305 (e.g., as represented by blank thumbnail 340c), as previously described. Window 300 also shows a current rendered image 305 of the user's gameplay of the video game.
[0096] As shown in FIG. 5A , snapshot image 360e is selected for enlargement in timeline 310b (e.g., through interaction with a corresponding thumbnail). Snapshot image 360e is associated with friend F1's gameplay at a point in the game that occurs after (e.g., in the future) the current drawing image 305. In particular, in one embodiment, a user may rotate cursor 590a over a thumbnail representing snapshot image 360e in timeline 310b. Other methods, such as touching the displayed snapshot image on a touchscreen, are supported for selecting a snapshot image for enlargement. Window 410, as described above, shows enlarged snapshot image 360e.
[0097] Additionally, a node graph 530 is presented in window 510. In one embodiment, node graph 530 includes a plurality of nodes corresponding to various paths a character may take as the user progresses through the video game. In one embodiment, node graph 530 may be presented in window 510 as a universal graph showing all of the nodes of the video game, as further described in FIG. 5B. In one embodiment, node graph 530 may be presented to include a subset of the nodes of the universal graph, which shows nodes of particular interest, as further described with respect to FIG. 5C. For example, the subset of nodes may correspond to snapshot images displayed in one or more timelines.
[0098] Although window 510 is shown in the lower right corner, it is understood that window 510 may be located anywhere within window 300. Additionally, window 510 may be large enough to provide suitable information for viewing. A further option may be to display window 510 as an enlarged window within window 300 or on full screen.
[0099] As shown, node 572 in node graph 530 may be automatically highlighted (e.g., thickened, enlarged, colored, etc.) in response to a user selecting snapshot image 360e in timeline 310a for enlargement. Node 572 approximately corresponds to the location of snapshot image 360e and provides context within the video game universe for snapshot image 360e. That is, because a user is interested in snapshot image 360e, through selection of snapshot image 360e in timeline 310b, window 410 is presented showing an enlarged view of snapshot image 360e, and node 572 is highlighted in node graph 530. Node 572 may also be highlighted through a user's manual selection of a node in node graph 530.
[0100] In summary, node graph 530 may be presented in window 510, automatically or in response to a user request, where node graph 530 includes a subset of nodes that correspond to the snapshot images presented in timeline 310a. Further, node 572 may be presented and highlighted, where node 572 indicates the approximate location of a point in gameplay of the video game that corresponds to snapshot image 360e. Additionally, snapshot image 360e corresponding to node 372 may be presented in window 520, where window 520 may be larger than window 410 and show an even larger view of snapshot image 360e.
[0101] In this way, the user is presented with a multi-dimensional view of the video game. For example, the user is presented with a current view of their own gameplay via the rendered image 305. The user's gameplay (e.g., through the rendered image 305 and snapshot images in the user timeline) is also presented alongside one or more timelines of one or more users that show short previews of other users' gameplay throughout various points in the progression of the video game. The snapshot images may be presented along with a node graph showing a path through the video game associated with the snapshot image in the timeline, or all possible paths through the video game.
[0102] 5B is an illustration of a universal node graph 550 or node tree showing all possible paths available in a video game, according to one embodiment of the present disclosure. Universal node graph 550 may be displayed in window 510 of FIG. 5A. For example, a video game may include a start point, represented by node 551, and an end point, represented by node 552. While one end point is shown, generally, a universal node graph may have one or more end points, representing one or more options for ending the video game. Additionally, a video game may have one or more start points represented in a corresponding universal node graph.
[0103] Universal node graph 550 includes a plurality of nodes (e.g., logical nodes) that define various logical paths (also referred to herein as "paths") that a character can take as the user progresses through the video game. For example, logical path 511 is defined between nodes 502 and 503. In addition, universal node graph 550 may also include a subset of nodes. For example, node graph 530, which is a subset of universal node graph 550, includes nodes and paths that correspond to the snapshot images displayed in timeline 310b of FIG. 5B. Node graph 530 may also be shown in window 510 of FIG. 5A.
[0104] Multiple logical paths may be configured to progress linearly from node to node through universal graph 550. For example, a user may move linearly through node graph 530 along logical paths 514 and 511 between nodes 501 and 503 (e.g., from node 510 to node 502 to node 503). That is, when traversing between nodes 501 and 503, no other logical paths can be taken.
[0105] Additionally, multiple logical paths may be configured to progress non-linearly from node to node. For example, a user moves non-linearly through node graph 550 when reaching node 503 along logical path 511. In particular, two options are available at node 503, where in a first option, the character may take path 512 and in a second option, the character may take path 513. Different outcomes may result from taking the two different paths.
[0106] The progression of the video game may be generally defined by a universal timeline 529 that begins at a time or mark 521 associated with a start point 551 and ends at a time or mark 522 associated with an end point 552. The use of time in the timeline 529 is meant to indicate the progression of the video game and not necessarily to indicate a measure of the length of time a user plays the video game. As the user moves through the universal node graph 530 from node to node, times or marks representing the same may be located on the timeline 529. For example, in the timeline 529, node 501 may be represented as mark 523, and node 503 may be represented as mark 524. Progression may be measured from left to right along the timeline 529. Illustratively, node 501 occurs before node 503 in the progression of the video game. Thus, mark 523 representing node 501 is displayed to the left of mark 524 representing node 503. Additionally, progression may be further indicated in relation to the timeline 529 and node graph 550 through various character values associated with the user, as previously described. For example, progression may be measured by how many possible lives are available to a character, or how much points or cash a character has accumulated.
[0107] FIG. 5C is an expanded illustration of node graph 530 first introduced in FIG. 5A , showing a snapshot node hierarchy generated in association with snapshots captured during gameplay of a video game, according to one embodiment of the present disclosure. In one embodiment, node graph 530 is displayed along with one or more timelines (e.g., timelines 310 b, 320, and 330) during a user's gameplay of the video game. For example, node graph 530 may be displayed in window 510 of FIG. 5A or in an even larger window. An expanded view of node graph 530 displayed in window 510 is shown in FIG. 5C for illustrative purposes. An outline of window 350 b is presented in FIG. 5C to reference the snapshot images and corresponding snapshot nodes in node graph 530.
[0108] In particular, a snapshot node corresponds to a point during gameplay of the video game at which a snapshot was captured. Generally, a snapshot may be captured at a node of universal node graph 550. Thus, a snapshot node may align with a node in universal node graph 550. However, some snapshot nodes may not align with a node in universal graph 550, such as when a snapshot is captured between two nodes in the universal graph (e.g., in the middle of a logical path). For example, snapshot node 561 may be captured between two nodes in universal node graph 550 (corresponding to nodes 560 and 562).
[0109] Node graph 530 includes a plurality of snapshot nodes that define various actual paths taken by a character during the gameplay of a corresponding user. For example, path 579 is defined between snapshot nodes 560 and 561. Path 579 is shown as being taken in the user's gameplay and in the gameplay of friend F1. Node graph 530 may represent one or both of linear and non-linear paths as defined in the gameplay of one or more users.
[0110] Node graph 530, in one embodiment, corresponds to the snapshot images shown in timelines 310b, 320, and 330 displayed in window 350. For example, snapshot node 562 corresponds to box 340c representing the user's current drawn image 305, snapshot node 507 corresponds to snapshot image 360e of friend F1, snapshot node 595 corresponds to snapshot image 370a of friend F2, and snapshot node 565 corresponds to snapshot image 380d of friend F3. In this manner, the user is presented with at least two or more views of the associated video game, including the snapshot image and current drawn image in the timeline and the snapshot nodes in node graph 530. By cross-referencing the current drawn image 305 (with its position in node graph 530) with the other snapshot images (and their positions in node graph 530), the user can understand what paths are available to the user around the point in the video game associated with the current drawn image. Thus, the user can direct the character 306 within the video game's universal node graph 550 and node graph 530. In this manner, the user can pass from one point to another within the game. In one embodiment, snapshot nodes are shown in Figure 5C, but the node graph 530 may include nodes that define a logical path as defined by the universal node graph 550.
[0111] More specifically, the path taken by the user playing character 306 is shown by fine-resolution dotted line A. For example, the user traverses between snapshot nodes 560, 561, and 562. From snapshot node 562, the user's character 306 takes a first route that travels upward from snapshot node 562 through snapshot nodes 563 and 564, and a second route that travels downward from snapshot node 562 through snapshot node 565 to 569 (e.g., from node 565 to node 566, node 567, node 568, and node 569). The path taken by friend F1's character 308 is shown by solid line B. For example, friend F1's character 308 travels along the path defined by snapshot nodes 560, 561, 562, 565, 570, 571, 572, 573, and 574. Additionally, the path taken by friend F2's character 308 is indicated by coarsely dotted line C. For example, friend F2's character 308 is traveling along the path defined by snapshot nodes 595, 596, 597, 598, 599, and 569. The path taken by friend F3's character 303 is indicated by line D, which shows that character 303 is traveling along the path defined by snapshot nodes 560, 581, 582, 583, 565, 584, 585, and 568.
[0112] In progressing through the video game, the user may have taken a path that occurs beyond snapshot node 562 or in the future of snapshot node 562, which corresponds to a point in the video game associated with current rendered image 305, but which returns to snapshot node 562. For example, a first route taken beyond snapshot node 562 and terminating at snapshot node 564 may have reached a dead end, and a second route taken beyond snapshot node 562 and terminating at node 569 may be unsatisfactory to the user. Snapshot images corresponding to snapshot nodes that occur beyond the current rendered image 305 associated with the user are not shown in timeline 310b, although they may be shown in other embodiments.
[0113] The user may have heard rumors about an exciting part of the video game (encountering a bear) in this area, but because they have previously missed the opportunity for that action, the user has returned to node 562 in their game progression. The user believes they can somehow reach the exciting part through node 562. Embodiments of the present disclosure provide a way for users to discover alternative paths through a video game by previewing other users' gameplay and unfolding potential routes that may be taken within the video game to reach the exciting part of the video game. For example, a user may preview snapshot images of friend F1 playing character 308 in timeline 310b and discover that an encounter with a bear occurs in association with snapshot node 507, which corresponds to snapshot image 360e. For reference, snapshot image 360e is shown in box 509. Without the introduction of snapshot images presented within the timeline and / or node graph, users would have a difficult time previewing and / or discovering these areas of interest.
[0114] In particular, a user may have discovered snapshot image 360e by viewing snapshot images in timeline 310b or by exploring node graph 530. For example, tag 507 may be shown next to snapshot node 572 in node graph 530 of FIG. 5C , which may have attracted the user's attention. By interacting with node 572 in node graph 530, a view of snapshot image 360e may be presented to the user, such as in window 520 of FIG. 5A . Also, by selecting snapshot node 572 in node graph 530, the corresponding snapshot image 360e in timeline 310b may be highlighted (e.g., bolded) to draw attention to it. In this manner, a user may rotate on the corresponding thumbnail to view an enlarged version of snapshot image 360e, as described above. In another embodiment, if the node graph 530 is presented in its own preferred window (e.g., full screen, or overlaid window 300), interaction with the snapshot node 572 may retrieve the snapshot image 360e in a separate window (not shown).
[0115] After previewing friend F1's gameplay and node graph 530, the user may wish to further explore the video game corresponding to snapshot image 360e, and more specifically, friend F1's gameplay. As previously described, embodiments of the present disclosure enable a user to jump to friend F1's gameplay. In particular, further selection by the user of snapshot image 360e via timeline 310b or node graph 53 enables jump execution engine 216 of game processor 210 to access the snapshot corresponding to snapshot image 360e, instantiate another instance of the video game based on the snapshot, and run the video game beginning at the snapshot and a point in the video game corresponding to snapshot image 360e (identified here as the jump point). In this manner, the user may fully experience the video game at node 507 (the bear encounter) through friend F1's gameplay. That is, the user jumps to friend F1's character 308 at jump node 572 and plays an instantiation of friend F1's gameplay beginning at the point in the video game corresponding to jump node 572 (corresponding to snapshot image 360e). Thus, the user can jump right into the most exciting part of the gameplay.
[0116] After experiencing friend F1's gameplay, the user may decide to attempt to travel to the same snapshot node 572 (the bear encounter) previously captured by friend F1's gameplay. Node graph 530 provides a view into the route taken by friend F1 to reach snapshot node 572 from the user's current location. The user's current location is node 562, which is associated with current rendered image 305. For example, the node graph indicates that travel between node 562 and snapshot node 572 is possible via snapshot nodes 565 and 570.
[0117] 5D is an expanded illustration of a node graph 540 showing a snapshot node hierarchy generated in association with snapshots captured during gameplay of a video game, according to one embodiment of the present disclosure. Node graph 540 may be related to the node graph of FIG. 5C, but is used to illustrate a timeline used in a video game having portions of non-linear progression. For example, gameplay within a level may be unrelated to gameplay within another level. Gameplay by different users within a single level may also be unrelated to each other with respect to the progression of the video game.
[0118] As shown in node graph 540, the video game may include four different levels playable within the video game. Traversal between levels is possible in the video game. For example, the gameplay of the user, friend 1, and friend 2 traverses all four levels. Friend 3's gameplay traverses three levels. Friend 4's gameplay traverses only two levels. Friend 5's gameplay traverses levels 3 and 4. As shown in FIG. 5D , the video game may begin at any level. For example, friend 4's gameplay begins at level 2 and remains at level 2. Friend 5's gameplay begins at level 3 and continues to level 4 without extending to any other levels. While some gameplays may overlap and exhibit some portion of a linear progression (e.g., the gameplay of the user and friend 1), other gameplays shown in FIG. 5D may exhibit non-linear progression through the video game. For example, friend 4's gameplay and progression through a video game is independent of friend 5's gameplay and progression through a video game.
[0119] 6A is an illustration of a cluster of snapshot nodes linearly aligned proximate to a selected snapshot node (e.g., snapshot node 572 associated with snapshot image 360e), according to one embodiment of the present disclosure, which snapshot node may be selected through timeline 310a or node graph 530. In particular, timeline 310a includes snapshot images (340a, 340b, ...) of gameplay by a user at points in the progression of the video game occurring before current drawing image 305 (represented by blank thumbnail 340c). Timeline 310a further includes snapshot images (360d, 360e, 360f, ...) corresponding to snapshots captured during gameplay by friend F1, as described above. Furthermore, each of the snapshot images corresponds to a snapshot node such as those presented in node graph 530.
[0120] The timeline 310a may show snapshot images selected from multiple snapshots captured during gameplay of the user and friend F1. The snapshots and snapshot images for friend F1 are used to illustrate the presentation of coarse and higher resolution snapshot images. For illustrative purposes, 100 snapshots may be captured during friend F1's gameplay and numbered 1 through 100 in the order they were captured. The timeline 310a may not have enough space to show all of the snapshot images corresponding to the captured snapshots. Therefore, only a subset of the snapshot images is presented in the timeline 310a. Furthermore, the snapshot images presented next to each other in the timeline 310a may not be captured consecutively and / or sequentially. For example, as shown in the timeline 310a of FIG. 6A, snapshot image 360e is numbered 50 in the order they were captured, and the snapshot image immediately to the right is snapshot image 360f, numbered 60. Thus, nine snapshot images were captured between snapshot image 360e and snapshot image 360f but are not shown in timeline 310a.
[0121] In one embodiment, finer-resolution snapshot images may be generated and presented for display based on the captured snapshots. In particular, further selection of a snapshot image, such as image 360e, through either timeline 310a or node graph 530 allows for presentation of higher-resolution snapshot images. Furthermore, in one embodiment, the snapshot images are presented in a node graph / tree structure illustrating the path taken by a user (e.g., friend F1) during gameplay. Each snapshot image represents a node, and the snapshot images are presented in the node graph structure. For example, a window may display snapshot nodes through their corresponding images, where the snapshot nodes are sequentially captured before and / or after the snapshot corresponding to the selected snapshot image 360e. As described above, snapshot image 360e corresponds to a jump point selected by the user to launch friend F1's gameplay. Before or after being selected as a jump point, the user may want to view various snapshot images related to snapshot image 360e.
[0122] As shown in FIG. 6A , a linear progression of snapshot images is presented in various thumbnails related to a selected snapshot image 360e. Snapshot image 360e and its corresponding snapshots are also referred to as jump points (JPs), as previously described. The selected snapshot image 360e and JP are associated with snapshots numbered 50 in the order of the captured snapshots. FIG. 6A illustrates four snapshot images 610, 360e, 615, and 620, corresponding to one snapshot captured before JP (snapshot JP-1), JP, and two snapshots captured after JP (snapshots JP+1 and JP+2). That is, the snapshot images correspond to snapshots numbered consecutively 49 through 52. For example, snapshot image 610 (JP-1), snapshot image 360e (JP), snapshot image 615 (JP+1), and snapshot image 620 (JP+2) are consecutively numbered 49 through 52. In this way, the user can see in high resolution the action in friend F1's gameplay around snapshot image 360e in a node graph configuration.
[0123] 6B is an illustration of a cluster of snapshot nodes nonlinearly aligned in proximity to a selected snapshot node (e.g., snapshot node 572 corresponding to snapshot image 360e), which may be selected through timeline 310a or node graph 530, as previously introduced with respect to FIG. 6A, according to one embodiment of the present disclosure. FIG. 6A illustrates a linear progression of the video game around jump point JP corresponding to snapshot image 360e, while FIG. 6B illustrates a nonlinear progression of the video game around JP.
[0124] For example, the snapshot images are presented in a node graph / tree structure illustrating the path taken by friend F1 during gameplay. Each snapshot image represents a node, and the snapshot images are presented in the node graph configuration. As shown in FIG. 6B, a nonlinear progression of snapshot images is presented in various thumbnails related to the selected snapshot image 360e, also referred to as JP of order 50. Eight snapshot images are shown. In particular, snapshot image 605 corresponds to snapshot node JP-2 of order 48. Also, snapshot image 610 corresponds to snapshot node JP-1 of order 49, which is a decision node illustrating the nonlinear configuration. Two choices are available, as represented by orders 50A-B. One choice originating from snapshot node JP-1 leads to snapshot image 613 of order 50B. The other choice originating from snapshot node JP-1 is a route to snapshot node JP, which corresponds to snapshot image 360e and order 50A. This route continues through consecutively numbered snapshot JP+1 (associated with snapshot image 615 and sequence 51) and snapshot JP+2 (associated with snapshot image 620 and sequence 52).
[0125] 6C-6F are illustrations of snapshot images described with respect to FIGS. 6A-6B corresponding to clusters of snapshot nodes aligned proximate to a selected snapshot, according to one embodiment of the present disclosure. For example, FIG. 6C shows snapshot image 610, illustrating character 308 used in friend F1's gameplay first encountering a bear as it leaves its cave. Snapshot image 610 corresponds to snapshot node JP-1 of order 49. FIG. 6D shows snapshot image 360e (associated with snapshot node JP and order 50) illustrating character 308 making contact and engaging the bear. Character 308 is shown holding a coiled rope, likely the only tool and / or weapon available to character 308. FIG. 6E shows snapshot image 615 (associated with snapshot node JP+1 and order 51) illustrating character 308 subduing the bear by tying each of the bear's legs to a tree using the rope. FIG. 6F shows snapshot image 620 (associated with snapshot node JP+2 and sequence 52) showing character 308 enjoying the fruits of his victory over the bear and potentially earning weapons and other reward items (e.g., coins, gems, etc.).
[0126] 7 is an illustration of snapshots captured during gameplay of a video game and storing each of those snapshots as a separate master file in data store 750, according to one embodiment of the present disclosure. These master files are not automatically erased or overwritten as a user progresses through the video game, as is typical in the industry. In this way, information and metadata related to each snapshot can be easily accessed at any time to present snapshot images (e.g., in a timeline), node graphs, and to enable jumping to jump points within the same or other users' gameplay.
[0127] For example, multiple snapshots may be captured in association with a particular user's gameplay. The snapshots may be numbered consecutively in the order of capture (i.e., 1 through N). As shown in FIG. 7, at least snapshot 711 (order 20), snapshot 712 (order 31), snapshot 713 (order 32), and snapshot 714 (order 33) may be captured.
[0128] Each snapshot contains sufficient information and / or metadata to load and run an instance of the video game beginning at a point in the video game corresponding to the snapshot. For example, each snapshot includes at least game state data stored in database 145, snapshot image data stored in database 146, random seed data stored in database 143, and user-saved data stored in database 141, as previously described. In one embodiment, the metadata includes input commands used to drive the instance of the video game between two consecutively ordered snapshots and between snapshots. Each snapshot is stored in a corresponding master file in data store 750, and the master file corresponding to a particular snapshot may include pointers to each of these databases for associated access. As shown, snapshot 711 is stored in master file 751, snapshot 712 is stored in master file 752, snapshot 713 is stored in master file 753, and snapshot 714 is stored in master file 754.
[0129] FIG. 8 illustrates multiple segments of a user's gameplay of a video game, including an mediated jump by the user to a separate jump gameplay based on a snapshot captured during another gameplay of the video game by the same or another user, according to one embodiment of the present disclosure. For example, a user playing a game with character 306, whose current rendered image 305 is displayed in window 300 as described above in connection with FIGS. 3-6 , may select to jump to friend F1's (with character 308) gameplay at a jump point (JP) defined by snapshot image 360e. Timelines 310a and / or 310b provide the user with a preview of snapshot image 360e. Furthermore, because snapshot image 360e may be associated (e.g., by highlighting) with its corresponding location in snapshot node 572, as described above, node graph 530 provides context for the snapshot image within the video game. The user's initiation of a jump to friend F1's and character 308's gameplay is enabled based on a snapshot captured at snapshot node 572 during friend F1's original gameplay. Initiating a jump may be possible through further selection of snapshot image 360e in timeline 310a or 310b, or through selection of node 572 in node graph 530. Support for initiating a jump to the same or another user's gameplay may be achieved through any means or method (e.g., a jump selection window, etc.).
[0130] In one embodiment, multiple snapshots are captured of the jump gameplay. Additionally, video recording of the jump gameplay may be captured and stored for later access. In this manner, any user may play the jump gameplay via any snapshot of the jump gameplay. In one embodiment, the snapshot images of the jump gameplay are placed on a timeline through which the jump gameplay may be launched, as described above.
[0131] A user's interaction with the video game may be described with respect to segments of user's gameplay 830. As shown, user's gameplay 830 includes a first segment 831 and a second segment 832. In particular, first segment 831 of user's gameplay 830 defines the user's current or initial interaction with the video game. Thus, current rendered image 305 of FIG. 3A may be associated with first segment 831. By way of example, snapshot node graph 810 shows a portion of node graph 530 described above in connection with FIG. 5C . The route taken by character 306 in first segment 831 of user's gameplay 830 is indicated by dashed line 811 and includes snapshot nodes 560, 561, and 562. Snapshot node graph 810 shows that character 306 has traveled further to the right of snapshot node 562 (e.g., progressed further) via one path 812 to nodes 563 and 564, and via a second path 813 to nodes 565 and 566, while the current rendered image 305 is associated with snapshot node 562, which, for illustration and clarity, indicates the end of first segment 831. This portion of the route taken by character 306 (ending at snapshot node 562) is also repeated in node graph 820. Node graph 820 shows the user's gameplay with character 306 up to the end of first segment 831.
[0132] At snapshot node 562, the user may choose to explore other points in the video game and select to jump to friend F1's gameplay (e.g., a further section of snapshot image 360e), as previously described. Friend F1's gameplay is indicated by a thick solid line 899 in snapshot node graph 810. At this point, first segment 831 of user's gameplay 830 is paused, and the user jumps to friend F1's gameplay at a point corresponding to snapshot node 572. Illustratively, the jump gameplay begins at a point where the character approaches and engages a bear. In particular, the instance of the video game executing user's gameplay 830 is paused (e.g., at the end of first segment 831), and an instance of the video game executing friend F1's jump gameplay beginning at the jump point (snapshot node 572) is instantiated based on the corresponding snapshot captured at snapshot node 572. A representation of the jump to node 572 is indicated by curved arrow 891. The jump gameplay is defined by jump segment 840.
[0133] In another embodiment, the user's gameplay 830 is saved and terminated at the end of the first segment 831 before beginning the jump gameplay. In this way, the user can return to the video game in the future and resume from the point corresponding to snapshot node 562 (e.g., the end of the first segment 831). That is, the user can effectively resume the game where it was paused.
[0134] In one embodiment, the instance of the video game executing the user's gameplay 830 is separate from the instance of the video game executing the jump gameplay through which the user interacts. In this case, the jump gameplay is based on the original gameplay of friend F1. Illustratively, snapshot node graph 850 shows the route taken by character 308 in jump segment 840 of the jump gameplay played by the user, where character 308 in the jump gameplay was originally generated and defined by friend F1's gameplay. The route taken in the jump gameplay is indicated by thick dashed line 896.
[0135] The route taken by character 308 in the jumping gameplay illustrated in node graph 850 begins at snapshot node 572 and continues successively through nodes 851, 852, and end node 859. End node 859 indicates the end of the video game instance executing the jumping gameplay. It is important to note that the route taken by character 308 in the jumping gameplay, indicated by dashed line 896 (including nodes 572, 851, 852, and 859), differs from the route 897 taken by character 308 in friend F1's gameplay, indicated in node graph 810 (including nodes 572, 573, and 574). That is, the jumping gameplay performed by the user differs from friend F1's previously stored gameplay because the user is providing new input commands to direct the jumping gameplay. For example, an unfortunate encounter with a bear may occur in jumping gameplay because the user may be quickly previewing the game at this point in their own gameplay 830 to decide whether or not to play this portion of the video game, while friend F1's gameplay may indicate a successful encounter with the bear.
[0136] In one embodiment, during jump gameplay, snapshots may be captured at each of the nodes shown in jump segment 840 (e.g., nodes 572, 851, 852, and 859). The jump gameplay and its associated snapshots may be stored for later access. Additionally, video recordings of jump gameplay may be recorded and stored. For example, a user may wish to review and instantiate jump gameplay generated by the user and associated with a video game. In other embodiments, a user may wish to review and instantiate jump gameplay associated with another video game, where the jump gameplay was generated by the user or another user. Additionally, any user may experience the user's jump gameplay through newly instantiated secondary jump gameplay via the captured snapshots. In particular, selected snapshots captured during jump gameplay may be used to instantiate an instance of a game application to execute secondary jump gameplay based on selected snapshots captured during primary jump gameplay. Thus, any user may be able to experience any previous jump gameplay generated by the same user, or experience the stored jump gameplay of another player.
[0137] After the jump gameplay is performed, the user's gameplay 830 may resume. The user is now previewing friend F1's gameplay and may wish to have their own character 306 reach the snapshot node 572 associated with the jump point. In this manner, the user's gameplay 830 may include a route directed toward the jump point, which will result in the character in the user's gameplay having the same bear encounter.
[0138] Snapshot node graph 820 illustrates the route taken by the character in the user's gameplay 830, which is now resumed. The resumption of gameplay 830 is defined by second segment 832, and the resumed gameplay is defined by thick dashed line 809. Thus, the entirety of the user's gameplay 830 is illustrated by first segment 8310 (dashed line 811) and second segment 832 (thick dashed line 809). In one embodiment, second segment 832 of gameplay 830 continues the paused instance of the video game. In another embodiment, because first segment 831 has ended, second segment 832 of gameplay 830 is executed on a new instance of the video game beginning at the point in the video game associated with snapshot 562. Second segment 832 begins at snapshot node 562 and continues consecutively through snapshot nodes 821, 822, 823, 824, and 829.
[0139] In node graph 820, snapshot node 823 roughly corresponds to snapshot node 572 associated with the jump point. For example, a user may wish to encounter a bear in their own gameplay 830. In particular, traversal to snapshot node 572 in the user's gameplay is possible by the user via snapshot node graph 530 and / or universal node graph 550. In particular, by reviewing snapshot node graph 530, the user may discover possible paths available between snapshot node 562 and snapshot node 572, which are encountered by other users (e.g., friend F1). Additionally, by reviewing universal node graph 550, the user may discover generic logical paths available between snapshot node 562 and snapshot node 572. In this manner, the user may traverse to snapshot node 823 (e.g., via nodes 821 and 822) and encounter the bear. It is important to note that nodes 821 and 822 are roughly aligned with snapshot nodes 565 and 570 originally captured during friend F1's gameplay, but need not coincide.
[0140] Snapshot nodes 823, 824, 829, etc. indicate the route taken in the user's gameplay 830 in the second segment 832, where the character 306 encounters and engages a bear. The route taken after the initial encounter with the bear in snapshot node 823 (including nodes 824, 829, etc.) may not match the route in the jumping game (e.g., nodes 572, 851, 852, and 859), nor may it match the route in friend F1's gameplay (e.g., nodes 572, 573, and 574), because the user's gameplay 830 has its own unique input commands that drive the video game.
[0141] A method for traversing a game world of a video game executing on a game network, along with a detailed description of the various modules of the game server and client devices communicating over the network, will now be described with reference to flow diagram 900 of Figure 9, according to one embodiment of the present disclosure. Flow diagram 900 illustrates the process and data flow of operations involved on the game server side for the purpose of generating information displayed over the network at the client devices.
[0142] The method begins at operation 910 and includes capturing a plurality of snapshots generated from a plurality of instances of a video game executed in association with a plurality of users. In particular, the instances of the video game are executed by one or more game processors 210 of one or more game servers 205 of FIG. 1. As each instance of the video game is executed, one or more snapshots are captured, which enable execution of the instance of the video game beginning at a point in the video game corresponding to the snapshot, as described above.
[0143] In particular, the snapshots include snapshot images that include rendered images generated by an instance of a video game executed in association with a corresponding user's gameplay, the rendered images depicting scenes of the video game corresponding to points within the video game, the points depicting the user's gameplay progression through the video game.
[0144] Additionally, the snapshots also contain game state data that enables the generation of an environment corresponding to that point in the video game, i.e., based on the snapshots, a corresponding scene and environment is generated and characters are instructed to interact with the environment through the user's gameplay.
[0145] Additionally, the snapshots include random seed data that provides additional characteristics about the scene and environment, as described above. For example, the cloud configuration and the movement of one or more generic characters may be uniquely generated for inclusion within the scene and environment associated with the user's gameplay. Thus, the cloud configuration and the movement of one or more generic characters may vary from instance to instance of the video game.
[0146] The snapshot also includes user-saved data that enables the generation of a character for the corresponding user's gameplay. The character has a first state that corresponds to the point in the video game at which the snapshot was captured. For example, the first state defines the character's appearance and type, the clothing the character wears, the level achieved for the character, the weaponry available to the character, and the character's life state at that point.
[0147] At operation 920, the method includes generating for display a first timeline of a first user playing a video game. The first timeline includes snapshot images of at least one user (the first user and / or other users) progressing through the video game. The snapshot images in the timeline are displayed in relation to a current rendered image of a first instance of the video game executing in association with the first user. Each snapshot image may cross-reference a corresponding snapshot. The current rendered image is associated with a current point in the first user's progression through the video game.
[0148] At operation 930, the method includes generating a plurality of first thumbnails for display on the first timeline, the first thumbnails including a plurality of first snapshot images associated with the first user. That is, the first thumbnails illustrate the first user's progress through the video game. In particular, the plurality of first snapshots includes at least one rendered image illustrating the first user's past progress compared to a current rendered image.
[0149] At operation 940, the method includes generating a plurality of second thumbnails for display on the first timeline, the plurality of second thumbnails including a plurality of second snapshot images associated with the second user. That is, the second thumbnails indicate the second user's progress through the video game. In particular, the plurality of second snapshot images includes at least one rendered image indicating a future progression of the second user's progress at a point in the video game after the current rendered image.
[0150] In other embodiments, the plurality of second snapshot images represent the past and / or current progress of the second user, for example, the second snapshot includes at least one rendered image that represents the second user's progress at a point in the video game prior to the current rendered image generated for display at the client device of the first user.
[0151] In yet other embodiments, additional timelines may be generated for display at the client device. For example, a second timeline of a third user may be generated for display. The second timeline includes a plurality of third snapshot images of the third user. The second timeline includes a plurality of rendered images showing the third user's progress during gameplay of the video game at a plurality of points in the video game before and after the current rendered image associated with the first user's gameplay.
[0152] As described above, the selected snapshot image enables the jump execution engine 216 of the game processor 210 to access a snapshot corresponding to the snapshot image, instantiate another instance of the video game based on the snapshot, and execute the video game beginning at a point in the video game corresponding to the snapshot (identified herein as a jump point). For example, the game processor 210 receives a selection by a first user of a snapshot image selected from a plurality of second snapshots in a first timeline, the selected snapshot image being associated with the second user's gameplay. Further, the game processor is configured to jump execution of the first instance of the video game executed in association with the first user's gameplay to the jump point in the video game associated with the selected snapshot image. In one embodiment, the first instance of the video game is paused and / or terminated, and another instance of the video game, a jump game, is instantiated based on the snapshot of the selected snapshot image.
[0153] In this manner, the first user can jump into the gameplay of the second user. For example, the first user can command a character used in the gameplay of the second user in a jumping game. The corresponding snapshot of the selected snapshot image includes second user saved data that is used in the gameplay of the second user and enables generation of a character that is also used in the jumping gameplay of the first user in the jumping game. The second user saved data and the second character originate from the gameplay of the second user. Thus, the first user generates a jumping gameplay while executing the jumping game.
[0154] After the first user finishes the jumping game, the first instance of the video game may be resumed. That is, the second instance of the video game executing the jumping game is terminated and the first instance of the video game associated with the first user's gameplay is resumed. In this manner, the first user may resume their own play of the video game.
[0155] The first user may also select a snapshot image in a previous gameplay of the first user. For example, the game processor may be configured to receive a selection of a selected snapshot image in a plurality of first snapshot images associated with a previous gameplay. Execution of the first instance of the video game is jumped to a jump point in the video game associated with the selected snapshot image. In one embodiment, jumping is enabled through another instance of the video game based on a snapshot corresponding to the selected snapshot image. In another embodiment, jumping is enabled through the first instance of the video game.
[0156] Additionally, a node graph may be generated for display on the client device. The node graph includes a plurality of snapshot nodes corresponding to the snapshot images displayed in the timeline, as described above. The snapshot nodes define a plurality of paths, and the paths and nodes are associated with the gameplay of the first and second users. Each node in the node graph is associated with a corresponding snapshot.
[0157] Additionally, the node graph may enable a first user to jump to the gameplay of the same or another user. For example, the game processor is configured to receive a selection of a selected snapshot node in the node graph. The snapshot node is associated with a corresponding snapshot. A selected snapshot image corresponding to the selected snapshot node may optionally be generated for display at the client device. In particular, selection of the selected snapshot node and / or the corresponding snapshot image enables execution of a first instance of a video game executed in association with the first user's gameplay to jump to a jump point in the video game associated with the selected node.
[0158] While particular embodiments have been provided to demonstrate the generation and capture of snapshots of points within gameplay of a video game for multiple users that are used to preview and / or jump to previously executed gameplay of the same or another user, these are described by way of example and not by way of limitation. Those skilled in the art, upon reading this disclosure, will recognize additional embodiments that fall within the spirit and scope of this disclosure.
[0159] It should be noted that access services distributed over wide geographic areas, such as those providing access to the games of the current embodiment, often use cloud computing. Cloud computing is a computing style in which dynamically scalable, often virtualized resources are provided as a service over the Internet. Users do not need to be skilled in the technical infrastructure in the "cloud" that supports them. Cloud computing can be divided into different services, such as infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS). Cloud computing services often provide common applications, such as video games, online, accessed from a web browser, but the software and data are stored on servers in the cloud. The term cloud is used as a metaphor for the Internet, based on how the Internet is depicted in computer network diagrams, and is an abstraction of the complex infrastructure it hides.
[0160] A game processing server (GPS) (or simply "game server") is used by game clients to play single and multiplayer video games. Most video games played over the Internet operate through a connection to a game server. Typically, games use a dedicated server application that collects data from players and distributes it to other players. This is more efficient and effective than a peer-to-peer configuration, but requires a separate server to host the server application. In another embodiment, the GPS establishes communication between players and their respective gameplay devices to exchange information without relying on a centralized GPS.
[0161] A dedicated GPS is a server that operates independently of the client. Such servers typically run on dedicated hardware located in a data center, providing more bandwidth and dedicated processing power. Dedicated servers are the preferred method of hosting game servers for most PC-based multiplayer games. Massively multiplayer online games run on dedicated servers that are typically hosted by the software company that owns the game title, allowing them to control and update the content.
[0162] Users access the remote server with a client device, which includes at least a CPU, a display, and I / O. The client device may be a PC, a cell phone, a netbook, a PDA, etc. In one embodiment, a network running on the game server recognizes the type of device used by the client and adjusts the communication method employed. In other cases, the client device accesses the application on the game server over the Internet using a standard communication method such as HTML.
[0163] Embodiments of the present disclosure may be practiced with a variety of computer system configurations, including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, etc. The present disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wire-based or wireless network.
[0164] It should be understood that a given video game may be developed for a particular platform and a particular attached controller device. However, when such a game is made available via a game cloud system as presented herein, a user may be accessing the video game with a different controller device. For example, a game may be developed for a game console and its attached controller, while a user may be accessing a cloud-based version of the game from a personal computer using a keyboard and mouse. In such a scenario, the input parameter configuration may define a mapping from inputs that can be generated by the controller device available to the user (in this case, the keyboard and mouse) to inputs that are acceptable for execution of the video game.
[0165] In another example, a user may access the cloud gaming system through a tablet computing device, a touchscreen smartphone, or other touchscreen-driven device. In this case, both the client device and the controller device are integrated into the same device, and input is provided as detected touchscreen input / gestures. For such devices, the input parameter configuration may define specific touchscreen inputs corresponding to game inputs for the video game. For example, buttons, directional pads, or other types of input elements may be displayed or overlaid during execution of the video game to indicate locations on the touchscreen that the user can contact to generate game input. Gestures, such as swipes in a particular direction or specific touch actions, may also be detected as game input. In one embodiment, to familiarize the user with control operations on the touchscreen, for example, before gameplay of the video game begins, a tutorial may be provided to the user instructing them on how to provide inputs via the touchscreen for gameplay.
[0166] In some embodiments, the client device serves as a connection point for the controller device. That is, the controller device communicates with the client device via a wireless or wired connection and transmits inputs from the controller device to the client device. The client device, in turn, may process these inputs and then transmit the input data to the cloud gaming server over a network (e.g., accessed through a local networking device such as a router). However, in other embodiments, the controller itself may be a networked device capable of communicating inputs directly to the cloud gaming server over a network, without having to first communicate such inputs through the client device. For example, the controller may connect to a local networking device (such as the aforementioned router) to send data to and receive data from the cloud gaming server. Thus, although the client device may still need to receive video output from the cloud-based video game and render it on a local display, input latency may be reduced by allowing the controller to send inputs directly to the cloud gaming server over a network, bypassing the client device.
[0167] In one embodiment, the networked controller and client device may be configured to transmit some types of input directly from the controller to the cloud gaming server and other types of input via the client device. For example, inputs whose detection does not rely on any additional hardware or processing separate from the controller itself may be transmitted directly from the controller to the cloud gaming server over the network, bypassing the client device. Such inputs may include button inputs, joystick inputs, built-in motion-sensing inputs (e.g., accelerometers, magnetometers, gyroscopes), etc. However, inputs that utilize additional hardware or require processing by the client device may be transmitted by the client device to the cloud gaming server. These may include video or audio captured from the game environment, which may be processed by the client device before transmission to the cloud gaming server. Additionally, inputs from the controller's motion-sensing hardware may be processed by the client device in conjunction with captured video to detect the position and movement of the controller, which is then communicated by the client device to the cloud gaming server. It should be understood that controller devices according to various embodiments may also receive data (e.g., feedback data) directly from the client device or from the cloud gaming server.
[0168] It should be understood that the embodiments described herein may be performed on any type of client device. In some embodiments, the client device is a head-mounted display (HMD).
[0169] 10 is a diagram illustrating components of an illustrated head-mounted display 1050, according to an embodiment of the present disclosure. The head-mounted display 1050 includes a processor 1000 for executing program instructions. A memory 1002 is provided for storage purposes and may include both volatile and non-volatile memory. A display 1004 is included, providing a visual interface that a user may view. A battery 1006 is provided as a power source for the head-mounted display 1050. A motion detection module 1008 may include any of a variety of motion-sensing hardware, such as a magnetometer 1010, an accelerometer 1012, and a gyroscope 1014.
[0170] An accelerometer is a device for measuring acceleration and gravity-induced reaction forces. Single and multi-axis models are available to detect the magnitude and direction of acceleration in different directions. Accelerometers are used to sense tilt, vibration, and shock. In one embodiment, three accelerometers 1012 are used to provide the gravity direction, which provides an absolute reference for two angles: world-space pitch and world-space roll.
[0171] The magnetometer measures the strength and direction of the magnetic field around the head-mounted display. In one embodiment, three magnetometers 1010 are used in the head-mounted display to ensure an absolute reference for the yaw angle in world space. In one embodiment, the magnetometers are designed to span the Earth's magnetic field, which is ±80 microtesla. The magnetometers are affected by metal and produce yaw measurements that are monotonic with the actual yaw. The magnetic field can be distorted by metal in the environment, which causes distortion in the yaw measurement. If necessary, this distortion can be calibrated using information from other sensors, such as a gyroscope or camera. In one embodiment, an accelerometer 1012 is used in conjunction with the magnetometer 1010 to obtain the tilt and azimuth angles of the head-mounted display 1050.
[0172] A gyroscope is a device for measuring or maintaining orientation based on the principles of angular momentum. In one embodiment, three gyroscopes 1014 provide information about motion across each axis (x, y, and z) based on inertial sensing. Gyroscopes assist in detecting high-speed rotations. However, gyroscopes can drift over time in the absence of an absolute reference. This requires periodic resetting of the gyroscopes, which can be done using other available information, such as positioning / orientation determination based on visual tracking of objects, accelerometers, magnetometers, etc.
[0173] A camera 1016 is provided for capturing images and image streams of the real environment. More than one camera may be included in the head-mounted display 1050, including a rear-facing camera (pointed away from the user when the user is looking at the display of the head-mounted display 1050) and a front-facing camera (pointed towards the user when the user is looking at the display of the head-mounted display 1050). Additionally, a depth camera 1018 may be included in the head-mounted display 1050 to sense depth information of objects in the real environment.
[0174] In one embodiment, a camera integrated into the front of the HMD may be used to provide safety warnings. For example, the camera may warn the user if they are approaching a wall or object. In one embodiment, the user may be provided with an outline view of physical objects in a room to alert the user to their presence. The outlines may be overlaid, for example, in the virtual environment. In some embodiments, the HMD user may be provided with a view to a reference marker, for example, overlaid on the floor. For example, the marker may provide the user with a reference to the location of the center of the room in which the user is playing a game. This may provide the user with visual information, for example, about where the user should move to avoid hitting a wall or other object in the room. Haptic and / or audio warnings may also be provided to the user to provide additional safety when wearing and playing games or navigating content with the HMD.
[0175] The head mounted display 1050 includes a speaker 1020 for providing audio output. A microphone 1022 may also be included for capturing sounds from the real environment, including sounds from the surrounding environment, conversations being conducted by the user, etc. The head mounted display 1050 includes a haptic feedback module 1024 for providing haptic feedback to the user. In one embodiment, the haptic feedback module 1024 can cause movement and / or vibration of the head mounted display 1050 to provide haptic feedback to the user.
[0176] An LED 1026 is provided as a visual indicator of the status of the head mounted display 1050. For example, the LED may indicate battery level, power on, etc. A card reader 1028 is provided to allow the head mounted display 1050 to read and write information from and to a memory card. A USB interface 1030 is included as an example of an interface to allow connection to peripheral devices or to other devices, such as other portable devices, computers, etc. In various embodiments of the head mounted display 1050, any of a variety of types of interfaces may be included to further enhance the connectivity of the head mounted display 1050.
[0177] A WiFi module 1032 is included to enable connection to the Internet via wireless networking technology. The head mounted display 1050 also includes a Bluetooth module 1034 to enable wireless connection to other devices. A communication link 1036 may also be included for connection to other devices. In one embodiment, the communication link 1036 utilizes infrared transmission for wireless communication. In other embodiments, the communication link 1036 may utilize any of a variety of wireless or wired transmission protocols for communication with other devices.
[0178] Input buttons / sensors 1038 are included to provide an input interface for a user. Any of a variety of types of input interfaces may be included, such as buttons, touchpads, joysticks, trackballs, etc. An ultrasonic communication module 1040 may be included in the head mounted display 1050 to facilitate communication with other devices via ultrasonic technology.
[0179] A biosensor 1042 is included to enable detection of physiological data from the user. In one embodiment, the biosensor 1042 includes one or more dry electrodes for detection of the user's bioelectrical signals through the user's skin.
[0180] The aforementioned components of head mounted display 1050 have been described as merely exemplary components that may be included in head mounted display 1050. In various embodiments of the present disclosure, head mounted display 1050 may include some or none of the various aforementioned components. To facilitate aspects of the present disclosure described herein, embodiments of head mounted display 1050 may additionally include other components not described herein but known in the art.
[0181] It will be understood by those skilled in the art that in various embodiments of the present disclosure, the handheld device described above may be utilized with interactive applications displayed on a display to provide a variety of interactive functions. The exemplary embodiments described herein are provided by way of example only, and not by way of limitation.
[0182] FIG. 11 is a block diagram of a gaming system 1100 according to various embodiments of the present disclosure. The gaming system 1100 is configured to provide video streams to one or more clients 1110 over a network 1115. The gaming system 1100 typically includes a video server system 1120 and an optional game server 1125. The video server system 1120 is configured to provide the video streams to one or more clients 1110 with minimal quality of service. For example, the video server system 1120 may receive game commands that change the state or perspective of view within a video game, reflect this change in state with minimal lag, and provide the updated video stream to the client 1110. The video server system 1120 may be configured to provide the video streams in a variety of alternative video formats, including formats to be defined in the future. Furthermore, the video streams may include video frames configured for presentation to a user at a variety of format rates. Typical frame rates are 30 frames per second, 60 frames per second, and 1120 frames per second. However, higher or lower frame rates are included in alternative embodiments of the present disclosure.
[0183] Clients 1110, individually referred to herein as 1110A, 1110B, etc., may include head-mounted displays, terminals, personal computers, game consoles, tablet computers, phones, set-top boxes, kiosks, wireless devices, digital pads, standalone devices, handheld gameplay devices, etc. Typically, clients 1110 are configured to receive encoded video streams (i.e., compressed), decode the video streams, and present the resulting video to a user, e.g., a player of a game. The process of receiving an encoded video stream and / or decoding a video stream typically involves storing individual video frames in a receive buffer of the client. The video stream may be presented to the user on a display integral with the client 1110 or on a separate device such as a monitor or television. Clients 1110 are optionally configured to support more than one game player. For example, a game console may be configured to support two, three, four, or more simultaneous players. Each of these players may receive a separate video stream, or a single video stream may include a region of frames generated specifically for each player, e.g., generated based on each player's point of view. Clients 1110 are optionally geographically distributed. The number of clients included in gaming system 1100 may vary widely, from one or two to thousands, tens of thousands, or more. As used herein, the term "game player" is used to refer to a person who plays a game, and the term "gameplay device" is used to refer to a device used to play a game. In some embodiments, gameplay devices may refer to multiple computing devices that cooperate to deliver a gaming experience to a user. For example, a game console and an HMD may cooperate with video server system 1120 to deliver a game viewed through the HMD.In one embodiment, the game console receives the video stream from the video server system 1120, and the game console forwards the video stream to the HMD for rendering or updating the video stream.
[0184] Client 1110 is configured to receive the video stream over network 1115. Network 1115 may be any type of communications network, including a telephone network, the Internet, a wireless network, a power line network, a local area network, a wide area network, a private network, etc. In a typical embodiment, the video stream is communicated via a standard protocol such as TCP / IP or UDP / IP. Alternatively, the video stream is communicated via a proprietary standard.
[0185] A typical example of a client 1110 is a personal computer that includes a processor, non-volatile memory, a display, decoding logic, network communication capabilities, and input devices. The decoding logic may include hardware, firmware, and / or software stored on a computer-readable medium. Systems for decoding (and encoding) video streams are well known in the art and vary depending on the particular encoding scheme used.
[0186] The clients 1110 may, but need not, further include a system configured to modify the received video. For example, the clients may be configured to perform additional drawing, such as to overlay one video image on another, to crop a video image, and the like. For example, the clients 1110 may be configured to receive various types of video frames, such as I-frames, P-frames, and B-frames, and process these frames into images for display to a user. In some embodiments, members of the clients 1110 are configured to further perform drawing, shading, conversion to 3D, or similar operations on the video stream. Members of the clients 1110 are optionally configured to receive more than one audio or video stream. Input devices for the clients 1110 may include, for example, a single-handed game controller, a two-handed game controller, a gesture recognition system, an eye gaze recognition system, a voice recognition system, a keyboard, a joystick, a pointing device, a force feedback device, a motion and / or position sensing device, a mouse, a touchscreen, a neural interface, a camera, future input devices, and the like.
[0187] The video stream (and optionally, the audio stream) received by the client 1110 is generated and provided by the video server system 1120. As further described elsewhere herein, this video stream includes video frames (and audio frames). The video frames are configured to contribute significantly to the image displayed to the user (e.g., they include pixel information in an appropriate data structure). As used herein, the term "video frame" refers to a frame that primarily includes information configured to contribute to, e.g., provide an effect on, the image shown to the user. Most of the teachings herein regarding "video frames" can also be applied to "audio frames."
[0188] Client 1110 is typically configured to receive input from a user. These inputs may include game commands configured to change the state of or affect game play in a video game. The game commands may be received using an input device and / or may be automatically generated by computing instructions running on client 1110. Received game commands are communicated from client 1110 to video server system 1120 and / or game server 1125 via network 1115. For example, in some embodiments, game commands are communicated to game server 1125 via video server system 1120. In some embodiments, separate copies of game commands are communicated from client 1110 to game server 1125 and video server system 1120. Communication of game commands optionally depends on the identification of the command. Game commands are optionally communicated from client 1110A through different routes or communication channels used to provide audio or video streams to client 1110A.
[0189] The game server 1125 is optionally operated by a different entity than the video server system 1120. For example, the game server 1125 may be operated by a publisher of a multiplayer game. In this example, the video server system 1120 is optionally viewed as a client by the game server 1125 and is optionally configured to appear, from the perspective of the game server 1125, to be a prior art client running a prior art game engine. Communication between the video server system 1120 and the game server 1125 optionally occurs over the network 1115. Thus, the game server 1125 may be a prior art multiplayer game server that transmits game state information to multiple clients, one of which is the game server system 1120. The video server system 1120 may be configured to communicate with multiple instances of the game server 1125 simultaneously. For example, the video server system 1120 may be configured to provide multiple different video games to different users. Each of these different video games may be supported by a different game server 1125 and / or published by a different entity. In some embodiments, multiple geographically distributed instances of the video server system 1120 are configured to provide game videos to multiple different users. Each of these instances of the video server system 1120 may be in communication with the same instance of the game server 1125. Communication between the video server system 1120 and one or more game servers 1125 optionally occurs over a dedicated communication channel. For example, the video server system 1120 may be connected to the game server 1125 over a high-bandwidth channel dedicated to communication between the two systems.
[0190] The video server system 1120 comprises at least a video source 1130, an I / O device 1145, a processor 1150, and non-transitory storage 1155. The video server system 1120 may include one computing device or may be distributed among multiple computing devices, optionally connected via a communication system such as a local area network.
[0191] Video Source 1130 is configured to provide a video stream, e.g., a series of video frames forming a video stream, e.g., streaming video, or a moving image. In some embodiments, Video Source 1130 includes a video game engine and rendering logic. The video game engine is configured to receive game commands from a player and maintain a copy of the video game state based on the received commands. This game state includes the positions of objects within the game environment, and typically the viewpoint. The game state may also include object properties, images, colors, and / or textures.
[0192] The game state is typically maintained based on game rules and game commands such as movement, rotation, attack, focus, interaction, and usage. Portions of the game engine are optionally located within the game server 1125. The game server 1125 may maintain copies of the game state based on game commands received from multiple players using geographically distributed clients. In these cases, the game state is provided by the game server 1125 to the video source 1130, where copies of the game state are stored and rendering is performed. The game server 1125 may receive game commands directly from the clients 1110 over the network 1115 and / or via the video server system 1120.
[0193] Video source 1130 typically includes rendering logic, e.g., hardware, firmware, and / or software stored on a computer-readable medium such as storage 1155. This rendering logic is configured to create video frames of a video stream based on the game state. All or a portion of the rendering logic is optionally located within a graphics processing unit (GPU). The rendering logic typically includes processing stages configured to determine three-dimensional spatial relationships between objects and / or apply appropriate textures, etc. based on the game state and viewpoint. The rendering logic then produces raw video that is typically encoded prior to communication with client 1110. For example, the raw video may be encoded according to Adobe Flash® standards, .wav, H.264, H.263, On2, VP6, VC-1, WMA, Huffyuv, Lagarith, MPG-x, Xvid, FFmpeg, x264, VP6-8, realvideo, mp3, etc. The encoding process produces a video stream that is optionally packaged for delivery to a decoder on a remote device. A video stream is characterized by a frame size and a frame rate. Typical frame sizes include 800x600, 1280x720 (e.g., 720p), and 1024x768, although any other frame size may be used. The frame rate is the number of video frames per second. A video stream may include various types of video frames. For example, the H.264 standard includes "P" frames and "I" frames. I frames contain information for refreshing all macroblocks / pixels on a display device, while P frames contain information for refreshing a subset of them. P frames typically have a smaller data size than I frames. As used herein, the term "frame size" is meant to refer to the number of pixels in a frame. The term "frame data size" is used to refer to the number of bytes required to store a frame.
[0194] In an alternative embodiment, video source 1130 includes a video recording device, such as a camera. The camera may be used to generate delayed or live video that can be included in the video stream of a computer game. The resulting video stream optionally includes both rendered images and images recorded using a still or video camera. Video source 1130 may also be configured to store previously recorded video for inclusion in the video stream. Video source 1130 may also include a motion or position sensing device configured to detect the motion or position of an object, e.g., a person, and logic configured to determine the game state or produce video based on the detected motion and / or position.
[0195] Video source 1130 is optionally configured to provide overlays configured to be placed over other video. For example, these overlays may include a command interface, login instructions, messages to the game player, images of other game players, video feeds of other game players (e.g., webcam video). In embodiments of client 1110A that include a touchscreen interface or an eye-gaze detection interface, the overlays may include a virtual keyboard, joystick, touchpad, etc. In one example of an overlay, a player's voice may be overlaid over an audio stream. Video source 1130 optionally further includes one or more audio sources.
[0196] In embodiments in which Video Server System 1120 is configured to maintain game state based on input from more than one player, each player may have a different viewpoint, including view position and direction. Video Source 1130 is optionally configured to provide a separate video stream for each player based on their viewpoint. Furthermore, Video Source 1130 may be configured to provide different frame sizes, frame data sizes, and / or encodings to each of Clients 1110. Video Source 1130 is optionally configured to provide 3D video.
[0197] The I / O devices 1145 are configured to allow the video server system 1120 to send and / or receive information such as video, commands, information requests, game state, gaze information, device movement, device location, user movement, client identification, player identification, game commands, security information, audio, etc. The I / O devices 1145 typically include communications hardware such as a network card or modem. The I / O devices 1145 are configured to communicate with the game server 1125, the network 1115, and / or the clients 1110.
[0198] The processor 1150 is configured to execute logic, e.g., software, included within the various components of the video server system 1120 described herein. For example, the processor 1150 may be programmed with software instructions to perform the functions of the video source 1130, the game server 1125, and / or the client qualifier 1160. The video server system 1120 optionally includes more than one instance of the processor 1150. The processor 1150 may also be programmed with software instructions to execute commands received by the video server system 1120 or to coordinate the operation of the various elements of the game system 1100 described herein. The processor 1150 may include one or more hardware devices. The processor 1150 is an electronic processor.
[0199] Storage 1155 includes non-transitory analog and / or digital storage devices. For example, storage 1155 may include an analog storage device configured to store video frames. Storage 1155 may also include computer-readable digital storage, such as a hard drive, optical drive, or solid-state storage. Storage 1155 is configured to store (e.g., via a suitable data structure or file system) video frames, artificial frames, video streams including both video frames and artificial frames, audio frames, audio streams, etc. Storage 1155 is optionally distributed among multiple devices. In some embodiments, storage 1155 is configured to store software components of video source 1130, as described elsewhere herein. These components may be stored in a format that allows them to be provided whenever needed.
[0200] Video server system 1120 optionally further includes a Client Qualifier 1160. Client Qualifier 1160 is configured to remotely determine the capabilities of a client, such as client 1110A or 1110B. These capabilities may include both the capabilities of client 1110A itself and the capabilities of one or more communication channels between client 1110A and video server system 1120. For example, Client Qualifier 1160 may be configured to test a communication channel through network 1115.
[0201] The Client Qualifier 1160 may manually or automatically determine (e.g., discover) the capabilities of the Client 1110A. Manual determination includes communicating with a user of the Client 1110A and asking the user to provide capabilities. For example, in some embodiments, the Client Qualifier 1160 is configured to display images, text, etc. within the browser of the Client 1110A. In one embodiment, the Client 1110A is an HMD that includes a browser. In another embodiment, the Client 1110A is a game console with a browser that can be displayed on an HMD. The displayed objects require the user to input information such as the Client 1110A's operating system, processor, video decoder type, network connection type, display resolution, etc. The information entered by the user is communicated back to the Client Qualifier 1160.
[0202] For example, the automated determination may occur by running an agent on client 1110A and / or by sending a test video to client 1110A. The agent may include computer instructions, such as a Java script, embedded in a web page or installed as an add-on. The agent is optionally provided by client qualifier 1160. In various embodiments, the agent may discover the processing power of client 1110A, the decoding and display capabilities of client 1110A, the lag time reliability and bandwidth of the communication channel between client 1110A and video server system 1120, the display type of client 1110A, the presence of a firewall on client 1110A, the hardware of client 1110A, software running on client 1110A, registry entries within client 1110A, etc.
[0203] Client Qualifier 1160 includes hardware, firmware, and / or software stored on a computer-readable medium. Client Qualifier 1160 is optionally located on a computing device separate from one or more other elements of Video Server System 1120. For example, in some embodiments, Client Qualifier 1160 is configured to determine characteristics of a communication channel between Client 1110 and one or more instances of Video Server System 1120. In these embodiments, information discovered by the Client Qualifier may be used to determine which instance of Video Server System 1120 is best suited for delivering streaming video to one of Clients 1110.
[0204] It should be understood that the various embodiments defined herein may be combined or grouped into specific embodiments using various features disclosed herein. Thus, the examples provided are not intended to be limiting to the various embodiments possible by combining various elements to define more embodiments, but merely some possible examples. In some instances, some embodiments may include fewer elements without departing from the spirit of the disclosed or equivalent embodiments.
[0205] Embodiments of the present disclosure may be practiced with a variety of computer system configurations, including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, etc. Embodiments of the present disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wire-based or wireless network.
[0206] In view of the above embodiments, it should be understood that embodiments of the present disclosure may employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulations of physical quantities. Any of the operations described herein that form part of the embodiments of the present disclosure are useful machine operations. Embodiments of the present invention also relate to devices or apparatus for performing these operations. An apparatus may be specially constructed for the required purposes, or the apparatus may be a general-purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
[0207] The present disclosure may also be embodied as computer-readable code on a computer-readable medium. A computer-readable medium is any data storage device that can store data, which can then be read by a computer system. Examples of computer-readable media include hard drives, network-attached storage (NAS), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tape, and other optical and non-optical data storage devices. The computer-readable medium may include tangible computer-readable media that are distributed across network-coupled computer systems so that the computer-readable code is stored and executed in a distributed fashion.
[0208] Although the operations of the method have been described in a particular order, it should be understood that other housekeeping operations may be performed between operations, or operations may be coordinated to occur at slightly different times, or distributed into a system that allows processing operations to occur at various intervals related to processing, so long as the processing of the overlay operation is performed in the desired manner.
[0209] Although the foregoing disclosure has been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Accordingly, the present embodiments should be considered as illustrative and not restrictive, and the embodiments of the present disclosure should not be limited to the details given herein, but may be modified within the scope of the appended claims and their equivalents.
Claims
1. A method of capturing a plurality of snapshots generated from gameplay of a video game executed by a processor for a player, each of the plurality of snapshots being automatically generated and captured; the processor capturing a plurality of snapshot images from the gameplay, each of the plurality of snapshot images being associated with a corresponding one of the snapshots; the processor displaying a node graph including a plurality of snapshot nodes corresponding to the plurality of snapshots, each of the plurality of snapshot nodes being associated with a corresponding one of the snapshots; the processor displaying a plurality of paths between the plurality of snapshot nodes; the processor provides the player with access to game state data and user data of the game play to launch a second game play, thereby enabling the player to jump to the second game play through selection of one snapshot node or a snapshot image corresponding to the snapshot node; The method, wherein the snapshot image is displayed through interaction with the snapshot node.
2. The method further includes the processor instantiating an instance of the video game using a snapshot corresponding to the snapshot node or the snapshot image corresponding to the snapshot node; The method of claim 1 , wherein the instance begins at a jump point in the gameplay at which the snapshot or snapshot image corresponding to the snapshot node was captured.
3. 3. The method of claim 2, wherein the snapshot or snapshot image corresponding to the snapshot node provides a link to game state data and user data for the gameplay of the video game stored on remote storage to enable instantiation of the instance of the video game for the second gameplay.
4. The method of claim 2, further comprising the processor interrupting execution of the video game associated with the player's gameplay upon jumping to the second gameplay.
5. 2. The method of claim 1, wherein each of the plurality of snapshot nodes is selectable such that, upon a jump to the second gameplay, it causes execution of the video game for the second gameplay beginning at a jump point within the gameplay at which the corresponding snapshot was captured.
6. The method of claim 1 , wherein each of a plurality of snapshot images corresponding to the plurality of snapshots comprises a corresponding rendered image generated for the gameplay.
7. Each of the plurality of snapshots comprises: game state data that enables generation of an environment corresponding to a point in the player's gameplay at which each of the plurality of snapshots was captured; Random seed data that provides additional characteristics about the environment; and user-saved data that enables generation of a character for the player's play of the game, the character having a state corresponding to a point in the player's play of the game at which each of the plurality of snapshots was captured; The method of claim 1 , comprising:
8. The method further includes the processor, upon jumping to the second gameplay, causing the execution of the video game associated with the player's gameplay to jump to a jump point in the gameplay at which the corresponding snapshot was captured; The method of claim 1 , wherein the second game play is performed by the player.
9. 1. A non-transitory computer-readable medium having program instructions for a method, the computer-readable medium comprising: program instructions for capturing a plurality of snapshots generated from gameplay of a video game executed on a player, each of the plurality of snapshots being automatically generated and captured; program instructions for capturing a plurality of snapshot images from the gameplay, each of the plurality of snapshot images being associated with a corresponding one of the snapshots; program instructions for displaying a node graph including a plurality of snapshot nodes corresponding to the plurality of snapshots, each of the plurality of snapshot nodes being associated with a corresponding one of the snapshots; program instructions for displaying a plurality of paths between the plurality of snapshot nodes; and program instructions for providing the player with access to game state data and user data of the game play to launch a second game play, thereby enabling the player to jump to the second game play through selection of one snapshot node or a snapshot image corresponding to the snapshot node; A non-transitory computer-readable medium in which the snapshot image is displayed through interaction with the snapshot node.
10. further comprising program instructions for instantiating an instance of the video game using a snapshot corresponding to the snapshot node or the snapshot image corresponding to the snapshot node; The non-transitory computer-readable medium of claim 9 , wherein the instance begins at a jump point in the gameplay at which the snapshot or snapshot image corresponding to the snapshot node was captured.
11. 11. The non-transitory computer-readable medium of claim 10, wherein the snapshot or snapshot image corresponding to the snapshot node provides a link to game state data and user data for the game play of the video game stored in remote storage to enable instantiation of the instance of the video game for the second game play.
12. each of the plurality of snapshot nodes is selectable, upon a jump to the second gameplay, to cause execution of the video game for the second gameplay beginning at a jump point within the gameplay at which the corresponding snapshot was captured; The non-transitory computer-readable medium of claim 9 , wherein each of a plurality of snapshot images corresponding to the plurality of snapshots includes a corresponding rendered image generated for the gameplay.
13. Each of the plurality of snapshots comprises: game state data that enables generation of an environment corresponding to a point in the player's gameplay at which each of the plurality of snapshots was captured; Random seed data that provides additional characteristics about the environment; and user-saved data that enables generation of a character for the player's play of the game, the character having a state corresponding to a point in the player's play of the game at which each of the plurality of snapshots was captured; 10. The non-transitory computer-readable medium of claim 9, comprising:
14. The method of claim 13, further comprising: upon jumping to the second gameplay, causing the execution of the video game associated with the gameplay of the player to jump to a jump point in the gameplay at which the corresponding snapshot was captured; The non-transitory computer-readable medium of claim 9 , wherein the second game play is performed by the player.
15. 1. A computer system comprising: a processor; a memory coupled to the processor and storing instructions that, when executed by the computer system, cause the computer system to perform the method; The method comprises: capturing a plurality of snapshots generated from gameplay of a video game executed on a player, each of the plurality of snapshots being automatically generated and captured; capturing a plurality of snapshot images from the gameplay, each of the plurality of snapshot images being associated with a corresponding one of the snapshots; displaying a node graph including a plurality of snapshot nodes corresponding to the plurality of snapshots, each of the plurality of snapshot nodes being associated with a corresponding one of the snapshots; displaying a plurality of paths between the plurality of snapshot nodes; providing the player with access to game state data and user data of the game play to launch a second game play, thereby enabling the player to jump to the second game play through selection of one snapshot node or a snapshot image corresponding to the snapshot node; The snapshot image is displayed through interaction with the snapshot node.
16. The method comprises: instantiating an instance of the video game using a snapshot corresponding to the snapshot node or the snapshot image corresponding to the snapshot node; The computer system of claim 15 , wherein the instance begins at a jump point in the gameplay at which the snapshot or snapshot image corresponding to the snapshot node was captured.
17. 17. The computer system of claim 16, wherein the snapshot or snapshot image corresponding to the snapshot node provides a link to game state data and user data for the game play of the video game stored on remote storage to enable instantiation of the instance of the video game for the second game play.
18. each of the plurality of snapshot nodes is selectable, upon a jump to the second gameplay, to cause execution of the video game for the second gameplay beginning at a jump point within the gameplay at which the corresponding snapshot was captured; The computer system of claim 15 , wherein each of a plurality of snapshot images corresponding to the plurality of snapshots includes a corresponding rendered image generated for the gameplay.
19. Each of the plurality of snapshots comprises: game state data that enables generation of an environment corresponding to a point in the player's gameplay at which each of the plurality of snapshots was captured; Random seed data that provides additional characteristics about the environment; and user-saved data that enables generation of a character for the player's play of the game, the character having a state corresponding to a point in the player's play of the game at which each of the plurality of snapshots was captured; 16. The computer system of claim 15, comprising:
20. The method comprises: and upon jumping to the second gameplay, causing the player's execution of the video game associated with the gameplay to jump to a jump point within the gameplay at which the corresponding snapshot was captured; The computer system of claim 15 , wherein the second game play is performed by the player.
Citation Information
Patent Citations
Program, information storage medium, and electronic device
JP2010233959A
Cloud-based game slice generation and frictionless social sharing with instant play
JP2014135049A
Program, computer system, and server system
JP2016077790A
Using affect within a gaming context
US20120135804A1
Method and System for Displaying a Timeline
US20130163956A1