Present pre-recorded gameplay videos for in-game player assistance.
By adding metadata to game videos, the problem of low efficiency in determining game progress and generating auxiliary videos in existing technologies is solved, enabling intelligent cataloging and personalized presentation of game auxiliary videos.
Patent Information
- Application Number
- CN202180016594.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-06
- Filing Date
- 2021-03-05
- Publication Date
- 2025-11-14
- Estimated Expiration
- 2041-03-05
AI Technical Summary
In existing technologies, game recording and sharing videos lack intelligent cataloging mechanisms, requiring users to manually determine game progress. Furthermore, the video generation efficiency is low, the coverage is limited, and it cannot meet the needs of different users.
By adding metadata to gameplay videos, identifying spatial locations and game progress within the virtual environment, intelligent collection and filtering of gameplay videos can be achieved, providing personalized assistance and support.
It enables intelligent cataloging and personalized presentation of game videos, improving the efficiency and coverage of help video generation and meeting the game progress needs of different users.
Smart Images

Figure CN115151319B_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to systems and methods for presenting pre-recorded gameplay videos for in-game player assistance. Background Technology
[0002] Description of related technologies
[0003] An expanded area within the gaming industry is sharing and watching gameplay videos. Users can now record and share their gameplay through websites, social media, and more. Furthermore, users can stream their gameplay so others can watch it virtually in real-time.
[0004] Another current trend in the gaming industry is the move towards cloud gaming. Cloud gaming offers advantages to end users by enabling remote execution of video games in data centers that can guarantee the resources for those games. The video generated by the remotely executed game is streamed to the user's device, and user input is sent back to the data center. This allows end users to run the game without owning specific hardware. Instead, end users only need sufficient hardware to stream the game and can still enjoy a high-quality gaming experience. Furthermore, theoretically, cloud gaming can be played anywhere with an internet connection.
[0005] A continuing trend in the video game industry is the increasing complexity of graphics and the availability of computing resources to meet the demands of modern game engines. As video games evolve, their resolution and frame rates continue to improve, enabling the rendering of highly realistic and detailed virtual environments. Furthermore, the growing popularity of cloud gaming, with its shift towards cloud-based video game execution, allows for better access to high-quality gaming experiences.
[0006] It is against this backdrop that the proposed implementation plan is put forward. Summary of the Invention
[0007] Embodiments of this disclosure provide systems and methods for presenting pre-recorded gameplay videos for in-game player assistance.
[0008] In some implementations, a method is provided that includes: receiving, via a network, videos generated at the respective sessions of a video game at the respective first client devices executing the video game sessions; for each video, receiving via the network, location metadata from one of the first client devices, the location metadata identifying a spatial location in the virtual environment of the video game where game action depicted by the video occurs, the location metadata being associated with a video frame of the video and identifying the spatial location of the game action depicted by a given video frame; receiving via the network, during a session of the video game executed by a second client device, the current spatial location in the virtual environment where game action occurs in the session; selecting one or more videos using the current spatial location; and presenting the selected videos at the second client device via the network.
[0009] In some implementations, receiving the location metadata of a given video occurs substantially simultaneously with receiving the given video over the network.
[0010] In some implementations, a given video and its location metadata are synchronously streamed over a network from the first client device that generated the given video.
[0011] In some implementations, the current spatial location in the virtual environment is defined by the current spatial coordinates of the virtual character or virtual object in the virtual environment.
[0012] In some implementations, location metadata that identifies a spatial location in a virtual environment is defined by the spatial coordinates of a virtual character or virtual object in the virtual environment over time.
[0013] In some implementations, location metadata identifies chapters, levels, or scenes in a video game.
[0014] In some implementations, the current location is used to select one or more videos that include one or more videos with location metadata that identifies a spatial location close to the current spatial location.
[0015] In some implementations, presenting the selected videos includes displaying a preview image of each of the selected videos.
[0016] In some implementations, the method further includes: receiving a request to play back one of the selected videos; and in response to the request to play back, streaming the selected video to a second client device.
[0017] In some embodiments, a non-transitory computer-readable medium is provided having program instructions embodied thereon, which, when executed by at least one computing device, cause the at least one computing device to perform a method comprising: receiving, via a network, videos generated at each of the various sessions of a video game at the respective first client devices executing the video game; for each video, receiving via the network, location metadata from one of the first client devices, the location metadata identifying a spatial location in a virtual environment of the video game where gameplay depicted by the video occurs, the location metadata being associated with a video frame of the video and identifying the spatial location of the gameplay depicted by a given video frame; receiving via the network, during a session of the video game executed by a second client device, the current spatial location in the virtual environment where gameplay occurs in the session; selecting one or more videos using the current spatial location; and presenting the selected videos at the second client device via the network.
[0018] Other aspects and advantages of this disclosure will become apparent from the following detailed description, which is illustrated by way of example in conjunction with the accompanying drawings, to demonstrate the principles of this disclosure. Attached Figure Description
[0019] This disclosure and its other advantages can be best understood by referring to the following description taken in conjunction with the accompanying drawings.
[0020] Figure 1 A conceptual illustration is provided of a system for broadcasting game footage of a video game, and for storing and analyzing the game footage for playback in conjunction with the game footage of the video game, according to embodiments of the present disclosure.
[0021] Figure 2 This invention conceptually illustrates a process for using video streaming and associated metadata from a game to generate useful information and provide novel features to players and game developers, according to embodiments of the present disclosure.
[0022] Figure 3 Various game performance videos related to the user's current game performance are conceptually illustrated according to embodiments of this disclosure.
[0023] Figure 4 Various intersecting paths for video in a game within a virtual environment according to embodiments of this disclosure are conceptually illustrated.
[0024] Figure 5 The present invention conceptually illustrates a video of a user facing different directions in a virtual environment according to an embodiment of the present disclosure, and the different games presented as a result.
[0025] Figure 6The selection of game performance video based on a user-defined game performance path according to an embodiment of this disclosure is conceptually illustrated.
[0026] Figure 7 A conceptual illustration is provided of using a controller to input a time series in playback video according to an embodiment of this disclosure.
[0027] Figure 8A An exemplary system for loading game files of a game available via a cloud gaming site, according to an embodiment of the present disclosure, is shown.
[0028] Figure 8B This is a flowchart conceptually illustrating various operations performed to stream a cloud video game to a client device according to embodiments of this disclosure.
[0029] Figure 9 An implementation scheme of an information service provider architecture according to embodiments of the present disclosure is shown. Detailed Implementation
[0030] In the following description, numerous specific details are set forth to provide a thorough understanding of this disclosure. However, it will be apparent to those skilled in the art that this disclosure can be practiced without some or all of these specific details. In other instances, well-known process steps have not been described in detail so as not to obscure this disclosure.
[0031] Currently, players can record and share their gameplay videos, or broadcast these videos. Streaming services enable users to live stream their gameplay videos over the internet, and viewers can access and watch other users' gameplay videos through websites, gaming platforms, mobile apps, or other types of content platforms. However, such videos do not provide any information about the level, chapter, or section of the game being played. These videos may be helpful to others because they provide walkthroughs or tutorials for the game. However, for existing systems, the information needed to catalog such videos needs to be provided manually in some way. That is, someone needs to manually watch the video and determine where the user is playing in the game. Even then, more specific information, such as the exact coordinates of a given player in the virtual environment, remains unknown.
[0032] In fact, one problem game developers or publishers currently face is that they want to provide help videos to users efficiently, but they can't yet do so. As for generating help videos, they are produced through a very manual, resource-intensive process. Furthermore, they are only generated for game areas they deem appropriate to cover, and may not cover many game areas that users actually find difficult to play. They are also limited to the specific help videos they choose to generate, and therefore do not cover the many different styles or methods by which a wider range of users will play the game.
[0033] To address these issues, embodiments of this disclosure provide systems and methods in which relevant metadata is added to the game progress broadcast stream, enabling the intelligent collection of various game progress videos using game progress knowledge, such as chapters, levels, (x,y,z) coordinates, etc. For example, using this information, the system can intelligently catalog game progress videos and create maps or complete given levels. If a player encounters a problem in a certain area of the game, the system can guide the player to a previously recorded video of the same area of the game.
[0034] In this way, all walkthrough data, whether broadcast or shared, is collected, and the availability of game aids does not depend on whether the game content creator marks a specific area for additional documentation, such as help videos. If someone plays the game in a certain area, then video content will be available for that area to watch.
[0035] Figure 1 A conceptual illustration shows a system for broadcasting gameplay video of a video game according to embodiments of the present disclosure, as well as for storing and analyzing the gameplay video for playback in conjunction with the gameplay of the video game. In the illustrative embodiment, user 100 participates in gameplay of a video game 106 executed by client device 102. It should be understood that client device 102 can be any type of computing device capable of executing video games for gameplay, such as a game console, personal computer, laptop computer, tablet computer, mobile phone, mobile device, etc. Game gameplay video 115 generated from the running video game 106 is rendered by client device 102 for display on display 114. In some embodiments, display 114 is a device separate from the client device, such as a television, monitor, head-mounted display, etc. In some embodiments, display 114 is integrated with client device 102. It should be understood that display 114 can employ any of a variety of electronic display technologies, such as LCD, LED, OLED, AMOLED, QLED, plasma, etc.
[0036] For ease of description in this disclosure, unless otherwise stated or obvious from the description, “video” or “video of gameplay” in this disclosure may include or refer to both motion picture data and audio data used to depict images and sounds of a video game.
[0037] In some embodiments, the gameplay video 115 is streamed or broadcast (live-streamed) over network 122 for other users to watch. In an illustrative embodiment, a video stream 118 encoded with the gameplay video is transmitted over network 122 from client device 102 to gameplay processing system 124, and more specifically, to broadcast server 126 included in gameplay processing system 124. Broadcast server 126 may further process video stream 118 and broadcast live gameplay video 128a for other users, such as user 130, to watch the gameplay video via device 132. In some embodiments, broadcast server 126 provides a website through which the gameplay video can be live-streamed and accessed by viewers. In some embodiments, broadcast server 126 is configured to provide such gameplay video via a dedicated interface, such as a game platform via a dedicated game console, an application on a mobile device, a video sharing site, a social networking service, etc.
[0038] Broadcast server 126 provides viewers with access to watch other game play videos, such as game play video 128b, which can be live or previously recorded game play videos. Furthermore, broadcast server 126 stores game play videos to video storage device 134.
[0039] According to embodiments of this disclosure, metadata 120 from video game 106 is also streamed along with video stream 118. Metadata 120 is associated with (or linked to, or synchronized in some embodiments with) a temporal sequence or video frames of the gameplay video defined by video stream 118. Metadata 120 includes information about gameplay occurring within the gameplay video, such as the ongoing level or chapter, the spatial location of the gameplay (e.g., the spatial location of a given virtual object or character), events or actions in progress, etc. It should be understood that the correlation between the metadata and the temporal sequence of the gameplay video enables the metadata to be used to understand what is happening and where (temporally or spatially) events are occurring at each specific moment in the gameplay video.
[0040] In some implementations, metadata is accessed via API 108 of video game 106. In some implementations, metadata is obtained by application 112 running on operating system 110 of client device 102. In some implementations, application 112 is a service of operating system 110. In some implementations, metadata 120 is streamed to game processing system 124 via a separate data channel. In other implementations, metadata is embedded in the video stream itself because certain video formats provide additional fields that can be enabled and used for metadata transmission.
[0041] As noted, broadcast server 126 is included as part of game processing system 124. Video streams and metadata are transmitted to game processing system 124 via network 122, and in some embodiments, more specifically to broadcast server 126. Metadata 120 is stored in metadata storage device 136.
[0042] Analyzer 138 is configured to analyze gameplay videos and their corresponding metadata. In doing so, analyzer 138 can generate additional metadata for a given gameplay video, which can further characterize the gameplay video or provide additional information about it. This metadata can then be used to enable filtering and searching of the gameplay video based on such characteristics or information. In some implementations, analyzer 138 may use machine learning or artificial intelligence processes to analyze the gameplay video and its associated metadata to achieve a deeper understanding of what is happening in a given gameplay video.
[0043] Video search server 140 is configured to provide public search capabilities, allowing viewers / players to view stored game videos. Searching for game videos can be filtered or ranked based on various factors, such as popularity, number of views, subscribers, the relationship between the creator and viewer on social networks / graphs (e.g., prioritizing videos from a user's friend list on a social network), playback speed, etc.
[0044] In some implementations, gameplay videos are searched and presented for the purpose of providing assistance or support to users playing video games. For example, application 112 of client device 102 may be configured to access video search server 140 to obtain gameplay videos related to the user's current gameplay in video game 106. One example of this is providing gameplay videos featuring gameplay from locations that are the same as or similar to the user's current location. For example, but not limited to, application 112 may obtain the user's current location in the video game (e.g., the location of a user-controlled virtual character in the video game's virtual environment) and use that location to access video search server 142 to search for videos showing gameplay from the same or near the user's location. In this way, the system can provide content to user 100 that is localized to the user's location in the video game.
[0045] It should be understood that while a position in a video game can be understood as a spatial location within the virtual environment of the video game, for the purposes of this disclosure, a position in a video game can also be a temporal location, progress point, or storyline location within the video game's background. For example, a video game may require the completion of a series of tasks or achievements for the user to gain progress within the game. Therefore, the completion of these tasks can be used to define the amount of progress the user has achieved in the video game. Such progress can also be associated with levels, chapters, scenes, or other segments specifically defined within the video game's storyline. It is understood that any of these types of progress indicators can be used to define the user's position in the video game, and as mentioned above, it can be used to provide content that positions the user.
[0046] In some implementations, the results of the video search can be presented to the user in the game. For example, in some implementations, user 100 can pause their game and request to watch relevant gameplay videos, perhaps to help the user progress in their game, or simply to allow the user to see alternative playthroughs by other users playing at the same or similar locations in the game. In an illustrative implementation, the search is performed as described above, and the obtained relevant gameplay videos 116a, 116b, and 116c are displayed on the screen. In some implementations, application 112 is configured to render an overlay (e.g., a dashboard) on the game screen to present the gameplay video results, and in some implementations, it may include a preview image of the obtained video. User 100 can select one of videos 116a, 116b, or 116c (e.g., select a preview image of the video) to initiate playback of the selected video.
[0047] Although the execution of the video game has been described as occurring at client device 102, it should be understood that in other embodiments, the video game may be executed in the cloud. That is, the video game can be executed via a cloud gaming server / computer, with the game streamed to the client device over a network. Therefore, other functions of the client device as described above, such as the functions of application 112, can be executed in the cloud.
[0048] Figure 2 This illustration conceptually depicts a process for generating useful information and providing novel features to players and game developers using game-playing video streams and associated metadata, according to embodiments of this disclosure. On the left side of the illustrative embodiment are shown various types of information generated from a running video game, including video stream time series 200, progress metadata 202, event metadata 204, coordinate vector time series 206, and controller input time series 208. The video stream time series 200 consists of streaming game-playing video with information on the timing and sequence of video frames identifying the game-playing video, allowing metadata or other information associated with the game-playing video to be correlated to specific points in time or video frames within the game-playing video. In some embodiments, the video stream time series 200 includes timecodes or sequence numbers for video frames within a given game-playing video.
[0049] Progress metadata 202 includes information identifying the amount of progress already achieved in the video game at a given moment in the game as shown in the video of the game's progress. For example, but not limited to, progress metadata 202 may include information such as levels, chapters, scenes, sections, segments, or other identifiers of which part of the video game's storyline is being played. In some implementations, progress metadata 202 may include data from game-saved snapshots, such as data from autosaves that occur during gameplay. In some implementations, progress metadata 202 may include other progress indicators, such as life or death outcomes. Event data 204 includes information identifying specific events that occur during gameplay. It should be understood that such events may include any of a variety of events or actions that could occur in the context of the video game, such as various tasks, achievements, results, acquiring virtual objects, killing enemies, player death, skill development, movement, combos, etc.
[0050] The coordinate vector time series 206 includes information identifying the user's spatial position and orientation within the virtual environment of the video game at every moment during gameplay. This can be defined, for example, by 3D coordinates in a three-dimensional virtual space and, for example, by the vector orientation of a virtual character or object controlled by the user within that virtual space. The vector orientation can identify the direction in which the virtual character or object faces or moves within the virtual space, and can further identify the rate or speed of such movement. The controller input time series 208 includes information identifying controller inputs or commands fed to the video game, which are generated through user interaction during gameplay.
[0051] It should be understood that since each of the video stream time series 200, progress metadata 202, event metadata 204, coordinate vector time series 206, and controller input time series 208 is related to the timing and / or video frames of the game execution video, this information can be used to determine and analyze what is happening in each frame or at each moment of the game execution video. Analysis process 210 is configured to analyze the aforementioned information to determine various information and provide various features as currently described.
[0052] In some implementations, the analysis process 210 includes a spatiotemporal (or temporal-spatial) identification process for constructing a game site map using collected data. For example, the spatiotemporal identification process can use video stream time series 200 and coordinate vector time series 206 to tile a game world map, thereby constructing an in-game view of the game site. This can be particularly useful because spatial identification can be used to reconstruct legacy or third-party game worlds without prior knowledge of the game code. In some implementations, the spatiotemporal identification process maps a specific view of the game's virtual environment to a specific location and viewing direction (or perspective) within said virtual environment. In some implementations, the spatiotemporal identification process is capable of generating a 3D game site map, for example, based on a provided view of a given 3D space using photogrammetry-type techniques or other types of 3D mapping techniques. That is, the process can determine the 3D geometry of the video game's virtual environment by analyzing the content of image frames from a video of the game and using coordinate vector time series identifying the perspective from which the image frames are rendered.
[0053] Furthermore, the analysis process 210 can be configured to analyze player behavior using the provided information. For example, but not limited to, the analysis process can determine the spatial popularity 214 of locations within the game's virtual environment. The analysis process 210 can analyze gameplay videos from many users over time and identify and track the number of users accessing different areas of the virtual environment. In this way, the popularity of specific game areas can be determined. This type of information is highly valuable for analyzing player behavior and focusing game-related efforts on popular areas. For example, popular areas can be targeted for in-game advertising, concentrated development work (e.g., artist time), broadcasts, etc. Similarly, less popular areas in the game can be identified and improved to increase their popularity.
[0054] In some implementations, the analysis process 210 can be configured to generate visual labels 216 for the game map. For example, the visual labels could be thumbnails generated from game video or even clips from the game video, associated with specific locations within the game map. This allows users viewing the game map to see images from specific areas of the game.
[0055] As already described, in some implementations, the analysis process 210 may further enable the game to perform video search and filtering (reference numeral 218), for example, to provide walkthrough videos to assist the player.
[0056] Furthermore, the analysis process 210 can be configured to analyze and determine player behavior 220. For example, a given gameplay video can be analyzed to determine the skill level of the player who generated the gameplay video. Since players' skill levels can be associated with their gameplay videos, skill levels can be used to filter gameplay videos from other users. For example, the skill level of the currently playing user can be determined, and then videos from players with similar skill levels can be provided to that user. As another example of player behavior, specific player actions at a particular time or location can be identified. Actions leading to successful outcomes and actions leading to unsuccessful outcomes can be identified. This type of information can be used to provide prompts to players.
[0057] Figure 3Various game progress videos related to a user's current game progress are conceptually illustrated according to embodiments of this disclosure. The bar indicated by reference numeral 300 conceptually represents the user's progress during gameplay of the video game. Moving along the bar from left to right represents the user's progress within the context of the video game's gameplay. It will be understood that progress may involve time travel within the storyline, spatial travel within the virtual environment, and / or other types of travel that define progress within the context of the video game. Various previously recorded game progress videos 302, 304, and 306 are also conceptually shown and represented as bars. It should be understood that the vertically aligned portions of the user's game progress 300 and the various game progress videos 302, 304, and 306 indicate similar or identical progress states.
[0058] Therefore, in the illustrated embodiment, when the user's game progress has advanced to a given progress state 308, this corresponds to time point 303 in game progress video 302 and time point 305 in game progress video 304, which are the time points in their respective game progress videos when the same or similar progress states are reached. For example, progress state 308 can be defined by a spatial location in the virtual environment. In this case, time points 303 and 305 in game progress videos 302 and 304 respectively represent the time points in the game progress videos where gameplay occurs at the same spatial location. Similarly, as an example, progress state 308 can be defined by a time position or achievement level within the storyline background of the video game. In this case, time points 303 and 305 in game progress videos 302 and 304 respectively represent the time points in the game progress videos where the game achieves the same or similar time position or achievement level within the storyline background.
[0059] As noted, the system can provide gameplay videos to offer help videos to assist users in their gameplay. Therefore, when providing videos, playback can be configured to begin at a time point corresponding to a progress state that is the same as or similar to the user's progress state. In this case, playback would begin at time point 303 in gameplay video 302 or time point 305 in gameplay video 304, thus jumping forward in the video to the relevant portion for the user. In some implementations, playback can be configured to begin slightly earlier than a time point matching the user's progress state (e.g., a predefined amount, such as a few seconds earlier) to provide the user with an earlier background while watching the video.
[0060] As described above, help videos can be searched and filtered based on their correspondence with the user's current progress. Therefore, in the illustrated embodiment, when the user's game progress 300 is at progress state 308, game progress videos 302 and 304 can be provided as help videos, while game progress video 306, which does not overlap with progress state 308 in terms of progress, is not provided as a help video. However, when the user's game progress 300 has advanced to progress state 310, game progress video 306 can be provided as a help video, while game progress video 302 will not be provided.
[0061] Another aspect that can be used to search and filter gameplay videos for presentation to users is the amount of remaining time in the gameplay video at the relevant point in time. See also... Figure 3 In the illustrated implementation, when the user's game progress 300 is at progress state 308, if the replay of game progress video 302 begins at time point 303, then there is a remaining amount 312 (time or progress) in game progress video 302. However, if the replay of game progress video 304 begins at time point 305, then there is a remaining amount 314 in game progress video 304. In some implementations, when the game progress begins at the relevant time point, the remaining amount of time can be used to filter or prioritize game progress videos for presentation to the user. Therefore, for example, game progress video 304 can be prioritized over game progress video 302 as a help video because the remaining amount 314 in game progress video 304 is greater than the remaining amount 312 in game progress video 302. Therefore, if game progress video 304 is selected, the user can enjoy a longer replay. In some implementations, if the remaining amount in the game progress video is less than a predefined amount, such a game progress video will not appear or be presented to the user because watching video segments with too short a duration is unlikely to be helpful to the user.
[0062] Similarly, when the user's game progress has reached progress state 310, if the replay of game progress video 304 begins at time point 307, then there is still 316 remaining game progress videos to watch. However, if the replay of game progress video 306 begins at time point 309, then there is 318 remaining videos to watch, which is much greater than 316. Therefore, in some implementations, game progress video 306 is viewed before game progress video 304.
[0063] Figure 4Various intersecting paths of game progression videos in a virtual environment according to embodiments of this disclosure are conceptually illustrated. During gameplay of the video game, the user may be located at position P0 in the virtual environment 400. In some embodiments, position P0 is defined by a three-dimensional spatial location in the virtual environment 400, which may be further identified by three-dimensional coordinates (x0, y0, z0). When located at position P0, previously recorded game progression videos V1, V2, and V3 may be presented to the user, as already described. These game progression videos have been selected from a large number of existing recorded game progression videos because they are videos where gameplay occurs at the same or near position P0 in the video.
[0064] It is understood that video game players can take different paths through the virtual environment 400, therefore different gameplay videos will show different paths traversing the virtual environment. As shown in the illustrative embodiment, the gameplay captured by gameplay video V1 traverses path 402 in the virtual environment 400. Similarly, the gameplay captured by gameplay video V2 traverses path 404, and the gameplay captured by gameplay video V3 traverses path 406. These gameplay videos represent gameplay that intersects at position P0, or intersects with region 408 in the virtual environment 400 near position P0. Gameplay videos V1, V2, and V3 have been filtered from existing gameplay videos based on their having gameplay that intersects with position P0 or neighboring region 408.
[0065] When the user moves to a new location P1 with 3D coordinates (x1, y1, z1), a set of different game performance videos are presented to the user based on the user's updated location. In the illustrative embodiment, game performance videos V4, V5, and V6 are selected to be presented to the user. The game performance captured by game performance videos V4, V5, and V6 occurs along paths 410, 412, and 414 respectively traversed within the virtual environment 400. These paths intersect with location P1 or a region 416 adjacent to or near location P1.
[0066] In the currently described implementation, it should be understood that the game progress video is filtered and selected to be presented to the user based on the locations and paths traversed by the game progress captured within the game progress video. As already described, this filtering and selection is made possible by transmitting metadata describing the locations where game progress occurs at any given moment in the game progress video. Therefore, as the user moves to various locations within the virtual environment 400, the game progress video presented to the user is dynamically filtered / shuffled and updated based on the user's current location. This can provide a dynamic help / hint system that utilizes existing game progress videos provided by the user and presents these videos to the player in a manner relevant to the player's current game progress.
[0067] It's important to note that gameplay videos are not specifically designed to provide help / assistance. However, by mapping such replays of others to corresponding spatial / temporal locations in their video games, they can be used to demonstrate others' gameplay at similar progress points in the video game to provide assistance.
[0068] In some implementations, gameplay videos can be stitched together across multiple videos, for example, to create level experiments from user-generated content while the user is playing the game. By collecting metadata associated with the gameplay videos while the user is simply playing, it becomes possible to determine what is being displayed and what is happening in a given gameplay video and intelligently provide access to its content.
[0069] Figure 5 This illustration conceptually depicts a user facing different directions in a virtual environment according to embodiments of the present disclosure, and the different gameplay videos presented as a result. In the illustrative embodiment, the user view of the virtual environment 500 of the video game is represented by a view of a user-controlled virtual character 502. In some embodiments, different gameplay videos may be presented when the user looks in different directions. For example, when the user is facing direction 504, gameplay video V7 is suggested, while when the user is facing direction 506, gameplay video V8 is suggested, and when the user is facing direction 508, gameplay video V9 is suggested. These different gameplay videos may represent different paths that work backwards in the virtual environment 500 of the video game. Thus, when the user looks in a given direction, a gameplay video showing the player's gameplay along a path in that direction within the virtual environment is presented.
[0070] In some implementations, when faced with multiple options / paths in the user's view, the system can present a video corresponding to each option. For example, a user may be faced with different corridors to choose from, and the system can extract video of the player walking through each corridor. As noted, in some implementations, different videos are presented based on the direction the user is facing, thus displaying different gameplay videos based on one of the corridors the user is facing.
[0071] Figure 6A conceptual illustration shows the selection of game progress video based on a user's game progress path according to an embodiment of this disclosure. In the illustrated embodiment, the user's game progress traverses a virtual environment 600, moving from position P3 to P4, then to P5, then to P6, then to P7. It should be understood that in some embodiments, these positions may be spatial locations in virtual space. In other embodiments, the positions may be logical locations within the video game context, representing choices or other types of user control actions when guiding game progress events. As the user traverses the virtual environment 600 from position P3 to position P7, the user's game progress defines path 602.
[0072] In some implementations, video feeds can be filtered or selected for the user based on the path they have taken in the video game. More specifically, video feeds of games whose paths are similar to those previously taken by other players and the current path taken by the current user can be prioritized or selected for presentation to the user. In the illustrated implementation, when the user has reached position P7, video V... 10 V 11 and V 12 The selection of available game play videos is based at least in part on the game play paths taken within those videos. Therefore, the system can display videos of other users who follow similar paths or visit the same or similar locations. In this way, the system can display game play videos from other users whose style is closer to the current user's.
[0073] In various implementations, the concept of searching for gameplay videos from players exhibiting a style similar to the currently playing user can be extended to encompass any aspect that can be determined from metadata associated with the gameplay video. For example, but not limited to, these aspects of gameplay can include the order and type of actions taken by the player, the sequence of events, the type of movement and the pattern of movements performed, skill level, controller inputs, etc. In some implementations, the similarity between the current user's gameplay and previous users' gameplay videos can be determined, and this similarity can be used to select or filter gameplay videos to present to the current user. While filtering gameplay videos to display other players with similar styles has been discussed, prioritizing videos of players exhibiting different styles from the current user can also be beneficial in order to showcase other playstyles and help the current user improve their skill level by trying different actions or playstyles.
[0074] Figure 7A conceptual illustration shows the use of controller input time series in playback video according to embodiments of the present disclosure. In an illustrative embodiment, player 700 operates controller device 702 during gameplay of a video game rendered as shown by reference numeral 704. As described above, such gameplay video can be stored along with corresponding metadata. In some embodiments, controller inputs generated from controller device 702 (e.g., button presses, joystick movements, etc.) can form part of the corresponding metadata mapped to the gameplay video.
[0075] When the gameplay video is presented to another user, as indicated by reference numeral 706, the gameplay video can be further configured to include a portion 708, such as an overlay, displaying the controller inputs of the original player 700. That is, indicators of the inputs generated by the player 700's actions on the controller device 702 can be displayed in portion 708, allowing the viewing user, such as the current player using the gameplay video 706 as help video, to also see the specific controller inputs made by the player 700. In this way, the viewing user can see not only the actions occurring in the gameplay video 706, but also the controller inputs that produced those actions. In some embodiments, the display of the controller inputs in portion 708 is configured to scroll up, down, or left and right, displaying the original sequence of controller inputs synchronized with the playback of the gameplay video.
[0076] In some implementations, player input can be used for filtering. For example, showing videos of low-skilled players alongside high-skilled players might not be helpful because low-skilled players may not be able to perform the same types of inputs / manipulations. Therefore, player input associated with gameplay videos can be used to filter gameplay videos. In some implementations, machine learning processes can be used to analyze player input and determine user skill levels. Thus, user input can be used to rank the skill levels of player videos, and the same can be done for active users. Using this information, videos of appropriate skill levels can be fed to users.
[0077] In some implementations, other types of information can be provided in the metadata, such as levels / chapters, success indicators, deaths, checkpoints, etc., which can be used to prioritize gameplay videos. For example, a gameplay video showing a player repeatedly dying in a relatively short period of time may not be as useful as watching a more successful video (where the player progresses without dying). Therefore, the number of player deaths within a given amount of time can be used as a factor in prioritizing videos.
[0078] In some implementations, machine learning can be used to assess what successful players have done or possess. For example, the system can determine that a person should possess a golden key based on analysis of various videos and their metadata. This learning can then be displayed to the user as a prompt, such as showing a message indicating that most / all successful players possess a golden key to continue.
[0079] In some implementations, developers can provide a master timeline of prompts applicable to any video so that these prompts are displayed when a user watches a given video.
[0080] In some implementations, gameplay video can be displayed on a device separate from the device where the current gameplay is taking place, such as via a companion app on a mobile device or other device.
[0081] Implementations of this disclosure may be included as part of a game engine. Broadly speaking, a game engine is a software development framework that provides features for the efficient development of video games. A game engine may include a software library with reusable modules to handle various aspects of game functionality, including, but not limited to, graphics rendering (e.g., including vertex processing, polygon processing, shading, lighting, texturing, etc.), sound, physics (including collision handling), animation, scripting, artificial intelligence, networking, streaming, memory management, threading, localization support, scene graphs, cinematography, etc.
[0082] Game engines can be optimized for different hardware platforms, such as game consoles, mobile devices, and personal computers. For example, but not limited to, a game engine can optimize memory usage based on the platform (e.g., how to prioritize tasks in the graphics pipeline). In some implementations, the hardware can be a blade version of a specific processing entity, such as a game console. Therefore, a user can be assigned to a specific blade that provides the same hardware optimized for console games.
[0083] Understandably, there could also be game server logic to provide streaming and / or other services (packaging, encoding, Quality of Service (QoS) monitoring, bandwidth testing, access to social networks / friends, etc.).
[0084] In some implementations, the cloud infrastructure can run a hypervisor that abstracts the hardware and provides a virtual machine framework on which an operating system (OS) can be loaded. Therefore, the stack can include applications / video games running on an OS loaded on a virtual machine (VM) instantiated by the hypervisor, which in turn loads on the underlying hardware. In this way, application execution does not necessarily have to be coupled to specific hardware.
[0085] In some implementations, applications / video games can be executed on a container that abstracts at the application layer, packaging code and dependencies together to enable OS or hardware platform-independent software development and promote cross-platform portability.
[0086] In some implementations, a distributed game engine is employed, where different parts of the game engine can be processed by different computational entities. For example, game engine functions such as a physics engine, rendering engine (2D / 3D graphics), sound, scripting, animation, AI, networking, streaming (encoding), memory management, threading, etc., can be divided into different functional processing blocks and / or services distributed across many different computations. It should be understood that for a distributed game engine, low-latency communication is required to avoid latency issues. To maintain the required frame rate, the total time for computation and communication should meet certain constraints. Therefore, dividing certain tasks based on whether it is possible to complete the process in a shorter time may be effective or ineffective.
[0087] One advantage of using a distributed game engine is the ability to leverage elastic computing, where computing resources can scale up or down as needed. For example, in large multiplayer games traditionally run on a single hardware server, after, say, around 100 players, hardware resources become limited, preventing the addition of more players. The game might then have other players queuing, meaning players have to wait to join. However, with a distributed game engine, by using elastic cloud computing resources, more computing nodes can be added to meet the demand, enabling the support of, say, thousands of players. The game is no longer constrained by a specific hardware server.
[0088] Therefore, cloud gaming engines can distribute functionality across different processing entities. It's understandable that different functions can be executed within different frameworks. For example, some functions (such as social features) might be easier to run in a container, while graphics might run better using a VM connected to the GPU.
[0089] To facilitate the functionality of the distributed cloud gaming engine, the distribution / synchronization layer can manage the distribution of jobs, such as sending out jobs, receiving data, identifying which tasks to execute and when, and handling queuing, for example, if a job completes faster than needed. In some implementations, a given task can be dynamically subdivided if necessary. For example, animation may have lighting, and if the lighting is particularly complex, it can be subdivided into three lighting jobs, which are sent out for computation and reassembled upon return. Therefore, if the game engine functionality requires more work, it can be subdivided.
[0090] Cloud service providers offer computation for specific performance levels, such as input / output operations per second (“IOPS”). Therefore, game providers can specify VMs, dedicated processing power, storage capacity, etc., from the cloud service provider and instantiate a distributed cloud gaming engine using the cloud service provider's system.
[0091] In some implementations, the library modules and update handlers may be one or more components or modules of the game engine. In some implementations, the library modules and update handlers may be separate components or integrated. In some implementations, the library modules and update handlers may operate as a supplement to the game engine. In some implementations, the game engine may be a distributed game engine, as described above.
[0092] As described above, the embodiments of this disclosure can be applied to cloud gaming systems. An example of a cloud gaming system is... Now cloud gaming system. In such systems, the client device can be a game console, such as... 4. A game console, or another device such as a personal computer, laptop computer, tablet computer, mobile phone, mobile device, etc.
[0093] In a broad sense, to implement cloud gaming, when a user request for a game name is received, one or more servers within a data center associated with the cloud gaming site perform several operations. When the cloud gaming site receives a user request, it identifies the data center hosting the game associated with the selected game name and sends the request to the identified data center to instantiate the game for the selected game name. In response to this request, the server at the data center identifies the game code, loads the identified game code, and initializes files associated with the game code to prepare for presenting the game content to the user. Game data associated with the game may include general game data and user-specific game data. Therefore, initialization files may include identifying, loading, and initializing general game data and user-specific game data. Initializing general game data may include initializing the graphics engine, installing graphics data, initializing sound files, installing original images, etc. Initializing user-specific data may include locating, transferring, and installing user data, user history, game history, etc.
[0094] During the loading and initialization of general game data, a "launch" screen can be provided for rendering on the client device. A launch screen can be designed to provide a representative image of the game being loaded, allowing the user to preview the type of game being loaded. Once the general game data is loaded, some initial content can be rendered, and a selection / navigation screen can be presented for user selection and customization. User input provided on the selection / navigation screen may include game level selection, selection of one or more game icons, game mode selection, game rewards, and other user-related data that may require uploading additional game content. In some implementations, game content is made available for viewing and interaction by streaming game content from a game cloud system to the user's computing device. In some implementations, game content is available for playing after loading user-specific data.
[0095] Figure 8A An exemplary system for loading game files for games available through a cloud gaming site is illustrated. The system includes a plurality of client devices 800 communicatively connected to a cloud gaming site 804 via a network 802, which may include a LAN, wired network, wireless network, cellular network (e.g., 4G, 5G, etc.), or any other type of data network, including the Internet. When a request to access the cloud gaming site 804 is received from a client device 800, the cloud gaming site 804 accesses user account information 806 stored in a user data storage area 808 to identify the user associated with the requesting client device. In some embodiments, the cloud gaming site may also verify the identified user to determine all games that the user is authorized to view / play. After user account identification / verification, the cloud gaming site accesses a game name data storage area 810 to obtain game names available at the game cloud site for the requesting user account. The game name data storage area 810 then interacts with a game database 812 to obtain game names for all games available at the cloud gaming site. When a new game is launched, the game database 812 will be updated with the game code, and the game name data storage area 810 will be provided with the game name information of the newly launched game. When a request is made, the requesting client device may or may not register with the cloud gaming site. If the user of the requesting client device is not a registered user, the cloud gaming site may identify the user as a new user and select a suitable game name for the new user (e.g., a default set of game names). The identified game name is returned to the client device for display on screen 800-a, such as... Figure 8A As shown.
[0096] User interaction is detected at a game name rendered on the client device, and a signal is sent to the cloud gaming site. This signal includes information about the game name where the user interaction was detected, as well as the user interaction registered at that game name. In response to the signal received from the client device, the cloud gaming site proactively determines the data center hosting the game and sends a signal to the identified data center to load the game associated with the game name where the user interaction was detected. In some implementations, there may be more than one data center hosting the game. In such implementations, the cloud gaming site may determine the geographic location of the requesting client device, identify a data center geographically close to the client device, and signal that data center to preload the game. The user's geographic location can be determined using a Global Positioning System (GPS) mechanism within the client device, the client's IP address, the client's ping information, etc. Of course, the aforementioned methods for detecting the user's geographic location are exemplary, and other types of mechanisms or tools can be used to determine the user's geographic location. Identifying a data center close to the client device can minimize latency during user interaction with the game. In some implementations, the identified data center may not have the bandwidth / capacity required to host the game or may be overused. In these implementations, the cloud gaming site may identify a second data center geographically close to the client device. Game loading includes loading the game code and executing an instance of the game.
[0097] In response to receiving a signal from a cloud gaming site, the identified data center can select a server at the data center to instantiate the game on the server. The server selection is based on available hardware / software capabilities and the game's requirements. The server may include multiple game consoles, and the server can determine which of the multiple game consoles to use to load the game. The game console can be similar to a standalone game console, or it can be a rack-mounted server or a blade server. The blade server can then include multiple server blades, each with the circuitry required to instantiate a single dedicated application, such as a game. Of course, the game consoles described above are exemplary and should not be considered limiting. Other types of game consoles (including gaming stations, etc.) and other forms of blade servers can also be used to host the identified game.
[0098] Once the game console is identified, the game's generic game-related code is loaded onto it and sent back a signal to the client device via the cloud gaming site, identifying the game console on which the game is instantiated. The loaded game is then available to the user.
[0099] Figure 8BThis is a flowchart conceptually illustrating various operations performed for streaming a cloud video game to a client device according to embodiments of the present disclosure. A game system 818 executes the video game and generates raw (uncompressed) video 820 and audio 822. The video 820 and audio 822 are captured and encoded for streaming purposes, as indicated by reference numeral 824 in the illustrated figures. Encoding can be used to compress the video and audio streams to reduce bandwidth usage and optimize the gaming experience. Examples of encoding formats include H.265 / MPEG-H, H.264 / MPEG-4, H.263 / MPEG-4, H.262 / MPEG-2, WMV, VP6 / 7 / 8 / 9, etc.
[0100] The encoded audio 826 and encoded video 828 are further packetized into network data packets, as indicated by reference numeral 832, for transmission over a network (such as the Internet). The network data packet encoding process may also employ a data encryption process to provide enhanced data security. In the illustrated embodiment, as indicated by reference numeral 840, audio data packets 834 and video data packets 836 are generated for transmission over the network.
[0101] The game system 818 also generates haptic feedback data 830, which is further packetized into network data packets for network transmission. In the illustrated embodiment, haptic feedback data packets 838 are generated for transmission over the network, as further indicated by reference numeral 840.
[0102] The aforementioned operations of generating raw video and audio data, encoding the video and audio, and packetizing the encoded audio / video and haptic feedback data for transmission are performed on one or more servers that jointly define the cloud gaming service / system. As indicated by reference numeral 840, the audio, video, and haptic feedback data packets are transmitted over a network (such as and / or including the Internet). As indicated by reference numeral 842, audio data packets 834, video data packets 836, and haptic feedback data packets 838 are decoded / reassembled by the client device to define encoded audio 846, encoded video 848, and haptic feedback data 850 at the client device. If the data is encrypted, the network data packets are also decrypted. Then, as indicated by reference numeral 844, the client device decodes the encoded audio 846 and encoded video 848 to generate raw audio and video data on the client side for rendering on display device 852. Haptic feedback data 850 can be processed / transmitted to generate haptic feedback effects at the controller device 856 or other interface devices through which haptic effects can be rendered. An example of a haptic effect is vibration or rumble from the controller device 856.
[0103] It should be understood that video games respond to user input and therefore can execute a program flow similar to the above-described process for transmitting and processing user input, but in the opposite direction from the client device to the server. As shown, a user-operated controller device 856 can generate input data 858. This input data 858 is packetized at the client device for transmission over the network to the cloud gaming system. The input data packet 860 is unpacked and reassembled by the cloud gaming server to define input data 862 on the server side. Input data 862 is fed to the game system 818, which processes the input data 862 to update the game state of the video game.
[0104] During the transmission of audio data packets 834, video data packets 836, and haptic feedback data packets 838 (reference numeral 840), data transmission over the network can be monitored to ensure the quality of service for cloud gaming streaming. For example, network conditions, including both upstream and downstream network bandwidth, can be monitored as indicated by reference numeral 864, and game streaming can be adjusted in response to changes in available bandwidth. That is, the encoding and decoding of network data packets can be controlled based on the current network conditions, as indicated by reference numeral 866.
[0105] Figure 9 An implementation scheme of an information service provider architecture is illustrated. Information service providers (ISPs) 970 provide a wide range of information services to geographically dispersed users 982 connected via network 986. ISPs may offer only one type of service, such as stock price updates, or they may offer various types of services, such as broadcast media, news, sports, games, etc. Furthermore, the services offered by each ISP are dynamic; that is, services can be added or removed at any point in time. Therefore, the ISP providing a specific type of service to a particular individual may change over time. For example, when a user is in her hometown, she may be served by an ISP located near her, and when she travels to different cities, she may be served by different ISPs. The local ISP will transfer the necessary information and data to the new ISP, allowing user information to "follow" the user to new cities, thus making the data closer to the user and more easily accessible. In another implementation scheme, a master-slave relationship can be established between a primary ISP that manages information for the user and a server ISP that directly interfaces with the user under the control of the primary ISP. In yet another implementation scheme, when a client moves worldwide, data is transferred from one ISP to another, so that the ISP in a better location to serve the user becomes the ISP providing those services.
[0106] ISP 970 includes Application Service Providers (ASPs) 972, which provide computer-based services to customers via a network (e.g., including but not limited to any wired or wireless network, LAN, WAN, WiFi, broadband, cable, fiber optic, satellite, cellular (e.g., 4G, 5G, etc.), the Internet, etc.). Software provided using the ASP model is sometimes also referred to as software-on-demand or Software as a Service (SaaS). A simple form of providing access to a specific application (such as customer relationship management) is using a standard protocol (such as HTTP). The application software resides on the vendor's system and is accessed by users via a web browser using HTML, via dedicated client software provided by the vendor, or via other remote interfaces (such as thin clients).
[0107] Services delivered over vast geographical areas often utilize cloud computing. Cloud computing is a computing paradigm where dynamically scalable and often virtualized resources are provided as a service over the internet. Users do not need to be experts in the technical infrastructure supporting their “cloud.” Cloud computing can be categorized 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 business applications online, accessible from a web browser, while software and data are stored on servers. Based on how the internet is depicted in computer network diagrams, the term “cloud” is used as a metaphor for the internet (e.g., using servers, storage devices, and logic) and an abstract concept of the complex infrastructure it hides.
[0108] Furthermore, the ISP 970 includes a game processing server (GPS) 974, which is used by game clients to play single-player and multiplayer video games. Most video games played on the Internet run via 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 arrangement, but it requires a separate server to host the server application. In another implementation, the GPS establishes communication between players, and the players' respective gaming devices exchange information without relying on a centralized GPS.
[0109] Dedicated GPS servers operate independently of the client. These servers typically run on dedicated hardware located within a data center, providing greater bandwidth and dedicated processing power. For most PC-based multiplayer games, dedicated servers are the preferred method for hosting game servers. Large-scale multiplayer online games run on dedicated servers, which are often hosted by the software company that owns the game's title, allowing them to control and update content.
[0110] A Broadcast Processing Server (BPS) 976 distributes audio or video signals to viewers. Broadcasting to a very small audience is sometimes called narrowcasting. The final stage of broadcast distribution is how the signal reaches the listener or observer, and it may travel through the air to an antenna and receiver, like a radio or television station, or it may be transmitted via cable television or wired broadcasting (or “wireless cable”) through a workstation or directly from a network. The Internet can also bring radio or television to receivers, especially through multicast, which allows for the sharing of signals and bandwidth. Historically, broadcasting has been defined by geographical areas, such as national broadcasting or regional broadcasting. However, with the widespread availability of the fast Internet, broadcasting is no longer defined by geographical conditions, as content can reach almost any country in the world.
[0111] Storage Service Providers (SSPs) provide computer storage space and related management services. SSPs also offer periodic backups and archiving. By offering storage as a service, users can order more storage devices as needed. Another major advantage is that SSPs include backup services, so users will not lose all their data if their computer's hard drive fails. Furthermore, multiple SSPs can have full or partial copies of user data, allowing users to access their data efficiently, regardless of their location or the device used to access the data. For example, users can access personal files on their home computer and mobile phone (when the user is on the move).
[0112] Communication providers 980 offer connectivity to users. One type of communication provider is an Internet Service Provider (ISP), which provides access to the Internet. ISPs use data transmission technologies suitable for transmitting Internet Protocol (IP) datagrams to connect their customers, such as dial-up, DSL, cable modems, fiber optic, wireless, or dedicated high-speed interconnects. Communication providers may also offer messaging services such as email, instant messaging, and SMS. Another type of communication provider is a Network Service Provider (NSP), which sells bandwidth or network access by providing direct backbone access to the Internet. Network Service Providers can include telecommunications companies, data carriers, wireless communication providers, Internet Service Providers, cable TV operators providing high-speed Internet access, etc.
[0113] The data switch 988 interconnects several modules within the ISP 970 and connects these modules to the user 982 via the network 986. The data switch 988 can cover a small area where all the modules of the ISP 970 are very close together, or a large geographical area when the different modules are geographically dispersed. For example, the data switch 988 may include Fast Gigabit Ethernet (or even faster Gigabit Ethernet) within a data center rack, or an intercontinental virtual area network (VLAN).
[0114] User 982 accesses a remote service using client device 984, which includes at least a CPU, memory, display, and I / O. The client device can be a PC, mobile phone, laptop, tablet, gaming system, PDA, etc. In one implementation, ISP 970 identifies the type of device used by the client and adjusts the communication method accordingly. In other cases, the client device uses standard communication methods (such as HTML) to access ISP 970.
[0115] The embodiments of this disclosure can be practiced with various computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. This disclosure can also be practiced in distributed computing environments, where tasks are performed by remote processing devices linked via wired or wireless networks.
[0116] In some implementations, wireless technologies can be used to facilitate communication. Such technologies may include, for example, 5G wireless communication technology. 5G is the fifth generation of cellular network technology. A 5G network is a digital cellular network in which the service area covered by the provider is divided into small geographical areas called cells. Analog signals representing voice and images are digitized in a telephone call, converted by an analog-to-digital converter, and transmitted as a bit stream. All 5G wireless devices in a cell communicate via radio waves with a local antenna array and low-power automatic transceivers (transmitters and receivers) in the cell, using frequency channels allocated by transceivers from a frequency pool reused from other cells. The local antennas are connected to the telephone network and the Internet via high-bandwidth fiber optic or wireless backhaul connections. As in other cellular networks, mobile devices moving from one cell to another automatically switch to the new cell. It should be understood that 5G networks are merely an example type of communication network, and embodiments of the present invention may utilize earlier generations of wireless or wired communication, as well as newer generations of wired or wireless technologies after 5G.
[0117] In light of the above embodiments, it should be understood that this disclosure can employ various computer-implemented operations involving data stored in a computer system. These operations are those that require physical manipulation of physical quantities. Any operation described herein that forms part of this disclosure is a useful machine operation. This disclosure also relates to devices or apparatuses for performing these operations. The apparatus may be specifically constructed for the desired purpose, or the apparatus may be a general-purpose computer selectively activated or configured by a computer program stored in a computer. Specifically, 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 more specialized apparatuses to perform the desired operations.
[0118] This disclosure can also be implemented as computer-readable code on a computer-readable medium. Alternatively, the computer-readable code can be downloaded from a server using the data exchange interconnect described above. A computer-readable medium is any data storage device capable of storing data that can subsequently be read by a computer system. Examples of computer-readable media include hard disk drives, network attached storage devices (NAS), read-only memory, random access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer-readable medium may include computer-readable tangible media distributed across network-coupled computer systems, enabling the computer-readable code to be stored and executed in a distributed manner.
[0119] Although the method operations are described in a specific order, it should be understood that other housekeeping operations may be performed between operations, or operations may be adjusted so that they occur at slightly different times, or they may be distributed in a system that allows processing operations to occur at various intervals associated with the processing, as long as the processing of the covered operations is performed in the desired manner.
[0120] While the foregoing disclosure has been described in considerable detail for the purposes of clarity, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Therefore, this embodiment is to be considered illustrative rather than restrictive, and this disclosure is not limited to the details given herein, but may be modified within the scope and equivalents of the described embodiments.
Claims
1. A method, the method comprising: Video generated at the respective sessions of the video game is received via a network from multiple first client devices executing various sessions of the video game. For each video, location metadata is received via the network from one of the first client devices. The location metadata identifies a spatial location in the virtual environment of the video game where the game depicted in the video is taking place. The location metadata is associated with a video frame of the video and identifies the spatial location where the game is taking place as depicted in a given video frame. During a session of the video game executed by a second client device, the current spatial location in the virtual environment in which the game takes place during the session is received via the network; Use the current spatial location to select one or more of the videos; The selected video is presented at the second client device via the network; as well as Track updates to the current spatial location and responsively update and present one or more videos based on these updates.
2. The method of claim 1, wherein receiving the location metadata of a given video and receiving the given video via the network occur substantially simultaneously.
3. The method of claim 2, wherein the given video and the location metadata of the given video are synchronously streamed from the first client device that generated the given video via the network.
4. The method according to claim 1, wherein the current spatial position in the virtual environment is defined by the current spatial coordinates of the virtual character or virtual object in the virtual environment.
5. The method of claim 1, wherein the location metadata identifying a spatial location in the virtual environment is defined by the spatial coordinates of a virtual character or virtual object in the virtual environment over time.
6. The method of claim 1, wherein the location metadata identifies a chapter, level, or scene of the video game.
7. The method of claim 1, wherein the current location is used to select one or more of the videos, including one or more of the videos that identify a spatial location close to the current spatial location.
8. The method of claim 1, wherein presenting the selected videos includes displaying a preview image of each of the selected videos.
9. The method according to claim 1, further comprising: Receive a request to play back one of the selected videos; In response to the playback request, one of the selected videos is streamed to the second client device.
10. A non-transitory computer-readable medium having program instructions embodied thereon, the program instructions, when executed by at least one computing device, causing the at least one computing device to perform a method comprising the following operations: Video generated at the respective sessions of the video game is received via a network from multiple first client devices executing various sessions of the video game. For each video, location metadata is received via the network from one of the first client devices. The location metadata identifies a spatial location in the virtual environment of the video game where the game depicted in the video is taking place. The location metadata is associated with a video frame of the video and identifies the spatial location where the game is taking place as depicted in a given video frame. During a session of the video game executed by a second client device, the current spatial location in the virtual environment in which the game takes place during the session is received via the network; Use the current spatial location to select one or more of the videos; The selected video is presented at the second client device via the network; as well as Track updates to the current spatial location and responsively update and present one or more videos based on these updates.
11. The non-transitory computer-readable medium of claim 10, wherein receiving the location metadata of a given video and receiving the given video via the network occur substantially simultaneously.
12. The non-transitory computer-readable medium of claim 11, wherein the given video and the location metadata of the given video are synchronously streamed from the first client device that generated the given video via the network.
13. The non-transitory computer-readable medium of claim 10, wherein the current spatial location in the virtual environment is defined by the current spatial coordinates of a virtual character or virtual object in the virtual environment.
14. The non-transitory computer-readable medium of claim 10, wherein the location metadata identifying a spatial location in the virtual environment is defined by the spatial coordinates of a virtual character or virtual object in the virtual environment over time.
15. The non-transitory computer-readable medium of claim 10, wherein the location metadata identifies a chapter, level, or scene of the video game.
16. The non-transitory computer-readable medium of claim 10, wherein using the current location to select one or more of the videos includes identifying one or more of the videos having location metadata, the location metadata identifying a spatial location close to the current spatial location.
17. The non-transitory computer-readable medium of claim 10, wherein presenting the selected videos includes displaying a preview image of each of the selected videos.
18. The non-transitory computer-readable medium of claim 10, further comprising: Receive a request to play back one of the selected videos; In response to the playback request, one of the selected videos is streamed to the second client device.
Citation Information
Patent Citations
Systems and Methods for Enabling Time-Shifted Coaching for Cloud Gaming Systems
US20170087460A1
Interactive gameplay playback system
US20180001216A1