System and method for streaming game sessions to third party gaming consoles

Information

  • Patent Grant
  • 11446582
  • Patent Number
    11,446,582
  • Date Filed
    Monday, December 28, 2020
    3 years ago
  • Date Issued
    Tuesday, September 20, 2022
    2 years ago
Abstract
An approach is provided for streaming of media streams (e.g., from a game console). In one implementation, a media stream that includes a secondary view of the game world may be generated at the game console. The secondary view may be of a lower-quality version of a primary view of the game world. The generation of the media stream may include: prefetching, to a cache of the game console, portions of the primary view and/or instructions for encoding the portions; and encoding, based on the prefetching, the portions to produce the secondary view. In another implementation, game play information may be executed to reproduce previous game play of a previous game session during a reproduction of the previous game session. Augmentation content may be added to the reproduced game session during the reproduction of the previous game session, creating an augmented game session having one or more views for streaming.
Description
FIELD OF THE INVENTION

The invention relates generally to the streaming of media streams, for example, from a game console. The media streams may, for instance, be of live game sessions, augmented game sessions created via augmentation during reproduction of previous game sessions, and/or other game sessions.


BACKGROUND OF THE INVENTION

Online gaming has become one of the world's largest forms of entertainment. In recent years, live streaming of competitive gaming has become one of the hottest trends. For example, gamers and their fans may live stream competitive gaming events to learn new game strategies utilized by other gamers and/or for entertainment purposes. As such, a number of service providers have developed services to facilitate streaming of gaming events (e.g., e-sport events) from desktop computers to streaming service sites for presentation of the streamed gaming events to viewers around the world. However, gamers are currently unable to live stream their game sessions directly from their game consoles to such streaming service sites without the use of an intermediary device due to, for example, lower memory and processing capabilities of game consoles (e.g., compared to traditional servers and/or desktop computers). The inability to live stream from a game console may diminish the overall game play experience for console users.


Additionally, commentators often provide an additional form of entertainment in conjunction with streaming of the gaming events. Great commentary, for instance, may attract a larger number of viewers to gaming events due to the “personalities” of the commentators. However, while a commentator may add his/her audio or visual commentary to a recorded game-session video (e.g., by combining a video of the commentary and a captured video of the game session), the commentator is limited to seeing only the views of the game session that have been captured by the video of the game session. Accordingly, alternative approaches to typical streaming of game sessions and/or commentation may be advantageous.


SUMMARY OF THE INVENTION

One aspect of the invention relates to a system that is configured to facilitate streaming of media streams from a game console, in accordance with one or more implementations. Another aspect of the invention relates a system that is configured to facilitate streaming of augmented game sessions created via augmentation during reproduction of previous game sessions.


The various components of such system(s) may be configured for electronic communication among one another. Such communication may be accomplished via one or more networks, one or more direct connections, one or more wireless connections, one or more wired connections, and/or other electronic communication media. One or more of the components of the system may be implemented in a server (not shown). The server may be in communication with client computing platforms via a client/server architecture to enable users access to the server via client computing platforms.


A processor may be configured to provide information processing capabilities within the system. For example, the processor may configured to execute computer program modules that may include one or more of a game module, a communication module, an encoding module, a vector processing module, a streaming module, an augmentation module, a game play storage module, a number-type conversion module, and/or other modules. In some implementations, a given client computing platform (e.g., a game console) may include the processor and/or the computer program modules to facilitate operations and/or functions described herein. In other implementations, a server may include the processor and/or the computer program modules to facilitate operations and/or functions described herein.


The game module may be configured to execute an instance of a game world, for instance, at a game console. The game module may be configured to generate, based on the game world, a primary view of the game world for local viewing. By way of example, the primary view may be a view rendered to a player of the instance of the game world on a display that is locally connected to his/her game console. The primary view may be generated based on interactions among various players of the game world, interactions of the players with simulated elements of the game world, simulated events of the game world, augmented elements, and/or other features. The primary view may be rendered based on one or more media formats (e.g., image format, video format, etc.) to depict the various interactions, simulated events, augmented elements, and/or other features. The communication module may, for instance, be configured to obtain action requests specifying in-game actions. The game module may be configured to implement requested actions in the instance of the game world. As an example, the requested actions may cause one or more simulated events in the instance of the game world, resulting in the generation of a primary view depicting the simulated events.


The encoding module may be configured to generate, at the game console, a media stream including a secondary view of the game world. The secondary view may be a lower-quality version of the primary view. By way of example, compared with the primary view, the secondary view may be associated with one or more of a lower resolution, frame rate, bit rate, and/or other quality factors. It should be noted that, although the secondary view may be a lower-quality version of the primary view, the quality of the primary and secondary views may not necessarily be distinguishable to viewers.


The encoding module may be configured such that the generation of a media stream includes: prefetching, to the cache of the game console, one or more of portions of the primary view or instructions for encoding the portions of the primary view; and encoding, based on the prefetching, the portions of the primary view to produce the secondary view. For example, due to lower memory and processing capabilities of game consoles (e.g., compared with conventional desktops), traditional encoding approaches may not allow a game console to effectively encode and stream a current game session during the game session. As such, by prefetching data to the cache of the game console (e.g., L1 cache, L2 cache, etc.), and by encoding primary views of the game session using the prefetched data, a game console may avoid large latencies associated with directly loading the data from main memory to encode the primary views. As a result, the game console may be configured to more effectively encode and stream a current game session in real-time.


In certain implementations, the encoding module may comprise code that indicates the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view. By way of example, the code may be written such that it indicates prefetching of the primary view portions and/or the encoding instructions to L1 cache, L2 cache, etc., of the gaming console in a way that reduces delays associated with cache misses. In some implementations, the one or more processors may include a first processor of a first processor type and a second processor of a second processor type different from the first processor type, and the code of the encoding module may indicate execution of a first part of the code using the first processor and execution of a second part of the code using the second processor. Although certain parts of the code may generally be more suitable for processing by a processing unit of a first processing unit type, the code may indicate processing of those certain parts of the code by a processing unit of second processing unit type, for instance, to balance the utilization of the processing units so that the processing unit of the first processing type is not significantly overutilized (e.g., to avoid waiting delays) and the processing unit of the second processing type is not significantly underutilized (e.g., to avoid waste of available processing power).


In various implementations, the vector processing module may include the encoding module such that the vector processing module may be configured to initiate the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view (e.g., to perform vector operations to optimize routines associated with the encoding process). In some implementations, the vector processing module may be configured to load, in parallel, one or more of a first portion of the portions or the instructions for encoding the first portion from the cache to a first register associated with the vector processing module, and one or more of a second portion of the portions or the instructions for encoding the second portion from the cache to a second register associated with the vector processing module, such that the encoding of the portions of the primary view to produce the secondary view may be based on the loading from the cache to the first and second registers. In this way, by loading the first and second registers in parallel, the vector processing module may overcome slower processing speeds associated with game consoles by reducing loading delays (e.g., waiting for the loading of a register to be completed).


In certain implementations, portions of the primary view may be represented by a first set of numbers of a first number type. The number-type conversion module may be configured to convert the first set of numbers into a second set of numbers of a second number type, and the encoding of the portions of the primary view to produce the secondary view may be based on the conversion. In some implementations, the encoding module may be configured to initiate lookup table function calls to retrieve results of certain mathematical operations as a way to mitigate computational load associated with conversion of the first set of numbers to the second set of numbers.


The streaming module may be configured to effectuate streaming of the media stream (e.g., from the game console to a web server). For example, as a result of the optimizations described herein (e.g., prefetching of data to the cache of the game console, encoding of the prefetched data at the game console, explicit resource utilization balancing, etc.), the game console may be configured to effectively encode and stream a current game session while facilitating operations necessary to effectuate game play for the game session.


In some implementations, the game module may be configured to obtain game play information associated with a previous game session of a game. The game play information may define previous game play of the previous game session. The previous game play may, for instance, include actions initiated by players of the previous game session, interactions among user characters associated with the players, attributes of the user characters, environments of the previous game session (e.g., in which the actions were initiated, the user characters interacted with, etc.), and/or other game play.


The game module may be configured to execute the game play information to reproduce the previous game play during a reproduction of the previous game session. In some implementations, the game module may be configured such that the reproduction of the previous game session may include generating one or more views of the previous game session for presentation to the user.


In various implementations, the game module may be configured such that one or more properties of the reproduction of the previous game session are controllable by the user during the reproduction of the previous game session. The one or more properties may include viewpoint, magnification field, inclusion of screen objects (e.g., compass, maps, alerts, etc.), and/or other properties. In this way, the control of the properties may enable the user to better analyze the previous game play, for instance, to provide better commentary for the previous game play since the user may be able to adjust the viewpoints along with the focus of the viewpoints to better suit his/her needs.


The augmentation module may be configured to effectuate adding of augmentation content to the reproduced game session in response to user input received from an augmenting user during the reproduction of the previous game session. The addition of the augmentation content to the reproduced game session may create an augmented game session. For example, the user may be a commentator and may activate the reproduction of the previous game session to provide commentary of the previous game play in an augmented game session. The user may, for instance, be able to input requests to jump to any viewpoint (e.g., first-person, third-person, etc.) of any of the players of the previous game session to provide commentary based on what is seen through those viewpoints (e.g., the viewpoints of opposing players).


In certain implementations, the game module may be configured to generate a new view of the previous game session during the reproduction of the previous game session. The augmentation module may be configured such that the augmentation content includes the new view. For example, an augmenting user may input a selection for a new viewpoint unavailable to the players in the previous game session, causing generation of a new view based on the new viewpoint selected by the user. Thus, the user may provide commentary for the new view in creating the augmented game session (e.g., such that a media stream of the augmented game session may include the new view and the commentary for the new view). In this way, the user is able to provide viewers of the augmented game session with additional insight into the previous game session along with intriguing new views that would otherwise have been missed by simply watching typical recorded media streams having commentary.


In some implementations, the augmentation module may be configured to facilitate selection by an augmenting user of one or more views of the augmented game session that are streamed from among a plurality of views of the augmented game session. The plurality of views of the augmented game session may, for instance, include the one or more views of the previous game session generated during the reproduction, new views generated during the reproduction, and/or other views associated with the augmented game session.


The streaming module may be configured to effectuate streaming of the one or more views of the augmented game session. In some implementation, the streaming may include real-time streaming of the one or more views of the augmented game session to one or more viewers as the augmentation content is added to the reproduced game session. By way of example, although the previous game play initially occurred during the previous game session, the game play information associated with the previous game session may be obtained (e.g., downloaded from a web service, loaded from storage at a game console, etc.) and utilized to reproduce the previous game play during a reproduction/augmentation session (e.g., the reproduced and augmented game sessions). Thus, the streaming of the one or more views of the augmented game session may include live, real-time streaming with respect to the augmented game session.


In various implementations, the augmented game session may include a plurality of players. The plurality of players may include a first player and an augmenting user. The game may include a plurality of player types and a plurality of in-game actions. The plurality of player types may include first and second player types. The first player may be of the first player type, and the user may be of the second player type. By way of example, the first player may be a player in the previous game session and the augmented game session, while the user may only be a player in the augmented game session. In one scenario, with respect to the augmented game session, the first player may be a simulated player whose actions may be predefined (e.g., the actions may be recorded from the previous game session in the form of the game play information), while the second player may be a live player whose actions are initiated during the augmented game session to facilitate augmenting content to the reproduced game session.


In certain implementations, the plurality of in-game actions may include first actions of the first player type and second actions of the second player type. The first actions of the first player type may be actions that are available to players of the first player type (e.g., the first player), while actions of the second type may be actions that are available to players of the second player type (e.g., the augmenting user).


In various implementations, the previous game play may include the first actions, and the first actions may have been implemented on behalf of the first player in the previous game session. For example, the first actions may have been implemented during the previous game session responsive to action requests for the first actions by the first player, and recorded during the previous game session in the form of the game play information. The first actions may be reinitiated during the reproduction of the previous game session using the game play information. On the other hand, the second actions may be initiated for the first time during the reproduction of the previous game session. Thus, in some implementations, the game module may be configured to implement the second actions for the user during the reproduction of the previous game session responsive to action requests for the second actions by the user.


The game play storage module may be configured to generate the game play information responsive to implementation of the first actions during the previous game session. For example, the game play information may be generated during the previous game session based on actions implemented in the previous game session. The game play information may be stored at a game console, at a web service, etc., to enable future reproduction of the previous game session for augmentation purposes.


These and other features, and characteristics of the present technology, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention. As used in the specification and in the claims, the singular form of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a system configured to facilitate streaming of media streams, in accordance with one or more implementations.



FIG. 2 illustrates a primary view of a game world, in accordance with one or more implementations.



FIGS. 3A and 3B illustrate an augmented game session created during reproduction of a previous game session, in accordance with one or more implementations.



FIG. 4 illustrates a method for facilitating generation of media streams at a game console, in accordance with one or more implementations.



FIG. 5 illustrates a method for facilitating streaming of augmented game sessions created via augmentation during reproduction of previous game sessions, in accordance with one or more implementations.



FIG. 6 illustrates a method for facilitating streaming of augmented game sessions created via augmentation based on player actions during reproduction of previous game sessions, in accordance with one or more implementations.





DETAILED DESCRIPTION OF THE INVENTION


FIG. 1 illustrates a system 100 configured to facilitate streaming of media streams, in accordance with one or more implementations. In some implementations, system 100 may comprise one or more of electronic storage 102, processor 104, external resources 106, client computing platforms 108, and/or other components. The various components of system 100 may be configured for electronic communication among one another. Such communication may be accomplished via one or more networks, one or more direct connections, one or more wireless connections, one or more wired connections, and/or other electronic communication media. One or more of the components of system 100 may be implemented in a server (not shown). The server may be in communication with client computing platforms 108 via a client/server architecture to enable users access to the server via client computing platforms 108.


Processor 104 may be configured to provide information processing capabilities within system 100. For example, processor 104 may configured to execute computer program modules that may include one or more of a game module 110, a communication module 112, an encoding module 114, a vector processing module 116, a streaming module 118, an augmentation module 120, a game play storage module 122, a number-type conversion module 124, and/or other modules. In some implementations, a given client computing platform 108 (e.g., a game console) may include one or more processors and/or computer program modules that are the same as or similar to processor 104 and/or the depicted computer program modules to facilitate operations and/or functions described herein. In other implementations, a server may include one or more processors and/or computer program modules that are the same as or similar to processor 104 and/or the depicted computer program modules to facilitate operations and/or functions described herein.


In some implementations, electronic storage 102 may comprise non-transitory electronic storage media that electronically stores information. Electronic storage 102 may include one or both of system storage that is provided integrally (e.g., substantially non-removable) with system 100 and/or removable storage that is removably connectable to system 100 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage 102 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media. Electronic storage 102 may include virtual storage resources, such as storage resources provided via a cloud and/or a virtual private network. Electronic storage 102 may store software algorithms, information determined by processor 104, information received via client computing platforms 108, and/or other information that enables system 100 to function properly. Electronic storage 102 may be a separate component within system 100, or electronic storage 102 may be provided integrally with one or more other components of system 12 (e.g., processor 104, client computing platforms 108, servers of system 100, etc.). For example, in certain implementations, the non-transitory electronic storage media of electronic storage 102 may include a cache (e.g., L1 cache, L2 cache, etc.) of processor 104.


In some implementations, electronic storage 102, processor 104, external resources 106, client computing platforms 108, and/or other components (e.g., servers of system 100) may be operatively linked via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via a network such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which electronic storage 102, processor 104, external resources 106, client computing platforms 108, and/or other components may be operatively linked via some other communication media.


In some implementations, the external resources 106 may include sources of information, hosts and/or providers of virtual spaces outside of system 100, external entities participating with system 100, and/or other resources. In some implementations, some or all of the functionality attributed herein to external resources 106 may be provided by resources included in system 100.


In some implementations, processor 104 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. Although processor 104 is shown in FIG. 1 as a single entity, this is for illustrative purposes only. In some implementations, processor 104 may include a plurality of processing units. These processing units may be physically located within the same device, or processor 104 may represent processing functionality of a plurality of devices operating in coordination. Processor 104 may be configured to execute modules 110, 112, 114, 116, 118, 120, 122, 124, and/or other modules. Processor 104 may be configured to execute modules 110, 112, 114, 116, 118, 120, 122, 124, and/or other modules by software; hardware; firmware; some combination of software, hardware, and/or firmware; and/or other mechanisms for configuring processing capabilities on processor 104.


It should be appreciated that although modules 110, 112, 114, 116, 118, 120, 122, and 124 are illustrated in FIG. 1 as being co-located within a single processing unit, in implementations in which processor 104 includes multiple processing units, one or more of modules 110, 112, 114, 116, 118, 120, 122, and/or 124 may be located remotely from the other modules. The description of the functionality provided by the different modules 110, 112, 114, 116, 118, 120, 122, and/or 124 described below is for illustrative purposes, and is not intended to be limiting, as any of modules 110, 112, 114, 116, 118, 120, 122, and/or 124 may provide more or less functionality than is described. For example, one or more of modules 110, 112, 114, 116, 118, 120, 122, and/or 124 may be eliminated, and some or all of its functionality may be provided by other ones of modules 110, 112, 114, 116, 118, 120, 122, and/or 124. As another example, processor 104 may be configured to execute one or more additional modules that may perform some or all of the functionality attributed below to one of modules 110, 112, 114, 116, 118, 120, 122, and/or 124.


Game module 110 may be configured to execute an instance of a game world, for instance, at a game console. Game module 110 may be configured to generate, based on the game world, a primary view of the game world for local viewing. By way of example, the primary view may be a view rendered to a player of the instance of the game world on a display locally connected to his/her game console. The primary view may be generated based on interactions among various players of the game world, interactions of the players with simulated elements of the game world, simulated events of the game world, augmented elements, and/or other features. The primary view may be rendered based on one or more media formats (e.g., image format, video format, etc.) to depict the various interactions, simulated events, augmented elements, and/or other features. Communication module 112 may, for instance, be configured to obtain action requests specifying in-game actions. Game module 110 may be configured to implement requested actions in the instance of the game world. The requested actions may cause one or more simulated events in the instance of the game world, resulting in the generation of a primary view depicting the simulated events.


For example, FIG. 2 illustrates a primary view 200 of a game world, in accordance with one or more implementations. As shown, primary view 200 depicts user characters representing players 202a, 202b, and 202c, simulated events 204 (e.g., gunshots being fired), and simulated elements 206 (e.g., cliffs, rocks, chains, buildings, etc.) associated with the environment of the game world, among other features. Players 202 may, for instance, interact with one another through their user characters of the game world to complete missions, to engage in combat, and/or perform other tasks. Players 202 may input action requests specifying in-game actions, such as moving around in the game world, changing viewpoints of their user characters, discharging bullets from their guns, etc. These in-game actions may, for instance, cause one or more simulated events (e.g., simulated events 204), such as gunshots being fired, explosions, death of a user character of a player 202, etc., to be rendered as part of primary view 200 along with the user characters, simulated elements 206, and/or other features.


The game world may, for instance, be a virtual space. An instance of the virtual space may be executed by computer modules to determine views of the virtual space. The views may then be communicated (e.g., via streaming, via object/position data, and/or other information) from server(s) and/or other sources to client computing platform(s) 108 for presentation to users. The view determined and transmitted to a given client computing platform 108 may correspond to a user character being controlled by a user via given client computing platform 108. The view determined and transmitted to a given client computing platform 108 may correspond to a location in the virtual space (e.g., the location from which the view is taken, the location the view depicts, and/or other locations), a zoom ratio, a dimensionality of objects, a point-of-view, and/or view parameters. One or more of the view parameters may be selectable by the user.


The instance of the virtual space may comprise a simulated space that is accessible by users via clients (e.g., client computing platforms 108) that present the views of the virtual space to a user. The simulated space may have a topography, express ongoing real-time interaction by one or more users, and/or include one or more objects positioned within the topography that are capable of locomotion within the topography. In some instances, the topography may comprise a 2-dimensional topography. In other instances, the topography may comprise a 3-dimensional topography. The topography may include dimensions of the space, and/or surface features of a surface or objects that are “native” to the space. In some instances, the topography may describe a surface (e.g., a ground surface) that runs through at least a substantial portion of the space. In some instances, the topography may describe a volume with one or more bodies positioned therein (e.g., a simulation of gravity-deprived space with one or more celestial bodies positioned therein). The instance executed by the computer modules may be synchronous, asynchronous, and/or semi-synchronous.


The above description of the manner in which views of the virtual space are provided is not intended to be limiting. The virtual space may be expressed in a more limited, or more rich, manner. For example, views determined for the virtual space may be selected from a limited set of graphics depicting an event in a given place within the virtual space. The views may include additional content (e.g., text, audio, pre-stored video content, and/or other content) that describes particulars of the current state of the place, beyond the relatively generic graphics. For example, a view may include a generic battle graphic with a textual description of the opponents to be confronted. Other expressions of individual places within the virtual space are contemplated.


Within the instance(s) of the virtual space, users may control characters, objects, simulated physical phenomena (e.g., wind, rain, earthquakes, and/or other phenomena), and/or other elements within the virtual space to interact with the virtual space and/or one another. The user characters may include avatars. As used herein, the term “user character” may refer to an object (or group of objects) present in the virtual space that represents an individual user. The user character may be controlled by the user with which it is associated. The user controlled element(s) may move through and interact with the virtual space (e.g., non-user characters in the virtual space, other objects in the virtual space). The user controlled elements controlled by and/or associated with a given user may be created and/or customized by the given user. The user may have an “inventory” of virtual goods and/or currency that the user can use (e.g., by manipulation of a user character or other user controlled element, and/or other items) within the virtual space.


The users may participate in the instance of the virtual space by controlling one or more of the available user controlled elements in the virtual space. Control may be exercised through control inputs and/or commands input by the users through client computing platforms 108. The users may interact with one another through communications exchanged within the virtual space. Such communications may include one or more of textual chat, instant messages, private messages, voice communications, and/or other communications. Communications may be received and entered by the users via their respective client computing platforms 108. Communications may be routed to and from the appropriate users through server(s).


Encoding module 114 may be configured to generate, at a game console, a media stream including a secondary view of the game world. The secondary view may be a lower-quality version of the primary view. By way of example, compared with the primary view, the secondary view may be associated with one or more of a lower resolution, frame rate, bit rate, and/or other quality factors. In one scenario, the secondary view may be associated with a higher frame rate than the primary view, but may be associated with a lower resolution and a lower bit rate. In another scenario, requirements for secondary views of the game world in the media stream may be between 15-30 frames per second, 320-640 pixels wide, and a bit rate of 1024 kilobits per second or less. On the other hand, requirements for primary views of the game world may be 15-30 frames per second, high-definition resolutions (e.g., 720p, 1080p, etc.), and 2048 kilobits per second or more. It should be noted that, although the secondary view may be a lower-quality version of the primary view, the quality of the primary and secondary views may not necessarily be distinguishable to viewers. For instance, with respect to FIG. 2, while the secondary view may be a lower-quality version of primary view 200, the lower quality may not necessarily be noticed by viewers of the media stream containing the secondary view.


Encoding module 114 may be configured such that the generation of a media stream includes: prefetching, to the cache of the game console, one or more of portions of the primary view or instructions for encoding the portions of the primary view; and encoding, based on the prefetching, the portions of the primary view to produce the secondary view. For example, due to lower memory and processing capabilities of game consoles (e.g., compared with conventional desktops), traditional encoding approaches may not allow a game console to effectively encode and stream a current game session during the game session. As such, by prefetching data to the cache of the game console (e.g., L1 cache, L2 cache, etc.), and by encoding primary views of the game session using the prefetched data, a game console may avoid large latencies associated with directly loading the data from main memory to encode the primary views. As a result, the game console may be configured to more effectively encode and stream a current game session in real-time. In this way, users may effectively stream their current game sessions from their respective game consoles as they play in the game sessions.


In certain implementations, encoding module 114 may comprise code that indicates the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view. By way of example, the code may be written such that it indicates prefetching of the primary view portions and/or the encoding instructions to L1 cache, L2 cache, etc., of the gaming console in a way that reduces delays associated with cache misses. In one scenario, prefetching may be performed based on cache miss predictions such that data predicted to incur a cache miss may be prefetched to cache before that data is needed. In another scenario, certain lines of code may be grouped together to optimize the prefetching/encoding process (e.g., based on calculated frequency of use associated with the primary view portions and/or the encoding instructions).


In some implementations, the one or more processors may include a first processor of a first processor type and a second processor of a second processor type different from the first processor type, and the code of encoding module 114 may indicate execution of a first part of the code using the first processor and execution of a second part of the code using the second processor. For example, a PS3™ (PlayStation® 3) game console may multiple processing units of various types, such as a VMX (Vector Multimedia Extension), a SPU (Synergistic Processor Unit), a PPU (Physics Processing Unit), and/or other processing units. Although certain parts of the code may generally be more suitable for processing by a processing unit of a first processing unit type (e.g., PPU), the code may indicate processing of those certain parts of the code by a processing unit of second processing unit type (e.g., SPU), for instance, to balance the utilization of the processing units so that the processing unit of the first processing type is not significantly overutilized (e.g., to avoid waiting delays) and the processing unit of the second processing type is not significantly underutilized (e.g., to avoid waste of available processing power).


In certain implementations, the code may indicate direct memory access (DMA) transfers of the primary view portions and/or the encoding instructions to local memory (e.g., the cache, designated area of memory for threads, etc.). For example, game consoles such as the PS3 may include a specialized processing unit (e.g., SPU) that requires that data be stored in local memory prior to processing of the data by the specialized processing unit.


In various implementations, vector processing module 116 may include encoding module 114 such that vector processing module 116 may be configured to initiate the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view. In one use case, vector processing module 116 may interact with the VMX of the gaming console to perform vector operations to optimize routines associated with the encoding process. In some implementations, vector processing module 116 may be configured to load, in parallel, one or more of a first portion of the portions or the instructions for encoding the first portion from the cache to a first register associated with vector processing module 116, and one or more of a second portion of the portions or the instructions for encoding the second portion from the cache to a second register associated with vector processing module 116, such that the encoding of the portions of the primary view to produce the secondary view may be based on the loading from the cache to the first and second registers. In this way, by loading the first and second registers in parallel, vector processing module 116 may overcome slower processing speeds associated with game consoles by reducing loading delays (e.g., waiting for the loading of a register to be completed).


In certain implementations, portions of the primary view may be represented by a first set of numbers of a first number type. Number-type conversion module 124 may be configured to convert the first set of numbers into a second set of numbers of a second number type, and the encoding of the portions of the primary view to produce the secondary view may be based on the conversion. For example, the VMX of the Xbox 360® game console is configured to perform direct multiplication of floats, but is not configured to perform direct multiplication of integers due to a lack of integer multiplies. Thus, in such a scenario, encoding module 114 may work with the number-type conversion module to convert integers into floats when multiplication is needed for encoding. In some implementations, encoding module 114 may be configured to initiate lookup table function calls to get around the lack of integer multiplies (and/or other missing mathematical operations). For example, encoding module 114 may be configured to pre-compute one or more multiplications and store the pre-computed results in an array. At runtime, encoding module 114 may be configured with the pre-computed results such that the array may be “looked up” via the lookup table function calls (e.g., of encoding module 114) to retrieve the pre-computed results for certain multiplications during the encoding process. In this way, computational load associated with conversion of the integers to floats for multiplications (and/or other mathematical operations) may be mitigated.


Streaming module 118 may be configured to effectuate streaming of the media stream (e.g., from the game console to a web server). For example, as a result of the optimizations described herein (e.g., prefetching of data to the cache of the game console, encoding of the prefetched data at the game console, explicit resource utilization balancing, etc.), the game console may be configured to effectively encode and stream a current game session while facilitating operations necessary to effectuate game play for the game session.


In some implementations, game module 110 may be configured to obtain game play information associated with a previous game session of a game. The game play information may define previous game play of the previous game session. The previous game play may, for instance, include actions initiated by players of the previous game session, interactions among user characters associated with the players, attributes of the user characters, environments of the previous game session (e.g., in which the actions were initiated, in which the user characters interacted, etc.), and/or other game play. For example, with respect to FIG. 2, assuming that primary view 200 represents a captured view of previous game play, the game play information may specify the movement of user characters of players 202, the triggering of the weapons of user characters of players 202, etc., along with the environment in which the actions took place, the sequence of the actions, and/or other information relating to the previous game play.


Game module 110 may be configured to execute the game play information to reproduce the previous game play during a reproduction of the previous game session. For example, the previous game play may be reproduced by reinitiating the actions defined in the game play information in their respective sequence order within the context of the environment in which the actions took place. In some implementations, game module 110 may be configured such that the reproduction of the previous game session may include generating one or more views of the previous game session for presentation to the user. By way of example, the views of the previous game session may include views that may have been presented to the players in the previous game session based on the previous game play associated with those players (e.g., the actions initiated by those players). In one use case, the one or more views of the previous game session may be generated and presented to a user facilitating augmentation of the reproduced game session to enable the user to see the previous game play as the user is providing augmentations to the reproduced game session.


In another scenario, the views of the previous game session that are presented to an augmenting user may be based on selection of the views by the user. The user may, for instance, be initially presented with a default viewpoint of one of the players, and the initial views of previous game session may be based on the default viewpoint. However, the user may select to switch to a viewpoint of another player to be presented with views based on the selected viewpoint.


In various implementations, game module 110 may be configured such that one or more properties of the reproduction of the previous game session are controllable by an augmenting user during the reproduction of the previous game session. The one or more properties may include viewpoint, magnification field, inclusion of screen objects, and/or other properties. As an example, an augmenting user may select the viewpoint from which the view presented to the user is based (e.g., viewpoints of players in the previous game session, new viewpoints unavailable to players in the previous game session, etc.) and the magnification field of the selected viewpoint such that the view presented to the user is a zoomed-in/zoomed-out view (e.g., a zoomed-in view generated based on a first-person viewpoint that is zoomed-in on a particular view area, a zoomed-out view generated based on a third-person viewpoint that is zoomed-out, etc.). As another example, the views of the previous game session may include screen objects (e.g., compass, maps, alerts, etc.) that were accessible to players in the previous game session. The user may opt to leave out such screen objects from the views presented to the user such that media streams created from those views will not render those screen objects. In this way, the control of the properties may enable the user to better analyze the previous game play, for instance, to provide better commentary for the previous game play since the user may be able to adjust the viewpoints along with the focus of the viewpoints to better suit his/her needs.


Augmentation module 120 may be configured to effectuate adding of augmentation content to the reproduced game session in response to user input received from an augmenting user during the reproduction of the previous game session. The addition of the augmentation content to the reproduced game session may create an augmented game session. In one use case, an augmenting user may be a commentator and may activate the reproduction of the previous game session to provide commentary of the previous game play in an augmented game session. The user may, for instance, be able to input requests to jump to any viewpoint (e.g., first-person, third-person, etc.) of any of the players of the previous game session to provide commentary based on what is seen through those viewpoints (e.g., the viewpoints of various players). In another scenario, the user may add screen objects (e.g., a map displaying the various locations of the players, a leaderboard showing the scores of the players, a clock/timer, etc.) to the reproduced game session such that a media stream of the augmented game session will include a rendering of the screen objects.


By way of example, FIGS. 3A and 3B illustrate a media stream of an augmented game session 300 created during reproduction of a previous game session, in accordance with one or more implementations. FIGS. 3A and 3B may, for instance, illustrate streamed views of the augmented game session generated based on viewpoints of players on opposing teams (e.g., Teams 1 and 2). In one scenario, with respect to FIG. 3A, a commentating user may facilitate augmentation of the reproduced game session during the reproduction of the previous game session. As shown, the user may have been presented with a first view that is generated based on the viewpoint of player 202a as the user augments content to the reproduced game session to create the augmented game session. The user may, for instance, add audio commentary 302 during the reproduction of the previous game session to point out an important aspect of the previous game play associated with Team 1 such that the media stream of the augmented game session will include the audio commentary. To provide viewers with an uncluttered view, the user may opt to remove screen objects (e.g., compass, maps, alerts, etc.) that may have been presented to player 202a in the previous game session, as indicated in FIG. 3A.


In another scenario, as shown in FIG. 3B, an augmenting user may switch to a viewpoint of a player 304 on Team 2 (e.g., the team opposing Team 1). As such, the user may be presented with a view generated based on the viewpoint of player 304 as the user adds augmentation content to the reproduced game session. For example, when an augmenting user realizes the strategy being implemented by player 304, the user may provide his/her take on that strategy. In some implementations, the user may add audio and/or visual commentary (e.g., audio commentary 306, visual commentary in the form of video window 308, etc.) during the reproduction of the previous game session using a microphone and a camera connected to client computing platform 108 (e.g., a game console). The user may opt to include video window 308 depicting the user in real-time as he/she facilitates augmenting content to the reproduced game session to create the augmented game session. Video window 308 may, for instance, enable viewers of the augmented game session to see the facial expressions of the user as he/she facilitates the augmentation. To add more excitement to the augmented game session, an augmenting user may opt to include a map 310 depicting the current locations of the various players and a leaderboard 312 depicting the current scores of the players (e.g., players 202 and 304), such that a media stream of the augmented game session will include the audio commentary 306, the video window 308, the map 310, and the leaderboard 312.


In certain implementations, game module 110 may be configured to generate a new view of the previous game session during the reproduction of the previous game session. Augmentation module 120 may be configured such that the augmentation content includes the new view. For example, an augmenting user may input a selection for a new viewpoint unavailable to the players in the previous game session, causing generation of a new view based on the new viewpoint selected by the user. Thus, the user may provide commentary for the new view in creating the augmented game session (e.g., such that a media stream of the augmented game session may include the new view and the commentary for the new view).


In a first scenario, a user may opt for an aerial viewpoint that causes the generation of a new view based on the new outlook from the sky. In a second scenario, the user may opt for a viewpoint with x-ray vision that enables the user to see through solid objects (e.g., walls, rocks, etc.) with perfect clarity. The user may, for instance, utilize a two-finger touch gesture on a touch display rendering the current view to “open-up” a vision hole on a solid object that enables the user to see through the solid object via the vision hole. In a third scenario, the user may opt to act as a player (e.g., a reporter that was not in the previous game session, a moving spy robot that was not accessible to the players in the previous game session, etc.) who may move around in the simulated space to have access to viewpoints that the players in the previous game session did not have. In this way, a user is able to provide viewers of the augmented game session with additional insight into the previous game session along with intriguing new views that would otherwise have been missed by simply watching typical recorded media streams having commentary.


In some implementations, augmentation module 120 may be configured to facilitate selection by an augmenting user of one or more views of the augmented game session that are streamed from among a plurality of views of the augmented game session. The plurality of views of the augmented game session may, for instance, include one or more views of the previous game session generated during the reproduction, new views generated during the reproduction, and/or other views associated with the augmented game session. In one use case, augmentation module 120 may facilitate the selection by an augmenting user of one or more views of the augmented game session by working with game module 110 to enable the user to control the one or more properties of the reproduction of the previous game session, such as being able to switch viewpoints (e.g., viewpoints available to the players in the previous game session, viewpoints unavailable to the players in the previous game session, etc.), provide magnifications of the viewpoints, and manage inclusion/omission of screen objects that were accessible to the players in the previous game session for views (e.g., resulting in new views).


In various implementations, augmentation module 120 may be configured such that one of the views of the augmented game session may include multiple views associated with the previous game session. For example, during the reproduction of the previous game session, the user may initially be providing commentary on a first view that is generated based on a viewpoint of a player in the previous game session. However, to make streaming of the augmented game session more interesting, the user may add a second view that is generated based on a viewpoint of an opposing player in the previous game session such that a single view associated with the augmented game session may include both the first and second views depicting viewpoints of opposing players. The first and second views may, for instance, be cropped, resized, and/or reshaped to fit within the single view associated with the augmented game session.


Streaming module 118 may be configured to effectuate streaming of one or more views of the augmented game session. In some implementation, the streaming may include real-time streaming of the one or more views of the augmented game session to one or more viewers as the augmentation content is added to the reproduced game session. By way of example, although the previous game play initially occurred during the previous game session, the game play information associated with the previous game session may be obtained (e.g., downloaded from a web service, loaded from storage at a game console, etc.) and utilized to reproduce the previous game play during a reproduction/augmentation session (e.g., the reproduced and augmented game sessions). Thus, the streaming of the one or more views of the augmented game session may include live, real-time streaming with respect to the augmented game session.


In various implementations, the augmented game session may include a plurality of players. The plurality of players may include a first player and an augmenting user. The game may include a plurality of player types and a plurality of in-game actions. The plurality of player types may include first and second player types. The first player may be of the first player type, and the user may be of the second player type. By way of example, the first player may be a player in the previous game session and the augmented game session, while the user may only be a player in the augmented game session. In one scenario, with respect to the augmented game session, the first player may be a simulated player whose actions may be predefined (e.g., the actions may be recorded from the previous game session in the form of the game play information), while the second player may be a live player whose actions are initiated during the augmented game session to facilitate augmenting content to the reproduced game session.


In another scenario, players of the first player type may be limited to their respective viewpoints. For example, in the previous game session, the players of the first player type may only see what their respective user character sees through a first-person viewpoint and/or the immediate area around their respective user character through a third-person viewpoint. On the other hand, players of the second player type may have access to their own viewpoints as well as the viewpoints of all of the players in the previous game session. For instance, during the reproduction of the previous game session, the user (e.g., being of the second player type) may have the ability to see all interactions taking place among the players in the game world (e.g., aerial viewpoint of the game world, god-like view of the game world, etc.), along with having access to the individual viewpoints of each of the players in the game world (e.g., first-person viewpoint of the players, third-person viewpoint of the players, etc.).


In certain implementations, the plurality of in-game actions may include first actions of the first player type and second actions of the second player type. The first actions of the first player type may be actions that are available to players of the first player type (e.g., the first player), while actions of the second type may be actions that are available to players of the second player type (e.g., the user). In one use case, the second actions may include activating x-ray vision to see through solid objects (e.g., walls, rocks, etc.), transitioning into the bodies of various user characters associated with other players to see what is happening from their viewpoints, instantly accessing viewpoints from any location in the simulated space to obtain “looks” that may have been unavailable to players in the previous game session, and/or other actions of the second player type. Such actions may, for instance, be unavailable to the first player and/or other players of the first player type.


As indicated, in various implementations, the previous game play may include the first actions, and the first actions may have been implemented on behalf of the first player in the previous game session. For example, the first actions may have been implemented during the previous game session responsive to action requests for the first actions by the first player, and recorded during the previous game session in the form of the game play information. The first actions may be reinitiated during the reproduction of the previous game session using the game play information. On the other hand, the second actions may be initiated for the first time during the reproduction of the previous game session. Thus, in some implementations, game module 110 may be configured to implement the second actions for the user during the reproduction of the previous game session responsive to action requests for the second actions by the user.


Game play storage module 122 may be configured to generate the game play information responsive to implementation of the first actions during the previous game session. For example, the game play information may be generated during the previous game session based on actions implemented in the previous game session. The game play information may be stored at a game console, at a web service, etc., to enable future reproduction of the previous game session for augmentation purposes (e.g., creating an augmented game session by adding augmentation content to the reproduced game session during the reproduction of the previous game session). The game play information may, for instance, be generated and stored using one or more languages suitable for recording game play information, such as Extensible Markup Language (XML) and/or other suitable languages.



FIG. 4 illustrates a method for facilitating generation of media streams at a game console, in accordance with one or more implementations. The operations of method 400 presented below are intended to be illustrative. In some implementations, method 400 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method 400 are illustrated in FIG. 4 and described below is not intended to be limiting.


In some implementations, method 400 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method 400 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 400.


In an operation 402, an instance of a game world may be executed. For example, the instance of the game world may be executed at a game console. Operation 402 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 404, a primary view of the game world may be generated based on the game world for local viewing. For example, the primary view may be the view rendered to a player of the instance of the game world on his/her display locally connected to his/her game consoles. The primary view may be generated based on interactions among various players of the game world, interactions of the players with simulated elements of the game world, simulated events of the game world, augmented elements, and/or other features. The primary view may rendered based on one or more media formats (e.g., image format, video format, etc.) to depict the various interactions, simulated events, augmented elements, and/or other features. Operation 404 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 406, action requests specifying in-game actions may be obtained. Both players and augmenting users (e.g., who may also be players) may, for instance, input the action requests via their respective game consoles to interact with one another, to travel around the game world having one or more simulated elements, to complete objectives in the game world, and/or to perform other activities associated with the game world. Operation 406 may be performed by a communication module that is the same as or similar to communication module 112, in accordance with one or more implementations.


In an operation 408, the requested actions may be implemented in the instance of the game world. For example, when implemented, the requested actions may cause one or more simulated events in the instance of the game world, resulting in the generation of the primary view depicting the simulated events. Operation 408 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 410, a media stream including a secondary view of the game world may be generated at the game console. The secondary view of the game world may be a lower-quality version of the primary view. By way of example, the generation of the secondary view may include: a prefetching, to the cache (e.g., L1 cache, L2 cache, etc.) of the game console, one or more of portions of the primary view or instructions for encoding the portions of the primary view; an encoding, based on the prefetching, of the portions of the primary view to produce the secondary view. For example, the portions of the primary view may be encoded using prefetched-cached portions of the primary view and prefetched-cached encoding instructions to produce the secondary view. Operation 410 may be performed by an encoding module that is the same as or similar to encoding module 114, in accordance with one or more implementations.


It should be noted that, in some implementations, the encoding module (which is the same as or similar to encoding module 114) may be configured to include code that indicates the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view. In other implementations, processors 104 may include a first processor of a first type and a second processor of a second type. The code may indicate execution of a first part of the code using the first processor and execution of a second part of the code using the second processor.


In certain implementations, operation 410 may be performed by a vector processing module that is the same as or similar to vector processing module 116 such that the vector processing module may initiate the prefetching to the cache and the encoding of the portions of the primary view to produce the secondary view. In some implementations, the vector processing module may be configured to load, in parallel: (1) one or more of a first portion of the portions or the instructions for encoding the first portion; and (2) one or more of a second portion of the portions or the instructions for encoding the second portion, from the cache to a register associated with the vector processing module such that the encoding of the portions of the primary view to produce the secondary view is based on the loading from the cache to the register.


In an operation 412, streaming of the media stream may be effectuated. The media stream may, for instance, be streamed from the game console to one or more viewers via a web service. Operation 412 may be performed by a streaming module that is the same as or similar to streaming module 118, in accordance with one or more implementations.



FIG. 5 illustrates a method for facilitating streaming of augmented game sessions created via augmentation during reproduction of previous game sessions, in accordance with one or more implementations. The operations of method 500 presented below are intended to be illustrative. In some implementations, method 500 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method 500 are illustrated in FIG. 5 and described below is not intended to be limiting.


In some implementations, method 500 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method 500 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 500.


In an operation 502, game play information associated with a previous game session of a game may be obtained. The game play information may define previous game play of the previous game session. As indicated, the previous game play may include actions initiated by players of the previous game session, interactions among user characters associated with the players, attributes of the user characters, environments of the previous game session (e.g., in which the actions were initiated, the user characters interacted with, etc.), and/or other game play. Operation 502 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 504, the game play information may be executed to reproduce the previous game play in the previous game session during a reproduction of the previous game session. For example, the previous game play may be reproduced by reinitiating the actions defined in the game play information in their respective sequence order within the context of the environment in which the actions took place. Operation 504 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 506, a determination of whether user input is received from an augmenting user during the reproduction of the previous game session may be effectuated. The user input may, for instance, relate to adding of augmentation content to the reproduced game session, such as inputting audio/visual commentary, adding one or more screen objects (e.g., maps, leaderboards, clocks/timers, etc.), adding new views that may not have been available for presentation to the players in the previous game session, and/or other user inputs. Operation 506 may be performed by a communication module that is the same as or similar to communication module 112, in accordance with one or more implementations. Responsive to a determination that user input is received from the user during the reproduction of the previous game session, method 500 may proceed to an operation 508.


In operation 508, augmentation content may be added to the reproduced game session based on the user input to create augmented game session. In some implementations, selection by the user of one or more views of the augmented game session that are to be streamed may be facilitated. The selection by the user may be from among a plurality of views of the augmented game session. The plurality of views of the augmented game session may, for instance, include generated views of the previous game session, new views generated during the reproduction of the previous game session, and/or other views associated with the augmented game session. Operation 508 may be performed by an augmentation module that is the same as or similar to augmentation module 120, in accordance with one or more implementations.


In an operation 510, streaming of the one or more views of the augmented game session (e.g., the views selected by the user) may be effectuated. For example, if the reproduction of the game session is performed on a game console, the streaming of the one or more views of the augmented games session may be from the game console to a web server (e.g., for distribution to one or more viewers from the web server). In some implementations, the streaming may include real-time streaming of the one or more views of the augmented game session to one or more viewers as the augmented content is added to the reproduced game session. Operation 510 may be performed by a streaming module that is the same as or similar to streaming module 118, in accordance with one or more implementations.



FIG. 6 illustrates a method for facilitating streaming of augmented game sessions created via augmentation based on player actions during reproduction of previous game sessions, in accordance with one or more implementations. The operations of method 600 presented below are intended to be illustrative. In some implementations, method 600 may be accomplished with one or more additional operations not described, and/or without one or more of the operations discussed. Additionally, the order in which the operations of method 600 are illustrated in FIG. 6 and described below is not intended to be limiting.


In some implementations, method 600 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method 600 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 600.


By way of example, the augmented game session may include a plurality of players. The plurality of players may include a first player and an augmenting user. The first player may, for instance, be a player in the previous game session and the augmented game session, while the user may only be a player in the augmented game session. The first player may be of a first player type, and the user may be of a second player type. In one scenario, with respect to the augmented game session, the first player may be a simulated player whose actions may be predefined (e.g., the actions may be recorded from the previous game session in the form of the game play information), while the second player may be a live player whose actions are initiated during the augmented game session to facilitate augmenting content to the reproduced game session.


In an operation 602, first actions of the first player type may be implemented during the previous game session on behalf of the first player. For example, the first actions may have been implemented during the previous game session responsive to action requests for the first actions by the first player. The first actions of the first player type may be actions that are available to players of the first player type (e.g., viewpoint-related actions of such players may be limited to their respective first-person and/or third-person viewpoints). Operation 602 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 604, game play information associated with the previous game session may be generated. For example, the game play information may be generated during the previous game session based on actions implemented in the previous game session (e.g., the first actions of the first player type). The game play information may be stored at a game console, at a web service, etc., to enable future reproduction of the previous game session for augmentation purposes. Operation 604 may be performed by a game play storage module that is the same as or similar to game play storage module 122, in accordance with one or more implementations.


In an operation 606, one or more views of the previous game session may be generated for presentation to the user during the reproduction of the previous game session (e.g., using the game play information). For example, the views of the previous game session may be based on the respective viewpoints of the players in the previous game session along with the respective first actions of the players that were implemented in the previous game session (e.g., changing of the viewpoints, engaging in combat, moving around in the game world, etc.). The views of the previous game session may be generated during the reproduction of the previous game session to enable the user to select and switch to any of the views of the previous game session that the user wishes to include in a live media stream (e.g., real-time streaming with respect to the augmented game session), while the user adds his/her own audio and/or visual commentary to the selected views during the reproduction of the previous game session. The augmentation of the audio/visual commentary and the selected views may, for instance, result in generating of one or more views of the augmented game session. Operation 606 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 608, a determination of whether second actions of a second player type is obtained from the user during the reproduction of the previous game session. The second actions of the second player type may be actions that are available to players of the second player type (e.g., viewpoint-related actions of such players may be more expansive than viewpoint-related actions of players of the first player type). Operation 608 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations. Responsive to a determination that second actions is obtained from the user during the reproduction of the previous game session, method 600 may proceed to an operation 610.


In operation 610, the second actions may be implemented during the reproduction of the previous game session. For example, the user may request actions to switch among viewpoints of the various players of the previous game session (e.g., selecting generated views of the previous game session). As such, the user may be presented with the viewpoints of the various players indicated by the requested actions. Operation 610 may be performed by a game module that is the same as or similar to game module 110, in accordance with one or more implementations.


In an operation 612, the augmentation content may be added to the reproduced game session based on the second actions to create the augmented game session. The augmentation content may include new views of the previous game session (e.g., views generated based on viewpoints not available to players in the previous game session during the reproduction based on their predefined actions), audio/visual commentary, screen objects, and/or other content. Operation 612 may be performed by an augmentation module that is the same as or similar to augmentation module 120, in accordance with one or more implementations.


In an operation 614, streaming of one or more views of the augmented game session may be effectuated. As indicated, in some scenarios, if the reproduction of the game session is performed on a game console, the streaming of the one or more views of the augmented games session may be from the game console to a web server (e.g., for distribution to one or more viewers from the web server). In some implementations, the streaming may include real-time streaming of the one or more views of the augmented game session to one or more viewers as the augmented content is added to the reproduced game session. Operation 614 may be performed by a streaming module that is the same as or similar to streaming module 118, in accordance with one or more implementations.


Although the present technology has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred implementations, it is to be understood that such detail is solely for that purpose and that the technology is not limited to the disclosed implementations, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present technology contemplates that, to the extent possible, one or more features of any implementation can be combined with one or more features of any other implementation.

Claims
  • 1. A system for streaming a media stream from a game console to a plurality of computing devices, the system comprising: non-transient electronic storage media configured to be included within the game console and computer program modules stored in the non-transient electronic storage media, wherein, when executed by one or more processors of the game console, the computer program modules: execute an instance of a game world, wherein at least one of the computer program modules is configured to generate, based on the game world, a primary view of the game world on a display locally coupled to the game console;obtain action requests specifying in-game actions, wherein at least one of the computer program modules is configured to implement the action requests;encode, using at least one of the computer program modules, portions of the primary view to produce a secondary view, wherein the secondary view is of lower-quality relative to the primary view;generate, at the game console and using at least one of the computer program modules, a media stream comprising the secondary view of the game world by prefetching the portions of the primary view prior to encoding said portions; andstream, using at least one of the computer program modules, the media stream to the plurality of computing devices such that individuals using the plurality of computing devices can access and view the secondary view.
  • 2. The system of claim 1, wherein, when executed by one or more processors of the game console, the computer program modules performs said prefetching to a cache of the non-transient electronic storage media.
  • 3. The system of claim 1, wherein at least one of the computer program modules comprises code having a first part and a second part, wherein the first part is configured to be executed by a first processor of the game console, wherein the second part is configured to be executed by a second processor of the game console, and wherein the first processor is different from the second processor.
  • 4. The system of claim 3, wherein the first processor is a different type of processor than the second processor.
  • 5. The system of claim 1, wherein at least one of the computer program modules comprises code configured to load, in parallel, one or more of a first portion of instructions for encoding the primary view to a first register and one or more of a second portion of the instructions for encoding the primary view to a second register.
  • 6. The system of claim 1, wherein the portions of the primary view are represented by a first set of numbers of a first number type, and at least one of the computer program modules comprises a number-type conversion module configured to convert the first set of numbers into a second set of numbers of a second number type, and wherein the encoding to produce the secondary view is based on the conversion.
  • 7. A method for streaming a media stream from a game console to a plurality of computing devices using computer program modules configured to be executed in the game console, the method comprising: executing an instance of a game world, wherein at least one of the computer program modules is configured to generate, based on the game world, a primary view of the game world on a display locally coupled to the game console;obtaining action requests specifying in-game actions, wherein at least one of the computer program modules is configured to implement the action requests;encoding, using at least one of the computer program modules, portions of the primary view to produce a secondary view, wherein the secondary view is of lower-quality relative to the primary view;generating, at the game console and using at least one of the computer program modules, a media stream comprising the secondary view of the game world by prefetching the portions of the primary view prior to encoding said portions; andstreaming, using at least one of the computer program modules, the media stream to the plurality of computing devices such that individuals using the plurality of computing devices can access and view the secondary view.
  • 8. The method of claim 7, wherein, when executed by one or more processors of the game console, the computer program module performs said prefetching to a cache in the game console.
  • 9. The method of claim 7, wherein at least one of the computer program modules comprises code having a first part and a second part, wherein the first part is configured to be executed by a first processor of the game console, wherein the second part is configured to be executed by a second processor of the game console, and wherein the first processor is different from the second processor.
  • 10. The method of claim 9, wherein the first processor is a different type of processor than the second processor.
  • 11. The method of claim 7, wherein at least one of the computer program modules comprises code configured to load, in parallel, one or more of a first portion of instructions for encoding the primary view to a first register and one or more of a second portion of the instructions for encoding the primary view to a second register.
  • 12. The method of claim 7, wherein the portions of the primary view are represented by a first set of numbers of a first number type, and at least one of the computer program modules comprises a number-type conversion module configured to convert the first set of numbers into a second set of numbers of a second number type, and wherein the encoding to produce the secondary view is based on the conversion.
CROSS REFERENCE

The present application is a continuation application of U.S. patent application Ser. No. 16/158,108, entitled “System and Method for Creating and Streaming Augmented Game Sessions” and filed on Oct. 11, 2018, which is a divisional application of U.S. patent application Ser. No. 13/731,661, of the same title, filed on Dec. 31, 2012, and issued as U.S. Pat. No. 10,137,376 on Nov. 27, 2018, both of which are herein incorporated by reference in their entirety.

US Referenced Citations (401)
Number Name Date Kind
5031089 Liu Jul 1991 A
5442569 Osano Aug 1995 A
5530796 Wang Jun 1996 A
5535276 Ganesan Jul 1996 A
5539883 Allon Jul 1996 A
5561736 Moore Oct 1996 A
5563946 Cooper Oct 1996 A
5630129 Wheat May 1997 A
5685775 Bakoglu Nov 1997 A
5706507 Schloss Jan 1998 A
5708764 Borrel Jan 1998 A
5736985 Lection Apr 1998 A
5736990 Barrus Apr 1998 A
5737416 Cooper Apr 1998 A
5745678 Herzberg Apr 1998 A
5762552 Vuong Jun 1998 A
5768511 Galvin Jun 1998 A
5774668 Choquier Jun 1998 A
5796393 MacNaughton Aug 1998 A
5825877 Dan Oct 1998 A
5835692 Cragun Nov 1998 A
5860137 Raz Jan 1999 A
5875296 Shi Feb 1999 A
5878233 Schloss Mar 1999 A
5883628 Mullaly Mar 1999 A
5884024 Lim Mar 1999 A
5900879 Berry May 1999 A
5903266 Berstis May 1999 A
5903271 Bardon May 1999 A
5908469 Botz Jun 1999 A
5911045 Leyba Jun 1999 A
5920325 Morgan Jul 1999 A
5923324 Berry Jul 1999 A
5938722 Johnson Aug 1999 A
5944824 He Aug 1999 A
5963915 Kirsch Oct 1999 A
5969724 Berry Oct 1999 A
5977979 Clough Nov 1999 A
5990888 Blades Nov 1999 A
6008848 Tiwari Dec 1999 A
6009455 Doyle Dec 1999 A
6014145 Bardon Jan 2000 A
6021268 Johnson Feb 2000 A
6025839 Schell Feb 2000 A
6049819 Buckle Apr 2000 A
6058266 Megiddo May 2000 A
6059842 Dumarot May 2000 A
6069632 Mullaly May 2000 A
6081270 Berry Jun 2000 A
6081271 Bardon Jun 2000 A
6088727 Hosokawa Jul 2000 A
6091410 Lection Jul 2000 A
6094196 Berry Jul 2000 A
6098056 Rusnak Aug 2000 A
6101538 Brown Aug 2000 A
6104406 Berry Aug 2000 A
6111581 Berry Aug 2000 A
6134588 Guenthner Oct 2000 A
6141699 Luzzi Oct 2000 A
6144381 Lection Nov 2000 A
6148328 Cuomo Nov 2000 A
6179713 James Jan 2001 B1
6185614 Cuomo Feb 2001 B1
6201881 Masuda Mar 2001 B1
6222551 Schneider Apr 2001 B1
6271842 Bardon Aug 2001 B1
6271843 Lection Aug 2001 B1
6282547 Hirsch Aug 2001 B1
6308208 Jung Oct 2001 B1
6311206 Malkin Oct 2001 B1
6314465 Paul Nov 2001 B1
6330281 Mann Dec 2001 B1
6334141 Varma Dec 2001 B1
6336134 Varma Jan 2002 B1
6337700 Kinoe Jan 2002 B1
6345287 Fong Feb 2002 B1
6349091 Li Feb 2002 B1
6351775 Yu Feb 2002 B1
6353449 Gregg Mar 2002 B1
6356297 Cheng Mar 2002 B1
6370560 Robertazzi Apr 2002 B1
6393467 Potvin May 2002 B1
6411312 Sheppard Jun 2002 B1
6418462 Xu Jul 2002 B1
6426757 Smith Jul 2002 B1
6445389 Bossen Sep 2002 B1
6452593 Challener Sep 2002 B1
6462760 Cox, Jr. Oct 2002 B1
6466550 Foster Oct 2002 B1
6469712 Hilpert, Jr. Oct 2002 B1
6473085 Brock Oct 2002 B1
6473597 Johnson Oct 2002 B1
6499053 Marquette Dec 2002 B1
6505208 Kanevsky Jan 2003 B1
6509925 Dermler Jan 2003 B1
6525731 Suits Feb 2003 B1
6539415 Mercs Mar 2003 B1
6549933 Barrett Apr 2003 B1
6567109 Todd May 2003 B1
6567813 Zhu May 2003 B1
6574477 Rathunde Jun 2003 B1
6580981 Masood Jun 2003 B1
6601084 Bhaskaran Jul 2003 B1
6618751 Challenger Sep 2003 B1
RE38375 Herzberg Dec 2003 E
6657617 Paolini Dec 2003 B2
6657642 Bardon Dec 2003 B1
6684255 Martin Jan 2004 B1
6699127 Lobb Mar 2004 B1
6717600 Dutta Apr 2004 B2
6734884 Berry May 2004 B1
6765596 Lection Jul 2004 B2
6781607 Benham Aug 2004 B1
6801930 Dionne Oct 2004 B1
6819669 Rooney Nov 2004 B2
6832239 Kraft Dec 2004 B1
6836480 Basso Dec 2004 B2
6845389 Sen Jan 2005 B1
6886026 Hanson Apr 2005 B1
6941236 Huelsbergen Sep 2005 B2
6948168 Kuprionas Sep 2005 B1
RE38865 Dumarot Nov 2005 E
6970929 Bae Nov 2005 B2
6993596 Hinton Jan 2006 B2
7006616 Christofferson Feb 2006 B1
7028296 Irfan Apr 2006 B2
7062533 Brown Jun 2006 B2
7089266 Stolte Aug 2006 B2
7124071 Rich Oct 2006 B2
7139792 Mishra Nov 2006 B1
7143409 Herrero Nov 2006 B2
7159217 Pulsipher Jan 2007 B2
7185067 Viswanath Feb 2007 B1
7209137 Brokenshire Apr 2007 B2
7230616 Taubin Jun 2007 B2
7249123 Elder Jul 2007 B2
7263511 Bodin Aug 2007 B2
7287053 Bodin Oct 2007 B2
7305438 Christensen Dec 2007 B2
7308476 Mannaru Dec 2007 B2
7353295 Crow Apr 2008 B1
7404149 Fox Jul 2008 B2
7426538 Bodin Sep 2008 B2
7427980 Partridge Sep 2008 B1
7428588 Berstis Sep 2008 B2
7429987 Leah Sep 2008 B2
7436407 Doi Oct 2008 B2
7439975 Hsu Oct 2008 B2
7443393 Shen Oct 2008 B2
7447996 Cox Nov 2008 B1
7467180 Kaufman Dec 2008 B2
7467181 McGowan Dec 2008 B2
7475354 Guido Jan 2009 B2
7478127 Creamer Jan 2009 B2
7484012 Hinton Jan 2009 B2
7503007 Goodman Mar 2009 B2
7506264 Polan Mar 2009 B2
7515136 Kanevsky Apr 2009 B1
7525964 Astley Apr 2009 B2
7548948 Klemets Jun 2009 B2
7552177 Kessen Jun 2009 B2
7565650 Bhogal Jul 2009 B2
7571224 Childress Aug 2009 B2
7571389 Broussard Aug 2009 B2
7580888 Ur Aug 2009 B2
7590984 Kaufman Sep 2009 B2
7596596 Chen Sep 2009 B2
7640587 Fox Dec 2009 B2
7667701 Leah Feb 2010 B2
7698656 Srivastava Apr 2010 B2
7702784 Berstis Apr 2010 B2
7714867 Doi May 2010 B2
7719532 Schardt May 2010 B2
7719535 Tadokoro May 2010 B2
7734691 Creamer Jun 2010 B2
7737969 Shen Jun 2010 B2
7743095 Goldberg Jun 2010 B2
7747679 Galvin Jun 2010 B2
7765478 Reed Jul 2010 B2
7768514 Pagan Aug 2010 B2
7773087 Fowler Aug 2010 B2
7774407 Daly Aug 2010 B2
7782318 Shearer Aug 2010 B2
7792263 D Amora Sep 2010 B2
7792801 Hamilton, II Sep 2010 B2
7796128 Radzikowski Sep 2010 B2
7808500 Shearer Oct 2010 B2
7814152 McGowan Oct 2010 B2
7827318 Hinton Nov 2010 B2
7843471 Doan Nov 2010 B2
7844663 Boutboul Nov 2010 B2
7847799 Taubin Dec 2010 B2
7856469 Chen Dec 2010 B2
7873485 Castelli Jan 2011 B2
7882222 Dolbier Feb 2011 B2
7882243 Ivory Feb 2011 B2
7884819 Kuesel Feb 2011 B2
7886045 Bates Feb 2011 B2
7890623 Bates Feb 2011 B2
7893936 Shearer Feb 2011 B2
7904829 Fox Mar 2011 B2
7921128 Hamilton, II Apr 2011 B2
7940265 Brown May 2011 B2
7945620 Bou-Ghannam May 2011 B2
7945802 Hamilton, II May 2011 B2
7970837 Lyle Jun 2011 B2
7970840 Cannon Jun 2011 B2
7985138 Acharya Jul 2011 B2
7990387 Hamilton, II Aug 2011 B2
7996164 Hamilton, II Aug 2011 B2
8001161 George Aug 2011 B2
8004518 Fowler Aug 2011 B2
8005025 Bodin Aug 2011 B2
8006182 Bates Aug 2011 B2
8013861 Hamilton, II Sep 2011 B2
8018453 Fowler Sep 2011 B2
8018462 Bhogal Sep 2011 B2
8019797 Hamilton, II Sep 2011 B2
8019858 Bauchot Sep 2011 B2
8022948 Garbow Sep 2011 B2
8022950 Brown Sep 2011 B2
8026913 Garbow Sep 2011 B2
8028021 Reisinger Sep 2011 B2
8028022 Brownholtz Sep 2011 B2
8037416 Bates Oct 2011 B2
8041614 Bhogal Oct 2011 B2
8046700 Bates Oct 2011 B2
8051462 Hamilton, II Nov 2011 B2
8055656 Cradick Nov 2011 B2
8056121 Hamilton, II Nov 2011 B2
8057307 Berstis Nov 2011 B2
8062130 Smith Nov 2011 B2
8063905 Brown Nov 2011 B2
8070601 Acharya Dec 2011 B2
8082245 Bates Dec 2011 B2
8085267 Brown Dec 2011 B2
8089481 Shearer Jan 2012 B2
8092288 Theis Jan 2012 B2
8095881 Reisinger Jan 2012 B2
8099338 Betzler Jan 2012 B2
8099668 Garbow Jan 2012 B2
8102334 Brown Jan 2012 B2
8103640 Lo Jan 2012 B2
8103959 Cannon Jan 2012 B2
8105165 Karstens Jan 2012 B2
8108774 Finn Jan 2012 B2
8113959 De Judicibus Feb 2012 B2
8117551 Cheng Feb 2012 B2
8125485 Brown Feb 2012 B2
8127235 Haggar Feb 2012 B2
8127236 Hamilton, II Feb 2012 B2
8128487 Hamilton, II Mar 2012 B2
8131740 Cradick Mar 2012 B2
8132235 Bussani Mar 2012 B2
8134560 Bates Mar 2012 B2
8139060 Brown Mar 2012 B2
8139780 Shearer Mar 2012 B2
8140340 Bhogal Mar 2012 B2
8140620 Creamer Mar 2012 B2
8140978 Betzler Mar 2012 B2
8140982 Hamilton, II Mar 2012 B2
8145676 Bhogal Mar 2012 B2
8145725 Dawson Mar 2012 B2
8149241 Do Apr 2012 B2
8151191 Nicol, II Apr 2012 B2
8156184 Kurata Apr 2012 B2
8165350 Fuhrmann Apr 2012 B2
8171407 Huang May 2012 B2
8171408 Dawson May 2012 B2
8171559 Hamilton, II May 2012 B2
8174541 Greene May 2012 B2
8176421 Dawson May 2012 B2
8176422 Bergman May 2012 B2
8184092 Cox May 2012 B2
8184116 Finn May 2012 B2
8185450 Mcvey May 2012 B2
8185829 Cannon May 2012 B2
8187067 Hamilton, II May 2012 B2
8199145 Hamilton, II Jun 2012 B2
8203561 Carter Jun 2012 B2
8214335 Hamilton, II Jul 2012 B2
8214433 Dawson Jul 2012 B2
8214750 Hamilton, II Jul 2012 B2
8214751 Dawson Jul 2012 B2
8217953 Comparan Jul 2012 B2
8219616 Dawson Jul 2012 B2
8230045 Kawachiya Jul 2012 B2
8230338 Dugan Jul 2012 B2
8233005 Finn Jul 2012 B2
8234234 Shearer Jul 2012 B2
8234579 Do Jul 2012 B2
8239775 Beverland Aug 2012 B2
8241131 Bhogal Aug 2012 B2
8245241 Hamilton, II Aug 2012 B2
8245283 Dawson Aug 2012 B2
8265253 D Amora Sep 2012 B2
8310497 Comparan Nov 2012 B2
8334871 Hamilton, II Dec 2012 B2
8360886 Karstens Jan 2013 B2
8364804 Childress Jan 2013 B2
8425326 Chudley Apr 2013 B2
8442946 Hamilton, II May 2013 B2
8506372 Chudley Aug 2013 B2
8514249 Hamilton, II Aug 2013 B2
8550920 Allen Oct 2013 B1
8554841 Kurata Oct 2013 B2
8607142 Bergman Dec 2013 B2
8607356 Hamilton, II Dec 2013 B2
8624903 Hamilton, II Jan 2014 B2
8626836 Dawson Jan 2014 B2
8692835 Hamilton, II Apr 2014 B2
8721412 Chudley May 2014 B2
8827816 Bhogal Sep 2014 B2
8838640 Bates Sep 2014 B2
8849917 Dawson Sep 2014 B2
8893012 Zhang Nov 2014 B1
8911296 Chudley Dec 2014 B2
8992316 Smith Mar 2015 B2
9005030 Laakkonen Apr 2015 B2
9005036 Laakkonen Apr 2015 B2
9083654 Dawson Jul 2015 B2
9152914 Haggar Oct 2015 B2
9199165 Zahn Dec 2015 B2
9205328 Bansi Dec 2015 B2
9286731 Hamilton, II Mar 2016 B2
9299080 Dawson Mar 2016 B2
9364746 Chudley Jun 2016 B2
9403090 Harris Aug 2016 B2
9474973 Perry Oct 2016 B2
9525746 Bates Dec 2016 B2
9583109 Kurata Feb 2017 B2
9621622 Ueda Apr 2017 B2
9630097 Paradise Apr 2017 B2
9641592 Thompson May 2017 B2
9682324 Bansi Jun 2017 B2
9764244 Bansi Sep 2017 B2
9789406 Marr Oct 2017 B2
9808722 Kawachiya Nov 2017 B2
20020007317 Callaghan Jan 2002 A1
20020010776 Lerner Jan 2002 A1
20020023159 Vange Feb 2002 A1
20020056006 Vange May 2002 A1
20020065870 Baehr-Jones May 2002 A1
20020078192 Kopsell Jun 2002 A1
20020107918 Shaffer Aug 2002 A1
20020124137 Ulrich Sep 2002 A1
20030008712 Poulin Jan 2003 A1
20030037131 Verma Feb 2003 A1
20030055892 Huitema Mar 2003 A1
20030056002 Trethewey Mar 2003 A1
20030084172 Dejong May 2003 A1
20030084302 De May 2003 A1
20030110399 Rail Jun 2003 A1
20030135621 Romagnoli Jul 2003 A1
20030149781 Yared Aug 2003 A1
20030163733 Barriga-Caceres Aug 2003 A1
20030177187 Lemine Sep 2003 A1
20040014514 Yacenda Jan 2004 A1
20040073773 Demjanenko Apr 2004 A1
20040103079 Tokusho May 2004 A1
20040210627 Kroening Oct 2004 A1
20040228291 Huslak Nov 2004 A1
20040244006 Kaufman Dec 2004 A1
20050015571 Kaufman Jan 2005 A1
20050246711 Berstis Nov 2005 A1
20060059223 Klemets Mar 2006 A1
20070060359 Smith Mar 2007 A1
20070294089 Garbow Dec 2007 A1
20080046956 Kulas Feb 2008 A1
20080086459 Ryan Apr 2008 A1
20080139301 Holthe Jun 2008 A1
20080270605 Berstis Oct 2008 A1
20080301405 Kaufman Dec 2008 A1
20090082095 Walker Mar 2009 A1
20090113448 Smith Apr 2009 A1
20090131177 Pearce May 2009 A1
20090147010 Russell Jun 2009 A1
20090258708 Figueroa Oct 2009 A1
20090298585 Cannon Dec 2009 A1
20100153653 El-Mahdy Jun 2010 A1
20100167816 Perlman Jul 2010 A1
20110151971 Altshuler Jun 2011 A1
20120100910 Eichorn Apr 2012 A1
20120289346 Van Luchene Nov 2012 A1
20140031121 Kern Jan 2014 A1
20140194211 Chimes Jul 2014 A1
20140221084 Morrison, III Aug 2014 A1
20140235336 Morimoto Aug 2014 A1
20140344725 Bates Nov 2014 A1
20140370979 Zahn Dec 2014 A1
20150141140 Lampe May 2015 A1
20150224395 Trombetta Aug 2015 A1
20150224399 Melo Aug 2015 A1
20150317945 Andress Nov 2015 A1
20150375102 George Dec 2015 A1
20160140637 Szabo May 2016 A1
20160171835 Washington Jun 2016 A1
20160180647 Webb Jun 2016 A1
20160191671 Dawson Jun 2016 A1
20160214012 Nishikawa Jul 2016 A1
20170014718 Ceraldi Jan 2017 A1
Foreign Referenced Citations (89)
Number Date Country
768367 Mar 2004 AU
2005215048 Oct 2011 AU
2143874 Jun 2000 CA
2292678 Jul 2005 CA
2552135 Jul 2013 CA
1334650 Feb 2002 CN
1202652 Oct 2002 CN
1141641 Mar 2004 CN
1494679 May 2004 CN
1219384 Sep 2005 CN
1307544 Mar 2007 CN
100407675 Jul 2008 CN
100423016 Oct 2008 CN
100557637 Nov 2009 CN
101001678 May 2010 CN
101436242 Dec 2010 CN
101801482 Dec 2014 CN
668583 Aug 1995 EP
0940960 Sep 1999 EP
0998091 May 2000 EP
1020804 Jul 2000 EP
0627728 Sep 2000 EP
1089516 Apr 2001 EP
0717337 Aug 2001 EP
1207694 May 2002 EP
0679977 Oct 2002 EP
0679978 Mar 2003 EP
0890924 Sep 2003 EP
1377902 Aug 2004 EP
0813132 Jan 2005 EP
1380133 Mar 2005 EP
1021021 Sep 2005 EP
0930584 Oct 2005 EP
0883087 Aug 2007 EP
1176828 Oct 2007 EP
2076888 Jul 2015 EP
2339938 Oct 2002 GB
2352154 Jul 2003 GB
H1198134 Apr 1999 JP
H11191097 Apr 1999 JP
11191097 Jul 1999 JP
3033956 Apr 2000 JP
3124916 Jan 2001 JP
3177221 Jun 2001 JP
2001204973 Jul 2001 JP
3199231 Aug 2001 JP
3210558 Sep 2001 JP
3275935 Feb 2002 JP
3361745 Jan 2003 JP
3368188 Jan 2003 JP
3470955 Sep 2003 JP
3503774 Dec 2003 JP
3575598 Jul 2004 JP
3579823 Jul 2004 JP
3579154 Oct 2004 JP
3701773 Oct 2005 JP
3777161 Mar 2006 JP
3914430 Feb 2007 JP
3942090 Apr 2007 JP
3962361 May 2007 JP
4009235 Sep 2007 JP
4225376 Dec 2008 JP
4653075 Dec 2010 JP
5063698 Aug 2012 JP
5159375 Mar 2013 JP
5352200 Nov 2013 JP
5734566 Jun 2015 JP
20020038229 May 2002 KR
20030039019 May 2003 KR
117864 Aug 2004 MY
55396 Dec 1998 SG
424213 Mar 2001 TW
527825 Apr 2003 TW
9642041 Dec 1996 WO
9900960 Jan 1999 WO
0203645 Jan 2002 WO
2002073457 Sep 2002 WO
20020087156 Oct 2002 WO
03049459 Jun 2003 WO
03058518 Jul 2003 WO
2004086212 Oct 2004 WO
2005079538 Sep 2005 WO
2007101785 Sep 2007 WO
2008037599 Apr 2008 WO
2008074627 Jun 2008 WO
2008095767 Aug 2008 WO
2009037257 Mar 2009 WO
2009104564 Aug 2009 WO
2010096738 Aug 2010 WO
Non-Patent Literature Citations (18)
Entry
Ma et al., “A Scalable Parallel Cell-Projection Volume Rendering Algorithm for Three-Dimensional Unstructured Data”, IEEE 1997, pp. 1-10.
Hassen et al., “ATask-and Data-Parallel Programming Language Based on Shared Objects,” ACM Transactions on Programming Languages and Systems, vol. 20, No. 6, Nov. 1998, pp. 1131-1170.
Kormann et al., “Risks of the Passport Single Signon Protocol” &It; 9th Intl. WWW Conf., May 15, 2000.
Syverson, “Limitations on design principles for public key protocols”, Proc. of 1996 IEEE Symposium on Security and Privacy, pp. 62-72, May 6, 1996.
Abadi et al., “Prudent Engineering Practice for Cryptogrphic Protocols”, Proc. of 1994 IEEE Computer Society Symposium on Research in Security and Privacy, pp. 122-136, May 16, 1994.
EverQuest Wiki, “EverQuest Classes”, Aug. 19, 2011, <http://everquest.wikia.com/wiki/Classes?oldid=3773>.
Planet Unreal, “Unreal Tournament Game Guide”, game released Nov. 1999 with earliest article cmment on Sep. 6, 2007, IGN Entertainment, <http://planetunreal.gamespy.com/View.php?view=UTGameInfo.Detail&id=28&game=6><http://planetunreal.gamespy.com/View.php?view=UTGameInfo.Detail&id=1&game=6>.
IBM developerWorks, OptimalGrid-autonomic computing on the Grid, James H. Kaufman; Tobin J. Lehman; Glenn Deen; and John Thomas, Jun. 2003.
IBM, Transcoding: Extending e-business to new environments, Britton et al., Sep. 22, 2000.
Duong et al.; “A dynamic load sharing algorithm for massivly multiplayer online games” published Sep. 28, 2003-Oct. 1, 2003.http://ieeexplore.ieee.org/iel5/8945/28322/01266179.pdf?tp=&arnumber-=1266179&isnumber=28322http://ieeexplore.ieee.org/xpl/absprintf.jsp?arnumb- er=1266179.
“A multi-server architecture for distributed virtual walkthrough” http://delivery.acm.org/10.1145/590000/585768/p163-ng.pdf?key1 =585768&key-2=0554824911&coll=GUIDE&dl=GUIDE&CFID=41712537&CFTOKEN=50783297. Nov. 11, 2002.
Mauve, M., Fischer, S., and Widmer, J. 2002. A generic proxy system for networked computer games. In Proceedings of the 1st Workshop on Network and System Support for Games (Braunschweig, Germany, Apr. 16-17, 2002). NetGames '02. ACM, New York, NY, 25-28. DOI= http://doi.acm.org/10.1145/566500.566504.
Lee et al., “A Self-Adjusting Data Distribution Mechanism for Multidimensional Load Balancing in Multiprocessor-Based Database Systems,” Information Systems vol. 19, No. 7, pp. 549-567, 1994.
Feng et al., “A Parallel Hierarchical Radiosity Algorithm for Complex Scenes,” Proceedings IEEE Symposium on Parallel Rendering (PRS) '97), IEEE Computer Society Technical Committee on Computer Graphics in cooperation with ACM SIGGRAPH pp. 71-79, 1997.
Andert, “A Simulation of Dynamic Task Allocation in a Distributed Computer System,” Proceedings of the 1987 Winter Simulation Conference, 1987, pp. 1-9.
Derek Stanley, “What bitrate should I use when encoding my video? How do I optimize my video for the web?”, Feb. 12, 2012, ezs3. com, <https://web.archive.Org/web/20120212171320/https://www.ezs3.com/public/What_bitrate_should_I_use_when_encoding_my_video_How_do_I_optimize_my_video_for_the_web.cfm> (Year: 2012).
International Search Report as Published as WO2005/079538 in corresponding international application No. PCT/US2005/005550, dated Jul. 5, 2006.
Surelya, “CS:Go Winter Update Adds Killer Replay”, MMOs.com, published Dec. 13, 2015 retrieved from Internet URL <https://mmos.com/news/csgo-winter-update-adds-killer-replay>. (Year: 2015).
Related Publications (1)
Number Date Country
20210187400 A1 Jun 2021 US
Divisions (1)
Number Date Country
Parent 13731661 Dec 2012 US
Child 16158108 US
Continuations (1)
Number Date Country
Parent 16158108 Oct 2018 US
Child 17135394 US