Extracting event information from game logs using natural language processing
By extracting event information from game-generated text using NLP technology, the problem of external software struggling to identify in-game events is solved, achieving efficient and accurate event extraction and highly adaptable event recognition.
Patent Information
- Application Number
- CN202210837231.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-09-07
- Filing Date
- 2022-07-15
- Publication Date
- 2026-08-25
- Estimated Expiration
- 2042-07-15
AI Technical Summary
External software struggles to accurately identify in-game events, and existing methods such as API merging and computer vision techniques suffer from inefficiency or misidentification.
Natural Language Processing (NLP) is used to extract event information from game-generated text. By identifying action words, session identifier words, and connector words and mapping them to event templates, in-game events that conform to API representations are extracted.
It enables efficient and accurate extraction of in-game events without the need to analyze game frames, reducing computational burden and adapting to game updates.
Smart Images

Figure CN115774774B_ABST
Abstract
Description
Background Technology
[0001] In various scenarios, software outside of a game application may wish to identify in-game events, examples of which may include the outcome of a game instance, a score, or the start or end of a match. For instance, software applications outside of a game application may use in-game events as input to various pipelines, such as to identify highlights and present them as screenshots and / or video clips, to generate posts for events or social media feeds, and / or to generate summaries of gameplay sessions.
[0002] Traditionally, game developers incorporate Application Programming Interfaces (APIs) into the game application's game code (i.e., programming instructions), which then transmits in-game events to external software. This requires the game code to conform to the API's representation of in-game events, which are often represented differently and inconsistently across different games or game developers. Consequently, external software can receive in-game events from games with incorrect or inconsistent representations mapped to the API, potentially leading to erroneous output from pipelines that consume these events. Therefore, game developers are generally reluctant to incorporate these APIs into their game code.
[0003] In other approaches, external software can use various computer vision techniques, such as optical character recognition (OCR) or object detection, to analyze gameplay frames to extract in-game events. However, analyzing gameplay frames incurs a significant computational burden. For example, because video data frames are typically transmitted at high speeds, this computational burden can prevent real-time extraction of in-game events. Furthermore, game developers frequently update or modify the game's appearance or layout, which can cause some in-game events to be missed or identified as false positives. Summary of the Invention
[0004] Embodiments of this disclosure relate to extracting event information from game logs using Natural Language Processing (NLP). This disclosure provides a method for using NLP to detect the occurrence of in-game events using natural language strings generated by a game application.
[0005] In contrast to conventional methods, this disclosure provides a solution for extracting one or more in-game events from a game using natural language processing of game-generated text. In one or more embodiments, a system (e.g., a client device and / or a server) may receive one or more strings of text generated by a game application. The system can then use natural language processing to extract one or more in-game events from the text. In at least one embodiment, the game may include text in messages sent to the system (e.g., using an application programming interface (API)) and / or in game log entries or notifications. The text may be generated (and provided to the system) at least based on (e.g., in response to) the game determining that one or more conditions in gameplay are met (e.g., victory, score points, milestones, eliminations, item acquisitions, etc.).
[0006] The system can use NLP to extract one or more events that conform to the system's API for representing in-game events. In one or more embodiments, the system can use NLP to determine one or more parameters of events corresponding to gameplay elements of the game. For example, parameters can represent one or more aspects of gameplay, such as event type (e.g., session, match, round, etc.), event entity (e.g., player name, non-player character, gatekeeper monster, etc.), event outcome (e.g., win, lose, etc.), and / or event object (e.g., item, weapon, etc.). In one or more embodiments, the system can identify one or more action words (e.g., start, end), session identifier words (e.g., session, match, round), and / or connector words (e.g., name, to) to map those words to one or more event templates corresponding to one or more events. For example, the system can map one or more portions of text to event templates and then perform further analysis to extract one or more parameters from the templates. Event templates can be specific to a particular application, game, game version, or game genre. In some examples, templates can be retrieved or updated using configuration files. In addition, the system can use game identifiers (e.g., received in a message) to determine a set of event templates associated with the game for extracting in-game events. Attached Figure Description
[0007] The following describes in detail, with reference to the accompanying drawings, the system and method for extracting event information from game logs using Natural Language Processing (NLP), wherein:
[0008] Figure 1 This is an example system diagram of an NLP event extraction system according to at least some embodiments of the present disclosure;
[0009] Figure 2 The flowchart illustrates an event identification process according to at least some embodiments of the present disclosure;
[0010] Figure 3 This is an example system diagram of a highlight generation system based on at least some embodiments of the present disclosure;
[0011] Figure 4 These are example screenshots from a graphical user interface used for generating, displaying, and / or recording game highlights, according to at least some embodiments of this disclosure;
[0012] Figure 5 This is a flowchart illustrating an example method for determining an event from at least one text string in natural language form, according to at least some embodiments of this disclosure;
[0013] Figure 6 This is a flowchart illustrating an example method for determining an event from at least one text string using an event template, according to at least some embodiments of the present disclosure;
[0014] Figure 7 This is a flowchart illustrating an example method for determining an event based at least on identifying one or more indicators in at least one text string, according to at least some embodiments of the present disclosure;
[0015] Figure 8 This is a block diagram of an example content streaming system suitable for implementing some embodiments of this disclosure;
[0016] Figure 9 This is a block diagram of an example computing device suitable for implementing some embodiments of the present disclosure; and
[0017] Figure 10 This is a block diagram of an example data center suitable for implementing some embodiments of the present disclosure. Detailed Implementation
[0018] Systems and methods related to applying Natural Language Processing (NLP) techniques to game log information for event extraction are disclosed. This disclosure provides a method for using NLP techniques to detect the occurrence of in-game events using natural language strings generated by a game application.
[0019] In one or more embodiments, the system (e.g., a client device and / or a server) can receive one or more strings of text generated by a game application. The system can then use natural language processing to extract one or more in-game events from the text. Therefore, the game code does not need to use an application programming interface (API) to generate representations of in-game events, nor does it need to analyze gameplay frames to identify in-game events.
[0020] In some examples, the system may receive text in natural language form and / or text that may be generated by the game application as part of normal game operation. For example, the text may come from one or more log entries and / or player notifications generated by the game, as the game identifies in-game events based on its internal representation. In various examples, the text may include variable names, values, and / or other text corresponding to internal representations of the game state. When the game determines that one or more conditions are met in gameplay (e.g., victory, score points, milestones, eliminations, item acquisition, etc.), the game may generate messages and / or game log entries or notifications to be sent to the system. For example, the game may generate messages, log entries, and / or notifications when a player wins a match, scores a point, or any of a number of actions, interactions, or combinations thereof occur during gameplay. In some examples, notifications may be displayed to one or more players in the game during gameplay (e.g., when a corresponding condition is met).
[0021] The system may receive one or more text portions corresponding to the text during and / or after gameplay. Furthermore, one or more text portions may be received in one or more messages when the one or more portions are generated (e.g., when the game generates log entries or when a player notifies or responds to such generation), may be received in batches, and / or all at once after the corresponding gameplay session is completed (e.g., in a game log file). If one or more messages are used to send the text, the game may provide one or more messages to the system using one or more API calls. One or more API calls may include a text string (which includes one or more portions of the text), the game, a program and / or process identifier associated with the game, and / or one or more timestamps corresponding to one or more portions of the text (e.g., when an internal in-game event occurs). Alternatively or concurrently, one or more portions of the text may be provided by the game as a log file, record, or other data structure.
[0022] The system can use NLP techniques to extract one or more events that conform to the API's representation of in-game events (which may be at least game- and / or game type-based). In one or more embodiments, the system can use a neural network or other trained or otherwise programmed learning machine to perform NLP to process the textual representation of game or application events and determine one or more parameters of the events corresponding to gameplay. For example, parameters may represent one or more aspects of gameplay, such as event type (e.g., session, match, round, etc.), event entity (e.g., player name, non-player character, boss, etc.), event outcome (e.g., win, lose, etc.), and / or event object (e.g., item, weapon, etc.). In one or more embodiments, the system can identify one or more action words (e.g., start, end), session identifier words (e.g., session, match, round), and / or connector words (e.g., name, to) to map the word to one or more event templates corresponding to one or more events. The event template may define one or more parameters of one or more events corresponding to the event template. For example, the system can map one or more portions of text to event templates and then perform further analysis to extract one or more parameters from the templates. Event templates can be specific to a particular application, game, game version, or game genre or type. In some examples, templates can be retrieved or updated using configuration files. Furthermore, the system can use game identifiers (e.g., received in a message) to determine a set of event templates associated with the game for extracting in-game events.
[0023] The system-identified events can be used in various pipelines and processes. In one or more embodiments, data can be sent to generate one or more highlights for one or more game sessions based on at least one or more identified events and / or their parameters. Highlights can include any representation of one or more game sessions, including snapshots or screenshots of gameplay, event or social media posts, and / or video clips of a portion of one or more game sessions, such as specific actions or events in gameplay. Highlight generation can be performed on the system, client devices, and / or servers. In some examples, a highlight can be generated for a single event, while in other examples, a highlight may correspond to multiple events.
[0024] While the disclosure is primarily described in the context of generating text for event recognition in games, the disclosed concepts are more broadly applicable to other types of software and applications that generate text for event recognition. In such examples, an application may generate text based on at least one or more conditions met during an application session. The disclosed methods can be implemented in a wide variety of possible systems, including, but not limited to, control systems for autonomous or semi-autonomous machines, perception systems for autonomous or semi-autonomous machines, systems for performing simulation operations, systems for performing deep learning operations, systems implemented using edge devices, systems implemented using robots, systems containing one or more virtual machines (VMs), systems implemented at least partially in a data center, or systems implemented at least partially using cloud computing resources.
[0025] refer to Figure 1 , Figure 1 This is an example system diagram of an NLP event extraction system 100 (also referred to as "System 100") according to at least some embodiments of the present disclosure. It should be understood that such and other arrangements described herein are merely illustrative examples. Other arrangements and elements (e.g., machines, interfaces, functions, sequences, functional groups, etc.) may be used in addition to or instead of the arrangements and elements shown, and some elements may be omitted entirely. Furthermore, many of the elements described herein are functional entities that can be implemented as discrete or distributed components or in combination with other components, and implemented in any suitable combination and location. The various functions described herein as being performed by entities can be performed by hardware, firmware, and / or software. For example, various functions can be implemented by a processor executing instructions stored in memory.
[0026] System 100 may include one or more client devices 102, one or more servers 104, and one or more networks 108, etc. Although in Figure 1 A client device 102 is shown, but this is not intended to be limiting. In this example, any number of client devices 102 may be used. System 100 (and its components and / or features) may be implemented using one or more computing devices, such as those described in more detail below. Figure 9 The computing device is 900.
[0027] One or more client devices 102 may include an application 114, a communication interface 132A, one or more input devices 112, a parser 116, an event identifier 118, a highlight generator 120, a game data analyzer 122, and / or a display 110. Although in Figure 1 Only a few components and / or features of client device 102 are shown, but this is not intended to be limiting. For example, client device 102 may include additional or alternative components, such as those described below. Figure 9The components described in the computing device 900.
[0028] Server 104 may include a client-game interface manager 124, game instances 130 (or games 130), and / or one or more data storage units 134, etc. Although in Figure 1 Only a few components and / or features of server 104 are shown, but this is not intended to be limiting. For example, server 104 may include additional or alternative components, such as those described below. Figure 9 The components described in the computing device 900.
[0029] For overview purposes, the client-game interface manager 124 of server 104 may include a client interface 126 and / or a game interface 128. As described herein, the client interface 126 and the game interface 128 may be configured to manage communication via any number of networks 108. For example, the client-game interface manager 124 may use the client interface 126 to communicate with the application 114 of client device 102 and / or use the game interface 128 to communicate with the game instance 130 of server 104.
[0030] In some examples, the game interface 128 may include, for example, Figure 3 An interface such as Game API 302 can be configured to receive API calls from game instance 130. In some examples, game interface 128 may include... Figure 3 The video capture device 304 can be configured to capture video data associated with gameplay from the game instance 130. In some examples, one or more client devices 102 can access the Internet via a router using an Ethernet or Wi-Fi connection to communicate with one or more servers 104 through the client-game interface manager 124.
[0031] Parser 116 may include one or more components and features for processing at least one text string from one or more messages and / or other data sources. In some examples, the text may be in natural language form. Parser 116 may receive text (e.g., from communication interface 132A), which may have been generated by game instance 130 and / or application 114 (e.g., associated with gameplay, which may correspond to frame 140). Parser 116 may parse the text into one or more substrings and may provide the parsed substrings to event identifier 118.
[0032] Parser 116 can use one or more configuration files to process one or more text strings. For example, configuration files can be used in association with a specific game or game genre or type. Configuration files can instruct parser 116 how text strings from a game should be parsed.
[0033] Event identifier 118 may include one or more components and features for processing text strings (e.g., one or more substrings of text) provided by parser 116. Event identifier 118 may map one or more text strings (e.g., provided by parser 116) to event templates that may define one or more parameters corresponding to events related to gameplay in the game. For example, event identifier 118 may use an event template retrieved from server 104 to define parameters reflecting aspects of gameplay associated with game instance 130.
[0034] Game data analyzer 122 may include one or more components for analyzing gameplay data. For example, game data analyzer 122 may receive game data extracted by parser 116 and event identifier 118. Game data analyzer 122 may determine specific game events that have occurred during a game session and may collect and / or generate additional data associated with those game events. For example, game data analyzer 122 may determine that one or more significant gameplay events have occurred based at least on parameters extracted from a text string by event identifier 118, and a highlight should be generated for that event. Significant game events may be selected based on at least one or more criteria, such as additional information associated with the game session and / or events. In some examples, game data analyzer 122 may receive and / or analyze additional information, such as frames of video data or timestamps corresponding to gameplay in the game. In some examples, additional information may include player information, game statistics, and / or any of several other data items. Game data analyzer 122 may provide data indicating the selected game events to highlight generator 120.
[0035] Highlight generator 120 may include one or more components for generating game highlights. Highlight generator 120 may receive data from game data analyzer 122 indicating that a significant gameplay event has occurred. In some examples, highlight generator 120 may generate game recordings, replays, graphical elements, overlays of video data, and / or other highlight elements, such as... Figure 4 The graphical user interface 400 is shown. The graphical user interface 400 may include controls for capturing clips of the game stream, filtering generated highlights, searching generated highlights, determining the runtime state of highlights, and / or selecting highlights from the highlight library.
[0036] Components of system 100 can communicate via one or more networks 108. Network 108 may include a wide area network (WAN) (e.g., the Internet, Public Switched Telephone Network (PSTN), etc.), a local area network (LAN) (e.g., Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet, etc.), a low-power wide area network (LPWAN) (e.g., LoRaWAN, Sigfox, etc.), a global navigation satellite system (GNSS) network (e.g., Global Positioning System (GPS)), and / or another network type. In any example, each component of system 100 can communicate with one or more other components via one or more networks 108.
[0037] Client device 102 may include smartphones, laptops, tablets, desktop computers, wearable devices, game consoles, virtual reality systems (e.g., headsets, computers, game consoles, one or more remote controls, one or more controllers, and / or other components), NVIDIA SHIELD, smart home devices that may include intelligent personal assistants (e.g., AMAZON ECHO, GOOGLE HOME, etc.), and / or another type of device capable of supporting video and / or audio streaming.
[0038] Application 114 may be a mobile application, a computer application, a console application, a web browser application, a video streaming platform application, and / or another type of application or service. In some embodiments, multiple applications 114 may be used. In one or more embodiments, application 114 may include instructions that, when executed by one or more processors, cause one or more processors to, but are not limited to, receive input data representing user input to one or more input devices 112, send the input data to one or more servers 104, and, in response to receiving a video stream from the client-game interface manager 124 using communication interface 132A, cause the display of video on display 110. In other words, application 114 may operate as an facilitator for implementing video streaming, which may include one or more frames of gameplay or other content associated with the application on client device 102.
[0039] In one or more embodiments, client device 102 may use application 114 to display gameplay videos or other video content on display 110. In examples where display data is received by client device 102, system 100 may be part of a game streaming system, such as those described in more detail below. Figure 8 Content streaming system 800.
[0040] Display 110 may include any type of display capable of displaying video (e.g., light-emitting diode (LED) display, organic LED (OLED) display, liquid crystal display (LCD), active-matrix OLED (AMOLED) display, quantum dot (QDD) display, plasma display, LED / LCD display, and / or another type of display). In some examples, display 108 may include more than one display (e.g., a dual-monitor display for computer gaming, a first display for configuring a game, and a virtual reality display for playing games, etc.). In some examples, the display is a touchscreen display, such as the touchscreen of a smartphone, tablet computer, laptop computer, etc., wherein the touchscreen includes at least one of the input devices 112 of client device 102.
[0041] One or more input devices 112 may include any type of device capable of providing user input to the game. Input devices may include keyboards, mice, touch screen displays, one or more controllers, one or more remote controls, headsets (e.g., sensors of virtual reality headsets), and / or other types of input devices.
[0042] A communication interface (such as communication interface 132A and the aforementioned communication interface 132B) (collectively or individually referred to herein as "communication interface 132") may include one or more components and features for communicating over one or more networks (such as network 108). One or more communication interfaces 132 may be configured to communicate via any number of networks 108 described herein. For example, in order to... Figure 1 In the system 100, the client device 102 can access the Internet via a router using an Ethernet or Wi-Fi connection in order to communicate with one or more servers 104 and / or other client devices 102.
[0043] Now for reference Figure 2 , Figure 2 This is a flowchart illustrating an event identification process 200 according to at least some embodiments of the present disclosure. The event identification process 200 can... Figure 1 This is implemented on system 100. For example, event identifier 118 can be used with process 200 to identify one or more events. Event identification process 200 can be associated with one or more frames 202 of gameplay data, which can correspond to... Figure 1One or more frames 140. One or more frames 202 may include the display or rendering of one or more text elements, such as text elements 204A, 204B, and 204C. As shown, text elements may include text analyzed by parser 116 using event identifier 118 to detect events, and this text may be displayed or rendered in text form or using a different representation. For example, one or more text elements may be displayed in the GUI and / or in frames generated by game instance 130 (as shown). However, one or more text elements may be additionally or alternatively included in one or more additional GUIs, files, or data structures, such as log files related to gameplay (e.g., generated by game instance 130), without necessarily being displayed or represented in the game. Text elements may include any text information generated by or using the game instance. For example, text elements may include natural language strings, sentences, numbers, timestamps, variable names, values, and / or other text corresponding to internal representations of game states, etc.
[0044] Text information corresponding to one or more text elements can be transmitted in one or more messages 208 (e.g., from communication interface 132B of game instance 130 to communication interface 132A of client device 102). Message 208 may contain text information and any of several other parameters, fields, or values. For example, as shown, message 208 may include a parameter or field named “event” associated with a text element and represented as a natural language string 210. Although string 210 is in natural language form, in other examples, the string may not be in natural language form. Figure 2 The document also shows an “api” field, which may include an identifier of the API associated with message 208; a “ts” field, which may include one or more timestamps of message 208 and / or one or more strings 210; and a “pid” field, which may include a game, program, and / or process identifier associated with game instance 130.
[0045] Natural language string 210 can be transmitted as part of one or more messages 208 to a component configured to map one or more portions of natural language string 210 to one or more event templates. For example, one or more messages 208 can be received by client device 102 and mapped to event templates via event identifier 118 using parser 116. Natural language string 210 may include at least a portion of game text 212 (e.g., one or more timestamped text strings) presented and / or generated by game instance 130 during gameplay. One or more portions of game text 212 may correspond to one or more conditions satisfied in the game session. For example, game text 212 may include the text “[20:25] Player eliminated a boss named Don using the Hammer,” which may describe one or more conditions (e.g., the player was eliminated by the boss, etc.). In one or more embodiments, conditions can be evaluated via game code and are related to gameplay and / or in-game events (e.g., victory, score points, major events, eliminations, item acquisitions, etc.). For example, game instance 130 may generate messages, log entries (e.g., corresponding to text element 204A), and / or notifications (e.g., corresponding to text element 204B or text element 204C) when a player wins a match, scores a point, or when any of a number of actions, interactions, or combinations thereof occur during gameplay. In some examples, notifications may be displayed to one or more players in the game during gameplay (e.g., when a corresponding condition is met).
[0046] Event identifier 118 can be used by parser 116 to map game text 212 to one or more event templates. In one or more embodiments, game text 212 is mapped to an event template based at least on the match of a specific word or phrase associated with the event template. In some examples, game text 212 can be mapped to a template using natural language processing such as named entity recognition (“NER”), regular expression parsing, or any other NLP technique. Event templates can be associated with a specific game, a specific version of the game, a series of games, or a genre or type of game. In some examples, a general or basic event template can be used for all games if a more specific template is not available for a particular game or is otherwise unsuitable. Event templates can reside on one or more client devices 102, or they can reside on one or more data stores 134 associated with configuration 136 (e.g., corresponding to the configuration file described herein) and retrieved via network 108. In one or more embodiments, the value of the “pid” field can be used to determine which event templates are available for mapping game text 212 associated with string 210.
[0047] Event identifier 118 can be used with event templates by parser 116 to analyze game text 212 received in one or more messages 208. For example, parser 116 may choose to parse game text 212 and use event templates that include indicators such as "player eliminated," "named," and "used," or those associated with them. As an example, and not a limitation, the event template could be "player eliminated [by a(n)..." <Param1:<player|npc|boss> [namedParam2: <name>[with a(n)]<Param3:weapon|item|custom> The event template takes the form of "". It can be seen that the event template includes data indicating various terms or phrases used to map text to the event template, as well as parameter fields and data indicating or identifying the potential values of these parameter fields. As another example, parser 116 can match the phrases "Player's side scored" and "points" from game text 212 to event templates with these same or similar phrases (or data that otherwise indicates or identifies these terms or phrases). Here, the event template could take the form "Player's side score [a(n]"). <param1:name>][for<Param2: <amount>The event templates described herein can take many potential forms. In one or more embodiments, more than one event template may be mapped to the same string or portion of the game text 212. In one or more embodiments, each event template may correspond to one or more events.
[0048] As described above, one or more event templates may include or indicate one or more parameter fields and / or their values associated with a potential event. For example, the text "The player used a hammer to defeat the boss named Don" in game text 212 can be mapped to an event template with parameter fields: Param(parameter)1, Param2, and Param3. Event identifier 118 can use parser 116 to extract the values of parameter fields 216 from game text 212 using the corresponding event template. For example, parser 116 can determine that Param1 of the event template can be mapped to the descriptor "boss", Param2 can be mapped to the name "Don", and Param3 can be mapped to the item "hammer". As another example, the text "Blue Team Flag Captured" in game text 212 can be mapped to an event template that includes Param1 and Param2. Event templates can be selected based at least on event identifier 118 that matches the phrase "Team Flag" with the event template. Using event templates, Param1 can be mapped to the team signifier "blue", while Param2 can be mapped to the flag action "Captured".
[0049] In one or more embodiments, event identifier 118 may attempt to map one or more parameter fields of the event template to text based at least some text being mapped to the event template (e.g., using indicators). Furthermore, as with indicators, the values of the parameter fields do not need to be explicitly stated or exactly matched in the definition of the event template, thus allowing for a wider range of terms, phrases, values, and sentence structures to be mapped to the corresponding events. In one or more embodiments, the event template may identify the categories or types of terms, phrases, values, and sentence structures used for mapping, such as, but not limited to, portions of a speech identifier. Also in one or more embodiments, text in the event template may be mapped to game text 212 based at least on determining that game text 212 includes one or more synonyms or text variations rather than an exact match.
[0050] In one or more embodiments, event identifier 118 may identify an event based at least on mapping a text string to an event template associated with the event. In one or more embodiments, for an event template to be used to identify an event, it must both map to one or more strings of game text 212 and have at least one (e.g., all) of its parameter fields mapped to one or more strings. For example, "The player killed the boss named Don with a hammer" could be mapped to an event template. If event identifier 108 determines that it cannot map one or more parameter fields of the event template to text (e.g., Param1), then event identifier 108 may use the event template to identify the corresponding event. In other examples, one or more event templates may allow partial element mapping, optional element mapping, and / or variations of element mapping.
[0051] In one or more embodiments, each event template may correspond to one or more events or portions thereof. For example, if event identifier 118 is able to successfully map "The player used a hammer to defeat a boss named Don" to an event template (e.g., including parameter fields), then event identifier 118 can identify the event corresponding to that event template. Alternatively or concurrently, one or more events may correspond to multiple event templates and / or be identified using multiple event templates. For example, event identifier 118 may identify an event at least based on mapping one or more portions of game text 212 to one or more event templates (e.g., each obtained through multiple messages, in multiple text strings, and / or corresponding to multiple timestamps). In one or more embodiments, event identifier 118 generates data representing and / or indicating events that have been identified or detected, which may be referred to as event data.
[0052] Event data for an event may include, by way of example and not limitation, data that represents, indicates, or otherwise associates with the extracted parameter 216, one or more portions of game text 212, timestamps, event identifiers, one or more event template identifiers for identifying the event, and / or any other information that may be associated with the event. For example, event data may include any one of game information, game session identifiers, player information, or other information. The generated event data may be organized and stored in one or more event files 220 and / or other data structures. For example, according to at least some embodiments of this disclosure, one or more data structures may be associated with the highlight generation system 300. In one or more embodiments, event data for one or more events may be stored in XML, JSON, txt, or any other file or storage format.
[0053] In one or more embodiments, event identifier 118 assigns a timestamp and / or associates the timestamp with one or more events, which may be included in the event data. In one or more embodiments, event identifier 118 uses parser 116 to extract data corresponding to one or more timestamps from game text 212 and / or one or more other portions (e.g., "ts" fields) of one or more messages 208. For example, game text 212 is shown to include a timestamp generated by game instance 130, which may be used as or otherwise correspond to the associated event timestamp. In one or more embodiments, the event timestamp may correspond to the order or time in which message 208 for identifying the event is received or sent (e.g., at least based on the system time of the system, device, or component receiving or sending message 208).
[0054] See now Figure 3 , Figure 3 This is an example system diagram of a highlight generation system 300 according to at least some embodiments of the present disclosure. It should be understood that such and other arrangements described herein are merely illustrative examples. Other arrangements and elements (e.g., machines, interfaces, functions, sequences, functional groups, etc.) may be used in addition to or instead of the arrangements and elements shown, and some elements may be omitted entirely. Furthermore, many of the elements described herein are functional entities that can be implemented as discrete or distributed components or combined with other components, and in any suitable combination and location. The various functions described herein as being performed by entities can be performed by hardware, firmware, and / or software. For example, various functions can be implemented by a processor executing instructions stored in memory.
[0055] The highlight generation system 300 may include one or more client devices 102, one or more servers 104, and one or more networks 108. The highlight generation system 300 (and its components and / or features) may be implemented using one or more computing devices, such as those described in more detail below. Figure 9 The computing device is 900.
[0056] Client device 102 may include a display 110, one or more applications 114, an event plugin 310, a highlight generator 120, one or more other plugins 314, and one or more data storage 320. Server 104 may include a game instance 130, a client interface 126, a game API 302, a video capture device 304, and / or one or more data storage 324.
[0057] Application 114 (e.g., a client application of server 104) can operate as a facilitator to enable gameplay of game instance 130. For example, application 114 can, but is not limited to, displaying a game stream received from client interface 126 via network 108. In some examples, as described herein, application 114 may include some features or functions of highlight generator 120, such as those related to generating highlights, recordings, or snapshots for programming recording settings, etc. Furthermore, in some examples, application 114 may result in highlight generation, highlight storage, analysis of the game stream for determining when highlights should be generated, highlight sharing, etc. In some embodiments, client device 102 may include any number of applications 114, wherein features and functions of highlight generation system 300 are assigned.
[0058] In one or more embodiments, the client device 102 includes an event plugin 310. The event plugin 310 can be configured to identify and extract event information from one or more messages associated with a game session. For example, the event plugin may include... Figure 1 The parser 116 and / or event identifier 118. Event plugin 310 can receive messages (e.g., message 208) including at least one text string from application 114, which are then transmitted via network 108 from client interface 126 of server 104. In some embodiments, event plugin 310 may additionally include... Figure 1 The game data analyzer 122. In one or more embodiments, at least some features or functions of the event plugin 310 may be incorporated into the application 114.
[0059] One or more other plugins 314 may refer to any of a number of other plugins on client device 102. In one or more embodiments, other plugins 314 may be used in place of event plugin 310 or in combination with event plugin 310. In one or more embodiments, other plugins 314 may be configured to perform methods for detecting game events, replacing NLP methods performed by event plugin 310. For example, event plugin 310 may be used to perform NLP to detect events in a game session, while other plugins 314 may perform OCR, computer vision, object detection, and / or non-NLP-based techniques for detecting events in the same game session simultaneously or in parallel. In one or more embodiments, event identifier 118 may use other plugins 314 to detect and / or identify events. For example, event identifier 118 may supplement NLP (e.g., and / or non-computer vision) event recognition with non-NLP (e.g., and / or computer vision) methods and / or identify one or more events without NLP or without using parser 116. In one or more embodiments, the game data analyzer 112 may employ computer vision capabilities to identify significant events from the events identified by the event identifier 118.
[0060] Although event plugin 310 and other plugins 314 are shown as residing on client device 102, in one or more embodiments, at least some features or functions of one or more of these components may be implemented on one or more servers 104 (e.g., event identifier 118, parser 116, game data analyzer 112, computer vision event recognition, etc.). Similarly, at least some features or functions of highlight generator 120 may be implemented on server 104.
[0061] In one or more embodiments, server 104 may render a game instance 130 of the game and transmit the game stream to application 114 via client interface 126. Game API 302 may receive API calls from game instance 130. In some examples, game API 302 may facilitate communication between game instance 130 and client interface 126. In some embodiments, the game API may be included as part of the game interface, for example... Figure 1 The game interface 128. The client interface 126 can interpret and translate API calls issued by the game instance 130 and / or pass them to the game API 302, and provide corresponding messages, such as message 208, to the application 114. In one or more embodiments, the client interface 126 may use the Real-Time Streaming Protocol (RTSP) to facilitate one or more communications (e.g., message 208, game stream, highlight stream, etc.) between the application 114 and the client interface 126.
[0062] Video capture 304 may include one or more components for capturing game video data. In at least one embodiment, video capture 304 may include... Figure 8 The video capture component 814 includes at least some features or functions. In one or more embodiments, the video capturer 304 can interpret requests to capture highlights of game instance 130 on server 104. In one or more embodiments, requests from one or more client devices 102 can be received by the video capturer 304, instructing it to record video data associated with the game highlights. For example, using network 108, highlight generator 120 can request one or more frames of video data corresponding to highlights occurring in a game session of game instance 130. In one or more embodiments, highlights can be based at least on one or more events identified using event identifier 118 (e.g., timestamps and event parameters). The video capturer 304 can identify and retrieve one or more frames of video data from one or more data stores 324. In one or more embodiments, the video capturer 304 can record data in data store 324 using buffer 336 before receiving a request associated with generating highlights. In one or more embodiments, event plugin 310 can include at least some features and functions of the video capturer 304. In such an embodiment, the event plugin 310 may use the data storage 320 and / or buffer 322 in a manner similar to how the video capturer 304 uses the data storage 324 and / or buffer 336.
[0063] Now for reference Figure 4 , Figure 4 These are example screenshots from a graphical user interface 400 for generating, displaying, and / or recording game highlights, according to at least some embodiments of this disclosure. The graphical user interface 400 may include a highlight selection control area 402, highlight labels 404, a highlight playback area 410, a highlight timeline 420, and / or a highlight information display area 430. In some examples, the graphical user interface 400 may include controls for generating and recording gameplay highlight video data.
[0064] Highlight selection control area 402 may include indicators and associated controls for any of a plurality of highlights, such as highlights 408A, 408B, 408C, and 408E. Highlight selection control area 402 may display indicators corresponding to highlights for one or more games and / or game sessions. In some examples, highlight selection control area 402 may provide controls for selecting one or more highlights to be displayed in other parts of graphical user interface 400 (e.g., highlight playback area 410).
[0065] Highlight replay area 410 can display highlight replay 412, which is generated from one or more events in the game session using highlight generator 120. Highlights in highlight replay area 410 can be displayed as images, videos, or any of several other representations. Highlight replay area 410 may also include controls and selection elements for manipulating the highlights in highlight replay area 410. For example, these controls may allow a user to start / pause playback of highlight video clips, or change the playback speed or resolution of the highlight video.
[0066] The highlight timeline 420 may include indicators or graphical elements representing events identified by event identifier 118 and / or game data analyzer 112 in the game session. The highlight timeline 420 may include highlight or event indicators, such as highlight indicator 422 corresponding to an active highlight in the highlight replay area 410. In some examples, the highlight timeline 420 may include controls for selecting and displaying other highlights using the corresponding highlight indicators.
[0067] Highlight information display area 430 may include graphical and textual elements associated with game highlights and / or corresponding events. For example, highlight information display area 430 may provide elements including information associated with a game session. For example, a game score or result from a specific game session may be displayed. In one or more embodiments, highlight information may correspond to one or more events, event types, parameter fields, and / or values extracted from or associated with text by event identifier 118. Similarly, highlight labels 404 and / or other information displayed in graphical user interface 400 may correspond to one or more events, event types, parameter fields, and / or values extracted from or associated with text by event identifier 118. As an example, "scored" may be associated with the event type of the event used to generate highlight 408C.
[0068] See now Figure 5 Each block of Method 500 and the other methods described herein includes a computational process that can be performed using any combination of hardware, firmware, and / or software. For example, various functions can be performed by a processor executing instructions stored in memory. These methods can also be embodied as computer-usable instructions stored on a computer storage medium. To name just a few, these methods can be provided by a standalone application, service, or managed service (independently or in combination with other managed services) or a plug-in to another product. Furthermore, by way of example, for... Figure 1 These methods are described using system 100. However, these methods may be additionally or alternatively performed by any system or any combination of systems, including but not limited to those described herein.
[0069] Figure 5 This is a flowchart illustrating an example method for determining an event from at least one text string in natural language processing form, according to at least some embodiments of the present disclosure. At block B502, method 500 includes: receiving a message comprising at least one text string in natural language form. For example, client device 102 may receive at least one message 208 via an API, the message comprising a natural language string 210 in natural language form, wherein the natural language string 210 may have been generated by game instance 130 based on at least one or more conditions satisfied in a game session, the one or more conditions corresponding to gameplay of the game.
[0070] At box B504, method 500 includes: determining an event corresponding to gameplay based at least on one or more indicators of an event identified in at least one text string. For example, event identifier 118 may determine an event corresponding to gameplay based at least on one or more indicators of an event identified using natural language processing in at least one text string.
[0071] At box B506, method 500 includes transmitting data that causes at least one or more highlights to be generated in a game session based on the event. For example, event identifier 118 may transmit event data to highlight generator 120 and / or game data analyzer 122 to cause at least one or more highlights to be generated in a game session based on the event.
[0072] Figure 6 This is a flowchart illustrating an example method 600 for determining an event from at least one text string using an event template, according to at least some embodiments of the present disclosure. At block B602, method 600 includes: receiving at least one message comprising at least one text string generated by the game based at least on the satisfaction of one or more conditions in a game session. For example, client device 102 may receive at least one message comprising at least one text string generated by game instance 130 of the game based at least on the satisfaction of one or more conditions in a game session, the one or more conditions corresponding to gameplay of the game.
[0073] At box B604, method 600 includes mapping at least one text string to an event template. For example, event identifier 118 can be mapped to at least one text string to an event template that defines one or more parameters of an event corresponding to gameplay using parser 116.
[0074] At box B606, method 600 includes: extracting one or more parameters from a text string using an event template. For example, event identifier 118 can use an event template to extract one or more parameters from a text string.
[0075] At box B608, method 600 includes transmitting data that causes a display in a user interface, the display being based on at least one or more parameters of an event. For example, highlight generator 120 may transmit data that causes a display in a graphical user interface 400, the display being based on at least one or more parameters of an event.
[0076] Figure 7 This is a flowchart illustrating an example method 700 for determining an event based at least on identifying one or more indicators in at least one text string, according to at least some embodiments of the present disclosure. At block B702, method 700 includes: receiving at least one message including at least one text string generated by an application. For example, client device 102 may receive at least one message including at least one text string generated by an application (e.g., game instance 130) based at least on the satisfaction of one or more conditions in an application session, the one or more conditions corresponding to the state of the application.
[0077] At box B704, method 700 includes: determining an event corresponding to the state of the application based at least on one or more indicators that identify an event in at least one text string. For example, event identifier 118 may determine the event corresponding to the state of the application based at least on one or more event indicators that identify at least one text string using natural language processing.
[0078] At box B706, method 700 includes transmitting data that causes a display in a user interface based at least on the event. For example, highlight generator 120 may transmit data that causes a display in graphical user interface 400, the display being based at least on one or more parameters of the event.
[0079] Example content streaming system
[0080] See now Figure 8 , Figure 8 This is an example system diagram of a content streaming system 800 according to at least some embodiments of the present disclosure. Figure 8 Includes one or more application servers 802 (which may include...) Figure 9 Example computing device 900 (similar components, features, and / or functions), one or more client devices 804 (which may include similar components, features, and / or functions to the example computing device 900), and one or more client devices 804. Figure 9 The example computing device 900 may have similar components, features, and / or functions, as well as one or more networks 806 (which may be similar to one or more networks described herein). In some embodiments of this disclosure, system 800 may be implemented. Application sessions may correspond to game streaming applications (e.g., NVIDIA GeForce Now), remote desktop applications, simulation applications (e.g., autonomous or semi-autonomous vehicle simulations), computer-aided design (CAD) applications, virtual reality (VR) and / or augmented reality (AR) streaming applications, deep learning applications, and / or other application types.
[0081] In system 800, for an application session, one or more client devices 804 may, in response to input from one or more input devices, simply receive input data, transfer the input data to one or more application servers 802, receive encoded display data from one or more application servers 802, and display the display data on display 824. Therefore, computationally intensive computation and processing are offloaded to one or more application servers 802 (e.g., rendering of the graphics output for the application session—particularly ray or path tracing—is performed by one or more GPUs of one or more game servers 802). In other words, the application session is streamed from one or more application servers 802 to one or more client devices 804, thereby reducing the graphics processing and rendering requirements of one or more client devices 804. In one or more embodiments, the video provided by client interface 126 may be video of an application session (e.g., a game session), which may be streamed to one or more viewers and / or players of the game. For example, a player may receive the stream in a game application that presents the game, while a viewer may receive the stream in a video player application that presents the game (e.g., within a web browser). In different examples, one or more application servers 802 may include one or more servers 104, or one or more servers 104 may be separate from one or more application servers 802.
[0082] For example, regarding the instantiation of an application session, client device 804 can display frames of the application session on display 824 based at least on receiving display data from one or more application servers 802. Client device 804 can receive input from one or more input devices and generate input data in response. Client device 804 can send the input data to application server 802 via communication interface 820 and via network 806 (e.g., the Internet), and application server 802 can receive the input data via communication interface 818. CPU can receive the input data, process the input data, and transmit data to GPU, which causes GPU to generate a rendering of the application session. For example, the input data can represent a user's character's movement, firing weapons, reloading, passing the ball, steering a vehicle, etc., in a game session of a game application. Rendering component 812 can render the application session (e.g., the result representing the input data), and rendering capture component 814 can capture the rendering of the application session as display data (e.g., image data as captured rendering frames of the application session). Rendering of an application session may include lighting and / or shadow effects computed using one or more parallel processing units (such as GPUs) of application server 802, which may further utilize one or more dedicated hardware accelerators or processing cores to perform ray or path tracing techniques. In some embodiments, one or more virtual machines (VMs) – including, for example, one or more virtual components such as vGPUs, vCPUs, etc. – may be used by application server 802 to support the application session. Encoder 816 may then encode display data to produce encoded display data, which may be transmitted to client device 804 via communication interface 818 through network 806. Client device 804 may receive the encoded display data via communication interface 820, and decoder 822 may decode the encoded display data to produce display data. Client device 804 may then display the display data via display 824.
[0083] Example computing device
[0084] Figure 9 This is a block diagram of an example computing device 900 suitable for implementing some embodiments of the present disclosure. The computing device 900 may include an interconnect system 902 directly or indirectly coupled to: a memory 904, one or more central processing units (CPUs) 906, one or more graphics processing units (GPUs) 908, a communication interface 910, input / output (I / O) ports 912, input / output components 914, a power supply 916, one or more presentation components 918 (e.g., one or more displays), and one or more logic units 920. In at least one embodiment, one or more computing devices 900 may include one or more virtual machines (VMs), and / or any component thereof may include virtual components (e.g., virtual hardware components). As a non-limiting example, one or more GPUs 908 may include one or more vGPUs, one or more CPUs 906 may include one or more vCPUs, and / or one or more logic units 920 may include one or more virtual logic units. Accordingly, one or more computing devices 900 may include discrete components (e.g., a full GPU dedicated to computing device 900), virtual components (e.g., a portion of the GPU dedicated to computing device 900), or a combination thereof.
[0085] although Figure 9 The various boxes are shown as being connected to lines via interconnect system 902, but this is not intended to be limiting and is merely for clarity. For example, in some embodiments, presentation component 718 (such as a display device) may be considered I / O component 914 (e.g., if the display is a touchscreen). As another example, CPU 906 and / or GPU 908 may include memory (e.g., memory 904 may also represent a storage device in addition to the memory of GPU 908, CPU 906, and / or other components). In other words, Figure 9 The computing devices described are merely illustrative. No distinction is made between categories such as "workstation," "server," "laptop computer," "desktop computer," "tablet computer," "client device," "mobile device," "handheld device," "game console," "electronic control unit (ECU)," "virtual reality system," and / or other device or system types, as all are conceived in… Figure 9 Within the scope of computing devices.
[0086] Interconnect system 902 may represent one or more links or buses, such as address buses, data buses, control buses, or combinations thereof. Interconnect system 902 may include one or more bus or link types, such as Industry Standard Architecture (ISA) bus, Extended Industry Standard Architecture (EISA) bus, Video Electronics Standards Association (VESA) bus, Peripheral Component Interconnect (PCI) bus, Fast Peripheral Component Interconnect (PCIe) bus, and / or another type of bus or link. In some embodiments, there is a direct connection between components. For example, CPU 906 may be directly connected to memory 904. Further, CPU 906 may be directly connected to GPU 908. In cases where there is a direct connection or point-to-point connection between components, interconnect system 902 may include a PCIe link to perform that connection. In these examples, a PCI bus is not required in computing device 900.
[0087] The memory 904 may include any of a variety of computer-readable media. The computer-readable media may be any available medium accessible by the computing device 900. The computer-readable media may include volatile and non-volatile media, as well as removable and non-removable media. By way of example and not limitation, the computer-readable media may include computer storage media and communication media.
[0088] Computer storage media may include volatile and non-volatile media and / or removable and non-removable media implemented using any method or technology for storing information such as computer-readable instructions, data structures, program modules, and / or other data types. For example, memory 904 may store computer-readable instructions (e.g., representing programs and / or program elements, such as operating systems). Computer storage media may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technologies, CD-ROM, Digital Universal Disc (DVD) or other optical disc storage, magnetic tape cassettes, magnetic tape, disk storage or other magnetic storage devices, or any other medium that can be used to store desired information and is accessible by computing device 900. As used herein, computer storage media does not include the signal itself.
[0089] Computer storage media can embody computer-readable instructions, data structures, program modules, and / or other data types in modulated data signals (such as carrier waves or other transmission mechanisms) and include any information transmission medium. The term "modulated data signal" can refer to a signal whose characteristics are set or altered in a manner that encodes information in the signal. By way of example and not limitation, computer storage media can include wired media (such as wired networks or direct wired connections) and wireless media (such as acoustic, RF, infrared, and other wireless media). Any combination of the foregoing should also be included within the scope of computer-readable media.
[0090] One or more CPUs 906 may be configured to execute at least some of one or more computer-readable instructions for controlling one or more components of a computing device 900 to perform the methods and / or processes described herein. Each CPU 906 may include one or more cores (e.g., 1, 2, 4, 8, 28, 72, etc.) capable of processing multiple software threads simultaneously. CPUs 906 may include any type of processor and may include different types of processors depending on the type of computing device 900 implemented (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). For example, depending on the type of computing device 900, the processor may be an advanced RISC machine (ARM) processor implemented using Reduced Instruction Set Computing (RISC) or an x86 processor implemented using Complex Instruction Set Computing (CISC). In addition to one or more microprocessors or supplemental coprocessors such as math coprocessors, the computing device 900 may also include one or more CPUs 906.
[0091] In addition to or replacing CPU 906, one or more GPUs 908 may be configured to execute at least some of one or more computer-readable instructions for controlling one or more components of computing device 900 to perform the methods and / or processes described herein. One or more GPUs 908 may be integrated GPUs (e.g., having one or more CPUs 906) and / or one or more GPUs 908 may be discrete GPUs. In embodiments, one or more GPUs 908 may be a coprocessor of one or more CPUs 906. GPUs 908 may be used by computing device 900 to render graphics (e.g., 3D graphics) or perform general-purpose computing. For example, GPUs 908 may be used for general-purpose computing on a GPU (GPGPU). GPUs 908 may include hundreds or thousands of cores capable of processing hundreds or thousands of software threads simultaneously. GPUs 908 may generate pixel data for outputting an image in response to rendering commands (e.g., rendering commands received from CPU 906 via a host interface). GPU 908 may include graphics memory, such as display memory, for storing pixel data or any other suitable data, such as GPGPU data. Display memory may be included as part of memory 904. GPU 908 may include two or more GPUs operating in parallel (e.g., via a link). The link may be directly connected to the GPUs (e.g., using NVLINK) or may connect the GPUs via a switch (e.g., using NVSwitch). When combined, each GPU 708 may generate pixel data or GPGPU data for different portions of the output or for different outputs (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU may include its own memory or may share memory with other GPUs.
[0092] In addition to or replacing CPU 906 and / or GPU 908, one or more logic units 920 may be configured to execute at least some of computer-readable instructions to control one or more components of computing device 900 to perform one or more of the methods and / or processes described herein. In embodiments, one or more CPUs 906, one or more GPUs 908, and / or one or more logic units 920 may perform any combination of methods, processes, and / or portions thereof, discretely or jointly. One or more logic units 920 may be part of and / or integrated into one or more CPUs 906 and / or GPUs 908, and / or one or more logic units 920 may be discrete components or otherwise external to CPUs 906 and / or GPUs 908. In embodiments, one or more logic units 920 may be coprocessors of one or more CPUs 906 and / or one or more GPUs 908.
[0093] Examples of logic unit 920 include one or more processing cores and / or components thereof, such as tensor core (TC), tensor processing unit (TPU), pixel vision core (PVC), vision processing unit (VPU), graphics processing cluster (GPC), texture processing cluster (TPC), streaming multiprocessor (SM), tree traversal unit (TTU), artificial intelligence accelerator (AIA), deep learning accelerator (DLA), arithmetic logic unit (ALU), application-specific integrated circuit (ASIC), floating-point unit (FPU), input / output (I / O) element, peripheral component interconnect (PCI) or peripheral component interconnect fast (PCIe) element, etc.
[0094] The communication interface 910 may include one or more receivers, transmitters, and / or transceivers that enable the computing device 900 to communicate with other computing devices via electronic communication networks (including wired and / or wireless communications). The communication interface 910 may include components and functions that enable communication over any of a plurality of different networks (e.g., wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communication over Ethernet or wireless bandwidth), low-power wide area networks (e.g., LoRaWAN, SigFox, etc.) and / or the Internet).
[0095] I / O port 912 enables computing device 900 to be logically coupled to other devices including I / O component 914, presentation component 918, and / or other components, some of which may be built into (e.g., integrated into) computing device 900. Illustrative I / O component 914 includes microphones, mice, keyboards, joysticks, gamepads, game controllers, disc-type satellite antennas, scanners, printers, wireless devices, etc. I / O component 914 provides a natural user interface (NUI) that handles air gestures, voice, or other physiological input generated by the user. In some instances, the input may be passed to appropriate network elements for further processing. NUI can implement any combination of voice recognition, stylus recognition, facial recognition, biometric recognition, on-screen and near-screen gesture recognition, air gestures, head and eye tracking, and touch recognition associated with the display of computing device 900 (as described in more detail below). Computing device 900 may include depth cameras, such as stereo camera systems, infrared camera systems, RGB camera systems, touchscreen technology, and combinations thereof, for gesture detection and recognition. Additionally, computing device 900 may include an accelerometer or gyroscope (e.g., as part of an inertial measurement unit (IMU)) that enables motion detection. In some examples, computing device 900 may use the output of the accelerometer or gyroscope to render immersive augmented reality or virtual reality.
[0096] Power supply 916 may include a hardwired power supply, a battery power supply, or a combination thereof. Power supply 916 may provide power to computing device 900 so that the components of computing device 900 can operate.
[0097] One or more presentation components 918 may include displays (e.g., monitors, touchscreens, television screens, head-up displays (HUDs), other display types, or combinations thereof), speakers, and / or other presentation components. Presentation component 918 may receive data from other components (e.g., GPU 908, CPU 906, etc.) and output data (e.g., as images, videos, sounds, etc.).
[0098] Example Data Center
[0099] Figure 10 An example data center 1000 that can be used in at least one embodiment of this disclosure is shown. The data center 1000 may include a data center infrastructure layer 1010, a framework layer 1020, a software layer 1030, and / or an application layer 1040.
[0100] like Figure 10 As shown, the data center infrastructure layer 1010 may include a resource coordinator 1012, grouped computing resources 1014, and node computing resources ("nodes CR") 1016(1)-1016(N), where "N" represents any integer, a positive integer. In at least one embodiment, nodes CR 1016(1)-1016(N) may include, but are not limited to, any number of central processing units ("CPUs") or other processors (including accelerators, field-programmable gate arrays (FPGAs), graphics processing units or graphics processing units (GPUs), etc.), memory devices (e.g., dynamic read-only memory), storage devices (e.g., solid-state or disk drives), network input / output ("NW I / O") devices, network switches, virtual machines ("VMs"), power modules and / or cooling modules, etc. In some embodiments, one or more nodes CR 1016(1)-1016(N) may correspond to servers having one or more of the aforementioned computing resources. In addition, in some embodiments, nodes CR1016(1)-1016(N) may include one or more virtual components, such as vGPU, vCPU, etc., and / or one or more of nodes CR1016(1)-1016(N) may correspond to virtual machines (VMs).
[0101] In at least one embodiment, the grouped computing resources 1014 may include individual groups of nodes CR1016 housed within one or more racks (not shown) or within a plurality of racks in data centers (also not shown) located in different geographical locations. The individual groups of nodes CR1016 within the grouped computing resources 1014 may include grouped computing, networking, memory, or storage resources that may be configured or allocated to support one or more workloads. In at least one embodiment, a plurality of nodes CR1016, including CPUs, GPUs, and / or other processors, may be grouped within one or more racks to provide computing resources to support one or more workloads. One or more racks may also include any number of power modules, cooling modules, and / or network switches in any combination.
[0102] Resource coordinator 1022 may be configured or otherwise control one or more nodes CR1016(1)-1016(N) and / or grouped computing resources 1014. In at least one embodiment, resource coordinator 1022 may include a Software Design Infrastructure ("SDI") management entity for data center 1000. Resource coordinator 1022 may include hardware, software, or some combination thereof.
[0103] In at least one embodiment, such as Figure 10 As shown, framework layer 1020 may include job scheduler 1032, configuration manager 1034, resource manager 1036, and / or distributed file system 1038. Framework layer 1020 may include a framework of software 1044 supporting software layer 1030 and / or one or more applications 1042 supporting application layer 1040. Software 1044 or application 1042 may respectively include web-based service software or applications, such as those provided by Amazon Web Services, Google Cloud, and Microsoft Azure. Framework layer 1020 may be, but is not limited to, a type of free and open-source software web application framework that can leverage distributed file system 1038 for large-scale data processing (e.g., "big data"), such as Apache Spark™ (hereinafter referred to as "Spark"). In at least one embodiment, job scheduler 1032 may include Spark drivers to facilitate the scheduling of workloads supported by the various layers of data center 1000. Configuration manager 1034 may be able to configure different layers, such as software layer 1030 and framework layer 1020 including Spark and distributed file system 1038 for supporting large-scale data processing. Resource manager 1036 may be able to manage cluster or group computing resources mapped to or allocated to support distributed file system 1038 and job scheduler 1032. In at least one embodiment, the cluster or group computing resources may include group computing resources 1014 at data center infrastructure layer 1010. Resource manager 1036 may coordinate with resource coordinator 1012 to manage these mapped or allocated computing resources.
[0104] In at least one embodiment, the software 1044 included in software layer 1030 may include software used by at least a plurality of portions of nodes CR1016(1)-1016(N), grouped computing resources 1014, and / or the distributed file system 1038 of framework layer 1020. One or more types of software may include, but are not limited to, internet web search software, email virus scanning software, database software, and streaming video content software.
[0105] In at least one embodiment, the application 1042 included in the application layer 1040 may include one or more types of applications used by at least a plurality of portions of nodes CR1016(1)-1016(N), grouped computing resources 1014, and / or the distributed file system 1038 of the framework layer 1020. One or more types of applications may include, but are not limited to, any number of genomics applications, cognitive computing and machine learning applications (including training or inference software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.) and / or other machine learning applications used in combination with one or more embodiments).
[0106] In at least one embodiment, any of the configuration manager 1034, resource manager 1036, and resource coordinator 1012 can implement any number and type of self-modification actions based at least on any amount and type of data acquired in any technically feasible manner. Self-modification actions can protect the data center operator of data center 1000 from making potentially poor configuration decisions and may prevent underutilization and / or poor performance of parts of the data center.
[0107] According to one or more embodiments described herein, data center 1000 may include tools, services, software, or other resources for training one or more machine learning models or using one or more machine learning models to predict or infer information. For example, one or more machine learning models may be trained by calculating weight parameters according to a neural network architecture using the software and / or computing resources described above with respect to data center 1000. In at least one embodiment, a trained or deployed machine learning model corresponding to one or more neural networks may be used to infer or predict information using the resources described above with respect to data center 1000 by using weight parameters calculated through one or more training techniques (such as, but not limited to, those described herein).
[0108] In at least one embodiment, the data center 1000 may use a CPU, application-specific integrated circuit (ASIC), GPU, FPGA, and / or other hardware (or corresponding virtual computing resources) to perform training and / or inference using the aforementioned resources. Furthermore, one or more of the aforementioned software and / or hardware resources may be configured to allow users to train or execute information inference services, such as image recognition, speech recognition, or other artificial intelligence services.
[0109] Example network environment
[0110] A network environment suitable for implementing embodiments of this disclosure may include one or more client devices, servers, network attached storage (NAS), other back-end devices, and / or other device types. Client devices, servers, and / or other device types (e.g., each device) may be... Figure 9 The implementation is carried out on one or more instances of computing device 900, for example, each device may include similar components, features and / or functions of computing device 900. Furthermore, in the case of implementing backend devices (e.g., servers, NAS, etc.), the backend devices may be included as part of data center 1000, the examples of which in this document are relative to... Figure 10 To describe in more detail.
[0111] Components of a network environment can communicate with each other via one or more networks, which may be wired, wireless, or both. A network can include multiple networks or a network of networks. For example, a network may include one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks (such as the Internet and / or the Public Switched Telephone Network (PSTN)), and / or one or more private networks. Where the network includes a wireless telecommunications network, components such as base stations, communication towers, or even access points (and other components) can provide wireless connectivity.
[0112] A compatible network environment may include one or more peer-to-peer network environments—in which case the network environment may not include a server—and one or more client-server network environments—in which case the network environment may include one or more servers. In a peer-to-peer network environment, the functionality described herein with respect to one or more servers can be implemented on any number of client devices.
[0113] In at least one embodiment, the network environment may include one or more cloud-based network environments, distributed computing environments, combinations thereof, etc. A cloud-based network environment may include a framework layer, job scheduler, resource manager, and distributed file system implemented on one or more servers, which may include one or more core network servers and / or edge servers. The framework layer may include a framework for software and / or one or more applications supporting the software layer and the application layer. The software or application may respectively include web-based service software or applications. In embodiments, one or more client devices may use web-based service software or applications (e.g., by accessing the service software and / or applications via one or more application programming interfaces (APIs)). The framework layer may be, but is not limited to, free and open-source software web application frameworks, such as those used for large-scale data processing (e.g., "big data") using a distributed file system.
[0114] A cloud-based network environment can provide cloud computing and / or cloud storage for any combination of the computing and / or data storage functions (or one or more portions thereof) described herein. Any of these different functions may be distributed across multiple locations from a central or core server (e.g., across one or more data centers distributed across states, regions, countries, globally, etc.). If the connection to the user (e.g., client device) is relatively close to the edge server, the core server may assign at least a portion of the functionality to the edge server. A cloud-based network environment can be private (e.g., limited to a single organization), public (e.g., available to many organizations), and / or a combination thereof (e.g., a hybrid cloud environment).
[0115] One or more client devices may be included in this discussion. Figure 9 At least some of the components, features, and functions of one or more example computing devices 900 described. By way of example and not limitation, the client device may be embodied as a personal computer (PC), laptop computer, mobile device, smartphone, tablet computer, smartwatch, wearable computer, personal digital assistant (PDA), MP3 player, virtual reality headset, global positioning system (GPS) or device, video player, camera, surveillance equipment or system, vehicle, ship, spacecraft, virtual machine, drone, robot, handheld communication device, hospital equipment, gaming device or system, entertainment system, vehicle computer system, embedded system controller, remote control, electrical appliance, consumer electronics device, workstation, edge device, any combination of these described devices, or any other suitable device.
[0116] This disclosure can be described in the general context of computer code or machine-usable instructions (including computer-executable instructions, such as program modules) that are executed by a computer or other machine (such as a personal data assistant or other handheld device). Typically, a program module, including routines, programs, objects, components, data structures, etc., refers to code that performs a specific task or implements a specific abstract data type. This disclosure can be implemented in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, and more specialized computing devices. This disclosure can also be implemented in a distributed computing environment where tasks are performed by remote processing devices linked via a communication network.
[0117] As used herein, the phrase "and / or" relating to two or more elements should be interpreted as meaning only one element, or a combination of elements. For example, "element A, element B, and / or element C" can include only element A, only element B, only element C, element A and element B, element A and element C, element B and element C, or element A, B, and C. Furthermore, "at least one of element A or element B" can include at least one of element A, at least one of element B, or at least one of element A and at least one of element B. Additionally, "at least one of element A and element B" can include at least one of element A, at least one of element B, or at least one of element A and at least one of element B.
[0118] The subject matter of this disclosure is specifically described herein to meet legal requirements. However, the description itself is not intended to limit the scope of this disclosure. Rather, the inventors have anticipated that the claimed subject matter may also be embodied in other ways in combination with other current or future techniques to include combinations of different steps or steps similar to those described in this document. Furthermore, although the terms "step" and / or "box" may be used herein to refer to different elements of the method employed, such terms should not be construed as implying any particular order among or between the various steps disclosed herein, unless and only if the order of individual steps is explicitly described.< / amount> < / name>
Claims
1. A method comprising: Receive at least one message including at least one text string via an Application Programming Interface (API), the content of which is generated from the game state of the game session and presented in one or more notifications in the game session, based on at least one or more conditions determined by the game application for generating and presenting the content in the game state of the game session, and the one or more conditions corresponding to the gameplay of the game application. The event is determined at least based on identifying one or more indicators corresponding to the gameplay in the at least one text string using natural language processing; as well as Send data that causes at least one or more highlights of the game session to be generated based on the event.
2. The method of claim 1, wherein determining the event comprises: One or more first text terms extracted from the at least one text string are mapped to an event template, the event template defining one or more second text terms of the event; Use the event template to extract one or more second text terms from the at least one text string; as well as The second text terminology is incorporated into one or more fields of the event.
3. The method of claim 1, wherein one or more indicators of the event include one or more action words corresponding to the one or more conditions.
4. The method according to claim 1, further comprising: The natural language processing is used to determine one or more session identifier words from the at least one text string, wherein the one or more session identifier words correspond to a session type associated with the event.
5. The method according to claim 1, further comprising: The natural language processing is used to determine one or more entities in the game session from the at least one text string.
6. The method according to claim 1, further comprising: The configuration associated with the game application is selected from multiple configurations associated with multiple game applications, based at least on the identifier of the game application, wherein the natural language processing uses the configuration associated with the game application.
7. The method of claim 1, wherein the at least one text string corresponds to the text of one or more log entries generated by the game application based on at least one or more conditions being met.
8. The method of claim 1, wherein when one or more conditions are met, the presentation in the game application displays the at least one text string to one or more players.
9. The method of claim 1, wherein the message is received by a cloud gaming server that streams the game session to the client device.
10. A system comprising: One or more processing units for performing operations, the operations including: Receive at least one message including at least one text string, the content of which is generated by the game application based on at least one or more conditions for generating and presenting the content in the game state of the game session as determined by the game application at least based on the game application, and presented in one or more notifications in the game session, the one or more conditions corresponding to the gameplay of the game application; Map the at least one text string to an event template, the event template defining one or more parameters of an event corresponding to the gameplay; Use the event template to extract one or more parameters from the text string; and Send data that causes the display in the user interface based on at least one or more parameters of the event.
11. The system of claim 10, wherein the one or more conditions are satisfied based at least on one or more actions performed by the player avatar in the gameplay of the game application.
12. The system of claim 10, wherein the at least one message includes a log file, the log file including the at least one text string, the log file being generated by the game application in association with the game session.
13. The system of claim 10, wherein the at least one message includes an API call, the API call including the at least one text string.
14. The system of claim 10, wherein the at least one text string is processed using natural language processing.
15. A processor, comprising: One or more circuits are configured to: receive at least one message comprising at least one text string, the content of which is generated by an application from the application state based at least on the application state of the application session, and present it in one or more notifications of the application session; The event is determined at least based on identifying one or more indicators corresponding to the application state in the at least one text string using natural language processing; And send data that causes a display in the user interface based at least on the event.
16. The processor of claim 15, wherein at least one message includes a process identifier of the application, and the event is determined based at least on the process identifier.
17. The processor of claim 15, wherein the application is a game application, and the content is generated and presented based on at least one or more conditions corresponding to the gameplay of the game application.
18. The processor of claim 15, wherein the at least one message is received by an application programming interface (API).
19. The processor of claim 15, wherein the at least one text string is in natural language form.
20. The processor of claim 15, wherein the processor is included in at least one of the following: Control systems for autonomous or semi-autonomous machines; Sensing systems for autonomous or semi-autonomous machines; A system used to perform simulation operations; A system used to perform deep learning operations; Systems implemented using edge devices; Systems implemented using robots; A system containing one or more virtual machines (VMs); A system that is at least partially implemented in a data center; or A system that utilizes cloud computing resources at least in part.
Citation Information
Patent Citations
Audio-visual games and game computer programs embodying interactive speech recognition and methods related thereto
US20060040718A1
Spectator interactions with games in a specatating system
US20170003740A1