The present invention relates generally to an interactive video-game system, and more specifically to multi-player interactive video-game system.
Video games are a popular form of entertainment. Multi-player games, where two or more individuals play simultaneously in a common simulated environment, are becoming increasingly common, especially as more users are able to interact with one another using networks such as the World Wide Web (WWW), which is also referred to as the Internet. Implementing video games in a networked environment poses several challenges.
In particular, video games, especially those offered high-quality graphics, may produce data streams having a maximum data rate that is a significant fraction of an available data rate communications capacity in a network. The data rate may also vary significantly as a function of time depending on how often a game state for a respective game is modified or updated. This combination of high data rates and time-varying data rates may make cost effective and efficient resource allocation in a networked environment, such as a satellite system, a cable television system or the Internet, challenging. Video-game systems in such network environments may need additional margin, in the form of additional bandwidth overhead as well as hardware and software redundancy, to ensure that performance is not degraded. These systems challenges are compound for multi-player games. There is a need, therefore, for an improved system for implementing video games in networked environments.
A video-game system includes a network, a plurality of user devices and a server each coupled to the network. The plurality of user devices are each configured to receive information corresponding to at least one user action for a respective user, to transmit the information corresponding to at least the one user action using the network, to receive video-game content using the network and to display the video-game content. The server is configured to receive information corresponding to user actions from one or more of the plurality of user devices and to transmit the video-game content. The server includes a memory storing a video game and a controller configured to execute the video game such that sets of users play the video game substantially simultaneously.
A respective set of users may include one or more users. Each set of users has a respective game state for the video game. The controller may be configured to execute one or more instances of the video game. Each respective instance of the video game executed by the controller maintains a plurality of the respective game states.
Video-game content may be transmitted from the server to a respective user device in the plurality of user devices using time domain multiplexing.
The memory may further store a plurality of pre-encoded blocks. The pre-encoded blocks may be compressed and may correspond to subsections of a frame of video for the video game. The controller may dynamically generate the video-game content using one or more of the pre-encoded blocks in accordance with a change in the respective game state corresponding to at least the one user action of a respective user in the respective set of users and/or corresponding to an elapsed time since a transmission of previous video-game content. Current video-game content transmitted from the server to the respective user device may include difference information relative to the previous video-game content transmitted from the server to the respective user device.
In some embodiments, a video-game system includes the network, a user device and the server each coupled to the network. The user device is configured to receive information corresponding to at least one user action, to transmit the information corresponding to at least the one user action using the network, to receive video-game content using the network and to display the video-game content. The server is configured to receive the information corresponding to at least the one user action and to transmit the video-game content. The server includes the memory storing the video game and the plurality of pre-encoded blocks. The pre-encoded blocks are compressed and correspond to subsections of the frame of video for the video game. The controller is configured to execute the video game and to dynamically generate the video-game content using one or more of the pre-encoded blocks in accordance with the change in a game state corresponding to at least the one user action and/or the elapsed time since the transmission of the previous video-game content. Current video-game content transmitted from the server to the user device includes difference information relative to the previous video-game content transmitted from the server to the user device.
The pre-encoded blocks may include a macro block. The pre-encoded blocks may be MPEG compatible. The pre-encoded blocks may be encoded using a discrete cosine transformation (DCT). Dynamic generation of the video-game content may include interrelating DCT coefficients corresponding to two or more pre-encoded blocks in real time.
The information corresponding to at least the one user action may be communicated in the network using an out-of-band communications channel.
The server may be in a headend unit in a cable television system. The user device may be a set-top box.
The video-game content may be displayed in real time as updates corresponding to a subset of a full frame of video are received by the user device.
The video-game system may be configured to assign a network address to the user device when order information corresponding to the video game is received.
A data rate corresponding to the video game content transmitted from the server to the user device using the network may be bounded between a pre-determined lower limit and a pre-determined upper limit. The video-game content dynamically generated by the controller may include null blocks to ensure that the data rate is greater than or equal to the pre-determined lower limit.
The video-game system may include one or more additional user devices. Each user device receives and displays video-game content corresponding to a respective user. Two or more users may simultaneously and independently play a single instance of the video game and share at least a subset of the pre-coded blocks. Each of the two or more users may have a corresponding respective game state for the video game.
For a better understanding of the invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings, in which:
Like reference numerals refer to corresponding parts throughout the drawings.
Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
An improved system for offering interactive video games using networks, such as those in satellite systems, cable television systems (CATV), the Internet, wide area networks, local area networks and/or telephone systems, is described. As described below, the system utilizes efficient digitizing of video-game content corresponding to frames and/or fields of video-game images to reduce a communication bandwidth and thereby increase a number of players or users that may be supported. The term video game includes video games, other forms of computer-implemented recreational application programs, and non-recreational application programs, such as news, weather and/or sports. Players or users refer to a human that participates in the video game.
In particular, the system determines a change in a game state for a video game based on a received respective user action for a respective user or a respective set of users. The system dynamically generates the corresponding video-game content in accordance with the change in the game state using pre-encoded blocks. The system transmits a current video-game content to a user device for display. The current video-game content may correspond to difference information relative to previous video-game content transmitted to the user device. The system allows multiple sets of users to simultaneously and independently play a single executable copy the video game. A respective set of users may include one or more users and each set of users has a respective game state for the video game. In this way, the system improves an efficiency of resource utilization and an overall cost effectiveness.
To describe the improved video-game system and how it is integrated into systems such as cable television systems, an overview of cable television systems architecture is now discussed.
A respective hub, such as hub 216-1, is coupled to one or more service groups or nodes, such as node 220, via the optical communication link 212. The node 220 provides service to 200 to 2000 subscribers in a neighborhood. Each node, such as the node 220, is coupled to one or more subscribers, such as subscriber 226, via a coaxial cable 222 and one or more amplifiers, such as amplifier 224. The cable television system 200 may also include one or more firewalls 228 to prevent an unauthorized program or content, such as a virus, from entering the system and infecting one or more computers in the hubs 216 and/or the headend 214.
Cable television systems, such as the cable television system 200, support communications of analog and digital signals using time division multiplexing and frequency division multiplexing. The latter is shown in
In an exemplary embodiment, if a 256-level quadrature amplitude modulation (QAM) is used, each narrowcast sub-channel, such as narrowcast sub-channel 316, having a bandwidth of approximately 6 MHz, corresponds to approximately 38 Mbps of digital data or some 10 digital channels each having a data rate of 3.75 Mbps. For a video game that utilizes between 1 and 4 Mbps, the narrow cast sub-channel 316 would correspond to 10 to 30 video game data streams.
The broadcast sub-channels 314 each correspond to one analog television channel. In an exemplary embodiment, each of the broadcast sub-channels has a bandwidth of approximately 6 MHz and analog television signals are transmitted in an NTSC format. Other embodiments, however, may utilize different formats such as PAL or SECAM. The OOB sub-channels 312 each may correspond to a bit or data rate of approximately 1 Mbps.
Attention is now given to the improved video-game system.
The cable television system 400 may also include an application server 414 and a plurality of games servers 416. The application server 414 and a plurality of games servers 416 may be located in a headend, such as the headend 214 (
The video-game content is coupled to the switch 426-2, converted to the digital format in the QAM 432-1. These digital signals are coupled to the radio frequency (RF) combiner 434 and transmitted to STB 116-1 via the network 116. The Applications server 414 may also access, via Internet 410, persistent player or user data in a database stored in multi-player server 412. The applications server 4141 and the plurality of game servers 416 are further described below with reference to
The STB 116-1 may include a client application, such as games 436, that receives information corresponding to one or more user actions and transmits the information to one or more of the game servers 416. The games application 436 may also store video-game content prior to updating a frame of video on the television 120-1. The STB 116-1 is described further below with reference to
The cable television system 400 may also include STB control 420, operations support system 422 and billing system 424. The STB control 420 may process one or more user actions, such as those associated with a respective video game, that are received using an OOB sub-channel, such as OOB sub-channel 312-1 (
The various signals transmitted and received in the cable television system 400 may be communicated using packet-based data streams. In an exemplary embodiment, some of the packets may utilize an Internet protocol. In some embodiments, networks, such as the network 116, and coupling between components in the cable television system 400 may include one or more instances of a wireless area network, a local area network, a transmission line such as a coaxial cable, a land line and/or an optical fiber. Some signals may be communicated using plain-old-telephone service (POTS) and/or digital telephone networks such as an Integrated Services Digital Network (ISDN). Wireless communication may include cellular telephone networks using an Advanced Mobile Phone System (AMPS), Global System for Mobile Communication (GSM), Code Division Multiple Access (CDMA) and/or Time Division Multiple Access (TDMA), as well as networks using an IEEE 802.11 communications protocol, also known as WiFi, and/or a Bluetooth communications protocol.
While
The headend 110-1 is also coupled to one or more users of one or more video games. Each user has at least one television 120-1 and STB 116-1. The STB 116-1 may include the client application such as the games 436. Bi-directional communication link 524-1 may occur between one or more game servers 514 and the STB 116-1. A bandwidth or data rate in each direction may, however, be asymmetric. For example, a higher data rate may be available from the headend 110-1 to the STB 116-1. A data stream from the STB 116-1 to one of the game servers 514, such as the game server 514-3, may contain information corresponding to one or more user actions in one or more video games. The STB 116-1 may also have bi-directional communication with the application server 516 using OOB sub-channel 312-1.
The application server 516 manages video game distribution (loading of video games), billing and business infrastructure (integration). After testing of a new video game is completed, the game distribution server 528 alters one or more headends, such as the headend 110-1, that the new video game is ready for distribution. The game asset management system 518 fetches and distributes the new video game. The game asset management system 518 stores related pricing information in the game business management system 522 and content corresponding to the new video game, such as one or more pre-encoded blocks and executable video game instructions in the game servers 514. The game asset management system 518 supports an Asset Distribution Interface, a format for movies that has been extended to include video games. The game asset management system 518 may also include meta data for the video games, including a publisher of the respective video game, a description of the respective video game, a name of the respective video game, one or more performance characteristics of the respective video game such as a bit or data rate.
The game business management system 522 handles pricing, terms of use (such as pay per day, unlimited usage) and possible bundling of one or more video games for rental as a package. The SRM 520 allocates resources for use in communication with a respective user and handles initial processes in response to the respective video game being ordered. The SRM 520 may support bit or data rates other than those corresponding to VOD.
When the respective user orders the respective video game, the cable television system, via the operations support system 422 (
During the ordering process, additional information may be requested from the respective user prior to starting the respective video game, such as authentication, billing, payment and security data. In addition, persistent user information, such as user meta data in the multi-player server 412, may be accessed by the application server 516. The player meta data may include saved video game states, rankings and/or high score.
The application server 516 may then assign the respective user to a respective game server, such as the game server 514-3, which in turn, assigns the respective user to a respective game engine, such as the game engine 832 (
One or more user actions in the respective video game may be communicated from the STB 116-1 to the respective game server 514-3 using a variety of communication paths and/or formats. The user actions may be communicated directly from the STB 116-1 to the respective game server 514-3 using the bi-directional communication link 524-1. Alternatively, one or more user actions may be communicated using the OOB sub-channel 312-1. The user actions may be communicated using a General Stream Control Protocol (GSCP) or a modified GSCP. GSCP is a format for communicating key strokes from the STB 116-1 to respective game server 514-3. The STB 116-1 may also support an extended version of a VOD protocol called Lightweight Stream Control Protocol (LSCP). LSCP supports additional key events in addition to arrow or navigation keys, select and okay.
In some embodiments, the respective user may also be able to audio chat with one or more additional users of the same video game or another video game using the OOB sub-channel 312-1 or a back channel, such as provided by a telephone system or a wireless communication link. In some embodiments, the audio chat may utilize a DOCSIS format.
The game servers 514 provide video-game content to one or more users using a combination of static or shared game assets and dynamic processing. The game servers 514 include a plurality of pre-encoded blocks. In an exemplary embodiment, the pre-encoded blocks are MPEG macro blocks. Each block corresponds to a 16×16 pixel element. For standard definition NTSC video, there are 640 horizontal lines and 480 vertical pixels. Therefore, a full frame of video corresponds to 30 horizontal slices each containing 40 macro blocks. The pre-encoded blocks may be compressed using a discrete cosine transformation (DCT). The pre-encoded blocks may be stored in a chrominance/luminance or YUV format. Each pre-coded block may be compressed individually. The pre-coded blocks, however, are not compressed independently of neighboring macro blocks.
In the dynamic portion of the processing, the game servers 514 dynamically stitch or interrelate the pre-encoded blocks in accordance with changes in a game state based on one or more user actions. The game state for a respective set of users represents the current state of the game, and provides sufficient information for the game server to respond to user actions that impact on the game state and to generate video-game content that advances the video game from the viewpoint of the user or users in a manner consistent both with the prior game state and the most recent user actions. In embodiments where the pre-encoded blocks are MPEG compatible macro blocks, corresponding DCT coefficients are interrelated or interleaved in real time as the data stream is generated and transmitted to the STB 116-1. Current video-game content transmitted includes difference information with respect to previous video-game content, such as at least a subset of a frame of video, that was transmitted to and display by the STB 116-1. In some embodiments, motion compensation may be utilized based on movement of one or more objects or pre-encoded blocks in a frame of video. In some embodiments, one or more of the game servers 514 may also blend additional graphics into the transmitted video-game content in real time. The video-game content may also include audio. The audio information may also include pre-compressed blocks. In an exemplary embodiment, a Dolby audio encoding format, such as Dolby Audio Coding-3 (AC3), is used.
The video-game content may be transmitted to the respective user using time domain multiplexing where the video-game content is transmitted in a series of time slices. In some embodiments, the video-game content transmitted to one or more users may be substantially the same. In other embodiments, two or more users may receive different video-game content. The video-game content may be transmitted to one or more users using one or more sub-channels.
While
As noted above, additional embodiments may rearrange the position of one or more elements in the video-game system 500.
The video-game system described above, such as embodiments 500, 600 and 650, may offer efficient resource allocation and overall cost effectiveness especially as the approach is scaled to multiple users. For example, in some embodiments, a plurality of sets of users may be able to play a single instance or copy of the respective video game substantially simultaneously and independently. Each respective set of users may include one or more users sharing a respective game state. A controller for the respective video game, therefore, is configured or configurable to maintain a plurality of the respective game states. In this way, the video-game system may support multiple parallel games using the single instance or copy of the respective video game. In an exemplary embodiment, 100 or more users arranged in multiple sets of users may play a single copy of a video game. This is in contrast with existing multi-user or multi-player video games, where multiple users compete in a shared virtual environment by communicating between multiple copies of the video game that are running simultaneously.
In
Memory 822 may include high-speed random access memory and/or non-volatile memory, including ROM, RAM, EPROM, EEPROM, one or more flash disc drives, one or more optical disc drives and/or one or more magnetic disk storage devices. Memory 822 may store an operating system 824, such as LINUX, UNIX or WINDOWS, that includes procedures (or a set of instructions) for handling basic system services and for performing hardware dependent tasks. Memory 822 may also store communication procedures (or a set of instructions) in a network communication module 826. The communication procedures are used for communicating with one or more users using STBs, such as the STB 116-1 (
Memory 822 may also include the following elements, or a subset or superset of such elements, including the applications server module 414 (or a set of instructions), the game asset management system module 518 (or a set of instructions), the session resource management module 520 (or a set of instructions), the game business management system module 522 (or a set of instructions), the billing system module 424 (or a set of instructions), the player management system module 612 (or a set of instructions), the session gateway module 614 (or a set of instructions), one or more game server modules 416 (or sets of instructions), the multi-player server module 412 (or a set of instructions) and the game distribution server 526 (or a set of instructions). The game asset management system module 518 may include a game database 828 including pre-encoded blocks and executable code corresponding to one or more video games. The player management system module 612 may include a player information database 830 including information such as user's name, account information, transaction information, preferences for customizing display of video games on the STB 116-1 (
Although
The game controller 924 may be a dedicated video-game console, such as those provided by Sony Playstation®, Nintendo®, Sega® and Microsoft Xbox® or a personal computer. The game controller 924 may receive information corresponding to one or more user actions from a game pad, keyboard, joystick, microphone, mouse, one or more remote controls, one or more additional game controllers or other user interface such as one including voice recognition technology. The display 922 may be a cathode ray tube or a liquid crystal display in a television, a computer or a portable device, such as a video game controller 924 or a cellular telephone.
The STB 900 may have an embedded operating system such as Linux, OS9 or Windows, or a real-time operating system (e.g., VxWorks by Wind River Systems, Inc.) suitable for use on industrial or commercial devices.
In some embodiments, the STB 900 may perform a smoothing operation on the received video-game content prior to displaying the video-game content. In some embodiments, received video-game content is displayed on the display 922 in real time as it is received. In other embodiments, the STB 900 stores the received video-game content until a full frame of video is received. The full frame of video is then displayed on the display 922.
The video-game system 1000, and one or more of the game servers 514, may support one or more video games, such as chess, checkers and/or cards, running simultaneously. In addition, as described previously, a respective video game may be run such that a plurality of sets of users may play the respective video game independently and substantially simultaneously.
Each game server, such as the game server 514-1, includes user action management 1014 to process information corresponding to one or more user actions 1012 such that a corresponding game state may be updated, one or more game engines 832, a compression stream synthesizing API 1016 to provide an interface for video and/or audio data streams, a compression engine 836 (such as MPEG2) and a data stream module 1018 to output a data stream 1020 (such as data packets) to one or more STBs. In addition, each of the game servers 514 may include game storage 1022 to receive one or more video game data streams 1024. The game storage 1022 may store the pre-coded blocks and the video-game executable instructions for one or more video games. The game storage 1022 may also store one or more game states corresponding to one or more user sets for one or more video games.
In some embodiments, one or more of the game servers 514 may provide an equal amount of processor time to a respective instance of the respective video game and/or a respective user set of the respective video game. In other embodiments, the respective instance of the respective video game and/or a respective user set of the respective video game may be provided with no processor time if the corresponding respective game state is unchanged. In the event that no user action 1012 is received for the respective user, one or more of the game servers 514 may provide video-game content to the respective STB, such as the STB 116-1 (
The game servers 514 may run a browser application, such as Windows Explorer, Netscape Navigator or Mozilla from FireFox, to execute instructions corresponding to a respective video game. The browser application, however, may be configured to not render the video-game content in the game servers 514. Rendering the video-game content is unnecessary, since the content is not displayed by the game servers, and avoiding such rendering enables each game server to maintain many more game states than would otherwise be possible.
The game server 514 may have one or multiple processors. Video games may be implemented in a parallel by multiple processors. Games may also be implemented in a multi-threaded operating system.
The data stream 1020 transmitted by one or more of the game servers 514 to the respective user or users may have a bit or data rate that is bounded between a pre-determined lower limit and a pre-determined upper limit.
In embodiments where only P frames are transmitted during certain time intervals, there may be challenges associated with error propagation since some information is lost during MPEG compression and some is not repeated for each P frame, and may be lost during transmission due to network or communication failures. This challenge may be addressed by transmitting a full frame of video, such as an I frame, as a form of error correction by resetting the displayed frame of video to a known ‘good’ condition. Such a full frame of video may be transmitted periodically or after a pre-defined time interval has elapsed. Alternately, individual stripes of intra-coded macro blocks may be transmitted periodically, so that the entire frame is repainted with fresh video data at a predefined rate, or at a rate no less than a predefined rate (e.g., at least once per second).
Attention is now directed towards several embodiments of methods of operations for utilizing the improved video-game system.
The system and method described may be implement in hardware and/or software. Instructions may be implement in a high-level procedural language, an object-oriented programming language or in an assembly or machine language. The programming language may be compiled or interpreted. In addition, general purpose and special purpose micro-processors, as well as application specific integrated circuits may be utilized.
The foregoing descriptions of specific embodiments of the present invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Rather, it should be appreciated that many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.