The present disclosure relates to systems for content recommendation and, more particularly, to systems and related processes for recommending gaming content, such as video game performance videos or tutorials, based on gaming performance.
A user playing a particular level of a video game may wish to improve a particular aspect of their performance of that game level. For instance, the user may wish to decrease a total amount of resources, such as time, ammunition, weapons, food, or the like, that they utilize throughout the course of their performance of the level. Or, the user may wish to increase a total amount of achievements, milestones, or other positive parameters, such as points, numbers of enemies defeated, health score, or the like, that attained throughout the course of their performance of the level. In an effort to help them achieve such gaming performance improvements, the user may wish to view one or more tutorial videos, such as a video of another player's performance of the game level of interest. The user, however, may not wish to cull through vast amounts of videos, user-uploaded or otherwise made available, that show other users playing the level to find a video that the user may find most helpful in achieving their goal for that level. It would thus be beneficial to have a system that can provide users with recommendations for videos or other content that are relevant and/or optimal in helping the user achieve their particular performance goal for a particular gaming level, sub-level, or combination thereof. Technical challenges involved in doing so, however, include how to identify video tutorials or other items of content that are relevant and helpful in achieving their particular goal(s).
In view of the foregoing, the present disclosure provides systems and related methods that recommend video game content based on video game performance. In one example, a streaming game server stores videos and indexes them by one or more parameters, such as corresponding game title, game level, and/or performance metric (for instance, time of level completion, resource utilization, or the like). The server then determines a gaming level that a user is playing or is expected to play next, selects an optimal tutorial video based on game, level, and/or performance metric, and displays within the video game a thumbnail or other option selectable to cause the displaying of the selected tutorial video. The server, in some aspects, may select the optimal tutorial video based on a metric that the user is struggling with—for instance as may be indicated based on uploaded video game data—or based on a metric selected by the user via a dropdown menu within the video game. The server may further optionally stitch together multiple video clips, such as video clips of performances of multiple sub-levels, to generate the optimal tutorial.
In another aspect, the present disclosure provides a system for recommending video game content based on video game performance. The system comprises a database and control circuitry. The database is configured to store a plurality of videos in association with corresponding video game performance metrics. The control circuitry is configured to identify a level from among a sequence of playable levels of a currently active video game. A video game performance metric for the identified level is determined. Based on the determined video game performance metric, a video of a performance of the identified level of the video game is selected for recommendation from among a plurality of videos stored in the database in association with corresponding video game performance metrics. An option, which is selectable to cause playback of the selected video, is transmitted for display via a computing device.
In another example, the determined video game performance metric comprises an amount of time taken to complete the level of the video game.
The determined video game performance metric, in some aspects, comprises at least one of an amount of resources within the video game consumed or remaining at completion of performance of the level of the video game.
In a further aspect, the determining of the video game performance metric comprises receiving a selection, entered via a user interface of the computing device, of the video game performance metric from among a plurality of video game performance metrics.
In another example, the option is transmitted for display via a leaderboard via the computing device.
The level, in some aspects, comprises a plurality of sub-levels. In such aspects, for example, the method further comprises selecting from the database, based on the video game performance metric, a plurality of video clips of performances of the sub-levels, respectively; and generating a combined video by combining the selected plurality of video clips. The generated combined video may be selected as the video for recommendation, and the option may be selectable to cause playback of the generated combined video. In a further aspect, the selecting of the plurality of video clips comprises, for each sub-level, selecting a video clip of a greatest performance, from among respective performances in the sub-level of the video game of a plurality of video clips stored in the database, as indicated by the video game performance metric.
In another example, the selecting the video for recommendation comprises selecting a video of a greatest performance in the identified level of the video game, from among respective performances in the identified level of the video game of a plurality of videos stored in the database, as indicated by the video game performance metric.
The method, in some aspects, further comprises determining a video game performance metric for a video of performance of the level of the video game. A determination is then made as to whether a value of the video game performance metric for the performance of the level of the video game exceeds a greatest value of the video game performance metric for which a video is stored in the database. In response to determining that the value of the video game performance metric for the performance of the level of the video game does not exceed the greatest value of the video game performance metric for which a video is stored in the database, the video of the performance of the level of the video game is deleted from the database.
In a further aspect, the method further includes determining a plurality of video game performance metrics for a video of performance of the level of the video game. The plurality of video game performance metrics are compared to the video game performance metrics stored in the database to determine whether one or more of the plurality of video game performance metrics represent greatest performances for the video game performance metrics. In response to determining that one or more of the plurality of video game performance metrics represent greatest performances for the video game performance metrics, the database is updated to include an indication that the video of performance of the level of the video game is associated with the one or more of the plurality of video game performance metrics determined to represent greatest performances for the video game performance metrics, for use in future content recommendations.
The above and other objects and advantages of the disclosure will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which:
In various embodiments, server 104 captures (110), from computing devices 102 over network 103, videos of game performances performed by one or more users using computing devices 102. For example, computing devices 102 may automatically push videos of game performances to server 104 over network 103, or server 104 may automatically pull videos of game performances from computing devices 102 over network 103. Alternatively or additionally, users may interact with user interfaces of computing devices 102 to cause videos of game performances to be uploaded to server 104 over network 103, along with game details or other relevant details, such as a name or other identifier of a game, a version of the game, an identifier of a game level of the video game performance, and/or the like. Computing device 102 stores (110) the captured videos of game performances in tutorial database 106 and indexes the videos according to game identifier, game level and/or game sublevel, game performance metric, and/or other types of criteria. Once database 106 has been populated with indexed video game tutorials, server 104 is configured to execute an algorithm, utilizing database 106, to select one or more game tutorial video recommendations to a user based on video games, levels, and/or game performance metrics of interest to the user.
Server 104, in some examples, may provide such a video game tutorial recommendation in response to determining that the user is playing a particular game and has selected a game performance metric of interest to the user for that game. In particular, server 104 may determine (112) a game identifier, a game level identifier, a game performance metric, and/or the like of a game that a user is playing via computing device 102 or plans to play via computing device 102. Server 104 may then access database 106 to search for and select (114), in a manner described in further detail below, a video of a game performance based on the game identifier, game level identifier, and/or game performance metric determined at 112. For example, server 104 may select (114) a game tutorial video that is relevant and/or optimal in helping the user achieve their particular performance goal for a particular gaming level, sub-level, or combination thereof, such as a video of a game performance that has a greatest value of the game performance metric determined at 112 across all the game performances stored in database 106 for the game and game level identifiers determined at 112.
Once server 104 has selected a tutorial video at 114, server 104 generates (116) for display via display 108 of computing device 102 a link to the selected tutorial, for instance together with a leaderboard. The displayed link is selectable by the user via a user interface of computing device 102 to cause playback via display 108 and/or one or more speakers (not shown in
Server 104 includes control circuitry 320 and input/output (hereinafter “I/O”) path 322, and control circuitry 320 includes storage 324 and processing circuitry 326. Computing device 102, which, as described above in connection with
Each of storage 324, storage 338, and/or storages of other components of system 100 (e.g., storages of tutorial database 106, and/or the like) may be an electronic storage device. As referred to herein, the phrase “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random-access memory, read-only memory, hard drives, optical drives, digital video disc (DVD) recorders, compact disc (CD) recorders, BLU-RAY disc (BD) recorders, BLU-RAY 3D disc recorders, digital video recorders (DVRs, sometimes called personal video recorders, or PVRs), solid state devices, quantum storage devices, gaming consoles, gaming media, or any other suitable fixed or removable storage devices, and/or any combination of the same. Each of storage 324, storage 338, and/or storages of other components of system 100 may be used to store various types of content, metadata, and or other types of data. Non-volatile memory may also be used (e.g., to launch a boot-up routine and other instructions). Cloud-based storage may be used to supplement storages 324, 338 or instead of storages 324, 338. In some embodiments, control circuitry 320 and/or 328 executes instructions for an application stored in memory (e.g., storage 324 and/or 338). Specifically, control circuitry 320 and/or 328 may be instructed by the application to perform the functions discussed herein. In some implementations, any action performed by control circuitry 320 and/or 328 may be based on instructions received from the application. For example, the application may be implemented as software or a set of executable instructions that may be stored in storage 324 and/or 338 and executed by control circuitry 320 and/or 328. In some embodiments, the application may be a client/server application where only a client application resides on computing device 102, and a server application resides on server 104.
The application may be implemented using any suitable architecture. For example, it may be a stand-alone application wholly implemented on computing device 102. In such an approach, instructions for the application are stored locally (e.g., in storage 338), and data for use by the application is downloaded on a periodic basis (e.g., from an out-of-band feed, from an Internet resource, or using another suitable approach). Control circuitry 328 may retrieve instructions for the application from storage 338 and process the instructions to perform the functionality described herein. Based on the processed instructions, control circuitry 328 may determine what action to perform when input is received from user input interface 336.
In client/server-based embodiments, control circuitry 328 may include communication circuitry suitable for communicating with an application server (e.g., server 104) or other networks or servers. The instructions for carrying out the functionality described herein may be stored on the application server. Communication circuitry may include a cable modem, an Ethernet card, or a wireless modem for communication with other equipment, or any other suitable communication circuitry. Such communication may involve the Internet or any other suitable communication networks or paths (e.g., communication network 103). In another example of a client/server-based application, control circuitry 328 runs a web browser that interprets web pages provided by a remote server (e.g., server 104). For example, the remote server may store the instructions for the application in a storage device. The remote server may process the stored instructions using circuitry (e.g., control circuitry 320) and/or generate displays. Computing device 102 may receive the displays generated by the remote server and may display the content of the displays locally via display 108. This way, the processing of the instructions is performed remotely (e.g., by server 104) while the resulting displays, such as the display windows described elsewhere herein, are provided locally on computing device 102. Computing device 102 may receive inputs from the user via input interface 336 and transmit those inputs to the remote server for processing and generating the corresponding displays.
A user may send instructions to control circuitry 320 and/or 328 using user input interface 336. User input interface 336 may be any suitable user interface, such as a gaming controller, touchscreen, trackball, keypad, keyboard, touchpad, stylus input, joystick, voice recognition interface, remote control, or other user input interfaces. User input interface 336 may be integrated with or combined with display 108, which may be a monitor, a television, a liquid crystal display (LCD), an electronic ink display, or any other equipment suitable for displaying visual images.
Server 104 and computing device 102 may transmit and receive content and data via I/O path 322 and 330, respectively. For instance, I/O path 322 and/or I/O path 330 may include a communication port configured to transmit and/or receive (for instance to and/or from content database 106), via communication network 103, content item identifiers, natural language queries, and/or other data. Control circuitry 320, 328 may be used to send and receive commands, requests, and other suitable data using I/O paths 322, 330.
Having described system 100, reference is now made to
At 404, control circuitry 320 determines a game identifier that uniquely identifies the game that was played in the game performance video that was selected at 402. In some examples, control circuitry 320 determines the game identifier by reading a game identifier field that is communicated by computing device 102 to server 104 over network 103 along with the communication of the video game performance. At 404 control circuitry 320 may also determine a level or sub-level identifier that uniquely identifies the level and/or sub-level of the game that was played in the game performance video that was selected at 402. In some examples, control circuitry 320 determines the game level and/or sub-level identifier by reading a game level and/or sub-level identifier field that is communicated by computing device 102 to server 104 over network 103 along with the communication of the video game performance.
At 406, control circuitry 320 determines one or more values of video game performance metrics achieved in the playing of the video game depicted in the game performance video. Example types of video game performance metrics include, without limitation, an amount of resources, such as time, ammunition, weapons, food, or the like, utilized throughout the course of performance of a game level or sub-level; and an amount of achievements, milestones, or other positive parameters, such as points, numbers of enemies defeated, health score, or the like, attained throughout the course of performance of a game level or sub-level. Each level and/or sub-level of each game may have its own corresponding set of game performance metrics, and database 106 may include a data structure (such as data structure 500 described below) that indicates the sets of game performance metrics for each game level and sub-level.
At 408, control circuitry 320 determines whether each value of each video game performance metric determined at 406 exceeds a maximum value among values of that game performance metric stored in database 106 for that particular game identifier and level or sub-level identifier. If control circuitry 320 determines that the value of a particular video game performance metric does not exceed a maximum value among values of that metric stored in database 106 for that game and level or sub-level (“NO” at 408), then at 410, control circuitry 320 discards the video game performance video that was selected at 402. If, on the other hand, control circuitry 320 determines that the value of a particular video game performance metric determined at 406 exceeds a maximum value among values of that metric stored in database 106 for that game and level or sub-level (“YES” at 408), then at 412, control circuitry 320 stores the game performance video selected at 402 in database 106 in association with that particular video game performance metric and the game identifier and level or sub-level identifier determined at 404. In this manner, database 106 may store only videos of game performances that exhibit a maximum game performance metric value, thereby resulting in efficient storage utilization.
After 410 or 412, control passes to 414, at which control circuitry 320 determines whether to repeat the process of 402 through 412 for another game performance video. For example, control circuitry 320 may determine whether to repeat the process by determining whether server 104 has received from computing device 102 over network 103 another game performance video that requires processing to determine whether it should be stored in database 106. If control circuitry 320 determines to repeat the process of 402 through 412 for another game performance video (“YES” at 414), then control passes back to 402 to repeat the process described above for another game performance video. If, on the other hand, control circuitry 320 determines not to repeat the process of 402 through 412 for another game performance video (“NO” at 414), then process 400 terminates.
At 604, control circuitry 320 determines a game performance metric of interest to the user. For example, in some embodiments, computing device 102 displays a dropdown menu (or other input field), such as the metric selection field shown in display 108 of
At 606, control circuitry 320 selects for recommendation, based on the determined video game performance metric, a video (e.g., a tutorial video) of a performance of the identified level and/or sub-level of the video game from among the videos stored in database 106. At 608, control circuitry 320 transmits for display via computing device 102 an option, such as the thumbnail shown in display 108 of
At 610, control circuitry 320 determines whether to repeat the process of 602 through 608 to provide another video tutorial recommendation. For example, control circuitry 320 may determine whether to repeat the process of 602 through 608 based on a determination of whether the user has selected a different game performance metric via the metric selection field shown in display 108 of
At 706, control circuitry 320 determines whether the game level identified at 704 includes multiple sub-levels. For example, database 106 may include a data structure (e.g., data structure 500) that control circuitry 320 can look to for an indication of whether the game level identified at 704 includes multiple game sub-levels. In another example, control circuitry 320 may determine whether the game level identified at 704 includes multiple game sub-levels based on a determination that multiple sub-levels were identified at 704. If control circuitry 320 determines that the level identified at 704 includes multiple sub-levels (“YES” at 706), then control passes to 716. If, on the other hand, control circuitry 320 determines that the level identified at 704 does not include any sub-levels (“NO” at 706), then control passes to 708.
At 708, control circuitry 320 searches database 106 for the game performance metric identifier that was determined at 604 for the game and game level that were identified at 602. At 710, control circuitry 320 determines whether database 106 includes a game performance video stored for the game, game level, and game performance metric identified at 602 and 604. If control circuitry 320 determines that database 106 includes a game performance video stored for the game, game level, and game performance metric identified at 602 and 604 (“YES” at 710), then at 712 control circuitry 320 returns the game performance video identified at 710, after which process 606 terminates. If, on the other hand, control circuitry 320 determines that database 106 does not include any game performance video stored for the game, game level, and game performance metric identified at 602 and 604 (“NO” at 710), then at 714 control circuitry 320 returns an indication that no game performance video has been identified for that combination of game, game level, and game performance metric, after which process 606 terminates.
At 716, control circuitry 320 searches database 106 for the game performance metric identifier that was determined at 604 for the game and game sub-levels identified at 602. At 718, control circuitry 320 determines whether database 106 includes game performance videos stored for the game, game sub-levels, and game performance metric identified at 602 and 604. If control circuitry 320 determines that database 106 includes game performance videos stored for the game, game sub-levels, and game performance metric identified at 602 and 604 (“YES” at 718), then at 720 control circuitry 320 generates a stitched game performance video by combining or stitching together the videos stored for the multiple levels determined at 718, as illustrated in further detail in
The systems and processes discussed above are intended to be illustrative and not limiting. One skilled in the art would appreciate that the actions of the processes discussed herein may be omitted, modified, combined, and/or rearranged, and any additional actions may be performed without departing from the scope of the invention. More generally, the above disclosure is meant to be exemplary and not limiting. Only the claims that follow are meant to set bounds as to what the present disclosure includes. Furthermore, it should be noted that the features and limitations described in any one embodiment may be applied to any other embodiment herein, and flowcharts or examples relating to one embodiment may be combined with any other embodiment in a suitable manner, done in different orders, or done in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted that the systems and/or methods described above may be applied to, or used in accordance with, other systems and/or methods.
Number | Name | Date | Kind |
---|---|---|---|
10427047 | Benedetto | Oct 2019 | B2 |
10791370 | Viswanathan | Sep 2020 | B1 |
20110151971 | Altshuler | Jun 2011 | A1 |
20120172098 | Baker | Jul 2012 | A1 |
20130084985 | Green | Apr 2013 | A1 |
20140128166 | Tam | May 2014 | A1 |
20150105154 | Green | Apr 2015 | A1 |
20160199742 | Mccarthy et al. | Jul 2016 | A1 |
20170087460 | Perry | Mar 2017 | A1 |
20170228600 | Syed | Aug 2017 | A1 |
20170270128 | Smith | Sep 2017 | A1 |
20170354884 | Benedetto | Dec 2017 | A1 |
20180280802 | Stroud | Oct 2018 | A1 |
20190209925 | Benedetto | Jul 2019 | A1 |
20190232168 | Benedetto | Aug 2019 | A1 |
20200160405 | Eatedali | May 2020 | A1 |
Number | Date | Country |
---|---|---|
2010030313 | Mar 2010 | WO |
2013002975 | Jan 2013 | WO |
2017030844 | Feb 2017 | WO |
Number | Date | Country | |
---|---|---|---|
20210187398 A1 | Jun 2021 | US |