WO2007119236A2 - Method and apparatus for providing gaming services and for handling video content - Google Patents
Method and apparatus for providing gaming services and for handling video content Download PDFInfo
- Publication number
- WO2007119236A2 WO2007119236A2 PCT/IL2007/000476 IL2007000476W WO2007119236A2 WO 2007119236 A2 WO2007119236 A2 WO 2007119236A2 IL 2007000476 W IL2007000476 W IL 2007000476W WO 2007119236 A2 WO2007119236 A2 WO 2007119236A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- frame
- game
- video
- gaming
- frame portion
- Prior art date
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A63F13/12—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
Definitions
- the present invention relates to systems and apparatus for providing gaming services (for example, gaming services provided via a computer network) and to systems and apparatus for encoding and/or transmitting and/or decoding electronic video content. Some presently disclosed techniques may be particularly useful for reducing and/or eliminating gaming latency.
- WO/2006/100664 discloses systems, methods and computer readable code for providing a single player and/or a multi-player gaming environment.
- Each user is provided with a client device having an input module and display screen.
- An application server array receives data indicative of game commands from each client device. Residing in the application server array is a game engine which maintains a virtual gaming universe including one or more of user-controllable gaming characters. The gaming engine is operative to associate each user-controlled gaming character with game commands received from a respective client device of the plurality of devices.
- one or more streams of videos are rendered.
- each video stream represents a view associated with a different game character.
- Each video stream is sent over a communications link to a respective client device.
- the communications link is a switched network, such as a packet switched network of a circuit switched network.
- the present disclosure relates to improved systems and methods for providing gaming services and to improved techniques for encoding and/or transmitting and/or decoding video. It is noted that although the presently disclosed teachings are applicable to the systems described in WO/2006/100664, this should not be construed as a limitation, and it is noted that the presently disclosed teachings are applicable in a variety of systems including those not described in WO/2006/100664.
- a game engine generates a snapshot S (to) (either rendered or unrendered) of a virtual gaming universe for a given time (for example, t 0 ) and sends this snapshot to a client device (for example, a mobile telephone or a personal computer or any other device having video display functionality).
- a client device for example, a mobile telephone or a personal computer or any other device having video display functionality.
- 'game latency' may come from one or more of a number of sources, including but not limited to (i) game-engine latency associated with computing the updated state(s) of the virtual world or universe; (ii) rendering latency associated with rendering a particular view of the updated virtual world or universe (iii) encoding latency associated with encoding the rendered video (iv) network latency associated with streaming the encoded video from the server-side to a given client device.
- the latency is the difference between t ⁇ and t r o.
- a greater game latency may, in some situations, provide for a less responsive gaming experience. Even worse, in some situations, the game latency may adversely influence 'game fairness' as will be explained in the next paragraph with reference to a particular example.
- Each gaming character is controlled by a respective user client device which sends commands - whichever client device can react to a situation within the gaming universe faster will enjoy an unfair advantage.
- the network latency may vary among different client devices, and some client devices may experience very different latency than other client devices.
- the game server is located in Tel Aviv Israel and client devices are located in Haifa, Israel and Boston, Massachusetts.
- an updated description of a virtual world for example, a next 'frame'
- the Haifa-based client is thus allowed to react to the updated situation in the virtual universe at an earlier time, giving the user of the Haifa-based client device an unfair advantage.
- One feature disclosed in certain embodiments of WO/2006/100664 is rendering of views of a virtual gaming universe on the 'server side.
- 'multi- platform' games where the user can play the game from a plurality of platforms.
- this allows the game to be played, for example, using different types of PDAs or cellphones.
- PDAs personal digital assistants
- some users among a user population operate more "sophisticated" client devices (PCs, 'advanced' cellphones, PDAs).
- PCs personal computers
- PDAs personal digital assistants
- These users expect a "richer” gaming experience that utilizes the graphics and/or sound capability of the client device — for example, a game that displays more and richer landscape features (or more features of certain game objects, or displayers a game object or landscape feature with greater contrast), that utilizes a higher device screen refresh rate for a "smoother" experience, etc.
- the MPEG-2 Draft Standard provides temporal redundancy reduction through the use of various predictive and interpolative tools.
- three types of frames or pictures are used: "I” Intrapictures, "P” Predicted Pictures, and "B” Bidirectional Interpolated Pictures.
- the "I" Intrapictures provide moderate compression, and are access points for random access, e.g., in the case of video tapes or CD ROMS. As a matter of convenience, one "I” Intrapicture is provided approximately every half second. The "I” Intrapicture only gets information from itself. It does not receive information from a "P" Predicted Picture or "B” Bidirectional Interpolated Picture. Scene cuts preferably occur at "I" Intrapictures.
- P Predicted Pictures are coded with respect to a previous picture.
- P Predicted Pictures are used as the reference for future pictures, both "P" and "B” pictures.
- B Bidirectional Coded pictures have the highest degree of compression. They require both a past picture and a future picture for reconstruction. "B" bidirectional pictures are never used as a reference.
- these pictures are sent to a display device as a sequence, wherein after sending a single I picture, a number of B or P pictures may be sent.
- the I pictures are sent periodically to provide a "refresh.”
- a server-based system for providing gaming services comprising: a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe including at least one user- controllable gaming character 816, said gaming engine operative to associate a given said gaming character 816 with game commands of a given said client device 112, said game engine 312 being operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to: i) derive, from a first said snapshot 2100 associated with a first game time t g 0 2102 and a first game command set C 0 2104, a second snapshot 2200 associated with a second game time tSj2202 and a second game command set C 1 2204; and ii) derive, from said first snapshot 2100, a third snapshot 2110 associated with a third game time t
- system further comprises: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character.
- said third snapshot contradicts said second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112.
- said game engine 312 is operative to associate each said 112 client device of a plurality of client devices with a respective said gaming character, and to derive, for said respective gaming character, a respective said second snapshot from said first snapshot.
- the system further comprises: c) a data streamer operative to send to said each client device 112, said second respective snapshot associated with said respective gaming character.
- said third snapshot contradicts said respective second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112.
- the system further comprises: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character associated with an indication of a latency- based display delay, said latency-based display delay derived from an assessed latency of said client device.
- the system further comprises: c) a transmission delay engine 348, wherein said data streamer and said 352 and said transmission delay engine 348 are operative to delay transmission of said second snapshot in accordance with an assessed latency of
- said transmission delay engine 348 is operative to differential delay transmission a first delay time for a first said client device having a first assessed latency and a second delay time different from said first delay time for a second client device having a second assessed latency different from said first said assessed latency.
- said predicted future state of said conrollable gaming character includes at least one of: i) a predicted future position of said controllable gaming character at time t& ⁇ that is different than a position of said controllable gaming character at time ts 0 ; ii) a predicted orientation of said controllable gaming character at time ts x that is different than an orientation of said controllable gaming character at time tso-
- said predicted future state 810B of said object 810 includes at least one of: i) a predicted future position of said object 810B at time tSi that is different than a position of said object at time t g 0 ; ii) a predicted orientation of said object at time tMi that is different than an orientation 810A of object at time ts 0 .
- said object is a gaming character other than said gaming character.
- said other gaming character is a user controllable gaming character controllable by a client deice 112 other than said given client device.
- said object is other than a gaming character.
- said application server array 110 is operative such that at least one of: a) (ts 2 - t g 0 ); and b) (tSp t ⁇ o) is determined in accordance with any combination of: i) an assessed latency of said given client device; ii) an assessed latency of a client device other than said given client device;
- a method for providing gaming services comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and b) maintaining, on said application server array 110, a virtual gaming universe including at least one user-controllable gaming character 816 such that a given said gaming character 816 is associated with game commands of a given said client device 112; and c) generating snapshots of said virtual universe, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time t g o 2102 and a first game command set C 0 2104, a second snapshot 2200 associated with a second game time 1 ⁇ 2202 and a second game command set C 1 2204; and ii) deriving, from said first snapshot 2100, a third snapshot 2110 associated with a third game time t 8 2 2122 and a third game command set c 2 2204, wherein: i) (t g 2
- a server-based system for providing gaming services comprising: a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe, said game engine 312 being operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to derive, from a first said snapshot 2100 associated with a first game time t g 0 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time ⁇ 2202 and said first game time t s 0 2102is determined, at least in part, in accordance with an assessed server-client latency of at least one said client device.
- a method for providing gaming services comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and b) maintaining, on said application server array 110, a virtual gaming universe; c) assessing a client-server latency of at least one said client device; d) generating snapshots of said virtual universe in accordance with said assessed client-server latency, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time t g o 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time t ⁇ 1 2202 and said first game time t g 0 2102 is determined, at least in part, in accordance with said assessed server-client latency.
- a method of video frame generation comprising: a) generating a plurality of video frame including a first video frame 1574 that is a hybrid video frame that includes an I frame portion 1583 and a P frame portion 1581.
- said generating of said plurality of video frames includes generating a second video frame 1578 different from said first video frame 1574; and ii) said second video frame includes: i) a first P frame portion 1571 encoded relative to said I frame portion
- a method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
- said generating of said plurality of video frame includes: b) generating a third frame 1574 that is a hybrid frame including an I frame portion 1583 and a P frame portion 1581, wherein:
- said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
- a method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
- a method of video frame generation from an ordered plurality of input frames including a first input frame 1674 and a second input frame 1678 different from the first input frame comprising: a) generating, from the ordered plurality of input frame, a plurality of encoded video frames including an uninterrupted sequence (1570, 1574, 1578, 1582, 1584) of frames that are at least partially I frames, wherein said generating includes: a) encoding a first input frame 1674 into a first encoded frame 1574 of said uninterrupted sequence, said first encoded frame 1574 being at least partially spatially a I frame and including an I frame portion 1583 derived from said first input frame 1674; b) encoding a second input frame 1678 different from the first input frame 1674 into a second encoded frame 1578 of said uninterrupted sequence, said second encoded frame 1578 being at least partially spatially a I frame and including an I frame portion 1569 derived from said second input frame 1678.
- a method of video frame generation comprising: a) generating a plurality of video frame including: i) a first at least partially P frame 1578 including:
- a method of video frame generation comprising: a) generating an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
- the method further comprises: b) ordering said plurality of frames according to an order recited.
- the method further comprises: c) transmitting said plurality of frames according to said order.
- the method further comprises: c) saving to non- volatile memory said first, second and third frames in a file according to said order.
- a shape of at least one of an I frame portion and a P frame portion is determined dynamically.
- said generating includes encoding a plurality of input frames; and ii) said determining is carried out in accordance with a dynamic region of interest detected within a plurality of input frame.
- a method for decoding video frames comprising: a) receiving a plurality of encoded video frame including a first hybrid video frame 1574 that includes an I frame portion 1583 and a P frame portion 1581; b) decoding said first hybrid video frame 1574 by: i) decoding said P frame portion 1581; ii) associating said decoded P frame portion 1581 with said I frame portions.
- said decoding of said video frames includes i) decoding a second video frame 1578 different from said first video frame
- said second video frame includes: i) a first P frame portion 1571 encoded relative to said I frame portion
- a method of video frame decoding comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
- said decoding of said plurality of video frames includes: b) decoding a third frame 1574 that is a hybrid frame including an I frame portion
- said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
- a method of decoding of video frame generation comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
- a method of video frame decoding comprising: a) receiving a plurality of video frame including: i) a first at least partially P frame 1578 including:
- a method of video frame decoding comprising: a) decoding an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
- a decoding device for decoding video frames comprising: a) a memory for storing a plurality of encoded video frames; and b) a frame decoder operative to decode said plurality of encoded video frames according to any of claims 35-41.
- the device further comprises: c) a flash memory card interface operative to present the decoding device as a flash memory card to a host device coupled to said decoding device, wherein said frame decoder is operative, upon receiving said plurality of encoded video via said flash memory card interface, to effect said decoding.
- the decoding device is operative to provide a plurality of frames derived from said plurality of decoded video frames upon receiving, via said flash memory card interface, at least one of: i) a flash memory card file read request; and ii) a flash memory card data stream read request.
- a method of generating a video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least one frame that is at least partially spatially an I frame; ii) a second frame 1578 that includes:
- a method of providing a gaming service comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices; d) storing said data indicative of said game commands in a data cache; e) modifying said virtual gaming universe in accordance with said cached gaming commands such that at least some said gaming commands are operative to modify said virtual gaming universe after a cache delay.
- the method further comprises: f) removing data associated with one or more said game application commands after said modifying.
- At least some said game commands are filtered in accordance with other said game commands and discarded, and said virtual gaming universe is not modified in accordance with said discarded commands.
- at least some said game commands are associated with a respective time stamp, and said filtering is performed in accordance with said respective time stamps.
- a method of providing a gaming service comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is determined in accordance with a game command client device network latency.
- a method of providing a gaming service comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is other than an order of said receiving.
- a method of providing a gaming service comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) generating at a given time a snapshot of a future state of a virtual gaming universe; c) receiving data indicative of game commands after a time that said snapshot is generated (i.e. during a gap time); d) if said received game commands contradict said generated snapshot of said future state of said virtual universe, discarding said contradicting game commands; and e) generating at least one video image in accordance with said snapshot.
- a gap time of said snapshot is at least 10 milliseconds.
- a gap time of said snapshot is at least 20 milliseconds.
- said snapshot is generated a plurality of times to produce a video sequence having a frame time.
- a ratio between a gap time and a frame time is at least 0.2. According to some embodiments, a ratio between a gap time and a frame time is at least 0.5.
- a method of providing a gaming service comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices; d) storing said data indicative of said game commands in a data cache; e) modifying said virtual gaming universe in accordance with said cached gaming commands such that at least some said gaming commands are operative to modify said virtual gaming universe after a cache delay.
- the method further comprises, f) removing data associated with one or more said game application commands after said modifying.
- At least some said game commands are filtered in accordance with other said game commands and discarded, and said virtual gaming universe is not modified in accordance with said discarded commands.
- at least some said game commands are associated with a respective time stamp, and said filtering is performed in accordance with said respective time stamps.
- a method of generating video frames comprising: a) Rendering a plurality of video frames, each said video frame rendered in less than a first number of seconds; b) Serving and/or presenting said rendered video frames at an average rate whose value is a second number of said rendered video frames per second,
- a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 2. According to some embodiments, said ratio number is at least 5. According to some embodiments, said ratio number is at least 7. According to some embodiments, said ratio number is at least 10.
- a method of providing a gaming service comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is determined in accordance with a game command client device network latency.
- a method of providing a gaming service comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is other than an order of said receiving
- a computer readable medium comprising program instructions is disclosed, wherein when executed the program instructions are operable perform any presently disclosed method.
- a server-based system for providing gaming services comprising: a) an application server array adapted to effect a data transfer with each of a plurality of client devices that are each separate from said server array; b) an input data aggregator for receiving data indicative of game commands from each of the plurality of client devices; c) a game engine for maintaining a virtual gaming universe including a plurality of controllable gaming characters, said gaming engine operative to associate each said gaming character with said game commands of a respective client device; and d) a multi-video output rendering engine residing in said application server array for generating from said virtual gaming universe a plurality of video streams each said video stream representing a view associated with a respective said game character, wherein, for each said video stream of said plurality of video streams, said multi-video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device.
- said indicative data includes at least one of: device resolution, a device screen refresh rate, device contrast parameters, color parameters (for example, a number of colors), screen size and/or aspect parameters (for example, screen size or ratio between horizontal and vertical dimensions of the screen))
- the system further comprises: e) a data provisioning mechanism operative to provide said indicative data to said rendering engine.
- said provisioning mechanism includes at least one of: a) a database acesssor for accessing a database for said indicative data; and b) a client sniffer for deriving, for a given said client device, said indicative data from a communication received from said given client device.
- a system for providing a single-user or multiuser gaming service comprising: a) an application server array adapted to effect a data transfer with one or more client devices that are each separate from said server array; b) an input data aggregator for receiving data indicative of game commands from each said client device; c) a game engine residing at least in part in said application server array for maintaining a virtual gaming universe including at least one controllable gaming characters, said gaming engine operative to associate each said gaming character with said game commands of a said respective client device; and d) a video output rendering engine residing in said application server array for generating from said virtual gaming universe at least one video stream, wherein, for each said video stream of said at least one video stream, said multi-video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device.
- a method of providing a multi-player gaming environment comprising: a) providing within an application server array a game engine for maintaining a virtual gaming universe including a plurality of gaming characters; b) at said application server, receiving data indicative of game commands from a plurality of client devices; c) associating each said gaming character with said gaming commands of a different respective said client device; d) within said application server array, generating a plurality of rendered video streams, each said video stream representing a game view associated with a respective said gaming character, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
- a method of providing a single player or multi- player gaming environment comprising: a) providing within an application server array a game engine for maintaining a virtual gaming universe including at least one gaming character; b) at said application server, receiving data indicative of game commands from at least one of client device; c)associating each said gaming character with said data indicative of gaming commands received from a respective said client device; d) within said application server array, generating at least one rendered video stream, associated with a game view of said virtual gaming universe, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
- FIG. 1 provides a description of serving a snapshot of a virtual gaming universe in a system where there is game view latency.
- FIGS. 2A-2C provide a block diagram of an exemplary gaming system where a game engine resides on the server side in accordance with some embodiments of the present invention.
- FIGS. 3A-3C provide a block diagram of an exemplary gaming system where a game engine resides on the server side and video is rendered on the server side in accordance with some embodiments of the present invention.
- FIG. 4 describes certain snapshots of a virtual universe in a particular example.
- FIG. 5 A-5B provides a description of serving a reduced-latency snapshot of a virtual gaming universe in accordance with some embodiments of the present invention.
- FIGS. 5C-5D provide flow charts of exemplary techniques for 'future snapshots' of a virtual gaming universe.
- FIG. 6A-6B provides block diagrams of application server arrays that include a transmission delay engine.
- FIGS. 7A-7C and 8 provide diagrams describing technique for generating a plurality of snapshots descriptive of the virtual universe at different points in game time in accordance with some embodiments of the present invention.
- FIG. 9 provides a diagram of a game character and a game object within a virtual universe accordance to one example.
- FIG. 10 provides a diagram of a technique for caching game commands in accordance with some embodiments of the present invention.
- FIG. 11 provides a block diagram of a game application server where video is rendered on the server in accordance with device characteristics of a respective target client device to which video is serverd.
- FIG. 12 provides on example of how to divide a video frame into a plurality of sub-regions.
- FIG. 13 A describes exemplary spatially partial I frames.
- FIG. 13B describes a technique for splitting an I frame into a plurality of spatially partial I frames.
- FIG. 13C describes , by example, a scheme for generating I frames and P frames.
- FIG. 14A describes exemplary hybrid frames.
- FIG. 14B describes , by example, a scheme for generating I frames and P frames where generationally-inhomogeneous partial or complete P frames are generated.
- FIG. 15 describes an exemplary technique for encoding and decoding video frames.
- FIG. 16 describes an example for input frames are encoded.
- FIG. 17 descirbes an exemplary system including a host (for example, a mobile phone) and a peripheral card operative to decode video content that is coupled to the host.
- a host for example, a mobile phone
- a peripheral card operative to decode video content that is coupled to the host.
- the present inventor is now disclosing systems, methods, apparatus, devices and computer code for providing gaming services and for handling video content.
- Various teachings relating to providing gaming services will be explained with reference to FIGS. 2- 11.
- Various teaching relating to handling video content (for example, encoding or decoding video content) will be explained with reference to FIGS. 12-17.
- the present inventor is now disclosing a system, method and computer-readable code for providing an electronic gaming environment for a multi-player game.
- Each human player accesses the gaming environment through a respective client device having a data input mechanism (for example, keyboard such as a phone keypad, or a trackball, or a joystick, etc.) and a display screen.
- client devices effect a data transfer with an applicant server array separate from the client devices.
- Much of the computation for supporting the game environment is carried out within the application server array, and thus the client device may function as a "thin client" for accessing the gaming environment.
- the game engine itself may reside in the application server as illustrated in FIGS.2A-2C.
- the systems described in FIGS. 3A-3C relate to the case where video output is rendered on the server side, and served to the client device 112, thereby offloading a portion of the computational load needed to maintain the gaming environment from the client device to the game application server array.
- the first device when a first device "effects a data transfer" with a second device, the first device effects at least one of sending data to the second device and receiving data from the second device. In some embodiments, this refers to the situation where the first and second device sends data to each other and receive data from each other.
- FIG. 2A provides a block diagram of exemplary multi-player interactive gaming system IOOA in accordance with some embodiments of the present invention.
- Each human player enters game "commands" (for example, directives for a game character to perform a specific action within the virtual gaming universe, such as to move a "game character") through a data input mechanism or module 210 of a client device 112 (see FIG. 2B).
- game commands for example, directives for a game character to perform a specific action within the virtual gaming universe, such as to move a "game character
- client device 112 see FIG. 2B.
- the user can send 'command data' using the data input mechanism or module, in some embodiments the user can send data other commands.
- Input data 118 including data indicative of these game commands are sent over a communications link 114 (for example, a 'wireless' communications link) to an array of one or more game application servers 110.
- the application game server array 110 i.e. one or more application servers, in a centralized location, or distributed within a computer network, for example, including one or more game consoles
- Each frame of this streamed view data provides a 'snapshot' of a virtual gaming world (or portion thereof) from a given 'point of view' at a given moment in time.
- Various snapshots are streamed to the client device.
- the view data may be rendered on the client side with a client-side rendering element 220.
- the rendered view data is then displayed on a display screen 212 of the client device.
- rendering element 220 may be implemented in any combination of software and hardware.
- each client device 112 is used by a different human player who controls, using the client device, a different "game characters)" of the game universe.
- the display screen 212 of the client device 112 thus provides the human player a view into the virtual universe of the game.
- more than one client device 112 may be served identical (an/or substantially identical) rendered view streams 116.
- different client devices are served different video, streams, which may vary in accordance with one or more of a number of factors.
- exemplary factors include but are not limited to a point of view, a frame rate, a type of encoding , bandwidth, a client parameter (such as screen size and/or screen resolution), and user preferences.
- each client device may be provided with a different view associated with the specific game character controlled by the specific client device.
- the view data 116 sent to each client device may be different, in accordance with the game character being played by the human player using the client device.
- each client device 112 may, in some embodiments, receive a respective view data 116 stream associated with the gaming character controlled by the game commands provided by the respective client device 112 and with respect to the client's physical capabilities and its connection.
- each rendered video stream 116 could provide a different "view" into the virtual gaming universe associated with the character controlled by the respective client device. It is noticed that this view may be a "first person” game view within the virtual universe associated with the respective controlled game character, or a "third person” game view within the virtual universe associated with the respective controlled game character. Other types of views (i.e. other than first person and third person) associated with a specific game characters may also be provided.
- a view (and not just the administration of the virtual game universe) may be defined by the game engine 312. In one example, it is decided that if a certain player receives a certain number of points, he is "rewarded" with a deeper view (for example, the ability of to 'see' further) of the virtual universe.
- a view may be defined by the game engine 312.
- a deeper view for example, the ability of to 'see' further
- FIG. 2C provides a diagram of the application server array 110 in accordance with exemplary embodiments of the present invention.
- the application server array 110 drawn is a single entity having single instances of each component, it is appreciated that one or more of the components depicted (and/or multiple instances of each component) here may be located in different locations within a computer network.
- the system may not be limited to a single application server array 110, and that there may be redundant application server arrays situated at different locations in the network.
- input data from the plurality of client devices is received by an input data aggregator 310.
- the input data 118 includes the game commands from the client devices.
- This data is made available to the application engine or game engine 312 which includes game logic (for example, a set of game rules, such as the rule that a bullet object that reaches a game character may injure or kill the game character or remove that "hit" game character from the game).
- game logic for example, a set of game rules, such as the rule that a bullet object that reaches a game character may injure or kill the game character or remove that "hit" game character from the game.
- Information about the current state of the game is stored in a common data structure or data repository 314.
- the data repository 314 may include the data necessary to represent or 'model' the virtual game universe, including but not limited to one or more of geometry data, viewpoint data, texture data and lighting information.
- data related to the virtual universe that is stored in memory may also include game specific data.
- the data repository may be implemented using any combination of volatile and nonvolatile memory, hi exemplary embodiments, the data repository may include status information about user-controlled game characters and/or computer 'game-master' controlled game characters (non-limiting examples of status information include one or more of the positions and/or orientations of each game character.
- the game engine or application engine 312 in accordance with game logic, maintains the virtual game universe by maintaining and modifying the appropriate data structures within the common data repository 314 which represent the virtual universe in accordance with game logic.
- FIG. 2C depicts the input data as flowing directly to the application engine 312 from the input data aggregator 310 it is appreciated that this is in accordance with exemplary embodiments, and in other embodiments, the input data aggregator 310 is not directly linked to the application engine 312.
- game engine may include one or more of a physics engine, an AI agent, and one or more game libraries, though embodiments with other game engine components are contemplated as well.
- the game engine 312 may modify the common data repository 314 representing the virtual universe in accordance with rules of the game application. In other words, the game engine 312 may update the common data repository 314 (i.e. effect a change to the virtual game universe) in accordance with input data 118 including game command data received from the client devices 112. According to one non-limiting example, if a game character is shot by another character, the character's "health" attribute is reduced and the character is partially disabled.
- the application engine 312 maintains the virtual universe in accordance with 'game logic'
- One element of game logic enforced by the game engine 312 relates to maintaining some standard of time in the virtual game universe.
- certain laws of how objects behave involve time — referred to in the present disclosure as 'real time' or physical time and associated with the symbol f.
- certain laws of how objects within the virtual gaming universe behave also involve time - referred to in the present disclosure as 'game time' and associated with the symbol t c
- the position will change with respect to time - in this case the position in the virtual universe will change with respect with the time t c of the virtual universe.
- FIG.4 This is illustrated in FIG.4 where a given object 2750 is moving within the virtual universe at a rate of 100 unites/second in the x direction according to the rules of the game logic.
- the game engine 312 may generate a 'snapshot' of an aspect of the virtual universe that includes that position of the object 2750 for different moments in time (i.e. in 'game' time).
- three snapshots 2710, 2720 and 2730 are generated - each snapshot corresponds with a different moment in 'game time'.
- the object 2750 has a different position — in snapshot 2710 associated with time t c the object has a position (20,50) in the virtual universe; in snapshot 2720 associated with time t 0 the object 2750 has a position (30,50) in the virtual universe; in snapshot 2730 associated with time t c the object 2750 has a position (40,50) in the virtual universe.
- the game engine 312 may thus generate a series of snapshots in accordance with game rules or game logic. Typically, the game engine will derive a snapshot associated with a later time from a snapshot associated with an earlier time by running the game engine forward in time - for example, in discrete time increments associated with a 'game engine cycle'.
- the game engine includes a mechanism for synchronizing game time t c with real time t r to provide an appropriate gaming experience to the user(s). For example, if the game engine is run on a 'fast machine' or if the amount of computing resources required for a given forward step in time between two snapshots is 'small,' the game engine may 'wait' or 'sleep' in order to synchronize between a given step forward in 'game time' t c and an amount of real time f.
- a 'snapshot' refers to an electronic representation of at least one aspect of the virtual universe associated with a given moment in game time t°.
- this snapshot may be stored in the common data repository 314.
- one or more snapshots may be sent to the client device as view data - either unrendered view data 116 as shown in FIGS. 2A-2C or as rendered view data as shown in FIGS. 3A-3C.
- the "snapshot" may be descriptive of the positions of one or more objects within the 2 or 3 dimensional space of the virtual universe and optionally within the configuration space defined by the internal degrees of freedom (for example, the orientation of an object without spherical symmetry relative to space-fixed coordinate axis) at a given instant in time. This instant of time is not necessarily the same time at which the "snapshot" is generated. It is appreciated that just as in the physical "real" world different objects have positions and orientations that vary as a function of time, in the virtual world the positions and/or orientations and/or configurations and/or colors and/or other visual properties of objects (for example, gaming characters) vary as a function of time.
- the application server array 110 includes a client view generation engine 370 for generating, using the game engine, a snapshot of the virtual universe for a given gaming character in the virtual universe.
- This snapshot is generated relative to a state of the gaming character for a given game time t c and may depend, for example, on a position or orientation of the gaming character at a given time, or on other state information relating the gaming character (for example, eye strength or view privilege information) at the given time.
- each client device may be associated with a given gaming character.
- the client view generation engine 370 generates, for each gaming character, respective view data associated with the state of the gaming character at the given moment in game time t c .
- the view data may then be sent to the appropriate client device (i.e. associated with the given gaming character) by data streamer 352.
- FIGS. 2A-2C and FIGS. 3A-3C relate to the case where the game engine 312 resides on the server side and enforces 'game rules' - for example, 'game physics.
- view data is rendered on the client side. Rendering of view data of a virtual gaming universe on the server side is described in WO/2006/100664 which is not prior art relative to the present application. As noted before, WO/2006/100664 is incorporated into the present application by reference in its entirety.
- video output is rendered on the game server (i.e. in the application server array), obviating the need to render the video output on the client device.
- This may offloads some or even a significant portion of the load associated with providing the gaming environment from the client device to the application server arrays which are separate from the client devices.
- this may enable client devices which lack the resources provide a specific gaming environment (for example, because the client device lacks the computations resources to render "rich” video) to nevertheless, provide an interface to this gaming environment, and to allow the user to access this gaming environment using the data input (i.e. phone keypad, joystick, gaming pad) and screen of the client device.
- the client devices receive video 116 that is rendered view data from the application server array 112.
- application server array 110 includes a multi-video output rendering engine which renders the view respective view data.
- the rendered video is encoded by an encoder 350 and streamed to the client devices 112 by streamer 352.
- the video streamer 352 is operative to send a video file or files, and includes buffer management functionality.
- Each client device receives a stream of rendered respective video 116 from the application server array 110.
- each rendered stream of rendered video 116 is different, in accordance with a view (i.e. third person or first person) associated with the respective gaming character associated with the respective client device 112.
- encoded video (denoted with the 'prime' - i.e. 116') is served to each client device 112.
- encoded video (denoted with the 'prime' - i.e. 116') is served to each client device 112.
- Rendering is a process of generating an image (for example, a raster graphics image, for example, a digital image) from the representation of the virtual universe, and may be carried out in software, hardware or any combination thereof.
- This term is well known in the art, and as noted by Wikipedia, "may be by analogy with an 'artist's rendering' of a scene”.
- the 'rendering' may also be accompanied with calculation of special effects (for example, sound) within the application server. These 'special effects' may then be associated with the rendered video 116 (for example, by embedding special effect data within a single data video stream or video file which is sent to one or more client devices).
- special effects for example, sound
- the operations performed by the rendering engines may include any operation typically performed by a video rendering engine.
- light transport calculations for example, using a radiosity technique and/or a ray tracing technique
- video rendering operations may include one or more of the following (quoted, within minor modifications, from the Wikipedia article on "Computer Graphics: Rendering") of the following, in any combination: shading (i.e. determining how the color and brightness of a surface varies with lighting), texture-mapping (i.e.
- bump-mapping i.e. a method of simulating small-scale bumpiness on surfaces
- determining fogging/participating medium i.e. determining how light dims when passing through non- clear atmosphere or air
- shadowing i.e. determining the effect of obstructing light
- soft shadowing i.e. determining varying darkness caused by partially obscured light sources
- reflection calculations i.e. determining mirror-like or highly glossy reflection
- transparency calculations i.e. computing sharp transmission of light through solid objects
- determining translucency i.e. determining highly scattered transmission of light through solid objects
- determining refraction i.e. computing bending of light associated with transparency
- determining indirect illumination i.e.
- caustics i.e. a form of indirect illumination
- effecting a depth of field calculation i.e. objects appear blurry or out of focus when too far in front of or behind the object in focus
- effecting a motion blur calculation i.e. objects appear blurry due to highspeed motion, or the motion of the camera
- effecting a photorealistic morphing i.e. photoshopping 3D renderings to appear more life-like
- a non-photorealistic rendering rendering of scenes in an artistic style, intended to look like a painting or drawing.
- video rendering operations include but are not limited to color calculation, texture calculation, shadow calculation, shading (i.e. defined by Wikipedia as "determining how color and/or brightness of an object or surface varies with lighting"), alpha blending, depth testing, and rastering. It is appreciated that many rendering engines may effect one or more rendering operations not listed herein.
- rendering has been discussed in terms of rendering at least one 'single' image, it is appreciated that rendering typically this includes creation of an 'animation' of a plurality of video images.
- All of the aforementioned components of the application server array 110 may be implemented as hardware, software, or any combination thereof.
- either the rendering engine may be implemented at least in part in hardware, for example, using one or more graphic accelerator cards (for example, video cards or screen cards, for example, a plurality of graphics cards in parallel) that reside within the application server array 110.
- graphic accelerator cards for example, video cards or screen cards, for example, a plurality of graphics cards in parallel
- the communications link 114 is illustrated as a single bi-directional communications link, it is appreciated that in different embodiments, a plurality of communication links, including a link for uploading input data 118 to the application server array 110 and a link for downloading rendered streamed 116 to the client device 112, may be provided.
- a video compression engine may be provided on the server side, along with video decompression engines on the client side.
- a streaming server may be provided on the server side.
- the application server array 118 and the client device 112 may communicate through a switched network, including but not limited to a packet switched network and a circuit switched network (telephony network) or/and a multiple access link network.
- a switched network including but not limited to a packet switched network and a circuit switched network (telephony network) or/and a multiple access link network.
- the communication link between the devices is defined as a "switching network link.”
- the communications link 114 may be other than a switching network link.
- the client devices may communicate with the application server array using a "point-to-point" communications link (for example, a wireless point-to-point communications link) (for example, a communications link other than a switched or multiple access link communication).
- a "point-to-point" communications link for example, a wireless point-to-point communications link
- a communications link other than a switched or multiple access link communication for example, a communications link other than a switched or multiple access link communication.
- Exemplary communications networks include but are not limited to WiMax, Wi-Fi, Bluetooth, high performance wired or wireless networks such as WLAN (wireless LAN), WAN (including WWAM) other than a telephony network.
- WLAN wireless LAN
- WAN including WWAM
- the various components of the application server array need not reside in a single location, and may reside on a plurality of machines, either local to each other or distributed through a network.
- FIG. 3 single instances of each component are depicted, though this is not a limitation of the present invention.
- multiple instances of the input data aggregator 310 (and/or an input data aggregator 310 'distributed' through the network) is provided.
- the input data aggregator 310 may reside on 'host servers' distributed through the network and operatively linked to 'game servers' which host the application engine 312.
- redundancies for example, hardware redundancies
- a multi-player gaming server provided over a wide area network (for example different cities)
- Client devices then tend to receive video rendered in an application server that is more "local" within the network to the client device (i.e. a client device in Boston is more likely to be served video generated at an application server in Boston than video generated in Tel Aviv).
- data describing game commands and/or the state of the virtual universe and/or the state of the common data repository may be exchanged between application servers having redundant rendering engines 316. This may obviate the need to send band-width intense video over a wide area or between servers.
- these application server arrays may exchange data with each other in order to maintain integrity of the common application data structure 120 to provide a consistent virtual universe for gamers accessing each server.
- This data exchange could include forwarding the input device from each client device to each application server.
- the data exchange may include exchanging common application data structure (i.e. "synchronizing" the data of the redundant data structure residing on each server with each other).
- a 'future status' of the virtual gaming world may be predicted - for example, by the gaming engine 312 using the game rules or game logic.
- a predicted state of the virtual universe for some time in the future t r 2 is obtained - for example using the game engine or game rules/logic. For any given moment in time, it may be possible to "predict" the future state of the virtual world based on all game commands received and/or processed up until that time and/or the data stored in the common data repository 314.
- the client device By sending to the client device a 'future snapshot' rather than a 'current snapshot,' it is possible to reduce game latency - in the example of FIG. 5A, where a future snapshot of the game universe at time f 2 (rather than current time t r o) is generated, the game latency is reduced by (t r 2 - t r 0 ).
- the price for reducing game latency may be a loss of 'user-perceived game integrity' when a 'contradicting' snapshot of the virtual universe may be presented to the user.
- the virtual world includes an object moving along a certain trajectory (i.e. a path where the future position of the object may be determined as a function of time for at least a certain time interval) at a certain velocity.
- a certain trajectory i.e. a path where the future position of the object may be determined as a function of time for at least a certain time interval
- the position of the object is (x ⁇ ,y ⁇ ,z ⁇ ).
- the position of the object will be (xl,yl,zl).
- a 'negative latency' may be provided - i.e. the device receives at a point in time t ⁇ a description of a predicted view of the virtual universe for t r 3 where (t r 3 > t ⁇ ⁇ ).
- network latency may provide a significant contribution to overall latency.
- the network latency is assessed (for example, measured explicitly or 'guessed' or 'predicted' from available data - for example, relating to the physical or network location of a client device) to be 'large,' a 'further in the future' predicted snapshot will be sent to the client device.
- network latency is assessed to be 'smaller' the 'gap time' between the time of the predicted snapshot and the 'current snapshot' will be smaller.
- the 'gap time' or 'time in the future' is determined in accordance with an assessed one way and/or round trip latency between the server array and a given client device.
- the 'gap time' or a 'predicted image' associated with a game view associated with a 'first client device' is determined in accordance with an assessed latency (for example, measured or predicted) of a second client device different from the first client device.
- This second client device may be, for example, the client deice with the greatest latency or an average latency among a group of client devices.
- the 'gap time' (described below) or 'distance in the future' of the predicted snapshot may vary in time, as latency varies in time.
- step 1100 a snapshot of the virtual universe reflecting a "future state" of the virtual universe is generated at time f for a "virtual world status time" that is equal to t' + t gap .
- a t gap predetermined value may be determined in accordance with a frame rate of the video.
- the "frame rate” is the number of frames per second.
- the inverse of the frame rate is the time between frames (t f r ame ).
- t gap may be at least on the order of magnitude of the tg-ame (say, at least 0.2 * tg-a m e , or preferably, at least 0.5 * tframe)- hi one non-limiting example, 15 to 40 frames of video are served to a mobile device (mobile phone and/or PDA), and t &ame is between 25 and 65 milliseconds, and t gap is at least .
- typically t gap is approximately equal to tf ram e (for example, within 50%, or within 30% - i.e.
- a video frame is rendered 1120 (for example, using a rendering engine 316) and encoded streamed 1122 to the client device.
- certain game commands may be received and/or made available for processing which 'contradict' the snapshot generated in step 1100.
- it may be determined that a bullet aimed at a gaming character will follow a trajectory to kill the gaming character, and that as of the time t' + t gap , the gaming character will be dead.
- a gaming command with a directive to move the gaming character to a "safe" location i.e. where the bullet would not strike the gaming character
- a "safe" location i.e. where the bullet would not strike the gaming character
- the gaming engine processes this command by moving the gaming character to the "safe" location and allowing the gaming character to remain alive, this will contradict the video image that is send to one or more game users.
- steps 1102-1104, 1106 and 1108 of FIG. 5C This may be seen in steps 1102-1104, 1106 and 1108 of FIG. 5C. If a game command is received during the gap time 1102, it may be discarded 1106, and if is it determined 1104 that the game command contradicts the snapshot (i.e. snapshot of the "future state") generated in step 1100.
- the snapshot i.e. snapshot of the "future state
- the present inventor is disclosing that, surprisingly, it can be useful to forfeit a certain amount of "game integrity" (i.e. lost game integrity due to discarding of game commands) in order to provide a lower latency delivery of video to the screen of the client device.
- game integrity i.e. lost game integrity due to discarding of game commands
- game commands which contradict generated snapshot may be discarded so that the virtual world or universe is not modified in accordance with the discarded game commands. Nevertheless, this is not a limitation of the present invention.
- contradicting game commands may be used to modify the virtual world or universe in a manner in a way which contradicts the previously generated snapshot of the virtual world (i.e. which is rendered 1120, encoded and streamed 1122 to the client devices 112).
- a "future” snapshot shows that a game character has been killed by a bullet.
- This "future” snapshot is sent to the client devices. Nevertheless, after the future snapshot is generated, it turns out that game commands are received at a time t' ⁇ t ⁇ t'+tgap which moves the game character to a "safe" location, hi the NEXT rendered frame, the game character is alive.
- the user From the point of view of the user, the user first receives a video frame which shows the game character dead, and then a "contradictory" video frame which shows the game character alive (i.e. brought "back" to life).
- the term 'assessed latency' may to any one of: predicted latency (for example, according to relative physical and /or network locations of the client and server) and measured latency.
- the latency is measured and/or predicted on an ongoing basis, and the 'gap time' or 'amount of time in the future for which a prediction is generated' is adjusted dynamically in reaction to a change in the assessed latency.
- the latency can be different for different users.
- differential latency may adversely affect user-perceived game fairness.
- an onboard transmission delay engine 348 is provided on the server side (in the example of FIG. 6B, in a system where view data is rendered on the server side; in the example of FIG. 6A, in a system where unrendered data is served to the client devices).
- the game server is located in Tel Aviv Israel and client devices are located in Haifa, Israel and Boston, Massachusetts and the latency to the Boston device significantly exceeds the latency to the Haifa device.
- the transmission delay engine will delay the sending of view data to the Haifa device while view data to the Boston device will be sent immediately after it is generated - this could eliminate any unfair advantage enjoyed by the Haifa device (i.e. which would receive pertinent snapshot data earlier).
- This delay may be computed in accordance with assessed latency data for the various devices.
- the view data may be associated with an instruction to delay display on the client device.
- the view data (or rendered video frames) would be sent to the Haifa device with instructions not to display the images immediately - rather with instructions to delay display on the client side. This delay could be calculated on the server side in accordance with assessed differential latency and then sent to the client device.
- FIGS. 7A-7B describes an exemplary technique for generating snapshots of a virtual universe in accordance with some embodiments of the present invention.
- a 'later snapshot' of the virtual universe (i.e. one or more aspects thereof) may be generated by the game engine 312 from an earlier snapshot by applying game logic or game rules.
- a game rule related to motion of a game object 2250 within the virtual universe at a given velocity may be generated by the game engine 312 from an earlier snapshot by applying game logic or game rules.
- the virtual universe i.e. the state of one or more gaming objects within the virtual universe
- the virtual universe may be modified going forward in time (i.e. by gaming engine 312) not only by (i) applying game rules to so-called 'internal' data (i.e. state data of the object(s) of the gaming universe at the time of the earlier snapshot) but also by introducing into the virtual universe (i.e. when 'stepping' between the earlier snapshot and the later snapshot), 'external' data - for example, command data received from a user.
- 'internal' data i.e. state data of the object(s) of the gaming universe at the time of the earlier snapshot
- 'external' data for example, command data received from a user.
- FIGS. 7A-7C, 8 describe an exemplary technique for generating 'future snapshots' for reducing gaming latency in accordance with some embodiments of the present invention.
- FIGS. 7A-7B the various snapshots of the virtual universe are described on two axes- the X axis is the set of commands cumulatively applied (i.e. when introduced into the virtual gaming universe) by the gaming engine to generate a snapshot of the virtual universe and the Y axis is the game time t s .
- gaming commands are introduced into the virtual universe and the 'later' snapshot describes a state of a virtual universe with more 'external information' (i.e. game command data) introduced into the virtual universe than the 'earlier snapshot.
- the command set of snapshot P 2 is 'larger' than the command set of snapshot P 1 - i.e. the command set includes at least one 'extra command.
- snapshot P 2 contains 'extra information introduced from outside of the virtual universe into the virtual universe.
- snapshot P 3 contains at least one extra command in the game command set (i.e. total cumulative or historical set of gaming commands applied to the virtual universe for which snapshot P 3 describes at least one aspect).
- snapshots P 1 , P 2 and P 3 represent a 'current state' of the virtual gaming universe that is maintained in the common data repository 314 in the application server array 110.
- Snapshots F 1 and F 2 are predicted or 'future' snapshots.
- F 1 represents a 'predicted state' of the virtual universe at game time ⁇ 1 based on external information that has already introduced into the virtual universe when generating parent frame P 1 (at game time t g o) (for example, including at least game command set C 1 ).
- future snapshot F 1 may also reflect one or more additional commands (i.e. commands of command set c' ⁇ that are extra relative to command set C 1 ).
- snapshots P 1 , P 2 and P 3 represent a 'current state' and snapshot Fi may be referred to as a 'future' or predicted snapshot because: (i) the game time of snapshot F 1 is later than the game time of snapshot P 1 (i.e. snapshot F 1 is 'farther in the future' than the next 'representative' snapshot P 1 ; and (ii) the next snapshot P 2 thus has at least one extra piece of 'external information' introduced into the virtual universe (i.e. one extra game command in the game command set) that is not available to predicted or 'future' snapshot F 1 .
- snapshot F 1 describes a 'predicted future state of the virtual universe' before one or more subsequently-applied (and/or subsequently available) game commands are applied into or introduced into the virtual gaming universe, hi frame P 2 , the 'real' information is available that was not available or not used when making prediction of snapshot F 1 .
- FIG. 7 A two different snapshots (i.e. F 1 and P 2 ) are derived from P 1 - the predicted snapshot Fi and the next 'parent' snapshot P 2 (for example, the next 'current' snapshot).
- future or predicted snapshot F 1 is generated before snapshot P 2 . This is because it may be desirable to generate a snapshot using all 'external information' or 'command data' introduced into the virtual universe or available at a given time.
- the game command set of the c ⁇ future frame is identical with the game command set of the parent frame C 1 .
- the line between P 1 and F 2 is vertical.
- snapshot P 2 includes at least one 'extra' command that is not introduced into future snapshot F 1 .
- FIG. 7C describes several examples of where this is the case.
- the command set of F 1 includes a C(I) command (i.e. a type of command) and a C(2) command
- the command set of P 2 includes an extra type of command — i.e. C(3).
- the command set of P 2 includes an extra instance of a C(2) command.
- the command set of P 2 includes a type of command not found in the command set OfF 1 -
- the command set of P 2 includes an extra instance of a C(I) command.
- FIG. 5D described a situation where contradictory snapshots are sent from the application server array 110 to one or more client devices.
- the game command set of P 2 includes at least one extra command relative to the game command set of F 1 .
- the extra one more commands of command set C 2 does not contradict the snapshot OfF 2 .
- two gaming characters are fighting - character A and charater B.
- the 'extra command' relates to character B reloading his gun (but not firing) in a 'concealed' manner - i.e. not viewable by character A.
- the future snapshot F 1 does necessarily contradict snapshot P 2 from the point of view of character A showing a view of character B.
- by providing the 'future snapshot' it is possible to reduce game latency without adversely impacting the game integrity presented to the user.
- this example differs from the case discussed with reference to FIG. 5D.
- the predicted snapshot F 1 sent to the client device for presentation to a user contradicts the 'correct' version — i.e. it is impossible, according to the game rules of the game engine for character 'B' to be 'dead' at an earlier game time t s 2 but to be alive at a later game time ⁇ 1 (in this present example, the game engine does not permit 'resurrections' or at least not in this time frame).
- aforementioned 'future frames' or 'future snapshot' described in FIGS. 7A-7B are calculating from a predicted or 'future point of view' of a gaming character within the virtual universe.
- the future snapshot i.e. unrendered as in FIGS. 2A-2C or rendered as in FIGS. 3A-3C
- the game character for which it is desired to generate a snapshot has a position and orientation 816A at time t ⁇ o. It is predicted by the game engine 312 (i.e. using the game rules) that at time t g i the game character will have a future position and orientation (i.e. at time t s i) that is depicted by 816B.
- the 'field of view' or 'point of view' includes object 810 which has a position and orientation 810A at time t g o and is predicted (i.e. by game engine 312 using the game rules) to have a position and orientation 810B at time t g ⁇ .
- the object 810B is another gaming character other than gaming character 816.
- a future view (i.e. of snapshot F 1 ) of the gaming universe relative to use-controlled gaming character 816 is sent to the client device 112 which controls gaming character 816.
- This snapshot F 1 requires 'point of view data' about gaming character 816 itself since the view is computed relative to a future state 816B (i.e. predicted from game time t s 0 of the given gaming character 816 - it is evident that view of object 810 from the 'future' location/orientation associated with 816B may be different from the view of object 810 from 'present' location/orientation associated with 816A.
- both 816B and 810B must be determined.
- the future snapshot F 1 may be computed in accordance with a relationship between the future state of both the 'viewer' gaming character 816 and the 'viewed' object 810. In one non-limiting example, this relationship is determined in accordance with a future position and/or orientation of the 'viewer' gaming character 816 and the 'viewed' object 810.
- FIG. 9 related to physical position and orientation as examples of 'state data' of a gaming character and game object
- this is not intended as a limitation, and other examples of predicted 'future state data' for an object and /or gaming character may be used.
- a gaming character's eyesight i.e. the strength of the eyesite - i.e. how far the character may se
- a snapshot F 1 is associated with the two gaming 'healthy eyes' is generated and sent to the client device 112 F 1 for presentation to the user.
- the next future frame F 2 corrects this 'mistake.
- FIG. 8 provides a flow chart of an exemplary technique for computing frames or snapshots in accordance with some embodiments of the present invention. Exemplgary Implementation of Techniques for Reducing and/or Eliminating Latency
- the technique described in FIGS. 7A-7C; 8; 9 may be implemented using a plurality of processes - one 'fast process' for 'future predictions' and another 'slower process.' There may be any number of 'fast processes.' At different points in time, data may be copied between processes.
- This technique will be described in the next section for the particular example of a dual-core processor. It is appreciated that this is not a limitation in any way whatsoever - the processes may reside on a single machine or on multiple machines in any architecture. Furthermore, it is noted that the technique may also implemented using a single process.
- data indicative of the virtual world is stored in a memory accessible by both core processors (i.e. common data repository 314), and each processor writes, at different rates, respective results of rendering operations into a respective memory (i.e. memory containing rendered frames, or "rendered frames memory”) associated with each processor.
- one core i.e. operating at lower clock rate
- the other core i.e. operating at higher clock rate
- renders future frames for example, y frames ahead
- the slower core renders "present” frames (i.e. indicative of a present state of the virtual world of the common data repository 314) while the faster core renders "predicted frames" that give an approximation of the future and may be served to client devices to reduce rendering latency at the client device.
- the contents of the "rendered frames memory" of the slow and/or faster processor are forwarded to encoder 350 for encoding and streaming to the client device.
- the 'future' video periodically reverts to the 'actual' situation.
- the aforementioned technique of rendering a snapshot of a "future" frame may be useful for reducing user latency.
- the rate at which video frames are rendered is equal to the rate at which these video frames are served and/or presented.
- 250 frames per second may be served.
- 100 frames per second may be served.
- the present inventor is now disclosing for the first time that a user latency may be reduced by rendering individual video frames "faster" than that required by the frame rate by a given number, hi one non-limiting example, if 25 frames are served per second, it is required to render individual frames within 40 milliseconds.
- the present inventor is disclosing that if one renders individual frames within a shorter period of time than required by the frame rate, it is possible to reduce a user latency.
- individual frames which must be rendered in no more than 40 milliseconds, are rendered within, for example 20 milliseconds, or 10 milliseconds, or 4 milliseconds.
- This technique may be particularly applicable in a switching network and/or a wide area network and/or a multiple access network and/or a local network where it is desired to reduce user latency. Furthermore, this technique may be particularly applicable in systems where video frames need to be served at a "moderate" rate (i.e. 15-50 frames/second), for example, gaming systems playing on PDAs or cellular devices or devices in a cellular network.
- a "moderate" rate i.e. 15-50 frames/second
- a ratio between a reciprocal of said first number and said second number is at least a ratio number whose value is at least 2.
- the value of the ratio number is at least 5, or at least 7, or at least 10.
- the data representation of the virtual universe i.e. in the common data repository
- game commands or data indicative thereof
- game commands or alternatively, commands related to ANY application other than a game, including but not limited to ERP systems
- a "command cache” and not immediately “applied” to the virtual application universe for example, virtual gaming universe
- game commands may be received and first stored 1210 in a command cache (not shown) for a period of time (or until a specific condition is satisfied 1218). At that point, some or all game commands may be cleared 1212 from the command cache, and the virtual world or universe (for example, the virtual gaming universe) may be modified 1216 in accordance with the previously cached application (typically gaming) commands.
- game commands may be filtered 1214, or contradictory game commands may be resolved before the virtual world or universe is modified in accordance with "surviving" game or application commands.
- a command to move to the left and a command to move to the right may 'cancel each other out' (or contradict) and be filtered.
- virtual world or universe i.e. gaming universe or world
- application commands i.e. game commands
- cache delay i.e. amount of time the commands are stored in the cache
- an application server array is maintained in Israel, and there are client devices in Israel and in the United States. According to this example, the time it takes the application server array in Israel to receive data indicative of game commands from client devices located in Israel is much less than the time it takes the application server in Israel to receive data indicative of game commands from client devices located in the United States. If the virtual gaming universe were to be modified in a "just in time manner" as game commands are received at the application server, users of client devices in Israel could enjoy an unfair advantage - their 'reactions" to the game situation would be received faster.
- the cached commands may then be handled "as a group" - for example, by pre-processing before modifying the virtual world according to the cached game commands.
- the time that game commands were generated may be estimated or determined (for example, by estimating a latency and/or by sending the game commands with a time stamp), and "previously generated” (or game commands estimated to be previously generated) may be given priority - i.e. the virtual world may be modified first using game commands with "priority.”
- an order in which application and/or game commands are "applied” to the virtual universe is determined in accordance with the game command client device network latency.
- the device network latency of a given client device 112 is the latency and/or estimated latency between a given client device 112 (or the estimated latency) and the application server. It is noted that this may vary in time as a function of the quality of the network connection between the client device and the application server.
- the "game command client device network latency" of a given game command is the device network latency (real latency or estimated latency) of the device that generate the given game command at the time the given game command was generated.
- the order in which game commands are “applied” to the virtual universe is not necessarily the order in which these game commands are received at the client device.
- condition 1218 is based on pre-determined parameters (determined, in accordance with network parameters). Alternatively or additionally, the condition 1218 may be determined dynamically (for example, in accordance with the time stamps of the received commands), and may also vary as a function of time. In one example, as network congestion increases, the timing condition requires clearing of buffer and application of commands to the virtual world or universe after a longer period of time.
- pre-determined parameters determined, in accordance with network parameters.
- condition 1218 may be determined dynamically (for example, in accordance with the time stamps of the received commands), and may also vary as a function of time. In one example, as network congestion increases, the timing condition requires clearing of buffer and application of commands to the virtual world or universe after a longer period of time.
- Irrelevant game commands may include commands that are generated at a first point in time and received at the application server a later point in time, but have become “irrelevant” in the interim.
- An irrelevant game command is a command that a user sends when a user's game character is alive, but by the time the game command is received at the application server, the user's game character is dead (the user's character was dead or 'destined' to be dead at the time the user generated the game command).
- a new protocol is provided (and methods and systems for implementing his protocol - i.e. on the client or serer end - is provided) where game commands are associated with a frame for which they are generated. This will allow for a greater sense of 'fairness.
- FIG. 11 provides a block diagram of an exemplary multi-player interactive gaming system in accordance with some embodiments of the present invention.
- the server array streams video streams 116 adapted in accordance with the display/graphics capabilities of the client device 112.
- not every client device 112 has identical graphical display capabilities/resources.
- the plurality of client devices includes at least two client devices (i.e. client 112 A and client 112N) which are configured to have different display capabilities.
- clients 112 A and 112N are different models of cell phones.
- client 112A may be a "high end” cell phone with high pixel resolution (and configured to display a high number of frames per second) and a larger screen while client 112N may be an "entry level” cell phone with more primitive display features.
- clients 112 A and 112N may be identical devices but client 112 A is configured (for example, in accordance with user preferences) to provide more sophisticated display capabilities, while client 112N is configured to provide more primitive display capabilities (for example, in order to conserve battery power).
- client 112 A is a cellular telephone and client 112N is a notebook or desktop computer.
- Certain individual users play the same game using multiple client devices - for example, using the cellular telephone while traveling on a bus or train, and the desktop or laptop when they arrive home or at the office.
- each client device 112 the respective encoded video stream 116' streamed by streamer 352 to each client device 112 is provided or "customized" in accordance with the respective display characteristics of each client device 112 that receives the video stream 116. Rendering Individual Video Streams in Accordance with Display Characteristics of the Client Device
- the multi-video output rendering engine is operative to render individual video machine in accordance with display characteristics of the client device.
- data indicative of target device display capabilities may be provided to the multi- video output rendering engine 316A.
- multi- video output rendering engine 316 is operative to render each rendered video stream 116 in accordance with data indicative of the display characteristics of the target respective client device that is to receive the respective rendered video stream 116.
- Exemplary device display characteristics include but are not limited to a device resolution, a device screen refresh rate, device contrast parameters, color parameters (for example, a number of colors), screen size and/or aspect parameters (for example, screen size or ratio between horizontal and vertical dimensions of the screen))
- data indicative of the respective display characteristics of each client device is communicated to the multi- video output rendering engine 316A, which generates each rendered video 116 in accordance with the received video.
- the rendered video comprises a plurality of graphics objects all of which are not assigned the same "importance.” For example, in a combat game between avatars, a user's avatar is could be designated a more "important" object than a background landscape object. In another example, a space ship needs to dodge certain asteroids in order not to be eliminated, and the individual asteroids are designated "important," for example, because of the influence wielded on the outcome of the game.
- larger graphics objects are not necessarily more important than smaller graphics objects.
- certain objects will not be rendered by the output rendering engine 316 (for example, less "important" objects)(or will be rendered, for example, with less contrast or fewer colors) into the rendered video 116.
- one or me of the following may be carried out (any combination of the following): a) selecting a color of the graphics object in accordance with the target client device display characteristics.
- a "sophisticated" client display displays a given object as pink (i.e. and rendered video for the sophisticated client display is generated with the object being pink), while for a more primitive display device with a screen for which it is more difficult to discern details, the object is rendered as a red object because red is easier for a user to see.
- an object size i.e. relative to the screen size - i.e. the "proportional size" of the graphics object in accordance with the target client device display characteristics.
- a "sophisticated" display displays a given object as proportionally small (i.e. and rendered video for the sophisticated client display is generated with the object being proportionally small), while for a more primitive display device with a screen for which it is more difficult to discern details, Hie object is rendered as proportionally larger object because is easier for a user to see the larger object.
- selecting a location of the graphics object in accordance with the target client device display characteristics i.e. relative to the screen size - i.e. the "proportional size”
- a "sophisticated" client display displays a given object an object at the edge of the screen (i.e. and rendered video for the sophisticated client display is generated with the object being at the edge of the screen), while for a more primitive display device with a screen for which it is more difficult to discern details, the object is rendered closer to the screen center because is easier for a user to see.
- a display decision of whether or not to display (or not to display) the graphics object in accordance with target client device display characteristics i.e certain objects are only rendered for video designated for more sophisticated devices, while more primitive devices would not display the object at all in order to reduce the number of decisions
- a dimensionality display decision for said graphics object in accordance with target client device display characteristics for example, for a more sophisticated display device the object is rendered in 3D and for the more primitive display device the object is rendered in 2D
- f) effecting an internal detail display decision for said graphics object in accordance with target client device display characteristics for example, for more sophisticated devices, certain internal details of the object are displayed and video is rendered accordingly, while for more primitive device, fewer internal details of the object are displayed and video is rendered accordingly - in one example, a person is shown "abstractly" on the primitive device while the more sophisticated device shows certain internal details of the person (for example, fingernails, eyebrows, etc); g) location of an object on the screen (i.e certain objects are only rendered for video designated for
- a "primitive display” typically refers to a display with a smaller screen, and a more sophisticated display typically refers to a display with a larger screen. Nevertheless, embodiments where parameters other screen size determine “primitiveness” or “sophistication” of a display device are also contemplated.
- the most important parameter for determining if a client device is 'primitive' device (and/or has a primitive display) or is 'sophisticated' is display screen size.
- streamer 352 in communication with client device 112, detects the display characteristics and/or target screen capabilities of the device. For example, upon session initiation (including but not limited to session initiation protocol (SIP), H.323, RTSP (real time streaming protocol).
- session initiation including but not limited to session initiation protocol (SIP), H.323, RTSP (real time streaming protocol).
- SIP session initiation protocol
- H.323, RTSP real time streaming protocol
- this data may be available from an external database.
- a query is sent to a database of the telephone service provider.
- an "internal database” may be maintained containing data indicative of client device display characteristics for a given user or subscriber.
- an ad-hoc query may be sent to the client device.
- a communications protocol between the server array HOA and the client device 112 may include a query sent to the cent device of device display characteristics.
- the picture details are usually reduced proportionally.
- Other (very unimportant) details could be reduced more than the overall reduction, even to extinction.
- Some details like brightness can be increased.
- data indicative of "object importance” is stored in the common data repository 314.
- the multi-vide output rendering engine 316 has a threshold of Object importance' required in order to render a given object into the rendered video stream 116.
- this threshold may vary in accordance with the target device's display characteristics.
- the minimum Object importance' required may be relatively low, allowing for more objects to be rendered than for a 'primitive' display device, where the minimum object importance threshold may be higher.
- the contrast for a rendered object may be determined in accordance with an Object importance' score stored in the common data repository 314 and the data indicative of device display characteristics.
- the method enables getting a picture on an inferior screen while keeping the important details visible. Moreover, as the target screen is changed, picture could be readjusted to include more or less (important) details. User will get the best visual service that can be done. Due to personal calculation for every player, a game with different types of handsets can be performed and even a user can change its handset during a session and still get the right video to support best (rendered video) available quality.
- This functionality will eliminate the need for creating new version for every game for the purpose of porting a PC game to Cellular devices. Additional Techniques of Providing an Electronic Gaming Environment
- each client device may be associated with a respective gaming character.
- the gaming character associated with a specific client device may change, hi one example, the game is a single player or multi-player soccer game, and gaming characters are soccer players.
- a certain user's gaming device may be associated with one specific gaming character (a particular soccer player, such as a goalie).
- certain user's gaming device may be associated with a different specific gaming character (for example, an attacker).
- This "association switch” may be triggered, for example, in accordance with a user request, or by the gaming engine (for example, in accordance with the position of the ball on the field).
- Television broadcasts are well known in the art. For example, millions of viewers every day watch various sporting events on their televisions. These sporting events are usually pre-scheduled and presented as part of an "entertainment package" or "show format" to the viewers. Typically, the identities of the competitors of the sporting event are publicly disclosed before the event in order to draw viewers. Typically, competition is paused at periodic intervals in order to broadcast various commercial messages. After each commercial message, broadcast competition is resumed.
- the present inventor is now revealing for the first time that it is useful to make available one or more views of the virtual gaming universe (of a single player and/or multi- player game) to one or more spectators.
- specific games may have a specific starting time and/or ending time which is pre-scheduled and made available to spectators and/or prospective spectators, though this is not a limitation.
- an announcer for example, a voice announcer
- the user can control whether or not an audio announcer is provided, or configure properties of this audio announcer.
- there may be different audio announcer "personalities” for example, a Howard Cossell personality, a Jon Madden personality, etc).
- single-player or multi-player video games may be broadcast and/or distributed (for example, as “television programming", over the internet, radio broadcast, distribution over a telephony system, cable or any other means) to a plurality of viewers.
- the identities of the competitors are publicly disclosed before the event.
- the single multi-player video game competition may be "paused" for commercial messages, and resumed after the commercial messages.
- this mutli-player gaming system is a gaming system disclosed herein, though other embodiments are contemplated, hi some embodiments, this multi-player gaming system is a "low latency system" for example, a low latency system where players and/or spectators are physically distributed over a wide geographic region or communicate through a wide "network" region. Alternatively or additionally, one or more players and/or spectators may be situated substantially in a single geographic and/or network location.
- spectators are charged a price to view the game or advertisers are charged a price to present messages associated with a particular game.
- This price may be computed in accordance many factors, such as the type of game, the players of the game (either gaming characters such as avatars or in accordance with the human users controlling the gaming characters).
- the spectators are passive and are only provided with a view of the virtual gaming universe without the ability to influence events within the gaming universe (for example, without the ability to control gaming character).
- the spectators are provided with a mechanism for exerting control limited in some degree (usually an "indirect” control via the players, but also there is a possibility of direct control) over the "physical" events within the game universe.
- this is a “service” (for example, a pay service or a free service) that may be available "on demand” instead of at a pre-determined time.
- a service for example, a pay service or a free service
- the participants are located in a single location. Alternatively, they may be dispersed at a number of locations, for example, in different cities or different countries. Both individual competition as well as competitions with teams may be used. In some embodiments, there is no "competition" per se.
- individual players may participate using a traditional "computer" as a client device.
- individual players may participate using a mobile device (i.e. telephone and/or PDA) as a client device.
- a mobile device i.e. telephone and/or PDA
- league competition or tournament competition may be broadcast.
- a particular "spectator interface” allowing the spectator to choose view properties or other properties is provided.
- fans who attend a live event may have some limited control over the movement of the players and/or over events that transpire within the game.
- spectators may encourage a player to exert himself to a greater extent, thus “psychologically” increasing the resources (i.e. strength, stamina) available to that player.
- spectators may "root against a player” concomitantly decreasing the resources available to the player.
- fans may pass important information to the players of a game or event.
- the fans may reveal to a player or team the movements of an opponent or may other may reveal the existence of other conditions or events within the game or relevant to the game (for example, a warning that a certain patch of grass is slippery, etc).
- fans for example opposing fans
- the aforementioned examples relate to the case where a spectator may "indirectly” influence events within the game.
- the fan may "directly” generate events within the physical game universe. For example, a player may throw a bottle on the field, or may run out onto the field generating an "interference"-like event.
- Cubs fan Steve Bartman situated near the perimeter of the playing area (i.e. in the "stands"), deflected a foul ball off making the ball uncatchable.
- video game "spectators" viewing a game through a video screen of a client device may influence events within the gaming universe, for example, may modify an "intrinsic" property of one or more players (for example, strength, stamina, etc), and/or may increase or reduce the amount of information available to all players or a specific players or a specific group of players.
- the fan or spectator may be associated with a certain physical position or region outside of the "official" region of play (virtual "stands”).
- certain players in one region of the "stands” may pass information available only to players on the "game field” of the virtual universe in physical proximity (for example, in virtual “shouting region” of the position of the fan in the stands) to the fan within the “virtual stands” or “spectator region” of the gaming universe.
- the spectator is restricted to the “spectator region” though there are examples where a spectator may enter the "gaming region” (for example, a virtual fan “running out onto the field”).
- different fans may have different abilities to influence events in the game (typically, to "indirectly” influence events, but not limited to indirect influence) depending in a respective position of the spectator or fan within the spectator region.
- fan influence is not a limitation of the present invention, and embodiments where the fans are "purely passive" spectators with no influence over what transpires within the virtual universe are also contemplated. In some example, a certain limited group of fans are afforded more influence than other fans (who are allow less influence or no influence).
- the physical analogue of this situation is a baseball game where the spectators with the "good seats” are in “direct proximity” of the playing field and can wield more influence (through stronger “cheering ,” passing information that will be heard by players, direct interference) while players with “inferior seats” (for example, a higher level within the stands) are afforded less influence.
- fans may "buy” more influence than other fans are also contemplated.
- This influence may be purchased by effecting a payment, of "real cash” or its equivalent (i.e. digital cash, credit card, etc) or by payment of other types of "points.”
- the players of the video game may participate sequentially, rather than in head to head competition.
- One example would be virtual figure skating.
- the spectators may rate (or vote on) various qualities of the game players (for example, qualities of a virtual swimming pool diver or figure skater).; In some embodiments, this may be done in accordance with a "pay model” where spectators who pay more are afforded more "votes” or a more sophisticated “rating influence.”
- the system is configured (or a method or code is provided) to allow spectators to gamble on various outcomes of the multi-player game or virtual universe.
- various "odds" may be updated, for example, in real time, in accordance with events of the multi-player game.
- decoding and displaying the pictures requires a certain amount of computational resources.
- handling of I frames is more resource intensive than handling of B or P frames.
- the decoder periodically receives an I frame, there thus may be a periodic "spike” in the amount of computational resources required to handle the I frame.
- P frames or other "light frames” representing changes in an image rather than the entire image
- the amount of computational resources required could be less.
- the 'spatially partial' I frames are generated by breaking up a given I frame into a plurality of I frames by "splitting" the I frame into different constitutive pieces. Each piece are frame including a partial I frame may be sent over a network.
- the amount of resources for example, computational and/or network resources
- the amount of resources required to handle each frame comprising a spatially partial I frame(s) may be less than the amount of resources required to handle the 'original' I frame before splitting into 'pieces.
- the screen is divided into four different regions (see FIG. 12).
- a first I frame limited only to data of region A 852 is then sent.
- a second I frame 856 limited only to data of region B is sent.
- a third I frame limited only to data of region C 860 is sent.
- a fourth I frame limited only to data of region D 864 is sent.
- FIG. 13 A provides an illustration of exemplary 'spatially partially' I frames or partial I frame.
- Frame 870A is an I frame 890 in region A 852 but is 'dormant' in other regions (i.e. does not provide video data).
- Frame 870A is an I frame 890 in region A 852 but is 'dormant' in other regions (i.e. does not provide video data).
- frame 870B is an I frame 892 in region B 8526 but is 'dormant' in other regions (i.e. does not provide video data), and so on.
- the frame is described as F followed by a square bracket. If, for a given frame, if within the square bracket the letter "I" appears with a subscript, the given frame is at least partially an I frame. In particular, the frame is partially an I frame in the region (i.e. A-D) of the subscript. It is noted that the frame can be partially an I frame in more than one region specified in the square brackets.
- a multi-reference P frame that includes: a P frame portion encoded relative to distinct at least partially spatially I frames.
- the given frame is at least partially an P frame.
- the frame is partially a P frame in the region (i.e. A-D) of the subscript. It is noted that the frame can be partially an P frame in more than one region specified in the square brackets.
- FIG. 13 A an illustration of a so-called multi-reference P frame is provided - in contrast with 'conventional' P frames which are encoded relative to a single I frame (and optionally one or more previous P frames that succeed the single I frame), the multi-reference P frame are encoded relative to multiple I frames (in the example of FIG 13 A, all of 870A; 870B; 870C; and 870D (and optionally one or more P frames that come after the I frame).
- FIG. 13B provides a flow chart of an exemplary techniques for 'splitting' a single I frame into multi-I frames. By breaking up the 'heavy' I frame, this may be useful for 'smoothing' the amount of computer resources (i.e. CPU and/or network) for handling the heavy I frames.
- computer resources i.e. CPU and/or network
- the partial I frames obtained by splitting an input partial or complete 'input' I frame are referred to as 'siblings' of each other since they originate from the same 'input frame' (i.e. in a single location in the 'input frame' ordered sequence)
- FIG. 13C provides a description of an exemplary ordered sequence of I frames and P frames according o the technique of FISGS. 13A-13B.
- an uninterrupted sequence of non-I frames i.e. frames 1526-1534
- frame 1530 is encoded relative to a previous P frame 1526 as well as still earlier partial I frames (i.e. frames 1510-1522)
- the constitutive partial P frames of frame 1530 are 'second generation' - i.e. encoded relative to and thus 'descending' from 'first generation' P frames (i. Constitutive frames of 1562).
- the generation of a given spatially partial P frame is denoted by the numerical superscript after the letter "P.”
- the constitutive partial P frames of frame 1534 are 'third generation'.
- every frame of 1526-1534 is generationally homogenous - i.e. every P constitutive spatially partial P frame has the same superscript for each given frame.
- FIGS. 13A-13C One shortcoming of the technique described in FIGS. 13A-13C is when the 'dormant' frames are handled, there are regions of the frame that are not updated. Thus, unfortunately, there may be a sacrifice of video quality.
- the present inventor is now disclosing for the first time that it is partial to provide what is defined as hybrid frames (see FIG. 14A) where one portion of a given frame is a spatially partial P frame and another portion of the given frame is a spatially partial I frame.
- one salient feature provided by certain (but not all) hybrid frames is co-resident partial P frames that are encoded relative to different partial I frames that are not siblings of each other - one example of this is given in FIG. 14B (see, for example, frame 1578 of FIG. 14B which is includes a first constitutive spatially partial P frame 1571 encoded relative to partial I frame 1570 and a second constitutive spatially partial I frame 1573 encoded relative to partial I frame 1583 - noted that partial I frame 1570 and a partial I frame 1573 are NOT siblings.
- partial I frame 1570 is derived from a first input frame 1670 and partial I frame 1574 is derived from a second input frame 1674 - thus 1570 and 1583 are not siblings.
- FIG. 14B Another salient feature provided by some frames in FIG. 14B is that some frames (i.e. frames F3-F6) are not generationally inhomogeneous — note the presence of different P- generation subscripts within the same frame as opposed to FIG. 13 C.
- an ordered sequence 1710 of frames may be encoded using hybrid P-frames-I frames are generationally inhomogenous at least partially P frames. This may be carried out using a frame encoder 1714 implemented using any combination of hardware and/or software.
- any described element or component may be implemented using any combination or hardware and/or software.
- the ordered sequence of encoded frames 1718/1730 of encoded frames may be decoded by a frame decoder 1734 as shown in FIG. 15. Additional Discussion Relating to FIGS. 13-16
- an area of a region for a partial I frame is at least 10% and at most 50% of the area of the frame, though this is not a limitation.
- each partial frame can include information of a dilute picture e.g. every tenth pixel in a given row or column for a given partial I frame. According to this example, different partial I frame would use different pixels of the "dilute picture.”
- partial I frames may be sent in the same video sequence as “full I frames.”
- the frames are 'dynamic frames' - the borders by the partial P portions and/or partial I portions and/or dormant portion are not 'fixed' as in FIGS. 13-15 but change in 'time' (i.e. between frames and are thus dynamic).
- criteria for deciding which objects in the video are 'important' are established and regions where this object is located may be preferentially designated as partial I frame regions - i.e. even if this object is of arbitrary and possibly non-constant shape and even if this object 'moves' between frames and 'over time.'
- this presently disclosed technique may be useful in a constant bit rate transfer network.
- spikes in required bandwidth associated with "heavy" I frames may be problematic, and the solution presented herein may be helpful for smoothing required bandwidth.
- one or more advantages may include, in some embodiments, controllable bit rate and/or graduated recovery process. Discussion of FIG. 17
- video encoding using a presently-disclosed technique for encoding video is sent to a client device 112 (for gaming video or any other video other than gaming video - for example, 'movies').
- client device 112 which includes a host 1400 (for example, a mobile telephone or any other host device) may not be capable of decoding the video using the onboard CODEC(s) (i.e. typically implemented in hardware).
- a host device i.e. not operative to decode video
- the host device 1400 is capable of communicating with a flash memory card or other peripheral using a 'standard' device protocol - for example, a USB, MMC or SD-type protocol.
- a 'standard' device protocol for example, a USB, MMC or SD-type protocol.
- the peripheral 1410 device may 'fool' the host 1400 by presenting itself as a 'standard' peripheral device recognizable by host 1400 - for example a flash memory card.
- a 'standard' application 1408 which attempts, using the standard flash memory card protocol, to send S1454 the received video stream to the 'flash card' (for example, using a 'stream send' or 'file save' command).
- the host 1400 may be completely unaware of what transpires on the peripheral 1410 device and 'believes' that it is (for example, using 'standard' software application 1408): (i) sending S1454 digital content (i.e. as a stream and/or file) to the coupled 'flash card'; (ii) retrieving and playing back S1478 the 'saved' media content (i.e. either not encoded or encoded using a 'standard' protocol).
- the device may decode (i.e using a presently disclosed technique for decoding media content) the received video content as described in FIG. 17.
- an element means one element or more than one element.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Processing Or Creating Images (AREA)
Abstract
The present invention relates to systems and apparatus for providing gaming services (for example, gaming services provided via a computer network) and to systems and apparatus for encoding and/or transmitting and/or decoding electronic video content. Some presently disclosed techniques may be particularly useful for reducing and/or eliminating gaming latency.
Description
METHOD AND APPARATUS FOR PROVIDING GAMING SERVICES AND FOR
HANDLING VTOEO CONTENT
FIELD OF THE INVENTION
The present invention relates to systems and apparatus for providing gaming services (for example, gaming services provided via a computer network) and to systems and apparatus for encoding and/or transmitting and/or decoding electronic video content. Some presently disclosed techniques may be particularly useful for reducing and/or eliminating gaming latency.
BACKGROUIVD AND RELATED ART
WO/2006/100664, of the present inventor, discloses systems, methods and computer readable code for providing a single player and/or a multi-player gaming environment. Each user is provided with a client device having an input module and display screen. An application server array receives data indicative of game commands from each client device. Residing in the application server array is a game engine which maintains a virtual gaming universe including one or more of user-controllable gaming characters. The gaming engine is operative to associate each user-controlled gaming character with game commands received from a respective client device of the plurality of devices. At the application server array, one or more streams of videos are rendered. In some embodiments, each video stream represents a view associated with a different game character. Each video stream is sent over a communications link to a respective client device. In some embodiments, the communications link is a switched network, such as a packet switched network of a circuit switched network.
It is noted that the WO/2006/100664 is incorporated into the present disclosure by reference in its entirety. Citation of the aforementioned reference (or any reference) does not constitute an admission that the cited reference is prior art.
The present disclosure relates to improved systems and methods for providing gaming services and to improved techniques for encoding and/or transmitting and/or decoding video. It is noted that although the presently disclosed teachings are applicable to the systems described in WO/2006/100664, this should not be construed as a limitation, and it is noted that the presently disclosed teachings are applicable in a variety of systems including those not described in WO/2006/100664.
It is noted that when implementing a system where (i) a gaming engine for multi- player game resides on the server-side; and (ii) video content descriptive of the virtual gaming universe is rendered on the server side and streamed to client devices, it may be desirable to address one or more of the flowing issues: (i) game latency; (ii) game fairness issues in a system where server-client game latency may be present; (iii) video streaming, for example, via a wide-area network; (iv) rendering video appropriate for different client devices each having different device parameters; (v) general issues related to improving the gaming experience; (vi) jitter related to variations in latency. Game Latency
There is an ongoing need for reducing server-client latency in systems where video is rendered at the server side and/or a view of a virtual world is generated at a server side.
In the example of FIG. 1, a game engine generates a snapshot S (to) (either rendered or unrendered) of a virtual gaming universe for a given time (for example, t0) and sends this snapshot to a client device (for example, a mobile telephone or a personal computer or any other device having video display functionality). Unfortunately, due to client latency, this snapshot is not immediately displayed to the user — rather, the snapshot generated at 'real' time tro is only displayed at a later time tri due to 'game latency.' In particular, it is noted that 'game latency' may come from one or more of a number of sources, including but not limited to (i) game-engine latency associated with computing the updated state(s) of the virtual world or universe; (ii) rendering latency associated with rendering a particular view of the updated virtual world or universe (iii) encoding latency associated with encoding the rendered video (iv) network latency associated with streaming the encoded video from the server-side to a given client device.
In the example of FIG. 1, the latency is the difference between t\ and tro.
Thus, a greater game latency may, in some situations, provide for a less responsive gaming experience. Even worse, in some situations, the game latency may adversely influence 'game fairness' as will be explained in the next paragraph with reference to a particular example.
In this example, two gaming characters are fighting each other to the death. Each gaming character is controlled by a respective user client device which sends commands - whichever client device can react to a situation within the gaming universe faster will enjoy an unfair advantage.
In this example, the network latency may vary among different client devices, and some client devices may experience very different latency than other client devices. In this
example, the game server is located in Tel Aviv Israel and client devices are located in Haifa, Israel and Boston, Massachusetts. According to this example, an updated description of a virtual world (for example, a next 'frame') arrives at the Haifa-based client device hundreds of milliseconds before the same description arrives at the Boston-based device. In this example, the Haifa-based client is thus allowed to react to the updated situation in the virtual universe at an earlier time, giving the user of the Haifa-based client device an unfair advantage. Thus there is an ongoing need for minimizing game latency associated with multi-player gaming systems (for example, provided in a wide-area network) and for handling fairness issues associated with differential client latency.
There is an ongoing need to for apparatus and techniques which minimize the latency and thus provide a more realistic and responsive gaming experience.
There is an ongoing need to for apparatus and techniques which allow for handling of game latency in a manner that provides more 'game fairness.' Multi-User Games Provided Using Different Types of Client Devices
One feature disclosed in certain embodiments of WO/2006/100664 is rendering of views of a virtual gaming universe on the 'server side.'
To date, most multi-player and many single-play games are marketed as 'multi- platform' games where the user can play the game from a plurality of platforms. In one example, this allows the game to be played, for example, using different types of PDAs or cellphones. For example, some users among a user population operate more "sophisticated" client devices (PCs, 'advanced' cellphones, PDAs). These users expect a "richer" gaming experience that utilizes the graphics and/or sound capability of the client device — for example, a game that displays more and richer landscape features (or more features of certain game objects, or displayers a game object or landscape feature with greater contrast), that utilizes a higher device screen refresh rate for a "smoother" experience, etc. Other users operate more "primitive" client devices and require game software that is less resources- intense (e.g. graphics resources, display resources). In another example, a single user may want to play a given game using his PDA when "on the road" and using his desktop computer when in the "office." This user expects a richer gaming experience using the desktop computer.
Unfortunately, development of multi-platform multi-player or single-player games is extremely expensive. The game must be "tweaked" for each platform. Thus, in one example, certain objects, which might be important for conducting the game, are not displayed on a less-sophisticated display device, and developers must develop, debug and maintain a version
of the game software that does not display these objects, or that displays the objects with less contrast.
It would be highly desirable to have systems and methods that facilitate porting of single player and/or multiplayer games between multiple display platforms and/or multiple devices without loosing critical graphical details in the various views.
The present inventor has discovered that certain features of the system and method in WO/2006/100664 may be adapted for providing a technique or providing multi-user Techniques for Handling Encoded Video
The MPEG-2 Draft Standard provides temporal redundancy reduction through the use of various predictive and interpolative tools. In many systems, three types of frames or pictures are used: "I" Intrapictures, "P" Predicted Pictures, and "B" Bidirectional Interpolated Pictures.
The "I" Intrapictures provide moderate compression, and are access points for random access, e.g., in the case of video tapes or CD ROMS. As a matter of convenience, one "I" Intrapicture is provided approximately every half second. The "I" Intrapicture only gets information from itself. It does not receive information from a "P" Predicted Picture or "B" Bidirectional Interpolated Picture. Scene cuts preferably occur at "I" Intrapictures.
"P" Predicted Pictures are coded with respect to a previous picture. "P" Predicted Pictures are used as the reference for future pictures, both "P" and "B" pictures.
"B" Bidirectional Coded pictures have the highest degree of compression. They require both a past picture and a future picture for reconstruction. "B" bidirectional pictures are never used as a reference.
Motion compensation goes to the redundancy between pictures. The formation of "P" Predicted Pictures from "I" Intrapictures and of "B" Bidirectional Coded Pictures from a pair of past and future pictures is a key feature of the MPEG-2 Draft Standard technique.
Thus, typically these pictures are sent to a display device as a sequence, wherein after sending a single I picture, a number of B or P pictures may be sent. Typically, the I pictures are sent periodically to provide a "refresh."
The present inventor has noticed that there are some situations where the aforementioned scheme for encoding and decoding video content may not be optimal. Some situations relate to certain implementations of certain systems described in WO/2006/100664, though this is not to be construed as a limitation to any currently- disclosed technique, and is not to be construed as a limitation to any technique disclosed in WO/2006/100664.
There is an ongoing need for improved techniques for encoding and/or decoding electronic video content. SUMMARY OF THE INVENTION
It is now disclosed for the first time a server-based system for providing gaming services, the system comprising: a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe including at least one user- controllable gaming character 816, said gaming engine operative to associate a given said gaming character 816 with game commands of a given said client device 112, said game engine 312 being operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to: i) derive, from a first said snapshot 2100 associated with a first game time tg 0 2102 and a first game command set C0 2104, a second snapshot 2200 associated with a second game time tSj2202 and a second game command set C1 2204; and ii) derive, from said first snapshot 2100, a third snapshot 2110 associated with a third game time tg 2 2122 and a third game command set c2 2204, wherein: i) (%- tso) <= (tg r tg o); ii) said third game command set C2 2204 includes at least one extra game command relative to said second game command set C1 2204; iii) said game engine is operative such that said deriving of said second snapshot 2200 includes:
A) predicting a future state 816B of said given user- controllable gaming character 816 for said second game time t8!2202, said future state 816B being different from a current state 816A of said given user-controllable gaming character;
B) predicting a future state 810B of at least one object 810 in said virtual gaming universe other said given user-controllable gaming character 816 for said second game time ^2202;
C) computing a relationship between said predicted future states 816B and 810B.
According to some embodiments, the system further comprises: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character.
According to some embodiments, said third snapshot contradicts said second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112.
According to some embodiments, said game engine 312 is operative to associate each said 112 client device of a plurality of client devices with a respective said gaming character, and to derive, for said respective gaming character, a respective said second snapshot from said first snapshot.
According to some embodiments, the system further comprises: c) a data streamer operative to send to said each client device 112, said second respective snapshot associated with said respective gaming character. According to some embodiments, said third snapshot contradicts said respective second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112. According to some embodiments, the system further comprises: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character associated with an indication of a latency- based display delay, said latency-based display delay derived from an assessed latency of said client device.
According to some embodiments, the system further comprises: c) a transmission delay engine 348, wherein said data streamer and said 352 and said transmission delay engine 348 are operative to delay transmission of said second snapshot in accordance with an assessed latency of
According to some embodiments, said transmission delay engine 348 is operative to differential delay transmission a first delay time for a first said client device having a first assessed latency and a second delay time different from said first delay time for a second client device having a second assessed latency different from said first said assessed latency. According to some embodiments, said predicted future state of said conrollable gaming character includes at least one of: i) a predicted future position of said controllable gaming character at time t&ι that is different than a position of said controllable gaming character at time ts0; ii) a predicted orientation of said controllable gaming character at time tsx that is different than an orientation of said controllable gaming character at time tso-
According to some embodiments, said predicted future state 810B of said object 810 includes at least one of: i) a predicted future position of said object 810B at time tSi that is different than a position of said object at time tg 0; ii) a predicted orientation of said object at time tMi that is different than an orientation 810A of object at time ts0.
According to some embodiments, said object is a gaming character other than said gaming character.
According to some embodiments, said other gaming character is a user controllable gaming character controllable by a client deice 112 other than said given client device.
According to some embodiments, said object is other than a gaming character.
According to some embodiments, said application server array 110 is operative such that at least one of: a) (ts2- tg 0); and b) (tSp t^o) is determined in accordance with any combination of: i) an assessed latency of said given client device; ii) an assessed latency of a client device other than said given client device;
It is now disclosed for the first time a method for providing gaming services, the method comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and
b) maintaining, on said application server array 110, a virtual gaming universe including at least one user-controllable gaming character 816 such that a given said gaming character 816 is associated with game commands of a given said client device 112; and c) generating snapshots of said virtual universe, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time tgo 2102 and a first game command set C0 2104, a second snapshot 2200 associated with a second game time 1^2202 and a second game command set C1 2204; and ii) deriving, from said first snapshot 2100, a third snapshot 2110 associated with a third game time t8 2 2122 and a third game command set c2 2204, wherein: i) (tg 2- tto) <= (tsr tso); ii) said third game command set C2 2204 includes at least one extra game command relative to said second game command set C1 2204; iii) said game engine is operative such that said deriving of said second snapshot 2200 includes:
A) predicting a future state 816B of said given user- controllable gaming character 816 for said second game time ^{2202, said future state 816B being different from a current state 816 A of said given user- controllable gaming character;
B) predicting a future state 810B of at least one object 810 in said virtual gaming universe other said given user-controllable gaming character 816 for said second game time U12202; and
C) computing a relationship between said predicted future states 816B and 810B.
It is now disclosed for the first time a server-based system for providing gaming services, the system comprising:
a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe, said game engine 312 being operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to derive, from a first said snapshot 2100 associated with a first game time tg 0 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time ^2202 and said first game time ts 0 2102is determined, at least in part, in accordance with an assessed server-client latency of at least one said client device.
It is now disclosed for the first time a method for providing gaming services, the method comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and b) maintaining, on said application server array 110, a virtual gaming universe; c) assessing a client-server latency of at least one said client device; d) generating snapshots of said virtual universe in accordance with said assessed client-server latency, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time tgo 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time tε12202 and said first game time tg 0 2102 is determined, at least in part, in accordance with said assessed server-client latency.
It is now disclosed for the first time a method of video frame generation comprising: a) generating a plurality of video frame including a first video frame 1574 that is a hybrid video frame that includes an I frame portion 1583 and a P frame portion 1581. According to some embodiments, i) said generating of said plurality of video frames includes generating a second video frame 1578 different from said first video frame 1574; and ii) said second video frame includes:
i) a first P frame portion 1571 encoded relative to said I frame portion
1583; and ii) a second I frame portion 1573 encoded relative to said P frame portion 1581, wherein said second video frame is a generationally inhomogeneous video frame such that a P-generationality of said first P frame portion 1571 is different from a P- generationally of said second P frame portion 1573. It is now disclosed for the first time a method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
A) a first P-frame portion 1571 that: i) is encoded relative to an I frame portion of said first frame 1570; ii) has a P-generationality equal a first number; and
B) a second P-frame portion 1573 whose P-generationality is a second number different from said first number.
According to some embodiments, said generating of said plurality of video frame includes: b) generating a third frame 1574 that is a hybrid frame including an I frame portion 1583 and a P frame portion 1581, wherein:
A) said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
B) said second P-frame portion 1573 of said second frame 1578 is encoded relative to said I frame portion 1583 of said third frame.
It is now disclosed for the first time a method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
A) a P frame portion 1581 encoded relative to a portion of said first frame 1570; and
B) a I frame portion 1583; and iii) a third frame 1578 that includes:
A) a first P frame portion 1571 encoded relative to said P frame portion 1581 of said second frame and to said portion of said first frame 1570; and
B) a second P frame portion 1573 encoded relative to said I frame portion 1583 of said second frame.
It is now disclosed for the first time a method of video frame generation from an ordered plurality of input frames including a first input frame 1674 and a second input frame 1678 different from the first input frame, the method comprising: a) generating, from the ordered plurality of input frame, a plurality of encoded video frames including an uninterrupted sequence (1570, 1574, 1578, 1582, 1584) of frames that are at least partially I frames, wherein said generating includes: a) encoding a first input frame 1674 into a first encoded frame 1574 of said uninterrupted sequence, said first encoded frame 1574 being at least partially spatially a I frame and including an I frame portion 1583 derived from said first input frame 1674; b) encoding a second input frame 1678 different from the first input frame 1674 into a second encoded frame 1578 of said uninterrupted sequence, said second encoded frame 1578 being at least partially spatially a I frame and including an I frame portion 1569 derived from said second input frame 1678.
It is now disclosed for the first time a method of video frame generation comprising: a) generating a plurality of video frame including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, wherein: i) said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 share an I frame parent 1570;
ii) said second P frame portion 1573 of said first at least partially P frame 1578 and second P frame portion 1577 of said second at least partially P frame 1584 have different I frame parents (1574 and 1582). It is now disclosed for the first time a method of video frame generation comprising: a) generating an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 sharing an I frame parent 1570; and iii) a third frame 1582 that is at least partially spatially an I frame, said third frame having a position in said ordered plurality of video frames that is after said first at least partially P frame 1578 and before said said second at least partially P frame 1584. According to some embodiments, the method further comprises: b) ordering said plurality of frames according to an order recited. According to some embodiments, the method further comprises: c) transmitting said plurality of frames according to said order. According to some embodiments, the method further comprises: c) saving to non- volatile memory said first, second and third frames in a file according to said order.
According to some embodiments, a shape of at least one of an I frame portion and a P frame portion is determined dynamically. According to some embodiments,: i) said generating includes encoding a plurality of input frames; and ii) said determining is carried out in accordance with a dynamic region of interest detected within a plurality of input frame.
It is now disclosed for the first time an encoding device for encoding video frames comprising: a) a memory for storing a plurality of input frames; b) a frame encoder operative to encode plurality of video frames according to any of claims 21-33.
It is now disclosed for the first time a method for decoding video frames comprising: a) receiving a plurality of encoded video frame including a first hybrid video frame 1574 that includes an I frame portion 1583 and a P frame portion 1581; b) decoding said first hybrid video frame 1574 by: i) decoding said P frame portion 1581; ii) associating said decoded P frame portion 1581 with said I frame portions. According to some embodiments, said decoding of said video frames includes i) decoding a second video frame 1578 different from said first video frame
1574; and ii) said second video frame includes: i) a first P frame portion 1571 encoded relative to said I frame portion
1583; and ii) a second I frame portion 1573 encoded relative to said P frame portion 1581, wherein said decoded second video frame is a generationally inhomogeneous video frame such that a P-generationality of said first P frame portion 1571 is different from a P- generationally of said second P frame portion 1573. It is now disclosed for the first time a method of video frame decoding comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
A) a first P-frame portion 1571 that: i) is encoded relative to an I frame portion of said first frame 1570; ii) has a P-generationality equal a first number; and
B) a second P-frame portion 1573 whose P-generationality is a second number different from said first number; b) decoding said receiver video frames.
According to some embodiments, said decoding of said plurality of video frames includes: b) decoding a third frame 1574 that is a hybrid frame including an I frame portion
1583 and a P frame portion 1581, wherein:
A) said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
B) said second P-frame portion 1573 of said second frame 1578 is encoded relative to said I frame portion 1583 of said third frame.
It is now disclosed for the first time a method of decoding of video frame generation comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
A) a P frame portion 1581 encoded relative to a portion of said first frame 1570; and
B) a I frame portion 1583; and iii) a third frame 1578 that includes:
A) a first P frame portion 1571 encoded relative to said P frame portion 1581 of said second frame and to said portion of said first frame 1570; and
B) a second P frame portion 1573 encoded relative to said I frame portion 1583 of said second frame; and b) decoding said received encoded video frames.
It is now disclosed for the first time a method of video frame decoding comprising: a) receiving a plurality of video frame including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, wherein:
i) said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 share an I frame parent 1570; ii) said second P frame portion 1573 of said first at least partially P frame 1578 and second P frame portion 1577 of said second at least partially P frame 1584 have different I frame parents (1574 and 1582); and b) decoding said receiver video frames.
It is now disclosed for the first time a method of video frame decoding comprising: a) decoding an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 sharing an I frame parent 1570; and iii) a third frame 1582 that is at least partially spatially an I frame, said third frame having a position in said ordered plurality of video frames that is after said first at least partially P frame 1578 and before said second at least partially P frame 1584.
It is now disclosed for the first time a decoding device for decoding video frames comprising: a) a memory for storing a plurality of encoded video frames; and b) a frame decoder operative to decode said plurality of encoded video frames according to any of claims 35-41.
According to some embodiments, the device further comprises: c) a flash memory card interface operative to present the decoding device as a flash memory card to a host device coupled to said decoding device, wherein said frame decoder is operative, upon receiving said plurality of encoded video via said flash memory card interface, to effect said decoding.
According to some embodiments, the decoding device is operative to provide a plurality of frames derived from said plurality of decoded video frames upon receiving, via said flash memory card interface, at least one of: i) a flash memory card file read request; and ii) a flash memory card data stream read request.
It is now disclosed for the first time a method of generating a video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least one frame that is at least partially spatially an I frame; ii) a second frame 1578 that includes:
A) a first P-frame portion 1571 whose P-generationilty is a first number;
B) a second P-frame portion 1573 whose P-generationilty is a second number different from said first number.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices; d) storing said data indicative of said game commands in a data cache; e) modifying said virtual gaming universe in accordance with said cached gaming commands such that at least some said gaming commands are operative to modify said virtual gaming universe after a cache delay.
According to some embodiments, the method further comprises: f) removing data associated with one or more said game application commands after said modifying.
According to some embodiments, at least some said game commands are filtered in accordance with other said game commands and discarded, and said virtual gaming universe is not modified in accordance with said discarded commands. According to some embodiments, at least some said game commands are associated with a respective time stamp, and said filtering is performed in accordance with said respective time stamps.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is determined in accordance with a game command client device network latency.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is other than an order of said receiving.
It is now disclosed for the first time a system for providing a gaming servicecs according by performing a method disclosed herin.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) generating at a given time a snapshot of a future state of a virtual gaming universe; c) receiving data indicative of game commands after a time that said snapshot is generated (i.e. during a gap time); d) if said received game commands contradict said generated snapshot of said future state of said virtual universe, discarding said contradicting game commands; and e) generating at least one video image in accordance with said snapshot. According to some embodiments, a gap time of said snapshot is at least 10 milliseconds.
According to some embodiments, a gap time of said snapshot is at least 20 milliseconds. According to some embodiments, said snapshot is generated a plurality of times to produce a video sequence having a frame time.
According to some embodiments, a ratio between a gap time and a frame time is at least 0.2. According to some embodiments, a ratio between a gap time and a frame time is at least 0.5.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices; d) storing said data indicative of said game commands in a data cache; e) modifying said virtual gaming universe in accordance with said cached gaming commands such that at least some said gaming commands are operative to modify said virtual gaming universe after a cache delay.
According to some embodiments, the method further comprises, f) removing data associated with one or more said game application commands after said modifying.
According to some embodiments, in at least some said game commands are filtered in accordance with other said game commands and discarded, and said virtual gaming universe is not modified in accordance with said discarded commands. According to some embodiments, at least some said game commands are associated with a respective time stamp, and said filtering is performed in accordance with said respective time stamps.
It is now disclosed for the first time a method of generating video frames, the method comprising: a) Rendering a plurality of video frames, each said video frame rendered in less than a first number of seconds; b) Serving and/or presenting said rendered video frames at an average rate whose value is a second number of said rendered video frames per second,
Wherein a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 2. According to some embodiments, said ratio number is at least 5. According to some embodiments, said ratio number is at least 7.
According to some embodiments, said ratio number is at least 10.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is determined in accordance with a game command client device network latency.
It is now disclosed for the first time a method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is other than an order of said receiving
It is stressed that the present invention provides systems operative to perform any presently disclosed method.
It is stressed that the present invention provides methods for performing techniques of any presently disclosed system.
A computer readable medium comprising program instructions is disclosed, wherein when executed the program instructions are operable perform any presently disclosed method.
It is now disclosed for the first time a server-based system for providing gaming services, the system comprising: a) an application server array adapted to effect a data transfer with each of a plurality of client devices that are each separate from said server array;
b) an input data aggregator for receiving data indicative of game commands from each of the plurality of client devices; c) a game engine for maintaining a virtual gaming universe including a plurality of controllable gaming characters, said gaming engine operative to associate each said gaming character with said game commands of a respective client device; and d) a multi-video output rendering engine residing in said application server array for generating from said virtual gaming universe a plurality of video streams each said video stream representing a view associated with a respective said game character, wherein, for each said video stream of said plurality of video streams, said multi-video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device. According to some embodiments, said indicative data includes at least one of: device resolution, a device screen refresh rate, device contrast parameters, color parameters (for example, a number of colors), screen size and/or aspect parameters (for example, screen size or ratio between horizontal and vertical dimensions of the screen)) According to some embodiments the system further comprises: e) a data provisioning mechanism operative to provide said indicative data to said rendering engine.
According to some embodiments said provisioning mechanism includes at least one of: a) a database acesssor for accessing a database for said indicative data; and b) a client sniffer for deriving, for a given said client device, said indicative data from a communication received from said given client device.
It is now disclosed for the first time a system for providing a single-user or multiuser gaming service, the system comprising: a) an application server array adapted to effect a data transfer with one or more client devices that are each separate from said server array; b) an input data aggregator for receiving data indicative of game commands from each said client device; c) a game engine residing at least in part in said application server array for maintaining a virtual gaming universe including at least one controllable gaming characters, said gaming engine operative to
associate each said gaming character with said game commands of a said respective client device; and d) a video output rendering engine residing in said application server array for generating from said virtual gaming universe at least one video stream, wherein, for each said video stream of said at least one video stream, said multi-video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device.
It is now disclosed for the first time a method of providing a multi-player gaming environment, the method comprising: a) providing within an application server array a game engine for maintaining a virtual gaming universe including a plurality of gaming characters; b) at said application server, receiving data indicative of game commands from a plurality of client devices; c) associating each said gaming character with said gaming commands of a different respective said client device; d) within said application server array, generating a plurality of rendered video streams, each said video stream representing a game view associated with a respective said gaming character, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
It is now disclosed for the first time a method of providing a single player or multi- player gaming environment, the method comprising: a) providing within an application server array a game engine for maintaining a virtual gaming universe including at least one gaming character; b) at said application server, receiving data indicative of game commands from at least one of client device; c)associating each said gaming character with said data indicative of gaming commands received from a respective said client device; d) within said application server array, generating at least one rendered video stream, associated with a game view of said virtual gaming universe, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
These and further embodiments will be apparent from the detailed description and examples that follow. BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 provides a description of serving a snapshot of a virtual gaming universe in a system where there is game view latency.
FIGS. 2A-2C provide a block diagram of an exemplary gaming system where a game engine resides on the server side in accordance with some embodiments of the present invention.
FIGS. 3A-3C provide a block diagram of an exemplary gaming system where a game engine resides on the server side and video is rendered on the server side in accordance with some embodiments of the present invention.
FIG. 4 describes certain snapshots of a virtual universe in a particular example.
FIG. 5 A-5B provides a description of serving a reduced-latency snapshot of a virtual gaming universe in accordance with some embodiments of the present invention.
FIGS. 5C-5D provide flow charts of exemplary techniques for 'future snapshots' of a virtual gaming universe.
FIG. 6A-6B provides block diagrams of application server arrays that include a transmission delay engine.
FIGS. 7A-7C and 8 provide diagrams describing technique for generating a plurality of snapshots descriptive of the virtual universe at different points in game time in accordance with some embodiments of the present invention.
FIG. 9 provides a diagram of a game character and a game object within a virtual universe accordance to one example.
FIG. 10 provides a diagram of a technique for caching game commands in accordance with some embodiments of the present invention.
FIG. 11 provides a block diagram of a game application server where video is rendered on the server in accordance with device characteristics of a respective target client device to which video is serverd.
FIG. 12 provides on example of how to divide a video frame into a plurality of sub-regions.
FIG. 13 A describes exemplary spatially partial I frames.
FIG. 13B describes a technique for splitting an I frame into a plurality of spatially partial I frames.
FIG. 13C describes , by example, a scheme for generating I frames and P frames.
FIG. 14A describes exemplary hybrid frames.
FIG. 14B describes , by example, a scheme for generating I frames and P frames where generationally-inhomogeneous partial or complete P frames are generated.
FIG. 15 describes an exemplary technique for encoding and decoding video frames.
FIG. 16 describes an example for input frames are encoded.
FIG. 17 descirbes an exemplary system including a host (for example, a mobile phone) and a peripheral card operative to decode video content that is coupled to the host.
DETAILED DESCRIPTION OF EMBODIMENTS
The present invention will now be described in terms of specific, example embodiments. It is to be understood that the invention is not limited to the example embodiments disclosed. It should also be understood that not every feature of the system, method and computer-readable code for providing an electronic gaming environment for a multi-player game or for encoding, transmitting or decoding video content is necessary to implement the invention as claimed in any particular one of the appended claims. Various elements and features of devices are described to fully enable the invention. It should also be understood that throughout this disclosure, where a process or method is shown or described, the steps of the method may be performed in any order or simultaneously, unless it is clear from the context that one step depends on another being performed first.
The present inventor is now disclosing systems, methods, apparatus, devices and computer code for providing gaming services and for handling video content. Various teachings relating to providing gaming services will be explained with reference to FIGS. 2- 11. Various teaching relating to handling video content (for example, encoding or decoding video content) will be explained with reference to FIGS. 12-17.
Discussion of Embodiments Related to Providing an Electronic Gaming Environment With Reference to FIGS. 2-11
The present inventor is now disclosing a system, method and computer-readable code for providing an electronic gaming environment for a multi-player game. Each human player accesses the gaming environment through a respective client device having a data input mechanism (for example, keyboard such as a phone keypad, or a trackball, or a joystick, etc.) and a display screen. These client devices effect a data transfer with an applicant server array separate from the client devices. Much of the computation for supporting the game environment is carried out within the application server array, and thus the client device may function as a "thin client" for accessing the gaming environment. In particular, the game engine itself may reside in the application server as illustrated in FIGS.2A-2C.
In contrast with the examples of FIG. 2A-2C, the systems described in FIGS. 3A-3C relate to the case where video output is rendered on the server side, and served to the client device 112, thereby offloading a portion of the computational load needed to maintain the gaming environment from the client device to the game application server array.
As used herein, when a first device "effects a data transfer" with a second device, the first device effects at least one of sending data to the second device and receiving data from the second device. In some embodiments, this refers to the situation where the first and second device sends data to each other and receive data from each other.
FIG. 2A provides a block diagram of exemplary multi-player interactive gaming system IOOA in accordance with some embodiments of the present invention. Each human player enters game "commands" (for example, directives for a game character to perform a specific action within the virtual gaming universe, such as to move a "game character") through a data input mechanism or module 210 of a client device 112 (see FIG. 2B). According to the example described, there are one or more client devices 112 accessing the application server array.
Although typically the user can send 'command data' using the data input mechanism or module, in some embodiments the user can send data other commands.
Input data 118 including data indicative of these game commands are sent over a communications link 114 (for example, a 'wireless' communications link) to an array of one or more game application servers 110. The application game server array 110 (i.e. one or more application servers, in a centralized location, or distributed within a computer network, for example, including one or more game consoles) processes game commands received from a plurality of client devices and streams back to each client device respective view data 116. Each frame of this streamed view data provides a 'snapshot' of a virtual gaming world (or portion thereof) from a given 'point of view' at a given moment in time. Various snapshots are streamed to the client device. As shown in FIG. 2B, the view data may be rendered on the client side with a client-side rendering element 220. The rendered view data is then displayed on a display screen 212 of the client device.
It is noted the rendering element 220, as with any other component described in the present disclosure and/or the accompanying figures, may be implemented in any combination of software and hardware.
Typically, each client device 112 is used by a different human player who controls, using the client device, a different "game characters)" of the game universe. The display screen 212 of the client device 112 thus provides the human player a view into the virtual
universe of the game. In some embodiments, more than one client device 112 may be served identical (an/or substantially identical) rendered view streams 116.
Alternatively or additionally, different client devices are served different video, streams, which may vary in accordance with one or more of a number of factors. Exemplary factors include but are not limited to a point of view, a frame rate, a type of encoding , bandwidth, a client parameter (such as screen size and/or screen resolution), and user preferences.
Thus, in particular embodiments, each client device may be provided with a different view associated with the specific game character controlled by the specific client device. Thus, it is recognized that the view data 116 sent to each client device may be different, in accordance with the game character being played by the human player using the client device.
More specifically, each client device 112 may, in some embodiments, receive a respective view data 116 stream associated with the gaming character controlled by the game commands provided by the respective client device 112 and with respect to the client's physical capabilities and its connection. In particular embodiments, each rendered video stream 116 could provide a different "view" into the virtual gaming universe associated with the character controlled by the respective client device. It is noticed that this view may be a "first person" game view within the virtual universe associated with the respective controlled game character, or a "third person" game view within the virtual universe associated with the respective controlled game character. Other types of views (i.e. other than first person and third person) associated with a specific game characters may also be provided.
In particular embodiments, a view (and not just the administration of the virtual game universe) may be defined by the game engine 312. In one example, it is decided that if a certain player receives a certain number of points, he is "rewarded" with a deeper view (for example, the ability of to 'see' further) of the virtual universe. The skilled artisan will be able to provide numerous examples.
FIG. 2C provides a diagram of the application server array 110 in accordance with exemplary embodiments of the present invention. Although the application server array 110 drawn is a single entity having single instances of each component, it is appreciated that one or more of the components depicted (and/or multiple instances of each component) here may be located in different locations within a computer network. Furthermore, it is appreciated that the system may not be limited to a single application server array 110, and that there may be redundant application server arrays situated at different locations in the network.
Thus, referring to FIG. 3A, it is noted that input data from the plurality of client devices is received by an input data aggregator 310. The input data 118 includes the game commands from the client devices.
Application Engine 312 (Game Engine)
This data is made available to the application engine or game engine 312 which includes game logic (for example, a set of game rules, such as the rule that a bullet object that reaches a game character may injure or kill the game character or remove that "hit" game character from the game). Information about the current state of the game is stored in a common data structure or data repository 314. The data repository 314 may include the data necessary to represent or 'model' the virtual game universe, including but not limited to one or more of geometry data, viewpoint data, texture data and lighting information. Along with the aforementioned data, data related to the virtual universe that is stored in memory may also include game specific data.
The data repository may be implemented using any combination of volatile and nonvolatile memory, hi exemplary embodiments, the data repository may include status information about user-controlled game characters and/or computer 'game-master' controlled game characters (non-limiting examples of status information include one or more of the positions and/or orientations of each game character.
Thus, the game engine or application engine 312, in accordance with game logic, maintains the virtual game universe by maintaining and modifying the appropriate data structures within the common data repository 314 which represent the virtual universe in accordance with game logic. Although FIG. 2C depicts the input data as flowing directly to the application engine 312 from the input data aggregator 310 it is appreciated that this is in accordance with exemplary embodiments, and in other embodiments, the input data aggregator 310 is not directly linked to the application engine 312.
Application engines which including game logic 312 are well known in the art. Any game engine or application engine and any game engine architecture are appropriate for the present invention. In exemplary embodiments, the game engine may include one or more of a physics engine, an AI agent, and one or more game libraries, though embodiments with other game engine components are contemplated as well.
In some embodiments, the game engine 312 may modify the common data repository 314 representing the virtual universe in accordance with rules of the game application. In other words, the game engine 312 may update the common data repository 314 (i.e. effect a change to the virtual game universe) in accordance with input data 118 including game
command data received from the client devices 112. According to one non-limiting example, if a game character is shot by another character, the character's "health" attribute is reduced and the character is partially disabled.
As noted above, the application engine 312 maintains the virtual universe in accordance with 'game logic' One element of game logic enforced by the game engine 312 relates to maintaining some standard of time in the virtual game universe. In the real physical universe certain laws of how objects behave involve time — referred to in the present disclosure as 'real time' or physical time and associated with the symbol f. Similarly, in the virtual gaming universe maintained by game engine 312, certain laws of how objects within the virtual gaming universe behave also involve time - referred to in the present disclosure as 'game time' and associated with the symbol tc
In one example, if an object moves with a certain velocity within the virtual universe, the position will change with respect to time - in this case the position in the virtual universe will change with respect with the time tc of the virtual universe.
This is illustrated in FIG.4 where a given object 2750 is moving within the virtual universe at a rate of 100 unites/second in the x direction according to the rules of the game logic. The game engine 312 may generate a 'snapshot' of an aspect of the virtual universe that includes that position of the object 2750 for different moments in time (i.e. in 'game' time). In the example of FIG. 4, three snapshots 2710, 2720 and 2730 are generated - each snapshot corresponds with a different moment in 'game time'. According to each snapshot, the object 2750 has a different position — in snapshot 2710 associated with time tc the object has a position (20,50) in the virtual universe; in snapshot 2720 associated with time t0 the object 2750 has a position (30,50) in the virtual universe; in snapshot 2730 associated with time tc the object 2750 has a position (40,50) in the virtual universe.
The game engine 312 may thus generate a series of snapshots in accordance with game rules or game logic. Typically, the game engine will derive a snapshot associated with a later time from a snapshot associated with an earlier time by running the game engine forward in time - for example, in discrete time increments associated with a 'game engine cycle'.
In some embodiments, the game engine includes a mechanism for synchronizing game time tc with real time tr to provide an appropriate gaming experience to the user(s). For example, if the game engine is run on a 'fast machine' or if the amount of computing resources required for a given forward step in time between two snapshots is 'small,' the
game engine may 'wait' or 'sleep' in order to synchronize between a given step forward in 'game time' tc and an amount of real time f.
As used herein, a 'snapshot' refers to an electronic representation of at least one aspect of the virtual universe associated with a given moment in game time t°. In one example, this snapshot may be stored in the common data repository 314. In another example, one or more snapshots may be sent to the client device as view data - either unrendered view data 116 as shown in FIGS. 2A-2C or as rendered view data as shown in FIGS. 3A-3C.
In one example, the "snapshot" may be descriptive of the positions of one or more objects within the 2 or 3 dimensional space of the virtual universe and optionally within the configuration space defined by the internal degrees of freedom (for example, the orientation of an object without spherical symmetry relative to space-fixed coordinate axis) at a given instant in time. This instant of time is not necessarily the same time at which the "snapshot" is generated. It is appreciated that just as in the physical "real" world different objects have positions and orientations that vary as a function of time, in the virtual world the positions and/or orientations and/or configurations and/or colors and/or other visual properties of objects (for example, gaming characters) vary as a function of time.
In the example of FIG. 2C, the application server array 110 includes a client view generation engine 370 for generating, using the game engine, a snapshot of the virtual universe for a given gaming character in the virtual universe. This snapshot is generated relative to a state of the gaming character for a given game time tc and may depend, for example, on a position or orientation of the gaming character at a given time, or on other state information relating the gaming character (for example, eye strength or view privilege information) at the given time.
For the case of a multi-user gaming system, each client device may be associated with a given gaming character. Thus, the client view generation engine 370 generates, for each gaming character, respective view data associated with the state of the gaming character at the given moment in game time tc. For a given gaming character, the view data may then be sent to the appropriate client device (i.e. associated with the given gaming character) by data streamer 352.
Although certain embodiments have been explained in terms of each user controlling a "single" game character or entity, it is appreciated that in some embodiments, a plurality of users may control a single game character and/or a single user may control more than one game character.
Both FIGS. 2A-2C and FIGS. 3A-3C relate to the case where the game engine 312 resides on the server side and enforces 'game rules' - for example, 'game physics.' In the embodiments of FIGS. 3A-3C, view data is rendered on the client side. Rendering of view data of a virtual gaming universe on the server side is described in WO/2006/100664 which is not prior art relative to the present application. As noted before, WO/2006/100664 is incorporated into the present application by reference in its entirety.
Not wishing to be bound by theory, it is noted that in accordance with some embodiments of the present invention, video output is rendered on the game server (i.e. in the application server array), obviating the need to render the video output on the client device. This may offloads some or even a significant portion of the load associated with providing the gaming environment from the client device to the application server arrays which are separate from the client devices. In some examples, this may enable client devices which lack the resources provide a specific gaming environment (for example, because the client device lacks the computations resources to render "rich" video) to nevertheless, provide an interface to this gaming environment, and to allow the user to access this gaming environment using the data input (i.e. phone keypad, joystick, gaming pad) and screen of the client device.
Thus, in FIGS. 3A-3C, the client devices receive video 116 that is rendered view data from the application server array 112. Furthermore, application server array 110 includes a multi-video output rendering engine which renders the view respective view data. The rendered video is encoded by an encoder 350 and streamed to the client devices 112 by streamer 352.
There is no limit on the format of encoded video outputted by the encoder 350. Exemplary formats include but are not limited to MPEG4, MPEG2, JPEG and JPEG2000. In some embodiments, the video streamer 352 is operative to send a video file or files, and includes buffer management functionality.
Each client device receives a stream of rendered respective video 116 from the application server array 110. Typically, but not necessarily, each rendered stream of rendered video 116 is different, in accordance with a view (i.e. third person or first person) associated with the respective gaming character associated with the respective client device 112.
Thus, it is noted that although it is not a requirement for the present invention, usually, encoded video (denoted with the 'prime' - i.e. 116') is served to each client device 112.
Although certain aspects of the present invention have been explained in terms of the case where there are a plurality of client devices served by the application server array, this is not a limitation, and some embodiments provide an application server for providing gaming services to a single device, as illustrated in FIG. 3D.
Rendering is a process of generating an image (for example, a raster graphics image, for example, a digital image) from the representation of the virtual universe, and may be carried out in software, hardware or any combination thereof. This term is well known in the art, and as noted by Wikipedia, "may be by analogy with an 'artist's rendering' of a scene".
In some embodiments, the 'rendering' may also be accompanied with calculation of special effects (for example, sound) within the application server. These 'special effects' may then be associated with the rendered video 116 (for example, by embedding special effect data within a single data video stream or video file which is sent to one or more client devices).
The operations performed by the rendering engines may include any operation typically performed by a video rendering engine. Thus, in some embodiments, light transport calculations (for example, using a radiosity technique and/or a ray tracing technique) are effected (i.e. creation of a video image in accordance with the geometry and lighting of a given scene). Wikipedia has given a list of algorithms and techniques associated with rendering, and according to some embodiments of the present invention, video rendering operations may include one or more of the following (quoted, within minor modifications, from the Wikipedia article on "Computer Graphics: Rendering") of the following, in any combination: shading (i.e. determining how the color and brightness of a surface varies with lighting), texture-mapping (i.e. a method of applying detail to surfaces), bump-mapping (i.e. a method of simulating small-scale bumpiness on surfaces), determining fogging/participating medium (i.e. determining how light dims when passing through non- clear atmosphere or air), shadowing (i.e. determining the effect of obstructing light), soft shadowing (i.e. determining varying darkness caused by partially obscured light sources), reflection calculations (i.e. determining mirror-like or highly glossy reflection), transparency calculations (i.e. computing sharp transmission of light through solid objects), determining translucency (i.e. determining highly scattered transmission of light through solid objects), determining refraction (i.e. computing bending of light associated with transparency), determining indirect illumination (i.e. for surfaces illuminated by light reflected off other surfaces, rather than directly from a light source), caustics (i.e. a form of indirect illumination) (determining reflection of light off a shiny object, or focusing of light through a
transparent object, to produce bright highlights on another object), effecting a depth of field calculation (i.e. objects appear blurry or out of focus when too far in front of or behind the object in focus), effecting a motion blur calculation (i.e. objects appear blurry due to highspeed motion, or the motion of the camera), effecting a photorealistic morphing (i.e. photoshopping 3D renderings to appear more life-like), effecting a non-photorealistic rendering (rendering of scenes in an artistic style, intended to look like a painting or drawing).
Other non-limiting examples of video rendering operations include but are not limited to color calculation, texture calculation, shadow calculation, shading (i.e. defined by Wikipedia as "determining how color and/or brightness of an object or surface varies with lighting"), alpha blending, depth testing, and rastering. It is appreciated that many rendering engines may effect one or more rendering operations not listed herein.
Although rendering has been discussed in terms of rendering at least one 'single' image, it is appreciated that rendering typically this includes creation of an 'animation' of a plurality of video images.
All of the aforementioned components of the application server array 110 may be implemented as hardware, software, or any combination thereof. In exemplary embodiments, either the rendering engine may be implemented at least in part in hardware, for example, using one or more graphic accelerator cards (for example, video cards or screen cards, for example, a plurality of graphics cards in parallel) that reside within the application server array 110.
A Discussion of the Communications Link 114
Referring once again to FIG. 1, it is noted that although the communications link 114 is illustrated as a single bi-directional communications link, it is appreciated that in different embodiments, a plurality of communication links, including a link for uploading input data 118 to the application server array 110 and a link for downloading rendered streamed 116 to the client device 112, may be provided. In exemplary embodiments, a video compression engine may be provided on the server side, along with video decompression engines on the client side. In exemplary embodiments, a streaming server may be provided on the server side.
There is no limitation on the type of communications link 114 that may be used to transfer data between the application server array and the client device. Thus, in some embodiments, the application server array 118 and the client device 112 may communicate through a switched network, including but not limited to a packet switched network and a circuit switched network (telephony network) or/and a multiple access link network. For the purposes of this application, when two devices communicate through a switching network, the communication link between the devices is defined as a "switching network link."
Alternatively, the communications link 114 may be other than a switching network link. For example, the client devices may communicate with the application server array using a "point-to-point" communications link (for example, a wireless point-to-point communications link) (for example, a communications link other than a switched or multiple access link communication).
Thus, it is appreciated that both local and wide networks of any type are within the scope of the basic invention. Exemplary communications networks include but are not limited to WiMax, Wi-Fi, Bluetooth, high performance wired or wireless networks such as WLAN (wireless LAN), WAN (including WWAM) other than a telephony network.
An Additional Discussion about Application Server 110 Architecture
Until now, the system has been explained in terms of a single application server array 110. It is noted that the various components of the application server array need not reside in a single location, and may reside on a plurality of machines, either local to each other or distributed through a network. Furthermore, in FIG. 3, single instances of each component are depicted, though this is not a limitation of the present invention. In one example, multiple instances of the input data aggregator 310 (and/or an input data aggregator 310 'distributed' through the network) is provided. According to this example, the input data aggregator 310 may reside on 'host servers' distributed through the network and operatively linked to 'game
servers' which host the application engine 312. Moreover, there may be redundancies (for example, hardware redundancies) to provide fault resilience.
In one preferred embodiments related to a multi-player gaming server provided over a wide area network (for example different cities), there are redundant rendering engines. Client devices then tend to receive video rendered in an application server that is more "local" within the network to the client device (i.e. a client device in Boston is more likely to be served video generated at an application server in Boston than video generated in Tel Aviv). Thus, data describing game commands and/or the state of the virtual universe and/or the state of the common data repository may be exchanged between application servers having redundant rendering engines 316. This may obviate the need to send band-width intense video over a wide area or between servers.
There is no requirement for redundancy of the common data repository 314 or of the application engine 312, though embodiments where each application server provides the application engine 312 are also contemplated.
It is noted that when there are redundant application servers, it may be necessary to synchronize data between the respective application servers to provide data integrity.
Typically, these application server arrays may exchange data with each other in order to maintain integrity of the common application data structure 120 to provide a consistent virtual universe for gamers accessing each server. This data exchange could include forwarding the input device from each client device to each application server. Alternatively or additionally, the data exchange may include exchanging common application data structure (i.e. "synchronizing" the data of the redundant data structure residing on each server with each other).
There are a number of scenarios where one might prefer to use redundant application servers. For example, it may be decided that such an architecture uses fewer bandwidth resources because exchanging input data and/or common application data structure data may be more bandwidth efficient than distributing video content to different locations in the network (for example, locations within the network which are "far" from each other). A Technique for Reducing Game Latency
According to the technique described in FIG. 5A-5B, instead of sending to the client device a 'current snapshot' (for example, indicative of a 'current status') of the virtual gaming world, a 'future status' of the virtual gaming world may be predicted - for example, by the gaming engine 312 using the game rules or game logic.
In the example of FIG. 5 A, instead of generating a snapshot of the virtual universe for time t\, a predicted state of the virtual universe for some time in the future tr 2 is obtained - for example using the game engine or game rules/logic. For any given moment in time, it may be possible to "predict" the future state of the virtual world based on all game commands received and/or processed up until that time and/or the data stored in the common data repository 314.
It is not necessary to explicitly specify the future real time tr 2 - the future real time is provided explicitly in the present example for illustrative purposes only.
By sending to the client device a 'future snapshot' rather than a 'current snapshot,' it is possible to reduce game latency - in the example of FIG. 5A, where a future snapshot of the game universe at time f2 (rather than current time tro) is generated, the game latency is reduced by (tr 2- tr 0). As will be discussed later, the price for reducing game latency may be a loss of 'user-perceived game integrity' when a 'contradicting' snapshot of the virtual universe may be presented to the user.
In one non-limiting example, the virtual world includes an object moving along a certain trajectory (i.e. a path where the future position of the object may be determined as a function of time for at least a certain time interval) at a certain velocity. At the time the snapshot is generated (i.e. time t=t')5 the position of the object is (xθ,yθ,zθ). Furthermore, based upon data known to the system at time t=t', it may be determined that at a future time t", the position of the object will be (xl,yl,zl). Thus, it is possible to generate at time f a "snapshot" valid for the future time (i.e. a time t">t') where in this snapshot the position of the object is (xl,yl,zl). It is appreciated that this concept may be generalized to a plurality of objects, and to other properties (i.e. other than object position) effecting the visual representation of the physical world.
In the example of FIG. 5B3 the prediction is carried out for a point in time f 3 after tr 2 - a point of time 'far in the future.' In the example of FIG. 5B, a 'negative latency' may be provided - i.e. the device receives at a point in time t\ a description of a predicted view of the virtual universe for tr 3 where (tr 3> tτ{).
It is appreciated that in some systems, network latency may provide a significant contribution to overall latency. Thus, if the network latency is assessed (for example, measured explicitly or 'guessed' or 'predicted' from available data - for example, relating to the physical or network location of a client device) to be 'large,' a 'further in the future' predicted snapshot will be sent to the client device. If network latency is assessed to be
'smaller' the 'gap time' between the time of the predicted snapshot and the 'current snapshot' will be smaller. hi one example, the 'gap time' or 'time in the future' (either a gap in 'real time' and/or a gap in 'game time') is determined in accordance with an assessed one way and/or round trip latency between the server array and a given client device.
In one example, the 'gap time' or a 'predicted image' associated with a game view associated with a 'first client device' is determined in accordance with an assessed latency (for example, measured or predicted) of a second client device different from the first client device. This second client device may be, for example, the client deice with the greatest latency or an average latency among a group of client devices.
It is appreciated that in some embodiments, the 'gap time' (described below) or 'distance in the future' of the predicted snapshot may vary in time, as latency varies in time. Description of FIG. 5 C and Gap Time
Reference is now made to FIG. 5 C which describes a routine for generating and rendering video frames for a virtual gaming universe. In step 1100, a snapshot of the virtual universe reflecting a "future state" of the virtual universe is generated at time f for a "virtual world status time" that is equal to t' + tgap. Although not a limitation, typically is a tgap predetermined value, may be determined in accordance with a frame rate of the video. The "frame rate" is the number of frames per second. The inverse of the frame rate is the time between frames (tframe). In applications where video is transmitted through a multiple access network and/or a switching network and/or a wide area network, tgap may be at least on the order of magnitude of the tg-ame (say, at least 0.2 * tg-ame , or preferably, at least 0.5 * tframe)- hi one non-limiting example, 15 to 40 frames of video are served to a mobile device (mobile phone and/or PDA), and t&ame is between 25 and 65 milliseconds, and tgap is at least . Though not a limitation, typically tgap is approximately equal to tframe (for example, within 50%, or within 30% - i.e. | tframe - tgap |/| tgap |<0.5 or I tframe - tgap |/| tgap |<0.3) and the user is thus served video "one frame ahead."
After the snapshot (for example, a data structure representing the future state of the virtual universe) is generated, a video frame is rendered 1120 (for example, using a rendering engine 316) and encoded streamed 1122 to the client device.
Because an animated video sequence is generated, the generating of the snapshot 1100 is repeated, usual at intervals of tframe.
It is noted that during the "gap" time (i.e. a time greater than t' and less than f + tgap), certain game commands may be received and/or made available for processing which
'contradict' the snapshot generated in step 1100. In one example, it may be determined that a bullet aimed at a gaming character will follow a trajectory to kill the gaming character, and that as of the time t' + tgap, the gaming character will be dead. Thus, according to this example, a snapshot where this gaming character
In the interim (i.e. after the time the snapshot is generated but BEFORE the time the gaming character would have been struck by the bullet and dies), a gaming command with a directive to move the gaming character to a "safe" location (i.e. where the bullet would not strike the gaming character) is made available (i.e. received and/or made available for processing). If the gaming engine processes this command by moving the gaming character to the "safe" location and allowing the gaming character to remain alive, this will contradict the video image that is send to one or more game users.
In order to avoid a contradiction between the video frame sent to users and the "game reality" maintained by the game engine, it is decided to discard game commands made available during the "gap time" (a time after t' and before t' + tgaP).
This may be seen in steps 1102-1104, 1106 and 1108 of FIG. 5C. If a game command is received during the gap time 1102, it may be discarded 1106, and if is it determined 1104 that the game command contradicts the snapshot (i.e. snapshot of the "future state") generated in step 1100.
Thus, the present inventor is disclosing that, surprisingly, it can be useful to forfeit a certain amount of "game integrity" (i.e. lost game integrity due to discarding of game commands) in order to provide a lower latency delivery of video to the screen of the client device. Description of FIG. 5D
According to embodiments described in FIG. 5C, game commands which contradict generated snapshot (i.e. handled during the gap time t>t' and t<t'+tgap) may be discarded so that the virtual world or universe is not modified in accordance with the discarded game commands. Nevertheless, this is not a limitation of the present invention.
Alternatively or additionally, it is not required to discard these contradicting game commands. Rather, these contradicting game commands may be used to modify the virtual world or universe in a manner in a way which contradicts the previously generated snapshot of the virtual world (i.e. which is rendered 1120, encoded and streamed 1122 to the client devices 112).
In one example, a "future" snapshot shows that a game character has been killed by a bullet. This "future" snapshot is sent to the client devices.
Nevertheless, after the future snapshot is generated, it turns out that game commands are received at a time t'<t<t'+tgap which moves the game character to a "safe" location, hi the NEXT rendered frame, the game character is alive.
From the point of view of the user, the user first receives a video frame which shows the game character dead, and then a "contradictory" video frame which shows the game character alive (i.e. brought "back" to life).
It is appreciated that the approaches described in FIG. 5C and FIG. 5D may be combined - i.e. some game commands (according to some policy) may be discarded, while other game commands may be handled to modify the virtual world or universe, with a subsequent snapshot contradicting the first snapshot. An Additional Discussion About Latency
The term 'assessed latency' may to any one of: predicted latency (for example, according to relative physical and /or network locations of the client and server) and measured latency. According to some embodiments, the latency is measured and/or predicted on an ongoing basis, and the 'gap time' or 'amount of time in the future for which a prediction is generated' is adjusted dynamically in reaction to a change in the assessed latency.
The latency can be different for different users. A Brief Discussion of Differential Latency
It is noted that when there are more than one client devices, the latency of the different client devices may differ - i.e. differential latency. As discussed in the background section of the present disclosure, differential latency may adversely affect user-perceived game fairness.
Towards this end, in one example, an onboard transmission delay engine 348 is provided on the server side (in the example of FIG. 6B, in a system where view data is rendered on the server side; in the example of FIG. 6A, in a system where unrendered data is served to the client devices).
In the example described earlier, the game server is located in Tel Aviv Israel and client devices are located in Haifa, Israel and Boston, Massachusetts and the latency to the Boston device significantly exceeds the latency to the Haifa device.
According to this example, the transmission delay engine will delay the sending of view data to the Haifa device while view data to the Boston device will be sent immediately after it is generated - this could eliminate any unfair advantage enjoyed by the Haifa device (i.e. which would receive pertinent snapshot data earlier).
This delay may be computed in accordance with assessed latency data for the various devices.
Alternatively or additionally, the view data may be associated with an instruction to delay display on the client device. Thus, in the present example, the view data (or rendered video frames) would be sent to the Haifa device with instructions not to display the images immediately - rather with instructions to delay display on the client side. This delay could be calculated on the server side in accordance with assessed differential latency and then sent to the client device. A Technique for Generating "Future Snapshots" - A Discussion of FIGS. 7A-7C; 8
FIGS. 7A-7B describes an exemplary technique for generating snapshots of a virtual universe in accordance with some embodiments of the present invention.
As already discussed with reference to FIG. 4, at various instances in 'game time' the virtual universe may be updated - in particular, a 'later snapshot' of the virtual universe (i.e. one or more aspects thereof) may be generated by the game engine 312 from an earlier snapshot by applying game logic or game rules. In the example of FIG. 4, a game rule related to motion of a game object 2250 within the virtual universe at a given velocity. Thus, it was possible to derive later snapshot 2720 from earlier snapshot 2710 (i.e. in a given snapshot update state) using (i) data describing the virtual universe in earlier snapshot 2710 (at the game time for which earlier snapshot 2710 describes the state(s) of one or more objects in the virtual universe); and (ii) game logic or game rules describing the time development of one or more gaming objects in the virtual universe. In the example of FIG. 4, only gaming logic accounted for the discrepancies between state of the object 2750 in frame 2710 and state of the object in frame 2720 - i.e. no data external to the virtual gaming universe (for example, gaming commands received from users for controlling one or more gaming characters) was injected into the virtual universe.
It is understood that if a user-controlled gaming character would have 'pushed' the object and the 'push command' would have been 'applied' during a given 'step' or frame transition (for example, between a given pair of snapshots) thena later snapshot would have been different.
Thus, it is noted that in a more general case than that described in FIG. 4 , the virtual universe (i.e. the state of one or more gaming objects within the virtual universe) may be modified going forward in time (i.e. by gaming engine 312) not only by (i) applying game rules to so-called 'internal' data (i.e. state data of the object(s) of the gaming universe at the time of the earlier snapshot) but also by introducing into the virtual universe (i.e. when
'stepping' between the earlier snapshot and the later snapshot), 'external' data - for example, command data received from a user.
FIGS. 7A-7C, 8 describe an exemplary technique for generating 'future snapshots' for reducing gaming latency in accordance with some embodiments of the present invention.
In FIGS. 7A-7B the various snapshots of the virtual universe are described on two axes- the X axis is the set of commands cumulatively applied (i.e. when introduced into the virtual gaming universe) by the gaming engine to generate a snapshot of the virtual universe and the Y axis is the game time ts.
It is noted that, for certain 'steps' forward in time, gaming commands are introduced into the virtual universe and the 'later' snapshot describes a state of a virtual universe with more 'external information' (i.e. game command data) introduced into the virtual universe than the 'earlier snapshot.'
Thus, the command set of snapshot P2 is 'larger' than the command set of snapshot P1 - i.e. the command set includes at least one 'extra command.' Thus, it may be said that snapshot P2 contains 'extra information introduced from outside of the virtual universe into the virtual universe.' Similarly snapshot P3 contains at least one extra command in the game command set (i.e. total cumulative or historical set of gaming commands applied to the virtual universe for which snapshot P3 describes at least one aspect).
Although not a requirement, in one example, snapshots P1, P2 and P3 represent a 'current state' of the virtual gaming universe that is maintained in the common data repository 314 in the application server array 110.
Snapshots F1 and F2 are predicted or 'future' snapshots. Thus, F1 represents a 'predicted state' of the virtual universe at game time ^1 based on external information that has already introduced into the virtual universe when generating parent frame P1 (at game time tgo) (for example, including at least game command set C1 ). Optionally, future snapshot F1 may also reflect one or more additional commands (i.e. commands of command set c'} that are extra relative to command set C1).
In the example of FIGS. 7A-7C, snapshots P1, P2 and P3 represent a 'current state' and snapshot Fi may be referred to as a 'future' or predicted snapshot because: (i) the game time of snapshot F1 is later than the game time of snapshot P1 (i.e. snapshot F1 is 'farther in the future' than the next 'representative' snapshot P1; and (ii) the next snapshot P2 thus has at least one extra piece of 'external information' introduced into the virtual universe (i.e. one extra game command in the game command set) that is not available to predicted or 'future' snapshot F1.
This is because 'future' or 'predicted' snapshot F1 describes a 'predicted future state of the virtual universe' before one or more subsequently-applied (and/or subsequently available) game commands are applied into or introduced into the virtual gaming universe, hi frame P2, the 'real' information is available that was not available or not used when making prediction of snapshot F1.
It is noted that in FIG. 7 A, two different snapshots (i.e. F1 and P2) are derived from P1 - the predicted snapshot Fi and the next 'parent' snapshot P2 (for example, the next 'current' snapshot).
Typically, future or predicted snapshot F1 is generated before snapshot P2. This is because it may be desirable to generate a snapshot using all 'external information' or 'command data' introduced into the virtual universe or available at a given time.
In the example of FIG. 7B, the game command set of the c\ future frame is identical with the game command set of the parent frame C1 . Thus, in the example of FIG. 7B, the line between P1 and F2 is vertical. Extra Commands
It is noted that as stated above, snapshot P2 includes at least one 'extra' command that is not introduced into future snapshot F1. FIG. 7C describes several examples of where this is the case. In Example 1, the command set of F1 includes a C(I) command (i.e. a type of command) and a C(2) command, while the command set of P2 includes an extra type of command — i.e. C(3). In example 2, the command set of P2 includes an extra instance of a C(2) command. In example 3, the command set of P2 includes a type of command not found in the command set OfF1- In example 4, the command set of P2 includes an extra instance of a C(I) command. Contradictions
It is noted that FIG. 5D described a situation where contradictory snapshots are sent from the application server array 110 to one or more client devices.
It is possible to produce this effect using the technique of FIGS. 7A-7C. In particular, it is noted that the game command set of P2 includes at least one extra command relative to the game command set of F1. In 'optimal' situations, the extra one more commands of command set C2 does not contradict the snapshot OfF2.
In one example, two gaming characters are fighting - character A and charater B. The 'extra command' relates to character B reloading his gun (but not firing) in a 'concealed' manner - i.e. not viewable by character A. Thus, in this example, the future snapshot F1 does necessarily contradict snapshot P2 from the point of view of character A showing a view
of character B. Thus, in this example, by providing the 'future snapshot' it is possible to reduce game latency without adversely impacting the game integrity presented to the user. Thus, this example differs from the case discussed with reference to FIG. 5D.
In another example, related to FIG. 5D, there is indeed a contradiction between presented snapshots or frames in accordance with the game rules or game logic enforced by gaming engine 312. Thus, for example, in the future frame F1, it is predicted that gaming character 'B' will stand in a given location within the virtual gaming universe and the frame is presented with gaming character 'B' alive and in the certain location. In reality, however, a command from gaming character 'C is processed (i.e. where gaming character 'C fired upon gaming character 'B') and introduced, as part of command set C2. Application of this extra game command (i.e. that is the extra command in game command set C2 and not in game command set C1) causes gaming character 'B' to die or be eliminated at gaming time — thus our prediction was 'wrong.'
Unfortunately, the predicted snapshot F1 sent to the client device for presentation to a user contradicts the 'correct' version — i.e. it is impossible, according to the game rules of the game engine for character 'B' to be 'dead' at an earlier game time ts 2 but to be alive at a later game time ^1 (in this present example, the game engine does not permit 'resurrections' or at least not in this time frame).
Thus, in our example, it is necessary to generate another 'future frame' F2 from P2 which contradicts, according to the rules enforced by the game engine, the earlier 'future frame F1 . When the later frame is presented to a user (i.e. on a display screen of a client device 112), this 'contradicts' an earlier presented view frame. Thus, the user of the client device will first see a situation where character 'B' is alive at game time tgi, but later see a snapshot or view F2 (i.e. associated with game time tg 3) that indicates that the earlier snapshot F1 was a 'lie.' This could include, for example, a description of a situation where gaming character 'B' has been dead for a time that exceeds (t8 3- tεi) (for example, a decomposing body or maybe the game could alphanumerically display the 'time of dead' on the corpse of a dead gaming object or gaming character). Predicted Point of View
It is noted the that aforementioned 'future frames' or 'future snapshot' described in FIGS. 7A-7B (i.e. F1 ; F2 ; F3) are calculating from a predicted or 'future point of view' of a gaming character within the virtual universe. The future snapshot (i.e. unrendered as in FIGS. 2A-2C or rendered as in FIGS. 3A-3C) may then be sent to a client device 112 associated with the gaming character. In one example, this is carried out for a plurality of gaming
characters, each gaming character associated with a respective client device that generates commands for controlling the gaming character.
The concept of 'predicted point of view' is now discussed with respect to the non- limiting illustrative example provided in FIG. 9. According to this example, the game character for which it is desired to generate a snapshot (i.e. relative to the 'eye of the game character or the 'point of view of the game character') has a position and orientation 816A at time tεo. It is predicted by the game engine 312 (i.e. using the game rules) that at time tgi the game character will have a future position and orientation (i.e. at time tsi) that is depicted by 816B.
In the example of FIG. 9, the 'field of view' or 'point of view' includes object 810 which has a position and orientation 810A at time tgo and is predicted (i.e. by game engine 312 using the game rules) to have a position and orientation 810B at time tg ϊ.
In one non-limiting example, the object 810B is another gaming character other than gaming character 816.
A future view (i.e. of snapshot F1) of the gaming universe relative to use-controlled gaming character 816 is sent to the client device 112 which controls gaming character 816.. This snapshot F1 requires 'point of view data' about gaming character 816 itself since the view is computed relative to a future state 816B (i.e. predicted from game time ts0 of the given gaming character 816 - it is evident that view of object 810 from the 'future' location/orientation associated with 816B may be different from the view of object 810 from 'present' location/orientation associated with 816A.
Thus, in order to compute the predicted 'future' snapshot F1 , both 816B and 810B must be determined. The future snapshot F1 may be computed in accordance with a relationship between the future state of both the 'viewer' gaming character 816 and the 'viewed' object 810. In one non-limiting example, this relationship is determined in accordance with a future position and/or orientation of the 'viewer' gaming character 816 and the 'viewed' object 810.
Although the example of FIG. 9 related to physical position and orientation as examples of 'state data' of a gaming character and game object, this is not intended as a limitation, and other examples of predicted 'future state data' for an object and /or gaming character may be used. In one example, a gaming character's eyesight (i.e. the strength of the eyesite - i.e. how far the character may se) is predicted for the future frame, hi this example, it is predicted that the gaming character will have two 'healthy eyes' and a snapshot F1 is
associated with the two gaming 'healthy eyes' is generated and sent to the client device 112 F1 for presentation to the user.
Unfortunately, command set c2 includes a command indicating that the character's eyes were damaged at time tsi <= time t\ Thus, according to this example, the next future frame F2 corrects this 'mistake.'
FIG. 8 provides a flow chart of an exemplary technique for computing frames or snapshots in accordance with some embodiments of the present invention. Exemplgary Implementation of Techniques for Reducing and/or Eliminating Latency
In one example, it is noted that the technique described in FIGS. 7A-7C; 8; 9 (and in accompanying text) may be implemented using a plurality of processes - one 'fast process' for 'future predictions' and another 'slower process.' There may be any number of 'fast processes.' At different points in time, data may be copied between processes. This technique will be described in the next section for the particular example of a dual-core processor. It is appreciated that this is not a limitation in any way whatsoever - the processes may reside on a single machine or on multiple machines in any architecture. Furthermore, it is noted that the technique may also implemented using a single process.
According to some embodiments, it is possible to simultaneously render future frames indicative of a forecasted future state of the virtual world and current frames indicative of a current state of the present state of the virtual world using a multi-core processor.
In this implementation, data indicative of the virtual world is stored in a memory accessible by both core processors (i.e. common data repository 314), and each processor writes, at different rates, respective results of rendering operations into a respective memory (i.e. memory containing rendered frames, or "rendered frames memory") associated with each processor.
Thus, according to one implementation, one core (i.e. operating at lower clock rate) renders frames at a "normal" rate while the other core (i.e. operating at higher clock rate) renders future frames (for example, y frames ahead) at a rate y times faster, where y>l.
Thus, the slower core renders "present" frames (i.e. indicative of a present state of the virtual world of the common data repository 314) while the faster core renders "predicted frames" that give an approximation of the future and may be served to client devices to reduce rendering latency at the client device.
In order to prevent the faster core from getting "too far ahead" of the slow processor (i.e. to increase the value of tgap as more frames are rendered), it is possible, periodically, for
the faster core to copy the contents of the "rendered frames memory" associated with the slower processor into the "rendered frames memory" associated with the faster processor.
The contents of the "rendered frames memory" of the slow and/or faster processor are forwarded to encoder 350 for encoding and streaming to the client device. Thus, the 'future' video periodically reverts to the 'actual' situation. Another Technique for Reducing Latency
The aforementioned technique of rendering a snapshot of a "future" frame may be useful for reducing user latency.
Alternatively or additionally, the technique described in the current section may be used.
Traditionally, the rate at which video frames are rendered is equal to the rate at which these video frames are served and/or presented. Thus, in prior art systems where video frames are rendered within 4 milliseconds, 250 frames per second may be served. In prior art systems where video frames are rendered within 10 milliseconds, 100 frames per second may be served.
The present inventor is now disclosing for the first time that a user latency may be reduced by rendering individual video frames "faster" than that required by the frame rate by a given number, hi one non-limiting example, if 25 frames are served per second, it is required to render individual frames within 40 milliseconds. The present inventor is disclosing that if one renders individual frames within a shorter period of time than required by the frame rate, it is possible to reduce a user latency. Thus, according to the current non- limiting example, individual frames, which must be rendered in no more than 40 milliseconds, are rendered within, for example 20 milliseconds, or 10 milliseconds, or 4 milliseconds.
This technique may be particularly applicable in a switching network and/or a wide area network and/or a multiple access network and/or a local network where it is desired to reduce user latency. Furthermore, this technique may be particularly applicable in systems where video frames need to be served at a "moderate" rate (i.e. 15-50 frames/second), for example, gaming systems playing on PDAs or cellular devices or devices in a cellular network. Thus, according to exemplary embodiments, the following steps are carried out:
A) Rendering a plurality of video frames, each said video frame rendered in less than a first number (i.e. Xl) of seconds;
B) Serving and/or presenting said rendered video frames at an average rate whose value is a second number (X2) of said rendered video frames per second,
Wherein a ratio between a reciprocal of said first number and said second number is at least a ratio number whose value is at least 2. In some embodiments, the value of the ratio number is at least 5, or at least 7, or at least 10.
Caching of Game Commands and/or Application Commands
In some embodiments, the data representation of the virtual universe (i.e. in the common data repository) is modified "just in time" - i.e. as game commands (or data indicative thereof) are received from the client devices 112. Nevertheless, this is not a limitation of the present invention. In some embodiments, game commands (or alternatively, commands related to ANY application other than a game, including but not limited to ERP systems) may be received, and stored in a "command cache" and not immediately "applied" to the virtual application universe (for example, virtual gaming universe).
Referring to FIG. 6, it is noted that instead of applying game commands (or commands for any other application) "one by one" (i.e. one at a time), game commands may be received and first stored 1210 in a command cache (not shown) for a period of time (or until a specific condition is satisfied 1218). At that point, some or all game commands may be cleared 1212 from the command cache, and the virtual world or universe (for example, the virtual gaming universe) may be modified 1216 in accordance with the previously cached application (typically gaming) commands. Optionally, game commands may be filtered 1214, or contradictory game commands may be resolved before the virtual world or universe is modified in accordance with "surviving" game or application commands.
For example, a command to move to the left and a command to move to the right may 'cancel each other out' (or contradict) and be filtered.
This even refers to 'legally valid' commands according to game engine 312 logic.
Thus, instead of modifying the virtual world or universe (i.e. gaming universe or world) immediately upon receiving application commands (i.e. game commands), application (for example, game) commands are first cached (in a command cache or data cache) for a certain period of time, and then, after the "cache delay" (i.e. amount of time the commands are stored in the cache), virtual world or universe is modified in accordance with the game commands.
This may be useful for a number of reasons: A) Application and/or game fairness
When providing a multi-player gaming service in a network where the latency (i.e input latency - time it takes to receive input) of different client devices may vary, it may be important to maintain a "fairness policy." In one example, an application server array is maintained in Israel, and there are client devices in Israel and in the United States. According to this example, the time it takes the application server array in Israel to receive data indicative of game commands from client devices located in Israel is much less than the time it takes the application server in Israel to receive data indicative of game commands from client devices located in the United States. If the virtual gaming universe were to be modified in a "just in time manner" as game commands are received at the application server, users of client devices in Israel could enjoy an unfair advantage - their 'reactions" to the game situation would be received faster.
According to one example where the application server is in Israel but there are client devices both in Israel and in the United States, at t=100 command "A" is received at the application server in Israel from a client device in Israel (the user in Israel generated command "A" on his client device at time t=99.5). At t=101, a command "B" is received at the application server in Israel from a client device in Israel (the user in the United States generated command "B" on his client device at time t=99). If commands are processed as received, the virtual world would first be modified in accordance with command "A," then in accordance with command "B," giving an unfair advantage to the user who sent a command later.
In order to obviate this situation, it is possible to cache game commands (or commands for other applications) before modifying the virtual world. The cached commands may then be handled "as a group" - for example, by pre-processing before modifying the virtual world according to the cached game commands.
For example, in order to provide a "fairness" policy, the time that game commands were generated may be estimated or determined (for example, by estimating a latency and/or by sending the game commands with a time stamp), and "previously generated" (or game commands estimated to be previously generated) may be given priority - i.e. the virtual world may be modified first using game commands with "priority."
Thus, in some embodiments, an order in which application and/or game commands are "applied" to the virtual universe is determined in accordance with the game command client device network latency. The device network latency of a given client device 112 is the latency and/or estimated latency between a given client device 112 (or the estimated latency) and the application server. It is noted that this may vary in time as a
function of the quality of the network connection between the client device and the application server. The "game command client device network latency" of a given game command is the device network latency (real latency or estimated latency) of the device that generate the given game command at the time the given game command was generated.
Thus, by maintaining this "fairness policy" the order in which game commands are "applied" to the virtual universe (the order in which the virtual universe is modified in accordance with the respective game commands) is not necessarily the order in which these game commands are received at the client device.
In some embodiments, the condition 1218 is based on pre-determined parameters (determined, in accordance with network parameters). Alternatively or additionally, the condition 1218 may be determined dynamically (for example, in accordance with the time stamps of the received commands), and may also vary as a function of time. In one example, as network congestion increases, the timing condition requires clearing of buffer and application of commands to the virtual world or universe after a longer period of time. B) Scalability
There are many situations where game commands are determined to be irrelevant and/or there may be "contradicting" game commands. Irrelevant game commands may include commands that are generated at a first point in time and received at the application server a later point in time, but have become "irrelevant" in the interim. One non-limiting example of an irrelevant game command is a command that a user sends when a user's game character is alive, but by the time the game command is received at the application server, the user's game character is dead (the user's character was dead or 'destined' to be dead at the time the user generated the game command).
In order to provide better scalability and to reduce the computational resources required to provide a gaming server to a large number of players simultaneously (for example, at least 1,000 or at least 10,000 players it may be desired to filter "irrelevant" and/or substantially irrelevant and/or contradictory game commands that have been stored in a command cache before modifying the virtual world in accordance with the commands.
In some embodiments, a new protocol is provided (and methods and systems for implementing his protocol - i.e. on the client or serer end - is provided) where game commands are associated with a frame for which they are generated. This will allow for a greater sense of 'fairness.'
A Technique for Adapting Computer-Generated Graphics' Details and Video Characteristics to the Real-Time Presentation Capabilities of the Display Device and its Environment - A Discussion of FIG. 11
FIG. 11 provides a block diagram of an exemplary multi-player interactive gaming system in accordance with some embodiments of the present invention. In FIG. 11, the server array streams video streams 116 adapted in accordance with the display/graphics capabilities of the client device 112.
In exemplary embodiments, not every client device 112 has identical graphical display capabilities/resources. In particular, the plurality of client devices includes at least two client devices (i.e. client 112 A and client 112N) which are configured to have different display capabilities.
In one example, clients 112 A and 112N are different models of cell phones. For example, client 112A may be a "high end" cell phone with high pixel resolution (and configured to display a high number of frames per second) and a larger screen while client 112N may be an "entry level" cell phone with more primitive display features.
In another example, clients 112 A and 112N may be identical devices but client 112 A is configured (for example, in accordance with user preferences) to provide more sophisticated display capabilities, while client 112N is configured to provide more primitive display capabilities (for example, in order to conserve battery power).
In another example, client 112 A is a cellular telephone and client 112N is a notebook or desktop computer. Certain individual users play the same game using multiple client devices - for example, using the cellular telephone while traveling on a bus or train, and the desktop or laptop when they arrive home or at the office.
It is noted that the respective encoded video stream 116' streamed by streamer 352 to each client device 112 is provided or "customized" in accordance with the respective display characteristics of each client device 112 that receives the video stream 116. Rendering Individual Video Streams in Accordance with Display Characteristics of the Client Device
In exemplary embodiments, the multi-video output rendering engine is operative to render individual video machine in accordance with display characteristics of the client device. Towards this end, data indicative of target device display capabilities may be provided to the multi- video output rendering engine 316A. Upon receipt of this data, multi- video output rendering engine 316 is operative to render each rendered video stream 116 in
accordance with data indicative of the display characteristics of the target respective client device that is to receive the respective rendered video stream 116.
Exemplary device display characteristics include but are not limited to a device resolution, a device screen refresh rate, device contrast parameters, color parameters (for example, a number of colors), screen size and/or aspect parameters (for example, screen size or ratio between horizontal and vertical dimensions of the screen))
According to FIG. 11, data indicative of the respective display characteristics of each client device (for example, including but not limited to resolution parameters, refresh rate/ refresh parameters, is communicated to the multi- video output rendering engine 316A, which generates each rendered video 116 in accordance with the received video.
In exemplary embodiments, the rendered video comprises a plurality of graphics objects all of which are not assigned the same "importance." For example, in a combat game between avatars, a user's avatar is could be designated a more "important" object than a background landscape object. In another example, a space ship needs to dodge certain asteroids in order not to be eliminated, and the individual asteroids are designated "important," for example, because of the influence wielded on the outcome of the game.
It is appreciated that larger graphics objects are not necessarily more important than smaller graphics objects. hi one example, if the multi-video output rendering engine 316 receives data indicative of a low screen resolution, certain objects will not be rendered by the output rendering engine 316 (for example, less "important" objects)(or will be rendered, for example, with less contrast or fewer colors) into the rendered video 116.
In exemplary embodiments, when rendering (by a single output or multi-output rendering engine) in the server array (i.e. 'on the server') in accordance with respective data indicative of the display characteristics of the respective target client device, one or me of the following may be carried out (any combination of the following): a) selecting a color of the graphics object in accordance with the target client device display characteristics. Thus, in one example, a "sophisticated" client display displays a given object as pink (i.e. and rendered video for the sophisticated client display is generated with the object being pink), while for a more primitive display device with a screen for which it is more difficult to discern details, the object is rendered as a red object because red is easier for a user to see. b) selecting an object size (i.e. relative to the screen size - i.e. the "proportional size") of the graphics object in accordance with the target client device display
characteristics. Thus, in one example, a "sophisticated" display displays a given object as proportionally small (i.e. and rendered video for the sophisticated client display is generated with the object being proportionally small), while for a more primitive display device with a screen for which it is more difficult to discern details, Hie object is rendered as proportionally larger object because is easier for a user to see the larger object. c) selecting a location of the graphics object in accordance with the target client device display characteristics. Thus, in one example, a "sophisticated" client display displays a given object an object at the edge of the screen (i.e. and rendered video for the sophisticated client display is generated with the object being at the edge of the screen), while for a more primitive display device with a screen for which it is more difficult to discern details, the object is rendered closer to the screen center because is easier for a user to see. d) effecting a display decision of whether or not to display (or not to display) the graphics object in accordance with target client device display characteristics (i.e certain objects are only rendered for video designated for more sophisticated devices, while more primitive devices would not display the object at all in order to reduce the number of decisions) ; e) effecting a dimensionality display decision for said graphics object in accordance with target client device display characteristics (for example, for a more sophisticated display device the object is rendered in 3D and for the more primitive display device the object is rendered in 2D) f) effecting an internal detail display decision for said graphics object in accordance with target client device display characteristics (for example, for more sophisticated devices, certain internal details of the object are displayed and video is rendered accordingly, while for more primitive device, fewer internal details of the object are displayed and video is rendered accordingly - in one example, a person is shown "abstractly" on the primitive device while the more sophisticated device shows certain internal details of the person (for example, fingernails, eyebrows, etc); g) location of an object on the screen (i.e. within the frame); h) video overlay;
It is note that the aforementioned discussion of rendering objects in accordance to device display characteristics is relevant both for static graphical objects as well as for
moving graphical objects for "user-controlled objects" controlled by a user as well as "machine-controlled objects" controlled by a the machine.
In exemplary embodiments, a "primitive display" typically refers to a display with a smaller screen, and a more sophisticated display typically refers to a display with a larger screen. Nevertheless, embodiments where parameters other screen size determine "primitiveness" or "sophistication" of a display device are also contemplated.
Typically, the most important parameter for determining if a client device is 'primitive' device (and/or has a primitive display) or is 'sophisticated' is display screen size.
Providing Data Indicative of Respective Client Device Display Characteristics to the Multi-Video Output Rendering Engine 316
There are a number of techniques for providing data indicative of client device display characteristics to the multi- video output rendering engine 316. In exemplary embodiments, combinations of various techniques may be used.
In some embodiments, streamer 352, in communication with client device 112, detects the display characteristics and/or target screen capabilities of the device. For example, upon session initiation (including but not limited to session initiation protocol (SIP), H.323, RTSP (real time streaming protocol).
Alternatively or additionally, this data may be available from an external database. In one example, a query is sent to a database of the telephone service provider.
Alternatively or additionally, an "internal database" may be maintained containing data indicative of client device display characteristics for a given user or subscriber.
Alternatively or additionally, an ad-hoc query may be sent to the client device. For example, a communications protocol between the server array HOA and the client device 112 may include a query sent to the cent device of device display characteristics. Additional Discussion about Rendering in Accordance with Device Characteristics
As target screen's size is reduced, either in area or in color depth, the picture details are usually reduced proportionally. We propose to reduce the size or contrast of some (important) details less than the overall reduction. Other (very unimportant) details could be reduced more than the overall reduction, even to extinction. Some details like brightness can be increased.
Some reduction actions could be done a-priori, prepared for certain types of target screens.
Providing more detailed or less detailed picture can be implemented in a number of ways. In some implementations, data indicative of "object importance" is stored in the
common data repository 314. According to this example, the multi-vide output rendering engine 316 has a threshold of Object importance' required in order to render a given object into the rendered video stream 116. For a given video stream, this threshold may vary in accordance with the target device's display characteristics. Thus, for a "sophisticated" display device, the minimum Object importance' required may be relatively low, allowing for more objects to be rendered than for a 'primitive' display device, where the minimum object importance threshold may be higher.
According to another example, the contrast for a rendered object may be determined in accordance with an Object importance' score stored in the common data repository 314 and the data indicative of device display characteristics. Potential Benefits Provided By Exemplary Embodiments
The method enables getting a picture on an inferior screen while keeping the important details visible. Moreover, as the target screen is changed, picture could be readjusted to include more or less (important) details. User will get the best visual service that can be done. Due to personal calculation for every player, a game with different types of handsets can be performed and even a user can change its handset during a session and still get the right video to support best (rendered video) available quality.
This functionality will eliminate the need for creating new version for every game for the purpose of porting a PC game to Cellular devices. Additional Techniques of Providing an Electronic Gaming Environment
Throughout this disclosure, it is noted that each client device may be associated with a respective gaming character. It is noted that, during the course of the game, the gaming character associated with a specific client device may change, hi one example, the game is a single player or multi-player soccer game, and gaming characters are soccer players. At one point, a certain user's gaming device may be associated with one specific gaming character (a particular soccer player, such as a goalie). At a later stage in play, certain user's gaming device may be associated with a different specific gaming character (for example, an attacker). This "association switch" may be triggered, for example, in accordance with a user request, or by the gaming engine (for example, in accordance with the position of the ball on the field).
System and Method for Providing Programming for Spectators
There is an ongoing need for new types of television programming.
Television broadcasts (distributed through television distribution channels and/or over the Internet and/or over a "TV phone") of competitive events are well known in the art. For
example, millions of viewers every day watch various sporting events on their televisions. These sporting events are usually pre-scheduled and presented as part of an "entertainment package" or "show format" to the viewers. Typically, the identities of the competitors of the sporting event are publicly disclosed before the event in order to draw viewers. Typically, competition is paused at periodic intervals in order to broadcast various commercial messages. After each commercial message, broadcast competition is resumed.
The present inventor is now revealing for the first time that it is useful to make available one or more views of the virtual gaming universe (of a single player and/or multi- player game) to one or more spectators. In some embodiments, specific games may have a specific starting time and/or ending time which is pre-scheduled and made available to spectators and/or prospective spectators, though this is not a limitation.
In some embodiments, there is an announcer (for example, a voice announcer) who announces to spectators information about events that transpire in the virtual universe (for example, the "virtual" first national bank has been robbed, or "Derek Jeter his a home run") In one example, the user can control whether or not an audio announcer is provided, or configure properties of this audio announcer. Li one example, there may be different audio announcer "personalities" (for example, a Howard Cossell personality, a Jon Madden personality, etc).
Thus, it is now disclosed for the first time a system for providing and/or distributing this programming (i.e. video and optionally and preferably audio of multi-player games) to spectator viewers, and methods and computer-readable code for providing the same. Thus, the "spectator" is provided with one or more views of the virtual universe.
More specifically, it is disclosed that single-player or multi-player video games (for example, "low latency single-player or multi-player video games") may be broadcast and/or distributed (for example, as "television programming", over the internet, radio broadcast, distribution over a telephony system, cable or any other means) to a plurality of viewers. In some embodiments, the identities of the competitors (either the virtual gaming characters and/or the human users controlling the game characters) of the sporting event are publicly disclosed before the event. In some embodiments, the single multi-player video game competition may be "paused" for commercial messages, and resumed after the commercial messages.
There is no limit on the single or multi-player gaming system used to provide the virtual universe. In some embodiments, this mutli-player gaming system is a gaming system disclosed herein, though other embodiments are contemplated, hi some embodiments, this
multi-player gaming system is a "low latency system" for example, a low latency system where players and/or spectators are physically distributed over a wide geographic region or communicate through a wide "network" region. Alternatively or additionally, one or more players and/or spectators may be situated substantially in a single geographic and/or network location.
In some embodiments, spectators are charged a price to view the game or advertisers are charged a price to present messages associated with a particular game., This price may be computed in accordance many factors, such as the type of game, the players of the game (either gaming characters such as avatars or in accordance with the human users controlling the gaming characters).
In some embodiments, the spectators are passive and are only provided with a view of the virtual gaming universe without the ability to influence events within the gaming universe (for example, without the ability to control gaming character). Alternatively and optionally, the spectators are provided with a mechanism for exerting control limited in some degree (usually an "indirect" control via the players, but also there is a possibility of direct control) over the "physical" events within the game universe.
In some embodiments, this is a "service" (for example, a pay service or a free service) that may be available "on demand" instead of at a pre-determined time.
In some embodiments, the participants (competitors) are located in a single location. Alternatively, they may be dispersed at a number of locations, for example, in different cities or different countries. Both individual competition as well as competitions with teams may be used. In some embodiments, there is no "competition" per se.
In some embodiments, individual players may participate using a traditional "computer" as a client device. Alternatively or additionally, individual players may participate using a mobile device (i.e. telephone and/or PDA) as a client device.
In some embodiments, league competition or tournament competition may be broadcast.
Thus, in some embodiments, a particular "spectator interface" allowing the spectator to choose view properties or other properties is provided. Spectator or "Fan" Influence on Events of Within the Virtual Universe
In the real world it is noted that fans who attend a live event (for examples, fans who attend a football game or hockey game in a physical arena on a "real" gridiron of grass or a "real" ice rink) may have some limited control over the movement of the players and/or over events that transpire within the game. For example, spectators may encourage a player to
exert himself to a greater extent, thus "psychologically" increasing the resources (i.e. strength, stamina) available to that player. Alternatively, spectators may "root against a player" concomitantly decreasing the resources available to the player.
In another examples, fans may pass important information to the players of a game or event. For example, the fans may reveal to a player or team the movements of an opponent or may other may reveal the existence of other conditions or events within the game or relevant to the game (for example, a warning that a certain patch of grass is slippery, etc). Similarly, fans (for example opposing fans) may reduce the amount of information available to a player, either by disseminating "misinformation" to a player (for example, instructing a baseball player to swing at a bad pitch) or by distracting the player (for example, making a lot of noise so team players cannot hear each other).
The aforementioned examples relate to the case where a spectator may "indirectly" influence events within the game. In many examples, however, the fan may "directly" generate events within the physical game universe. For example, a player may throw a bottle on the field, or may run out onto the field generating an "interference"-like event. In one famous example, in 2003, Cubs fan Steve Bartman, situated near the perimeter of the playing area (i.e. in the "stands"), deflected a foul ball off making the ball uncatchable.
The present inventor is now disclosing, for the first time, that this concept of fan influence may be adopted for and generalized to the virtual gaming universe. Thus, in some embodiments, video game "spectators" viewing a game through a video screen of a client device may influence events within the gaming universe, for example, may modify an "intrinsic" property of one or more players (for example, strength, stamina, etc), and/or may increase or reduce the amount of information available to all players or a specific players or a specific group of players.
In some embodiments, the fan or spectator may be associated with a certain physical position or region outside of the "official" region of play (virtual "stands"). Thus, in one example, certain players in one region of the "stands" may pass information available only to players on the "game field" of the virtual universe in physical proximity (for example, in virtual "shouting region" of the position of the fan in the stands) to the fan within the "virtual stands" or "spectator region" of the gaming universe. Typically, the spectator is restricted to the "spectator region" though there are examples where a spectator may enter the "gaming region" (for example, a virtual fan "running out onto the field").
Thus, in some embodiments ,different fans may have different abilities to influence events in the game (typically, to "indirectly" influence events, but not limited to indirect
influence) depending in a respective position of the spectator or fan within the spectator region.
It is noted that the concept of "fan influence" is not a limitation of the present invention, and embodiments where the fans are "purely passive" spectators with no influence over what transpires within the virtual universe are also contemplated. In some example, a certain limited group of fans are afforded more influence than other fans (who are allow less influence or no influence). The physical analogue of this situation is a baseball game where the spectators with the "good seats" are in "direct proximity" of the playing field and can wield more influence (through stronger "cheering ," passing information that will be heard by players, direct interference) while players with "inferior seats" (for example, a higher level within the stands) are afforded less influence.
Thus, embodiments where certain fans may "buy" more influence than other fans are also contemplated. This influence may be purchased by effecting a payment, of "real cash" or its equivalent (i.e. digital cash, credit card, etc) or by payment of other types of "points."
In some embodiments, the players of the video game may participate sequentially, rather than in head to head competition. One example would be virtual figure skating.
In some embodiments, the spectators may rate (or vote on) various qualities of the game players (for example, qualities of a virtual swimming pool diver or figure skater).; In some embodiments, this may be done in accordance with a "pay model" where spectators who pay more are afforded more "votes" or a more sophisticated "rating influence."
In some embodiments, the system is configured (or a method or code is provided) to allow spectators to gamble on various outcomes of the multi-player game or virtual universe. In some embodiments, various "odds" may be updated, for example, in real time, in accordance with events of the multi-player game.
EXEMPLARY TECHNIQUES FOR ENCODING AND/OR DECODING AND/OR TRANSMITTING ELECTRONIC VIDEO CONTENT Discussion of Figs. 12; 13A-13C
As noted in the background section of the present disclosure there is an ongoing need for improved techniques for encoding and/or decoding electronic video content.
It is noted that decoding and displaying the pictures requires a certain amount of computational resources. Typically, handling of I frames is more resource intensive than handling of B or P frames. When the decoder periodically receives an I frame, there thus may be a periodic "spike" in the amount of computational resources required to handle the I frame. During the time that P frames (or other "light frames" representing changes in an
image rather than the entire image), the amount of computational resources required could be less. There is an ongoing need for methods and systems for stabilizing, in time, the amount of resources needed to decode and/or encode video.
According to some embodiments, instead of sending only 'full' I frames and 'full' P frames, it is possible to send 'spatially partial I frames' that in some locations have I frame data and in other locations have other than I frame data. In the example of FIGS. 12 and FIG. 13A-13C the 'spatially partial' I frames (or 'partial I frames') are generated by breaking up a given I frame into a plurality of I frames by "splitting" the I frame into different constitutive pieces. Each piece are frame including a partial I frame may be sent over a network. Because the size of each piece is smaller than the size of the original I frame, the amount of resources (for example, computational and/or network resources) required to handle each frame comprising a spatially partial I frame(s) may be less than the amount of resources required to handle the 'original' I frame before splitting into 'pieces.'
In one non-limiting example, the screen is divided into four different regions (see FIG. 12). A first I frame limited only to data of region A 852 is then sent. Afterwards, a second I frame 856 limited only to data of region B is sent. Afterwards, a third I frame limited only to data of region C 860 is sent. Afterwards, a fourth I frame limited only to data of region D 864 is sent.
FIG. 13 A provides an illustration of exemplary 'spatially partially' I frames or partial I frame. Frame 870A is an I frame 890 in region A 852 but is 'dormant' in other regions (i.e. does not provide video data). Frame 870A is an I frame 890 in region A 852 but is 'dormant' in other regions (i.e. does not provide video data). Similarly, frame 870B is an I frame 892 in region B 8526 but is 'dormant' in other regions (i.e. does not provide video data), and so on.
For the present section, and for the present example of dividing the frame or screen into four regions (as device in FIG. 12), the following notation is defined for a given frame: the frame is described as F followed by a square bracket. If, for a given frame, if within the square bracket the letter "I" appears with a subscript, the given frame is at least partially an I frame. In particular, the frame is partially an I frame in the region (i.e. A-D) of the subscript. It is noted that the frame can be partially an I frame in more than one region specified in the square brackets.
In a given generated sequence of video frames (for example, generated by encoding 'input' frames), after one or more I spatially partial I frames it is possible to provide one or more at least spatially partially P frames encoded relative to spatially partial I frame. At the bottom of FIG. 13, there is illustrated a multi-reference P frame that includes: a P frame
portion encoded relative to distinct at least partially spatially I frames. For the present disclosure, for a given frame, if within the square bracket the letter "P" appears with a subscript, the given frame is at least partially an P frame. In particular, the frame is partially a P frame in the region (i.e. A-D) of the subscript. It is noted that the frame can be partially an P frame in more than one region specified in the square brackets.
At the bottom of FIG. 13 A, an illustration of a so-called multi-reference P frame is provided - in contrast with 'conventional' P frames which are encoded relative to a single I frame (and optionally one or more previous P frames that succeed the single I frame), the multi-reference P frame are encoded relative to multiple I frames (in the example of FIG 13 A, all of 870A; 870B; 870C; and 870D (and optionally one or more P frames that come after the I frame).
FIG. 13B provides a flow chart of an exemplary techniques for 'splitting' a single I frame into multi-I frames. By breaking up the 'heavy' I frame, this may be useful for 'smoothing' the amount of computer resources (i.e. CPU and/or network) for handling the heavy I frames.
For the present disclosure, the partial I frames obtained by splitting an input partial or complete 'input' I frame (for example, in steps S1201-S1209) are referred to as 'siblings' of each other since they originate from the same 'input frame' (i.e. in a single location in the 'input frame' ordered sequence)
FIG. 13C provides a description of an exemplary ordered sequence of I frames and P frames according o the technique of FISGS. 13A-13B. Thus, after providing in the sequence partial I frames for all 4 regions (i.e. 1510-1522) an uninterrupted sequence of non-I frames (i.e. frames 1526-1534) is provided. It is noted that because frame 1530 is encoded relative to a previous P frame 1526 as well as still earlier partial I frames (i.e. frames 1510-1522), the constitutive partial P frames of frame 1530 are 'second generation' - i.e. encoded relative to and thus 'descending' from 'first generation' P frames (i. Constitutive frames of 1562). The generation of a given spatially partial P frame is denoted by the numerical superscript after the letter "P." The constitutive partial P frames of frame 1534 are 'third generation'.
It is noted that every frame of 1526-1534 is generationally homogenous - i.e. every P constitutive spatially partial P frame has the same superscript for each given frame. A Discussion of FIGS. 14A-14B
One shortcoming of the technique described in FIGS. 13A-13C is when the 'dormant' frames are handled, there are regions of the frame that are not updated. Thus, unfortunately, there may be a sacrifice of video quality.
The present inventor is now disclosing for the first time that it is partial to provide what is defined as hybrid frames (see FIG. 14A) where one portion of a given frame is a spatially partial P frame and another portion of the given frame is a spatially partial I frame.
It is noted that one salient feature provided by certain (but not all) hybrid frames is co-resident partial P frames that are encoded relative to different partial I frames that are not siblings of each other - one example of this is given in FIG. 14B (see, for example, frame 1578 of FIG. 14B which is includes a first constitutive spatially partial P frame 1571 encoded relative to partial I frame 1570 and a second constitutive spatially partial I frame 1573 encoded relative to partial I frame 1583 - noted that partial I frame 1570 and a partial I frame 1573 are NOT siblings.
Instead, as illustrated in FIG. 16, partial I frame 1570 is derived from a first input frame 1670 and partial I frame 1574 is derived from a second input frame 1674 - thus 1570 and 1583 are not siblings.
Another salient feature provided by some frames in FIG. 14B is that some frames (i.e. frames F3-F6) are not generationally inhomogeneous — note the presence of different P- generation subscripts within the same frame as opposed to FIG. 13 C.
In FIG. 15, it is noted that an ordered sequence 1710 of frames may be encoded using hybrid P-frames-I frames are generationally inhomogenous at least partially P frames. This may be carried out using a frame encoder 1714 implemented using any combination of hardware and/or software.
In the present disclosure, any described element or component may be implemented using any combination or hardware and/or software.
The ordered sequence of encoded frames 1718/1730 of encoded frames may be decoded by a frame decoder 1734 as shown in FIG. 15. Additional Discussion Relating to FIGS. 13-16
It is appreciated that this concept may be generalized - the frame may be split into any number of regions, of any shape. It is important to stress that non-contiguous regions and/or contiguous regions are both appropriate
In some embodiments, an area of a region for a partial I frame is at least 10% and at most 50% of the area of the frame, though this is not a limitation.
Thus, any defined method for the frame splitting may be used, including but not limited to square by square in the way that each "partial frame" includes lines from up to bottom and from left to right. Alternatively or additionally, each partial frame can include information of a dilute picture e.g. every tenth pixel in a given row or column for a given
partial I frame. According to this example, different partial I frame would use different pixels of the "dilute picture."
It is noted that, in some examples, the presently disclosed "partial I frames" may be sent in the same video sequence as "full I frames."
According to some preferred embodiments, during very slow video (i.e. when the P frames are not "heavy" and when handling the P frames is not resource intensive) we transfer can transfer more complete the I-frames (for example, example, whose regions is a greater portion of the entire frame). During "faster video" (i.e. when there are more changes per frame, and the P frames are "heavier"), less "complete" I frames may be sent (i.e. covering a less portion of the entire frame). This allows for the "smoothing" of computing resources (i.e. computational resources and/or network resources).
In some embodiments, the frames are 'dynamic frames' - the borders by the partial P portions and/or partial I portions and/or dormant portion are not 'fixed' as in FIGS. 13-15 but change in 'time' (i.e. between frames and are thus dynamic). In one example, criteria for deciding which objects in the video are 'important' are established and regions where this object is located may be preferentially designated as partial I frame regions - i.e. even if this object is of arbitrary and possibly non-constant shape and even if this object 'moves' between frames and 'over time.'
Though not a limitation, it is noted that in some embodiments, this presently disclosed technique may be useful in a constant bit rate transfer network. In particular, in such networks spikes in required bandwidth associated with "heavy" I frames may be problematic, and the solution presented herein may be helpful for smoothing required bandwidth.
Not wishing to be bound by theory, one or more advantages may include, in some embodiments, controllable bit rate and/or graduated recovery process. Discussion of FIG. 17
In some embodiments, video encoding using a presently-disclosed technique for encoding video is sent to a client device 112 (for gaming video or any other video other than gaming video - for example, 'movies'). Unfortunately, the client device 112 which includes a host 1400 (for example, a mobile telephone or any other host device) may not be capable of decoding the video using the onboard CODEC(s) (i.e. typically implemented in hardware).
Thus, it may be problematic to reconfigure the host 1400 (i.e. to include the appropriate CODEC(s) so that the media player 1412 may carry out a technique for decoding
video frames disclosed herein) to decode electronic video content encoded using a presently- disclosed technique.
Towards this end, a technique is disclosed in FIG. 17 so that a host device (i.e. not operative to decode video) may, when coupled to a presently disclosed novel peripheral device, nevertheless (i) receive S1451 video (by a receiver 1404 of the host); (ii) decode S1466 video (i.e. by the peripheral device 1410 which includes an onboard CODEC(s) for decoding video as disclosed herein; and (iii) playback decoded (or alternatively, re-encoded video derived from the decoded video and encoded using a scheme recognizable by media player 1412).
It is noted that the host device 1400 is capable of communicating with a flash memory card or other peripheral using a 'standard' device protocol - for example, a USB, MMC or SD-type protocol.
Thus, the peripheral 1410 device may 'fool' the host 1400 by presenting itself as a 'standard' peripheral device recognizable by host 1400 - for example a flash memory card.
On the host 1400 resides a 'standard' application 1408 which attempts, using the standard flash memory card protocol, to send S1454 the received video stream to the 'flash card' (for example, using a 'stream send' or 'file save' command). The host 1400 may be completely ignorant of what transpires on the peripheral 1410 device and 'believes' that it is (for example, using 'standard' software application 1408): (i) sending S1454 digital content (i.e. as a stream and/or file) to the coupled 'flash card'; (ii) retrieving and playing back S1478 the 'saved' media content (i.e. either not encoded or encoded using a 'standard' protocol).
Within the peripheral, behind the 'flash memory card interface,' the device may decode (i.e using a presently disclosed technique for decoding media content) the received video content as described in FIG. 17.
Thus it is now possible to enable 'standard' host devices to implement this technique for decoding video content even if there is no access to modify the media player 1412 to carryout a presently disclosed technique for decoding video content.
While the invention has been described with respect to a limited number of embodiments, it will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described herein. Rather the scope of the present invention includes both combinations and sub-combinations of the various features described herein, as well as variations and modifications which would occur to persons skilled in the art upon reading the specification and which are not in the prior art.
In the description and claims of the present application, each of the verbs, "comprise" "include" and "have", and conjugates thereof, are used to indicate that the object or objects of the verb are not necessarily a complete listing of members, components, elements or parts of the subject or subjects of the verb.
All references cited herein are incorporated by reference in their entirety. Citation of a reference does not constitute an admission that the reference is prior art.
The articles "a" and "an" are used herein to refer to one or to more than one (i.e., to at least one) of the grammatical object of the article. By way of example, "an element" means one element or more than one element.
The term "including" is used herein to mean, and is used interchangeably with, the phrase "including but not limited" to.
The term "or" is used herein to mean, and is used interchangeably with, the term "and/or," unless context clearly indicates otherwise.
The term "such as" is used herein to mean, and is used interchangeably, with the phrase "such as but not limited to".
The present invention has been described using detailed descriptions of embodiments thereof that are provided by way of example and are not intended to limit the scope of the invention. The described embodiments comprise different features, not all of which are required in all embodiments of the invention. Some embodiments of the present invention utilize only some of the features or possible combinations of the features. Variations of embodiments of the present invention that are described and embodiments of the present invention comprising different combinations of features noted in the described embodiments will occur to persons of the art.
Claims
WHAT IS CLAIMED IS:
1) A server-based system for providing gaining services, the system comprising: a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe including at least one user- controllable gaming character 816, said gaming engine operative to associate a given said gaming character 816 with game commands of a given said client device 112, said game engine 312 being operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to: i) derive, from a first said snapshot 2100 associated with a first game time tg 0 2102 and a first game command set C0 2104, a second snapshot 2200 associated with a second game time \%{12Q2 and a second game command set C1 2204; and ii) derive, from said first snapshot 2100, a third snapshot 2110 associated with a third game time tε 2 2122 and a third game command set C2 2204, wherein: i) (US2- teo) <= (US1- tso); ii) said third game command set C2 2204 includes at least one extra game command relative to said second game command set C1 2204; iii) said game engine is operative such that said deriving of said second snapshot 2200 includes:
A) predicting a future state 816B of said given user- controllable gaming character 816 for said second game time tg !2202, said future state 816B being different from a current state 816A of said given user-controllable gaming character;
B) predicting a future state 810B of at least one object 810 in said virtual gaming universe other said given user- controllable gaming character 816 for said second game time
C) computing a relationship between said predicted future states 816B and 810B.
2) The system of claim 1 further comprising: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character.
3) The system of claim 2 wherein said third snapshot contradicts said second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112.
4) The system of claim 1 wherein said game engine 312 is operative to associate each said 112 client device of a plurality of client devices with a respective said gaming character, and to derive, for said respective gaming character, a respective said second snapshot from said first snapshot.
5) The system of claim 2 further comprising: c) a data streamer operative to send to said each client device 112, said second respective snapshot associated with said respective gaming character.
6) The system of claim 5 wherein said third snapshot contradicts said respective second snapshot according to game logic of said game engine 312, and said game data streamer is further operative, after said sending of said second snapshot to said client device, to send to a derivative of said contradictory said third snapshot to said client device 112.
7) The system of any of claims 1-6 further comprising: c) a data streamer operative to send said second snapshot to said client device associated with said gaming character associated with an indication of a latency- based display delay, said latency-based display delay derived from an assessed latency of said client device.
8) The system of any of claims 1-7 further comprising: c) a transmission delay engine 348, wherein said data streamer and said 352 and said transmission delay engine 348 are operative to delay transmission of said second snapshot in accordance with an assessed latency of
9) The system of claim 8 wherein said transmission delay engine 348 is operative to differential delay transmission a first delay time for a first said client device having a first assessed latency and a second delay time different from said first delay time for a second
client device having a second assessed latency different from said first said assessed latency.
10) The system of any of claims 1-9 wherein said predicted future state of said conroUable gaming character includes at least one of: i) a predicted future position of said controllable gaming character at time tgj that is different than a position of said controllable gaming character at time tSo; ii) a predicted orientation of said controllable gaming character at time t% that is different than an orientation of said controllable gaming character at time
11) The system of any of claims 1-10 wherein said predicted future state 810B of said object 810 includes at least one of: i) a predicted future position of said object 810B at time tg] that is different than a position of said object at time t§0; ii) a predicted orientation of said object at time tgj that is different than an orientation 810A of object at time ts0-
12) The system of any of claims 1-11 wherein said object is a gaming character other than said gaming character.
13) The system of claim 12 wherein said other gaming character is a user controllable gaming character controllable by a client deice 112 other than said given client device.
14) The system of any of claims 1-11 wherein said object is other than a gaming character.
15) The system of any of claims 1-14 wherein said application server array 110 is operative such that at least one of: a) (t§ 2- tg 0); and b) (p\- %) is determined in accordance with any combination of: i) an assessed latency of said given client device; ii) an assessed latency of a client device other than said given client device;
16) A method for predicting said second and third snapshots from said first snapshot according to a technique disclosed in any of claims 1-15.
17) A method for providing gaming services, the method comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and b) maintaining, on said application server array 110, a virtual gaming universe including at least one user-controllable gaming character 816 such that a
given said gaining character 816 is associated with game commands of a given said client device 112; and c) generating snapshots of said virtual universe, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time tgo 2102 and a first game command set Co 2104, a second snapshot 2200 associated with a second game time 18^202 and a second game command set C1 2204; and ii) deriving, from said first snapshot 2100, a third snapshot 2110 associated with a third game time tg 2 2122 and a third game command set C2 2204, wherein: i) (tg 2- teo) <= CtS1- tg 0); ii) said third game command set C2 2204 includes at least one extra game command relative to said second game command set C1 2204; iii) said game engine is operative such that said deriving of said second snapshot 2200 includes:
A) predicting a future state 816B of said given user- controllable gaming character 816 for said second game time tSχ2202, said future state 816B being different from a current state 816 A of said given user- controllable gaming character;
B) predicting a future state 810B of at least one object 810 in said virtual gaming universe other said given user-controllable gaming character 816 for said second game time t8x 2202; and
C) computing a relationship between said predicted future states 816B and 810B.
18) A server-based system for providing gaming services, the system comprising: a) an application server array 110 adapted to receive, from at least one client device 112, data 118 indicative of game commands; and b) a game engine 312 residing at least in part on said application server array 110 for maintaining a virtual gaming universe, said game engine 312 being
operative to generate snapshots of said virtual gaming universe, said game engine 312 being operative to derive, from a first said snapshot 2100 associated with a first game time tgo 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time tS!2202 and said first game time tg 0 2102is determined, at least in part, in accordance with an assessed server-client latency of at least one said client device.
19) A method for predicting said second and third snapshots from said first snapshot according to a technique disclosed in claim 18.
20) A method for providing gaming services, the method comprising: a) receiving, at an application server array 110 from at least one client device 112, data 118 indicative of game commands; and b) maintaining, on said application server array 110, a virtual gaming universe; c) assessing a client-server latency of at least one said client device; d) generating snapshots of said virtual universe in accordance with said assessed client-server latency, wherein said generating includes: i) deriving, from a first said snapshot 2100 associated with a first game time tg 0 2102, a second snapshot 2200 associated with a second game time, wherein a relationship between said second game time t^HOl and said first game time tso 2102 is determined, at least in part, in accordance with said assessed server-client latency.
21) A method of video frame generation comprising: a) generating a plurality of video frame including a first video frame 1574 that is a hybrid video frame that includes an I frame portion 1583 and a P frame portion 1581.
22) The method of claim 21 wherein: i) said generating of said plurality of video frames includes generating a second video frame 1578 different from said first video frame 1574; and ii) said second video frame includes: i) a first P frame portion 1571 encoded relative to said I frame portion 1583; and ii) a second I frame portion 1573 encoded relative to said P frame portion 1581,
wherein said second video frame is a generationally inhomogeneous video frame such that a P-generationality of said first P frame portion 1571 is different from a P- generationally of said second P frame portion 1573.
23) A method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
A) a first P-frame portion 1571 that: i) is encoded relative to an I frame portion of said first frame 1570; ii) has a P-generationality equal a first number; and
B) a second P-frame portion 1573 whose P-generationality is a second number different from said first number.
24) The method of claim 23 wherein said generating of said plurality of video frame includes: b) generating a third frame 1574 that is a hybrid frame including an I frame portion 1583 and a P frame portion 1581, wherein:
A) said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
B) said second P-frame portion 1573 of said second frame 1578 is encoded relative to said I frame portion 1583 of said third frame.
25) A method of video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
A) a P frame portion 1581 encoded relative to a portion of said first frame 1570; and
B) a I frame portion 1583; and iii) a third frame 1578 that includes:
A) a first P frame portion 1571 encoded relative to said P frame portion 1581 of said second frame and to said portion of said first frame 1570; and
B) a second P frame portion 1573 encoded relative to said I frame portion 1583 of said second frame.
26) A method of video frame generation from an ordered plurality of input frames including a first input frame 1674 and a second input frame 1678 different from the first input frame, the method comprising: a) generating, from the ordered plurality of input frame, a plurality of encoded video frames including an uninterrupted sequence (1570, 1574, 1578, 1582, 1584) of frames that are at least partially I frames, wherein said generating includes: a) encoding a first input frame 1674 into a first encoded frame 1574 of said uninterrupted sequence, said first encoded frame 1574 being at least partially spatially a I frame and including an I frame portion 1583 derived from said first input frame 1674; b) encoding a second input frame 1678 different from the first input frame 1674 into a second encoded frame 1578 of said uninterrupted sequence, said second encoded frame 1578 being at least partially spatially a I frame and including an I frame portion 1569 derived from said second input frame 1678.
27) A method of video frame generation comprising: a) generating a plurality of video frame including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, wherein: i) said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 share an I frame parent 1570; ii) said second P frame portion 1573 of said first at least partially P frame 1578 and second P frame portion 1577 of said second at least partially P frame 1584 have different I frame parents (1574 and 1582).
28) A method of video frame generation comprising: a) generating an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame
1584 sharing an I frame parent 1570; and iii) a third frame 1582 that is at least partially spatially an I frame, said third frame having a position in said ordered plurality of video frames that is after said first at least partially P frame 1578 and before said said second at least partially P frame 1584.
29) The method of any of claims 21-29 further comprising: b) ordering said plurality of frames according to an order recited.
30) The method of claim 260 further comprising: c) transmitting said plurality of frames according to said order.
31) The method of claim 29 further comprising: c) saving to non- volatile memory said first, second and third frames in a file according to said order.
32) The method of any of claims 21-28 wherein a shape of at least one of an I frame portion and a P frame portion is determined dynamically.
33) The method of claim 32 wherein: i) said generating includes encoding a plurality of input frames; and ii) said determining is carried out in accordance with a dynamic region of interest detected within a plurality of input frame.
34) An encoding device for encoding video frames comprising: a) a memory for storing a plurality of input frames; b) a frame encoder operative to encode plurality of video frames according to any of claims 21-33.
35) A method for decoding video frames comprising: a) receiving a plurality of encoded video frame including a first hybrid video frame 1574 that includes an I frame portion 1583 and a P frame portion 1581; b) decoding said first hybrid video frame 1574 by: i) decoding said P frame portion 1581; ii) associating said decoded P frame portion 1581 with said I frame portions.
36) The method of claim 35 wherein said decoding of said video frames includes i) decoding a second video frame 1578 different from said first video frame
1574; and ii) said second video frame includes: i) a first P frame portion 1571 encoded relative to said I frame portion 1583; and ii) a second I frame portion 1573 encoded relative to said P frame portion 1581, wherein said decoded second video frame is a generationally inhomogeneous video frame such that a P-generationality of said first P frame portion 1571 is different from a P- generationally of said second P frame portion 1573.
37) A method of video frame decoding comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1578 that is generationally inhomogeneous and includes:
A) a first P-frame portion 1571 that: i) is encoded relative to an I frame portion of said first frame 1570; ii) has a P-generationality equal a first number; and
B) a second P-frame portion 1573 whose P-generationality is a second number different from said first number; b) decoding said receiver video frames.
38) The method of claim 37 wherein said decoding of said plurality of video frames includes:
b) decoding a third frame 1574 that is a hybrid frame including an I frame portion
1583 and a P frame portion 1581, wherein:
A) said first P-frame portion 1571 of said second frame 1578 is also encoded relative to said P frame portion 1581 of said third frame 1574
B) said second P-frame portion 1573 of said second frame 1578 is encoded relative to said I frame portion 1583 of said third frame.
39) A decoding of video frame generation comprising: a) receiving a plurality of encoded video frames including: i) a first frame 1570 that is at least partially spatially an I frame; ii) a second frame 1574 that includes:
A) a P frame portion 1581 encoded relative to a portion of said first frame 1570; and
B) a I frame portion 1583; and iii) a third frame 1578 that includes:
A) a first P frame portion 1571 encoded relative to said P frame portion 1581 of said second frame and to said portion of said first frame 1570; and
B) a second P frame portion 1573 encoded relative to said I frame portion 1583 of said second frame; and b) decoding said received encoded video frames.
40) A method of video frame decoding comprising: a) receiving a plurality of video frame including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, wherein: i) said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 share an I frame parent 1570;
ii) said second P frame portion 1573 of said first at least partially P frame 1578 and second P frame portion 1577 of said second at least partially P frame 1584 have different I frame parents (1574 and 1582); and b) decoding said receiver video frames.
41) A method of video frame decoding comprising: a) decoding an ordered plurality of video frames having an ordering, said generating including: i) a first at least partially P frame 1578 including:
A) a first P frame portion 1571; and
B) a second P frame portion 1573; and ii) a second at least partially P frame 1584 different from said first at least partially P frame 1578 including:
A) a first P frame portion 1575; and
B) a second P frame portion 1577, said first P frame portion 1571 of said first at least partially P frame 1578 and said first P frame portion 1575 of said second at least partially P frame 1584 sharing an I frame parent 1570; and iii) a third frame 1582 that is at least partially spatially an I frame, said third frame having a position in said ordered plurality of video frames that is after said first at least partially P frame 1578 and before said second at least partially P frame 1584.
42) A decoding device for decoding video frames comprising: a) a memory for storing a plurality of encoded video frames; and b) a frame decoder operative to decode said plurality of encoded video frames according to any of claims 35-41.
43) The decoding device of claim 42 further comprising: c) a flash memory card interface operative to present the decoding device as a flash memory card to a host device coupled to said decoding device, wherein said frame decoder is operative, upon receiving said plurality of encoded video via said flash memory card interface, to effect said decoding.
44) The decoding device of any of claims 42-43 wherein the decoding device is operative to provide a plurality of frames derived from said plurality of decoded video frames upon receiving, via said flash memory card interface, at least one of: i) a flash memory card file read request; and
ii) a flash memory card data stream read request.
45) A method of generating a video frame generation comprising: a) generating a plurality of video frames including: i) a first frame 1570 that is at least one frame that is at least partially spatially an I frame; ii) a second frame 1578 that includes:
A) a first P-frame portion 1571 whose P-generationilty is a first number;
B) a second P-frame portion 1573 whose P-generationilty is a second number different from said first number.
46) A method of providing a gaming service, the method comprising: a) maintaining a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices; d) storing said data indicative of said game commands in a data cache; e) modifying said virtual gaming universe in accordance with said cached gaming commands such that at least some said gaming commands are operative to modify said virtual gaming universe after a cache delay.
47) The method of claim 46 further comprising: f) removing data associated with one or more said game application commands after said modifying.
48) The method of any of claims 46-47 wherein at least some said game commands are filtered in accordance with other said game commands and discarded, and said virtual gaming universe is not modified in accordance with said discarded commands.
49) The method of any of claims 46-48 wherein at least some said game commands are associated with a respective time stamp, and said filtering is performed in accordance with said respective time stamps.
50) A method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and
c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is determined in accordance with a game command client device network latency.
51) A method of providing a gaming service, the method comprising: a) maintaining on a game server a virtual gaming universe including a plurality of gaming characters; b) receiving data indicative of game commands from a plurality of client devices, each said client device associated with a different input latency; and c) modifying said virtual gaming universe in accordance with said gaming commands, wherein an order in which game commands are applied to said virtual universe is other than an order of said receiving.
52) A system for providing a gaming service according by performing a method of any of claims 46-51.
53) A method of generating video frames, the method comprising: a) Rendering a plurality of video frames, each said video frame rendered in less than a first number of seconds; b) Serving and/or presenting said rendered video frames at an average rate whose value is a second number of said rendered video frames per second,
54) The method of claim 53 wherein a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 2.
55) The method of claim 53 wherein a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 5.
56) The method of claim 53 wherein a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 7.
57) The method of claim 53 wherein a ratio between a reciprocal of said first number and said second number is at a ratio number whose value is at least 10.
58) An apparatus for generating video frames according to a method of any of claims 53-58.
59) A server-based system for providing gaming services, the system comprising: a) an application server array adapted to effect a data transfer with each of a plurality of client devices that are each separate from said server array; b) an input data aggregator for receiving data indicative of game commands from each of the plurality of client devices; c) a game engine for maintaining a virtual gaming universe including a plurality of controllable gaming characters, said gaming engine operative to associate each said gaming character with said game commands of a respective client device; and d) a multi-video output rendering engine residing in said application server array for generating from said virtual gaming universe a plurality of video streams each said video stream representing a view associated with a respective said game character, wherein, for each said video stream of said plurality of video streams, said multi-video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device.
60) The system of claim 59 wherein said indicative data includes at least one of: device resolution, a device screen refresh rate, device contrast parameters, color parameters (for example, a number of colors), screen size and/or aspect parameters (for example, screen size or ratio between horizontal and vertical dimensions of the screen))
61) The system of any of claims 59-60 further comprising: e) a data provisioning mechanism operative to provide said indicative data to said rendering engine.
62) The system of any of claims 60-61 wherein said provisioning mechanism includes at least one of: i) a database acesssor for accessing a database for said indicative data; and ii) a client sniffer for deriving, for a given said client device, said indicative data from a communication received from said given client device. 64) A method according to any of claims 54-63.
5) A system for providing a single-user or multi-user gaming service, the system comprising: a) an application server array adapted to effect a data transfer with one or more client devices that are each separate from said server array; b) an input data aggregator for receiving data indicative of game commands from each said client device; c) a game engine residing at least in part in said application server array for maintaining a virtual gaming universe including at least one controllable gaming characters, said gaming engine operative to associate each said gaming character with said game commands of a said respective client device; and d) a video output rendering engine residing in said application server array for generating from said virtual gaming universe at least one video stream, wherein, for each said video stream of said at least one video stream, said multi- video output rendering engine is operative to render said each video stream in accordance with respective data indicative of display characteristics of a respective target client device.
66) A method according to claim 65.
67) A method of providing a multi-player gaming environment, the method comprising: a) providing within an application server array a game engine for maintaining a virtual gaming universe including a plurality of gaming characters; b) at said application server, receiving data indicative of game commands from a plurality of client devices; c) associating each said gaming character with said gaming commands of a different respective said client device; d) within said application server array, generating a plurality of rendered video streams, each said video stream representing a game view associated with a respective said gaming character, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
68) A method of providing a single player or multi-player gaming environment, the method comprising:
a) providing within an application server array a game engine for maintaining a virtual gaming universe including at least one gaming character; b) at said application server, receiving data indicative of game commands from at least one of client device; c)associating each said gaming character with said data indicative of gaming commands received from a respective said client device; d) within said application server array, generating at least one rendered video stream, associated with a game view of said virtual gaming universe, each said rendered video stream generated in accordance with respective data indicative of display characteristics of a respective target client device.
69) A system and/or method and/or computer readable code for rendering game video, within an application server array, in accordance with client device display characteristics substantially according to any feature or combination of features described above.
70) A system for providing a gaming service substantially according to any feature or combination of features described above.
71) A method for providing a gaming service substantially according to any feature or combination of features described above.
72) Computer readable code for providing a gaming service substantially according to any feature or combination of features described above.
74) A system for providing a rendering video and/or encoding video and/or compressing video and/or serving video substantially according to any feature or combination of features described above.
75) A method for providing a rendering video and/or encoding video and/or compressing video and/or serving video substantially according to any feature or combination of features described above.
76) Computer readable code for providing a rendering video and/or encoding video and/or compressing video and/or serving video substantially according to any feature or combination of features described above.
77) A system for providing a decoding video and/or presenting video substantially according to any feature or combination of features described above.
78) A method for providing a decoding video and/or presenting video substantially according to any feature or combination of features described above.
79) Computer readable code for decoding video and/or presenting video substantially according to any feature or combination of features described above.
80) A system for providing video programming substantially according to any feature or combination of features described above.
81) A method for providing video programming substantially according to any feature or combination of features described above.
82) Computer readable code for providing video programming substantially according to any feature or combination of features described above.
83) A system and/or method and/or computer readable code for providing programming substantially according to any feature or combination of features described above.
84) A method for providing programming substantially according to any feature or combination of features described above.
85) Computer readable code for providing programming substantially according to any feature or combination of features described above.
86) A system for Decoding Video on the Client Device substantially according to any feature or combination of features described above.
87) A method for Decoding Video on the Client Device substantially according to any feature or combination of features described above.
88) Computer readable code for Decoding Video on the Client Device substantially according to any feature or combination of features described above.
89) A system for providing programming for spectators related to a single player and/or multi-player video game substantially according to any feature or combination of features described above.
90) A method for providing programming for spectators related to a single player and/or multi-player video game substantially according to any feature or combination of features described above.
91) Computer-readable code for providing programming for spectators related to a single player and/or multi-player video game substantially according to any feature or combination of features described above
92) A system for providing gambling services and/or game and/or player voting and/or rating substantially according to any feature or combination of features described above.
93) A method for providing gambling services and/or game and/or player voting and/or rating substantially according to any feature or combination of features described above.
94) Computer-readable code for providing gambling services and/or game and/or player voting and/or rating substantially according to any feature or combination of features described above
95) A system and/or method and/or computer readable code for substantially according to any feature or combination of features described above.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP07736216A EP2044543A4 (en) | 2006-04-13 | 2007-04-15 | Method and apparatus for providing gaming services and for handling video content |
US12/296,306 US8403757B2 (en) | 2006-04-13 | 2007-04-15 | Method and apparatus for providing gaming services and for handling video content |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US79146706P | 2006-04-13 | 2006-04-13 | |
US60/791,467 | 2006-04-13 | ||
US82558806P | 2006-09-14 | 2006-09-14 | |
US60/825,588 | 2006-09-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2007119236A2 true WO2007119236A2 (en) | 2007-10-25 |
WO2007119236A3 WO2007119236A3 (en) | 2009-04-23 |
Family
ID=38609898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/IL2007/000476 WO2007119236A2 (en) | 2006-04-13 | 2007-04-15 | Method and apparatus for providing gaming services and for handling video content |
Country Status (3)
Country | Link |
---|---|
US (1) | US8403757B2 (en) |
EP (1) | EP2044543A4 (en) |
WO (1) | WO2007119236A2 (en) |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009073792A1 (en) | 2007-12-05 | 2009-06-11 | Onlive, Inc. | System and method for compressing streaming interactive video |
WO2009076172A2 (en) | 2007-12-05 | 2009-06-18 | Onlive, Inc. | Method of combining linear content and interactive content compressed together as streaming interactive video |
EP2218224A1 (en) * | 2007-12-05 | 2010-08-18 | Onlive, Inc. | Method for multicasting views of real-time streaming interactive video |
EP2227752A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | Hosting and broadcasting virtual events using streaming interactive video |
EP2227747A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | System for collaborative conferencing using streaming interactive video |
EP2227904A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | System for combining a plurality of views of real-time streaming interactive video |
EP2227728A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | Streaming interactive video integrated with recorded video segments |
EP2232385A1 (en) * | 2007-12-05 | 2010-09-29 | Onlive, Inc. | System and method for compressing video by allocating bits to image tiles based on detected intraframe motion or scene complexity |
EP2238565A1 (en) * | 2007-12-05 | 2010-10-13 | Onlive, Inc. | System and method for protecting certain types of multimedia data transmitted over a communication channel |
EP2238564A1 (en) * | 2007-12-05 | 2010-10-13 | Onlive, Inc. | Tile-based system and method for compressing video |
US8382591B2 (en) | 2010-06-03 | 2013-02-26 | Ol2, Inc. | Graphical user interface, system and method for implementing a game controller on a touch-screen device |
AU2008333803B2 (en) * | 2007-12-05 | 2013-04-04 | Sony Computer Entertainment America Llc | System for reporting recorded video preceding system failures |
RU2487407C2 (en) * | 2007-12-05 | 2013-07-10 | Ол2, Инк. | System and method of compressing streaming interactive video |
US8591334B2 (en) | 2010-06-03 | 2013-11-26 | Ol2, Inc. | Graphical user interface, system and method for implementing a game controller on a touch-screen device |
US8606942B2 (en) | 2002-12-10 | 2013-12-10 | Ol2, Inc. | System and method for intelligently allocating client requests to server centers |
EP2712660A3 (en) * | 2007-12-05 | 2014-05-07 | OL2, Inc. | Video compression system and method for compensating for bandwidth limitations for a communication channel |
US8840475B2 (en) | 2002-12-10 | 2014-09-23 | Ol2, Inc. | Method for user session transitioning among streaming interactive video servers |
WO2014159256A1 (en) * | 2013-03-14 | 2014-10-02 | Microsoft Corporation | Client side processing of player movement in a remote gaming environment |
US8961302B2 (en) | 2012-07-20 | 2015-02-24 | Microsoft Technology Licensing, Llc | Game browsing |
US8964830B2 (en) | 2002-12-10 | 2015-02-24 | Ol2, Inc. | System and method for multi-stream video compression using multiple encoding formats |
US9061207B2 (en) | 2002-12-10 | 2015-06-23 | Sony Computer Entertainment America Llc | Temporary decoder apparatus and method |
US9077991B2 (en) | 2002-12-10 | 2015-07-07 | Sony Computer Entertainment America Llc | System and method for utilizing forward error correction with video compression |
US9138644B2 (en) | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
WO2015164969A1 (en) * | 2014-04-29 | 2015-11-05 | Socialplay Inc. | System and method for cross-application virtual goods management |
US9192859B2 (en) | 2002-12-10 | 2015-11-24 | Sony Computer Entertainment America Llc | System and method for compressing video based on latency measurements and other feedback |
US9314691B2 (en) | 2002-12-10 | 2016-04-19 | Sony Computer Entertainment America Llc | System and method for compressing video frames or portions thereof based on feedback information from a client device |
US9381432B2 (en) | 2012-08-24 | 2016-07-05 | Microsoft Technology Licensing, Llc | Game migration |
US9420283B2 (en) | 2002-12-10 | 2016-08-16 | Sony Interactive Entertainment America Llc | System and method for selecting a video encoding format based on feedback data |
US9526980B2 (en) | 2012-12-21 | 2016-12-27 | Microsoft Technology Licensing, Llc | Client side processing of game controller input |
US9694277B2 (en) | 2013-03-14 | 2017-07-04 | Microsoft Technology Licensing, Llc | Client side processing of character interactions in a remote gaming environment |
US9717982B2 (en) | 2012-12-21 | 2017-08-01 | Microsoft Technology Licensing, Llc | Client rendering of latency sensitive game features |
KR101828889B1 (en) | 2011-09-12 | 2018-02-13 | 인텔 코포레이션 | Cooperative provision of personalized user functions using shared and personal devices |
US10058778B2 (en) | 2007-12-05 | 2018-08-28 | Sony Interactive Entertainment America Llc | Video compression system and method for reducing the effects of packet loss over a communication channel |
US10201760B2 (en) | 2002-12-10 | 2019-02-12 | Sony Interactive Entertainment America Llc | System and method for compressing video based on detected intraframe motion |
CN109479163A (en) * | 2016-06-13 | 2019-03-15 | 索尼互动娱乐有限责任公司 | The mating application program of game running |
RU2755628C1 (en) * | 2020-11-09 | 2021-09-17 | Акционерное общество "Научно-производственное предприятие "Полет" | Multi-channel protected fiber-optic data transmission system |
US20220052954A1 (en) * | 2020-08-14 | 2022-02-17 | Qualcomm Incorporated | Network latency fairness in multi-user gaming platforms |
US11386873B2 (en) | 2020-04-01 | 2022-07-12 | Alibaba Group Holding Limited | Method and apparatus for efficient application screen compression |
US11470327B2 (en) | 2020-03-30 | 2022-10-11 | Alibaba Group Holding Limited | Scene aware video content encoding |
US11792408B2 (en) | 2020-03-30 | 2023-10-17 | Alibaba Group Holding Limited | Transcoder target bitrate prediction techniques |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5203646B2 (en) * | 2007-07-17 | 2013-06-05 | 株式会社ソニー・コンピュータエンタテインメント | GAME GUIDING SYSTEM, GAME GUIDING DEVICE, GAME SERVER, GAME GUIDING METHOD, PROGRAM, AND INFORMATION STORAGE MEDIUM |
US9168457B2 (en) * | 2010-09-14 | 2015-10-27 | Sony Computer Entertainment America Llc | System and method for retaining system state |
JP4319233B2 (en) * | 2007-12-11 | 2009-08-26 | 株式会社コナミデジタルエンタテインメント | Terminal device, game control method, and program |
EP2258085A1 (en) * | 2008-03-10 | 2010-12-08 | Dilithium Holdings, Inc. | Method and apparatus for video services |
US20100162126A1 (en) * | 2008-12-23 | 2010-06-24 | Palm, Inc. | Predictive cache techniques |
US11013995B2 (en) * | 2009-06-01 | 2021-05-25 | Sony Interactive Entertainment LLC | Qualified video delivery methods |
US9723319B1 (en) * | 2009-06-01 | 2017-08-01 | Sony Interactive Entertainment America Llc | Differentiation for achieving buffered decoding and bufferless decoding |
US9778921B2 (en) * | 2009-06-02 | 2017-10-03 | Apple Inc. | Method for creating, exporting, sharing, and installing graphics functional blocks |
US8675730B2 (en) * | 2009-07-13 | 2014-03-18 | Nvidia Corporation | Macroblock grouping in a destination video frame to improve video reconstruction performance |
US20110066897A1 (en) * | 2009-09-11 | 2011-03-17 | William Bumgarner | Methods and apparatuses for determining permanent memory growth |
US9838744B2 (en) | 2009-12-03 | 2017-12-05 | Armin Moehrle | Automated process for segmenting and classifying video objects and auctioning rights to interactive sharable video objects |
WO2012078640A2 (en) * | 2010-12-06 | 2012-06-14 | The Regents Of The University Of California | Rendering and encoding adaptation to address computation and network bandwidth constraints |
US9873045B2 (en) * | 2012-05-25 | 2018-01-23 | Electronic Arts, Inc. | Systems and methods for a unified game experience |
US10349009B1 (en) * | 2012-10-18 | 2019-07-09 | Altia Systems, Inc. | Panoramic streaming of video with user selected audio |
US9930082B2 (en) | 2012-11-20 | 2018-03-27 | Nvidia Corporation | Method and system for network driven automatic adaptive rendering impedance |
US10033773B2 (en) * | 2012-12-10 | 2018-07-24 | Samsung Electronics Co., Ltd. | Application execution method and apparatus |
US9517404B2 (en) | 2012-12-26 | 2016-12-13 | Disney Enterprises, Inc. | Apparatus, system, and method for effectuating modifications to a virtual space responsive to token detection |
US8910266B2 (en) | 2012-12-26 | 2014-12-09 | Disney Enterprises, Inc. | Linking token detection at a single computing platform with a user identification to unlock content in virtual space instances presented via multiple computing platforms |
US8972369B2 (en) * | 2012-12-26 | 2015-03-03 | Disney Enterprises, Inc. | Providing a common virtual item repository in a virtual space |
US8986115B2 (en) | 2012-12-26 | 2015-03-24 | Disney Enterprises, Inc. | Facilitating customization of a virtual space based on accessible virtual items |
US9387407B2 (en) | 2012-12-26 | 2016-07-12 | Disney Enterprises, Inc. | Managing objectives associated with a virtual space based on characters made accessible responsive to corresponding tokens being detected |
US8726172B1 (en) | 2012-12-26 | 2014-05-13 | Disney Enterprises, Inc. | Managing an environment of a virtual space based on characters made accessible responsive to corresponding tokens being detected |
US9327200B2 (en) | 2012-12-26 | 2016-05-03 | Disney Enterprises, Inc. | Managing a theme of a virtual space based on characters made accessible responsive to corresponding tokens being detected |
US8909920B2 (en) | 2012-12-26 | 2014-12-09 | Disney Enterprises, Inc. | Linking token detection at a single computing platform with a user identification to effectuate modifications in virtual space instances presented via multiple computing platforms |
US9457263B2 (en) | 2012-12-26 | 2016-10-04 | Disney Enterprises, Inc. | Unlocking virtual items in a virtual space responsive to physical token detection |
US10616086B2 (en) * | 2012-12-27 | 2020-04-07 | Navidia Corporation | Network adaptive latency reduction through frame rate control |
USD748200S1 (en) | 2013-01-15 | 2016-01-26 | Disney Enterprises, Inc. | Power disk reader |
USD748199S1 (en) | 2013-01-15 | 2016-01-26 | Disney Enterprises, Inc. | Multi-sided power disk |
EP2767905A1 (en) * | 2013-02-15 | 2014-08-20 | Samsung Electronics Co., Ltd | Terminal apparatus, server, browser of terminal apparatus operating system and method of operating browser |
US8904298B2 (en) | 2013-03-15 | 2014-12-02 | Disney Enterprises, Inc. | Effectuating modifications within an instance of a virtual space presented via multiple disparate client computing platforms responsive to detection of a token associated with a single client computing platform |
US9819604B2 (en) | 2013-07-31 | 2017-11-14 | Nvidia Corporation | Real time network adaptive low latency transport stream muxing of audio/video streams for miracast |
US10231024B2 (en) | 2013-09-12 | 2019-03-12 | Blizzard Entertainment, Inc. | Selectively incorporating feedback from a remote audience |
JP6298613B2 (en) * | 2013-10-17 | 2018-03-20 | 株式会社ソニー・インタラクティブエンタテインメント | GAME SYSTEM, GAME CONTROL METHOD, AND GAME CONTROL PROGRAM |
US9168459B1 (en) * | 2013-10-24 | 2015-10-27 | Kabam, Inc. | System and method for dynamically altering an in-game experience based on a user's connection to the game |
US10353633B2 (en) | 2013-12-19 | 2019-07-16 | Sony Interactive Entertainment LLC | Mass storage virtualization for cloud computing |
US9497358B2 (en) * | 2013-12-19 | 2016-11-15 | Sony Interactive Entertainment America Llc | Video latency reduction |
US10826971B1 (en) | 2014-12-23 | 2020-11-03 | Amazon Technologies, Inc. | Distributed computing system node management |
US10742718B1 (en) * | 2014-12-23 | 2020-08-11 | Amazon Technologies, Inc. | Distributed computing system node management |
US9756375B2 (en) | 2015-01-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Predictive server-side rendering of scenes |
US9686520B2 (en) | 2015-01-22 | 2017-06-20 | Microsoft Technology Licensing, Llc | Reconstructing viewport upon user viewpoint misprediction |
US9661312B2 (en) | 2015-01-22 | 2017-05-23 | Microsoft Technology Licensing, Llc | Synthesizing second eye viewport using interleaving |
US20160259453A1 (en) * | 2015-03-06 | 2016-09-08 | Sony Computer Entertainment America Llc | Dynamic adjustment of cloud game data streams to output device and network quality |
US10554713B2 (en) | 2015-06-19 | 2020-02-04 | Microsoft Technology Licensing, Llc | Low latency application streaming using temporal frame transformation |
CN105096373B (en) * | 2015-06-30 | 2020-04-28 | 华为技术有限公司 | Media content rendering method, user equipment and system |
KR102139241B1 (en) * | 2015-06-30 | 2020-07-29 | 아마존 테크놀로지스, 인크. | Spectating system and game systems integrated |
US10003811B2 (en) | 2015-09-01 | 2018-06-19 | Microsoft Technology Licensing, Llc | Parallel processing of a video frame |
US10962780B2 (en) * | 2015-10-26 | 2021-03-30 | Microsoft Technology Licensing, Llc | Remote rendering for virtual images |
US10193999B1 (en) | 2015-12-10 | 2019-01-29 | Kabam, Inc. | Dynamic online game implementation on a client device |
US10068431B1 (en) | 2015-12-10 | 2018-09-04 | Kabam, Inc. | Facilitating event implementation in an online game |
US9569812B1 (en) | 2016-01-07 | 2017-02-14 | Microsoft Technology Licensing, Llc | View rendering from multiple server-side renderings |
GB2551323B (en) * | 2016-06-08 | 2021-02-10 | Companion Ltd | System providing a shared environment |
KR102561860B1 (en) * | 2016-10-25 | 2023-08-02 | 삼성전자주식회사 | Electronic apparatus and control method thereof |
US11058946B2 (en) | 2017-01-12 | 2021-07-13 | Mz Ip Holdings, Llc | System and method for managing event data in a multi-player online game |
US10471360B2 (en) | 2017-03-06 | 2019-11-12 | Sony Interactive Entertainment LLC | User-driven spectator channel for live game play in multi-player games |
US10523947B2 (en) | 2017-09-29 | 2019-12-31 | Ati Technologies Ulc | Server-based encoding of adjustable frame rate content |
US10594901B2 (en) * | 2017-11-17 | 2020-03-17 | Ati Technologies Ulc | Game engine application direct to video encoder rendering |
US11290515B2 (en) | 2017-12-07 | 2022-03-29 | Advanced Micro Devices, Inc. | Real-time and low latency packetization protocol for live compressed video data |
US10467809B2 (en) * | 2018-01-03 | 2019-11-05 | Verizon Patent And Licensing Inc. | Methods and systems for presenting a video stream within a persistent virtual reality world |
JP6677752B2 (en) * | 2018-02-26 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | Game system, game control method, and game control program |
US10814228B2 (en) | 2018-02-28 | 2020-10-27 | Sony Interactive Entertainment LLC | Statistically defined game channels |
US10751623B2 (en) | 2018-02-28 | 2020-08-25 | Sony Interactive Entertainment LLC | Incentivizing players to engage in competitive gameplay |
US10818142B2 (en) | 2018-02-28 | 2020-10-27 | Sony Interactive Entertainment LLC | Creation of winner tournaments with fandom influence |
US10792577B2 (en) | 2018-02-28 | 2020-10-06 | Sony Interactive Entertainment LLC | Discovery and detection of events in interactive content |
US10765938B2 (en) | 2018-02-28 | 2020-09-08 | Sony Interactive Entertainment LLC | De-interleaving gameplay data |
US10953322B2 (en) | 2018-02-28 | 2021-03-23 | Sony Interactive Entertainment LLC | Scaled VR engagement and views in an e-sports event |
US11065548B2 (en) | 2018-02-28 | 2021-07-20 | Sony Interactive Entertainment LLC | Statistical driven tournaments |
US10953335B2 (en) | 2018-02-28 | 2021-03-23 | Sony Interactive Entertainment Inc. | Online tournament integration |
US10765957B2 (en) | 2018-02-28 | 2020-09-08 | Sony Interactive Entertainment LLC | Integrating commentary content and gameplay content over a multi-user platform |
US10792576B2 (en) | 2018-02-28 | 2020-10-06 | Sony Interactive Entertainment LLC | Player to spectator handoff and other spectator controls |
CN108171783A (en) * | 2018-03-20 | 2018-06-15 | 联想(北京)有限公司 | Image rendering method, system and electronic equipment |
US11012694B2 (en) | 2018-05-01 | 2021-05-18 | Nvidia Corporation | Dynamically shifting video rendering tasks between a server and a client |
US10713756B2 (en) | 2018-05-01 | 2020-07-14 | Nvidia Corporation | HW-assisted upscaling and multi-sampling using a high resolution depth buffer |
CN115802046A (en) * | 2018-06-28 | 2023-03-14 | 杜比实验室特许公司 | Frame conversion for adaptive streaming alignment |
US11388464B2 (en) | 2018-09-25 | 2022-07-12 | Microsoft Technology Licensing, Llc | Increasing video bit rates while maintaining video quality |
US10924525B2 (en) * | 2018-10-01 | 2021-02-16 | Microsoft Technology Licensing, Llc | Inducing higher input latency in multiplayer programs |
US11100604B2 (en) | 2019-01-31 | 2021-08-24 | Advanced Micro Devices, Inc. | Multiple application cooperative frame-based GPU scheduling |
US11418797B2 (en) | 2019-03-28 | 2022-08-16 | Advanced Micro Devices, Inc. | Multi-plane transmission |
US11033813B2 (en) * | 2019-06-07 | 2021-06-15 | Microsoft Technology Licensing, Llc | Latency erasure |
US11042758B2 (en) * | 2019-07-02 | 2021-06-22 | Ford Global Technologies, Llc | Vehicle image generation |
US11731043B2 (en) * | 2019-11-19 | 2023-08-22 | Sony Interactive Entertainment Inc. | Adaptive graphics for cloud gaming |
US20210154576A1 (en) * | 2019-11-27 | 2021-05-27 | Dot Learn Inc. | Vector graphics-based live streaming of video games |
JP7245368B2 (en) * | 2020-03-13 | 2023-03-23 | 株式会社ソニー・インタラクティブエンタテインメント | Game control program, game system, and game control method |
US11488328B2 (en) | 2020-09-25 | 2022-11-01 | Advanced Micro Devices, Inc. | Automatic data format detection |
US12033234B2 (en) * | 2021-02-08 | 2024-07-09 | Arm Limited | Graphics processing system |
TWI799012B (en) * | 2021-12-17 | 2023-04-11 | 王一互動科技有限公司 | Electronic apparatus and method for presenting three-dimensional space model |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006100664A2 (en) | 2005-03-21 | 2006-09-28 | Yosef Mizrahi | Method, system and computer-readable code for providing a computer gaming service |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6415317B1 (en) * | 1999-10-01 | 2002-07-02 | Joshua Michael Yelon | Software system for reducing the appearance of latency in a multi-user environment |
US20030177187A1 (en) | 2000-11-27 | 2003-09-18 | Butterfly.Net. Inc. | Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications |
US6475090B2 (en) * | 2001-03-29 | 2002-11-05 | Koninklijke Philips Electronics N.V. | Compensating for network latency in a multi-player game |
JP2003006127A (en) * | 2001-06-18 | 2003-01-10 | Cyberstep Inc | Distributed processing system and method therefor, and client terminal capable of using the method |
-
2007
- 2007-04-15 WO PCT/IL2007/000476 patent/WO2007119236A2/en active Application Filing
- 2007-04-15 US US12/296,306 patent/US8403757B2/en active Active
- 2007-04-15 EP EP07736216A patent/EP2044543A4/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006100664A2 (en) | 2005-03-21 | 2006-09-28 | Yosef Mizrahi | Method, system and computer-readable code for providing a computer gaming service |
Cited By (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8606942B2 (en) | 2002-12-10 | 2013-12-10 | Ol2, Inc. | System and method for intelligently allocating client requests to server centers |
US10201760B2 (en) | 2002-12-10 | 2019-02-12 | Sony Interactive Entertainment America Llc | System and method for compressing video based on detected intraframe motion |
US10130891B2 (en) | 2002-12-10 | 2018-11-20 | Sony Interactive Entertainment America Llc | Video compression system and method for compensating for bandwidth limitations of a communication channel |
US9420283B2 (en) | 2002-12-10 | 2016-08-16 | Sony Interactive Entertainment America Llc | System and method for selecting a video encoding format based on feedback data |
US9314691B2 (en) | 2002-12-10 | 2016-04-19 | Sony Computer Entertainment America Llc | System and method for compressing video frames or portions thereof based on feedback information from a client device |
US9272209B2 (en) | 2002-12-10 | 2016-03-01 | Sony Computer Entertainment America Llc | Streaming interactive video client apparatus |
US9192859B2 (en) | 2002-12-10 | 2015-11-24 | Sony Computer Entertainment America Llc | System and method for compressing video based on latency measurements and other feedback |
US9155962B2 (en) | 2002-12-10 | 2015-10-13 | Sony Computer Entertainment America Llc | System and method for compressing video by allocating bits to image tiles based on detected intraframe motion or scene complexity |
US9138644B2 (en) | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
US9108107B2 (en) | 2002-12-10 | 2015-08-18 | Sony Computer Entertainment America Llc | Hosting and broadcasting virtual events using streaming interactive video |
US9084936B2 (en) | 2002-12-10 | 2015-07-21 | Sony Computer Entertainment America Llc | System and method for protecting certain types of multimedia data transmitted over a communication channel |
US9077991B2 (en) | 2002-12-10 | 2015-07-07 | Sony Computer Entertainment America Llc | System and method for utilizing forward error correction with video compression |
US9061207B2 (en) | 2002-12-10 | 2015-06-23 | Sony Computer Entertainment America Llc | Temporary decoder apparatus and method |
US9032465B2 (en) | 2002-12-10 | 2015-05-12 | Ol2, Inc. | Method for multicasting views of real-time streaming interactive video |
US9003461B2 (en) | 2002-12-10 | 2015-04-07 | Ol2, Inc. | Streaming interactive video integrated with recorded video segments |
US8964830B2 (en) | 2002-12-10 | 2015-02-24 | Ol2, Inc. | System and method for multi-stream video compression using multiple encoding formats |
US8953675B2 (en) | 2002-12-10 | 2015-02-10 | Ol2, Inc. | Tile-based system and method for compressing video |
US8949922B2 (en) | 2002-12-10 | 2015-02-03 | Ol2, Inc. | System for collaborative conferencing using streaming interactive video |
US8893207B2 (en) | 2002-12-10 | 2014-11-18 | Ol2, Inc. | System and method for compressing streaming interactive video |
US8881215B2 (en) | 2002-12-10 | 2014-11-04 | Ol2, Inc. | System and method for compressing video based on detected data rate of a communication channel |
US8840475B2 (en) | 2002-12-10 | 2014-09-23 | Ol2, Inc. | Method for user session transitioning among streaming interactive video servers |
EP2238564A4 (en) * | 2007-12-05 | 2012-01-18 | Onlive Inc | Tile-based system and method for compressing video |
EP2227904A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | System for combining a plurality of views of real-time streaming interactive video |
EP2227905A4 (en) * | 2007-12-05 | 2013-03-20 | Onlive Inc | Method of combining linear content and interactive content compressed together as streaming interactive video |
AU2008333803B2 (en) * | 2007-12-05 | 2013-04-04 | Sony Computer Entertainment America Llc | System for reporting recorded video preceding system failures |
AU2008333880B2 (en) * | 2007-12-05 | 2013-04-11 | Sony Computer Entertainment America Llc | System and method for compressing streaming interactive video |
RU2487407C2 (en) * | 2007-12-05 | 2013-07-10 | Ол2, Инк. | System and method of compressing streaming interactive video |
WO2009076172A2 (en) | 2007-12-05 | 2009-06-18 | Onlive, Inc. | Method of combining linear content and interactive content compressed together as streaming interactive video |
EP2238565A4 (en) * | 2007-12-05 | 2012-07-04 | Onlive Inc | System and method for protecting certain types of multimedia data transmitted over a communication channel |
RU2506709C2 (en) * | 2007-12-05 | 2014-02-10 | Ол2, Инк. | Fragment-based system and method of compressing video |
RU2510590C2 (en) * | 2007-12-05 | 2014-03-27 | Ол2, Инк. | System and method of compressing streaming interactive video |
EP2712660A3 (en) * | 2007-12-05 | 2014-05-07 | OL2, Inc. | Video compression system and method for compensating for bandwidth limitations for a communication channel |
EP2708268A3 (en) * | 2007-12-05 | 2014-05-14 | OL2, Inc. | Tile-based system and method for compressing video |
EP2218224A1 (en) * | 2007-12-05 | 2010-08-18 | Onlive, Inc. | Method for multicasting views of real-time streaming interactive video |
WO2009073792A1 (en) | 2007-12-05 | 2009-06-11 | Onlive, Inc. | System and method for compressing streaming interactive video |
EP2709359A3 (en) * | 2007-12-05 | 2014-10-01 | OL2, Inc. | System and method for compressing streaming interactive video |
US10058778B2 (en) | 2007-12-05 | 2018-08-28 | Sony Interactive Entertainment America Llc | Video compression system and method for reducing the effects of packet loss over a communication channel |
EP2218224A4 (en) * | 2007-12-05 | 2011-09-07 | Onlive Inc | Method for multicasting views of real-time streaming interactive video |
EP2232385A4 (en) * | 2007-12-05 | 2011-05-25 | Onlive Inc | System and method for compressing video by allocating bits to image tiles based on detected intraframe motion or scene complexity |
EP2227903A4 (en) * | 2007-12-05 | 2011-05-18 | Onlive Inc | System and method for compressing streaming interactive video |
EP2227904A4 (en) * | 2007-12-05 | 2011-05-18 | Onlive Inc | System for combining a plurality of views of real-time streaming interactive video |
EP2227752A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | Hosting and broadcasting virtual events using streaming interactive video |
EP2227752A4 (en) * | 2007-12-05 | 2011-05-04 | Onlive Inc | Hosting and broadcasting virtual events using streaming interactive video |
EP2227728A4 (en) * | 2007-12-05 | 2011-04-20 | Onlive Inc | Streaming interactive video integrated with recorded video segments |
EP2227747A4 (en) * | 2007-12-05 | 2011-03-30 | Onlive Inc | System for collaborative conferencing using streaming interactive video |
CN101918957A (en) * | 2007-12-05 | 2010-12-15 | 生命力有限公司 | Be used to protect the system and method for the multi-medium data of the particular type by traffic channel |
EP2238564A1 (en) * | 2007-12-05 | 2010-10-13 | Onlive, Inc. | Tile-based system and method for compressing video |
EP2238565A1 (en) * | 2007-12-05 | 2010-10-13 | Onlive, Inc. | System and method for protecting certain types of multimedia data transmitted over a communication channel |
EP2232385A1 (en) * | 2007-12-05 | 2010-09-29 | Onlive, Inc. | System and method for compressing video by allocating bits to image tiles based on detected intraframe motion or scene complexity |
EP2227728A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | Streaming interactive video integrated with recorded video segments |
EP2826530A3 (en) * | 2007-12-05 | 2015-09-23 | Sony Computer Entertainment America LLC | System and method for protecting certain types of multimedia data transmitted over a communication channel |
EP2826531A3 (en) * | 2007-12-05 | 2015-09-23 | Sony Computer Entertainment America LLC | System and method for compressing video by allocating bits to image tiles based on detected intraframe motion or scene complexity |
EP2227905A2 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | Method of combining linear content and interactive content compressed together as streaming interactive video |
EP2227747A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | System for collaborative conferencing using streaming interactive video |
EP2227903A1 (en) * | 2007-12-05 | 2010-09-15 | Onlive, Inc. | System and method for compressing streaming interactive video |
US8840472B2 (en) | 2010-06-03 | 2014-09-23 | Ol2, Inc. | Graphical user interface, system and method for implementing a game controller on a touch-screen device |
US8382591B2 (en) | 2010-06-03 | 2013-02-26 | Ol2, Inc. | Graphical user interface, system and method for implementing a game controller on a touch-screen device |
US8591334B2 (en) | 2010-06-03 | 2013-11-26 | Ol2, Inc. | Graphical user interface, system and method for implementing a game controller on a touch-screen device |
US10419804B2 (en) | 2011-09-12 | 2019-09-17 | Intel Corporation | Cooperative provision of personalized user functions using shared and personal devices |
KR101828889B1 (en) | 2011-09-12 | 2018-02-13 | 인텔 코포레이션 | Cooperative provision of personalized user functions using shared and personal devices |
US8961302B2 (en) | 2012-07-20 | 2015-02-24 | Microsoft Technology Licensing, Llc | Game browsing |
US9545574B2 (en) | 2012-07-20 | 2017-01-17 | Microsoft Technology Licensing, Llc | Game browsing |
US10029181B2 (en) | 2012-07-20 | 2018-07-24 | Microsoft Technology Licensing, Llc | Game browsing |
US9381432B2 (en) | 2012-08-24 | 2016-07-05 | Microsoft Technology Licensing, Llc | Game migration |
US9526980B2 (en) | 2012-12-21 | 2016-12-27 | Microsoft Technology Licensing, Llc | Client side processing of game controller input |
US10369462B2 (en) | 2012-12-21 | 2019-08-06 | Microsoft Technology Licensing, Llc | Client side processing of game controller input |
US9717982B2 (en) | 2012-12-21 | 2017-08-01 | Microsoft Technology Licensing, Llc | Client rendering of latency sensitive game features |
US9564102B2 (en) | 2013-03-14 | 2017-02-07 | Microsoft Technology Licensing, Llc | Client side processing of player movement in a remote gaming environment |
WO2014159256A1 (en) * | 2013-03-14 | 2014-10-02 | Microsoft Corporation | Client side processing of player movement in a remote gaming environment |
US9694277B2 (en) | 2013-03-14 | 2017-07-04 | Microsoft Technology Licensing, Llc | Client side processing of character interactions in a remote gaming environment |
US10159901B2 (en) | 2013-03-14 | 2018-12-25 | Microsoft Technology Licensing, Llc | Client side processing of character interactions in a remote gaming environment |
WO2015164969A1 (en) * | 2014-04-29 | 2015-11-05 | Socialplay Inc. | System and method for cross-application virtual goods management |
CN109479163A (en) * | 2016-06-13 | 2019-03-15 | 索尼互动娱乐有限责任公司 | The mating application program of game running |
CN109479163B (en) * | 2016-06-13 | 2023-09-01 | 索尼互动娱乐有限责任公司 | Game running matched application program |
US11792408B2 (en) | 2020-03-30 | 2023-10-17 | Alibaba Group Holding Limited | Transcoder target bitrate prediction techniques |
US11470327B2 (en) | 2020-03-30 | 2022-10-11 | Alibaba Group Holding Limited | Scene aware video content encoding |
US12003732B2 (en) | 2020-03-30 | 2024-06-04 | Alibaba Group Holding Limited | Scene aware video content encoding |
US12112723B2 (en) | 2020-04-01 | 2024-10-08 | Alibaba Group Holding Limited | Method and apparatus for efficient application screen compression |
US11386873B2 (en) | 2020-04-01 | 2022-07-12 | Alibaba Group Holding Limited | Method and apparatus for efficient application screen compression |
US20220052954A1 (en) * | 2020-08-14 | 2022-02-17 | Qualcomm Incorporated | Network latency fairness in multi-user gaming platforms |
US11611510B2 (en) * | 2020-08-14 | 2023-03-21 | Qualcomm Incorporated | Network latency fairness in multi-user gaming platforms |
RU2755628C1 (en) * | 2020-11-09 | 2021-09-17 | Акционерное общество "Научно-производственное предприятие "Полет" | Multi-channel protected fiber-optic data transmission system |
Also Published As
Publication number | Publication date |
---|---|
WO2007119236A3 (en) | 2009-04-23 |
EP2044543A4 (en) | 2012-07-04 |
EP2044543A2 (en) | 2009-04-08 |
US20110263332A1 (en) | 2011-10-27 |
US8403757B2 (en) | 2013-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8403757B2 (en) | Method and apparatus for providing gaming services and for handling video content | |
US11899835B2 (en) | Control of personal space content presented via head mounted display | |
US11027198B2 (en) | Systems and methods of serving game video for remote play | |
JP7463508B2 (en) | Adaptive Graphics for Cloud Gaming | |
US11577168B2 (en) | Apparatus and method of video playback | |
JP7436644B2 (en) | Encoder tuning to improve the trade-off between latency and video quality in cloud gaming applications | |
US20080207322A1 (en) | Method, System and Computer-Readable Code For Providing a Computer Gaming Device | |
JP6196668B2 (en) | Dynamic allocation of drawing resources in cloud game systems | |
JP6232423B2 (en) | Information processing apparatus, drawing apparatus, method, and program | |
KR102098669B1 (en) | Information interaction methods, devices and systems | |
US20150296215A1 (en) | Frame encoding using hints | |
US20120270652A1 (en) | System for servicing game streaming according to game client device and method | |
JP2016526929A (en) | Information processing apparatus, control method, and program | |
US20150338648A1 (en) | Methods and systems for efficient rendering of game screens for multi-player video game | |
CN110769904B (en) | Output content processing method, output method, electronic device, and storage medium | |
Mohammadi et al. | An object-based framework for cloud gaming using player's visual attention | |
US20160271495A1 (en) | Method and system of creating and encoding video game screen images for transmission over a network | |
CA2798066A1 (en) | Method and system of creating and encoding video game screen images for transmission over a network | |
Chan | Improving and Expanding Gaming Experiences based on Cloud Gaming | |
Gaarder | Video streaming into virtual worlds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 07736216 Country of ref document: EP Kind code of ref document: A2 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 12296306 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2007736216 Country of ref document: EP |