# US 8,784,210 B2 · Game execution environments

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,784,210 B2
- Document ID: US8784210B2
- Status: Granted
- Kind: B2
- Application number: 13/836,451
- Filed: 2013-03-15
- Published: 2013-08-08
- Granted: 2014-07-22
- Earliest claimed: 2009-06-01
- Assignees: Sony Computer Entertainment America LLC
- Applicants: Sony Computer Entertainment America LLC
- Inventors: Andrew Buchanan Gault; Rui Filipe Andrade Pereira
- Web page: https://patentgrep.com/patent/US8784210B2

## CPC

- A63F 13/10
- A63F 13/00: Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F 13/12
- A63F 13/30: Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F 13/335: using Internet
- A63F 13/35: Details of game servers
- A63F 13/355: Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
- A63F 13/42: by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
- A63F 13/45: Controlling the progress of the video game
- A63F 13/537: using indicators, e.g. showing the condition of a game character on screen
- A63F 13/71: using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
- A63F 13/77: involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
- A63F 13/795: for finding other players; for building a team; for providing a buddy list
- A63F 13/86: Watching games played by other players
- A63F 13/87: Communicating with other players during game play, e.g. by e-mail or chat
- G06F 9/45537: {Provision of facilities of other operating environments, e.g. WINE (I/O emulation G06F13/105)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- H04L 65/70: Media network packetisation
- H04L 65/80: Responding to QoS
- H04L 67/131: Protocols for games, networked simulations or virtual reality
- H04L 67/52: specially adapted for the location of the user terminal
- H04N 19/136: Incoming video signal characteristics or properties
- H04N 19/42: characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation (H04N19/635 takes precedence)
- H04N 19/44: Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
- H04N 19/46: Embedding additional information in the video signal during the compression process (H04N19/517, H04N19/68, H04N19/70 take precedence)
- H04N 19/70: characterised by syntax aspects related to video coding, e.g. related to compression standards
- A63F 2300/407: Data transfer via internet
- A63F 2300/409: Data transfer via television network
- A63F 2300/51: Server architecture
- A63F 2300/538: for performing operations on behalf of the game client, e.g. rendering
- A63F 2300/552: for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- A63F: CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Systems and methods for executing multiple video games, or other sources of video, include a game execution environment in which each game application is executed on the same operating system but within a virtual I/O shell. The virtual I/O shell includes virtual video, audio and input channels that allow each game application to operate as if it had dedicated drivers. In some embodiments, the systems and methods of the invention are used to provide video streams to a plurality of clients over the internet.

## Claims

### Claim 1

A method for virtualizing drivers of data associated with an application, comprising:
receiving a first request to play a game from a first client device via a network;
executing an instance of a game application on a hardware device in response to receiving the request;
establishing a virtual shell to drive data between the instance of the game application and the first client, the instance of the game application executed by an operating system, the operating system executed by the hardware device;
receiving a second request to play the game from a second client device via the network; and
driving data between the instance of the game application and the second client device by using the virtual shell upon receiving the second request,
wherein the operating system and hardware device are non-virtualized,
wherein the method is executed by a processor.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first client device is the same as the second client device.

### Claim 3 (depends on 1)

The method of claim 1, wherein each of the first client device and the second client device includes a personal computer, a game console, a tablet computer, a telephone, and a handheld game player.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first client device has a different IP address than an IP address of the second client device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the game application is executed to play the game.

### Claim 6 (depends on 1)

The method of claim 1, wherein the virtual shell includes a virtual input channel driver, or a virtual sound driver, or a virtual video channel driver, or a virtual control channel driver, or a combination thereof.

### Claim 7 (depends on 6)

The method of claim 6, wherein the virtual input channel driver provides inputs received from the first and second client devices to the instance of the game application.

### Claim 8 (depends on 6)

The method of claim 6, wherein the virtual sound channel driver transfers sound data between the first client device and the instance of the application.

### Claim 9 (depends on 6)

The method of claim 6, wherein the virtual video channel driver transfers video data between the first client device and the instance of the application, wherein the virtual video channel driver transfers video data between the second client device and the instance of the application.

### Claim 10 (depends on 6)

The method of claim 6, wherein the virtual control channel driver transfers control commands from the first client device to the instance of the application to control the game.

### Claim 11

A method for virtualizing drivers of data associated with an application, comprising:
receiving a first request to play a game from a first client device via a network;
executing an instance of a game application on a hardware device in response to receiving the request;
establishing a virtual shell to drive data between the instance of the game application and the first client, the instance of the game application executed by an operating system, the operating system executed by the hardware device;
receiving a second request to play the game from a second client device via the network;
driving data between the instance of the game application and the second client device by using the virtual shell upon receiving the second request;
determining whether to switch from using the hardware device to another hardware device upon receiving the second request to play the game, wherein determining whether to switch is based on a comparison of a quality of service associated with use of the hardware device and a quality of service associated with use of the other hardware device or based on a comparison of a lag time associated with use of the hardware device and a lag time associated with use of the other hardware device,
wherein the method is executed by a processor.

### Claim 12

A method for virtualizing drivers of data associated with an application, comprising:
receiving a first request to play a game from a first client device via a network;
executing an instance of a game application on a hardware device in response to receiving the request;
establishing a virtual shell to drive data between the instance of the game application and the first client device, the instance of the game application executed by an operating system, the operating system executed by the hardware device;
receiving a second request to play the game from a second client device via the network;
spawning an additional instance of the game application on the hardware device upon receiving the second request; and
establishing an additional virtual shell to drive data between the additional instance of the game application and the second client device, the additional instance executed by the operating system,
wherein the method is executed by a processor.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
determining whether to switch from using the hardware device to another hardware device upon receiving the second request to play the game, wherein determining whether to switch is based on a comparison of a quality of service associated with use of the hardware device and a quality of service associated with use of the other hardware device or based on a comparison of a lag time associated with use of the hardware device and a lag time associated with use of the other hardware device.

### Claim 14 (depends on 12)

The method of claim 12, wherein the first client device is the same as the second client device.

### Claim 15 (depends on 12)

The method of claim 12, wherein the virtual shell includes a virtual input channel driver, or a virtual sound driver, or a virtual video channel driver, or a virtual control channel driver, or a combination thereof, wherein the additional virtual shell includes an additional virtual input channel driver, or an additional virtual sound driver, or an additional virtual video channel driver, or an additional virtual control channel driver, or a combination thereof.

### Claim 16 (depends on 15)

The method of claim 15, wherein the virtual input channel driver provides inputs received from the first client device to the instance of the game application, wherein the additional virtual input channel driver provides inputs received from the second client device to the additional instance of the game application.

### Claim 17 (depends on 15)

The method of claim 15, wherein the virtual sound channel driver transfers sound data between the first client device and the instance of the application, and wherein the additional virtual sound channel driver transfers sound data between the second client device and the additional instance of the application.

### Claim 18 (depends on 15)

The method of claim 15, wherein the virtual video channel driver transfers video data between the first client device and the instance of the application, wherein the additional virtual video channel driver transfers video data between the second client device and the additional instance of the application.

### Claim 19 (depends on 15)

The method of claim 15, wherein the virtual control channel driver transfers control commands from the first client device to the instance of the application to control the game, and wherein the additional virtual control channel driver transfers control commands from the second client device to the additional instance of the application to control the game.

### Claim 20 (depends on 12)

The method of claim 12, wherein the operating system and hardware device are non-virtualized.

### Claim 21

A method for virtualizing drivers of data associated with an application, comprising:
receiving a first request to play a first game from a first client device via a network;
executing a first game application on a hardware device in response to receiving the request;
establishing a virtual shell to drive data between the first game application and the first client device, the first game application executed by an operating system, the operating system executed by the hardware device;
receiving a second request to play a second game from a second client device via the network;
executing a second game application on the hardware device upon receiving the second request; and
establishing an additional virtual shell to drive data between the second game application and the second client device, the second game executed on top of the operating system,
wherein the operating system and hardware device are non-virtualized,
wherein the method is executed by a processor.

### Claim 22 (depends on 21)

The method of claim 21, further comprising:
determining whether to switch from using the hardware device to another hardware device upon receiving the second request to play the second game, wherein determining whether to switch is based on quality of service associated with use of the other hardware device.

### Claim 23 (depends on 21)

The method of claim 21, wherein the first client device is the same as the second client device.

### Claim 24 (depends on 21)

The method of claim 21, wherein the virtual shell includes a virtual input channel driver, or a virtual sound driver, or a virtual video channel driver, or a virtual control channel driver, or a combination thereof, wherein the additional virtual shell includes an additional virtual input channel driver, or an additional virtual sound driver, or an additional virtual video channel driver, or an additional virtual control channel driver, or a combination thereof.

### Claim 25 (depends on 24)

The method of claim 24, wherein the virtual input channel driver provides inputs received from the first client device to the first game application, wherein the additional virtual input channel driver provides inputs received from the second client device to the second game application.

### Claim 26 (depends on 24)

The method of claim 24, wherein the virtual sound channel driver transfers sound data between the first client device and the first game application, and wherein the additional virtual sound channel driver transfers sound data between the second client device and the second game application.

### Claim 27 (depends on 24)

The method of claim 24, wherein the virtual video channel driver transfers video data between the first client device and the first game application, wherein the additional virtual video channel driver transfers video data between the second client device and the second game application.

### Claim 28 (depends on 24)

The method of claim 24, wherein the virtual control channel driver transfers control commands from the first client device to the first game application to control the first game, and wherein the additional virtual control channel driver transfers control commands from the second client device to the second game application to control the second game.
