# US 11,896,899 B1 · Techniques for providing network applications

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

- Number: US 11,896,899 B1
- Document ID: US11896899B1
- Status: Granted
- Kind: B1
- Application number: 17/321,461
- Filed: 2021-05-16
- Granted: 2024-02-13
- Earliest claimed: 2021-05-16
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Kunjan Shridhar Naik; Brian Fisher; Mickey Ottis Williams; Clifford Julius Berger; Skyler J. Brown; Peter Han; Greg Roberts
- Web page: https://patentgrep.com/patent/US11896899B1

## CPC

- A63F 13/48: Starting a game, e.g. activating a game device or waiting for other players to join a multiplayer session
- A63F 13/358: Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
- A63F 13/75: Enforcing rules, e.g. detecting foul play or generating lists of cheating players
- A63F 13/77: involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
- G06F 8/61: Installation
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 9/451: Execution arrangements for user interfaces
- G06F 16/172: Caching, prefetching or hoarding of files
- H04L 67/131: Protocols for games, networked simulations or virtual reality
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- A63F 2300/534: for network load management, e.g. bandwidth optimization, latency reduction
- A63F 2300/5586: for enforcing rights or rules, e.g. to prevent foul play
- A63F 2300/636: involving process of starting or resuming a game
- 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)

## Abstract

This disclosure describes, in part, techniques for providing network applications. For instance, system(s) may install a network application on a first virtual server. The system(s) may then receive first data representing events that occurred during a first launching of the network application on the first virtual server. Using the events, the system(s) may generate second data for optimizing a second launching of the network application on a second virtual server and store the second data in one or more databases. As such, after installing the network application on the second virtual server, the system(s) may provide the second virtual server with the second data so that the second virtual server may use the second data to optimize the second launching of the network application. In some examples, using the second data reduces the amount of time that it takes for the second virtual server to launch the network application.

## Claims

### Claim 1

A system comprising:
one or more processors; and
one or more computer-readable media storing instructions that, when executed by the one or more processors, cause the system to perform operations comprising:
causing a first installation of a network game on a first virtual server;
receiving, from a first user device, a first request to play the network game;
based at least in part on receiving the first request, causing, during a first period of time, a first launching the network game on the first virtual server;
monitoring the first launching of the network game in order to identify at least a second period of time that it took to load a file associated with the network game;
determining, based at least in part on the second period of time, to subsequently preload the file before launching the network game;
generating optimization code representing a command to preload the file before a second launching the network game;
storing the optimization code in one or more databases;
causing a second installation of the network game on a second virtual server;
retrieving the optimization code from the one or more databases;
causing, using the optimization code, the file to be preloaded into a cache memory on the second virtual server;
receiving, from a second user device, a second request to play the network game; and
based at least in part on receiving the second request, causing, during a third period of time, the second launching of the network game on the second virtual server,
wherein the third period of time associated with the second launching of the network game is less than the first period of time associated with the first launching of the network game.

### Claim 2 (depends on 1)

The system as recited in claim 1, the operations further comprising:
generating a user interface that includes at least the second period of time that it took to load the file associated with the network game;
sending, to an electronic device, user interface data representing the user interface; and
receiving, from the electronic device, input data associated with preloading the file before the second launching the network game,
and wherein determining to preload the file is based at least in part on the input data.

### Claim 3 (depends on 1)

The system as recited in claim 1, the operations further comprising:
determining first information associated with at least one of first hardware or first software of the first virtual server;
determining second information associated with at least one of second hardware or second software of the second virtual server; and
determining that the second information is similar to the first information,
and wherein retrieving the optimization code is based at least in part on the second information being similar to the first information.

### Claim 4

A method comprising:
installing a network application on a virtual server;
determining information associated with at least one of the network application or the virtual server;
identifying, based at least in part on the information, data for optimizing a launching of the network application on the virtual server;
executing, on the virtual server, a command associated with the data; and
after executing the command, launching the network application on the virtual server.

### Claim 5 (depends on 4)

The method as recited in claim 4, wherein:
the command is to install a file of the network application before launching the network application; and
the method further comprises installing, based at least in part on executing the command, the file into a memory of the virtual server before launching the network application.

### Claim 6 (depends on 4)

The method as recited in claim 4, wherein:
the command is to install a shader cache before launching the network application; and
the method further comprises installing, based at least in part on executing the command, the shader cache onto the virtual server before launching the network application.

### Claim 7 (depends on 4)

The method as recited in claim 4, wherein:
the command is to install, before launching the network application, software that monitors one or more files of the network application for malicious activities; and
the method further comprises installing, based at least in part on executing the command, the software onto the virtual server before launching the network application.

### Claim 8 (depends on 4)

The method as recited in claim 4, wherein:
the command is to register the network application before launching the network application; and
the method further comprises generating, based at least in part on executing the command, a registry associated with the network application before launching the network application.

### Claim 9 (depends on 4)

The method as recited in claim 4, wherein:
the command is to retrieve, before launching the network application, user data associated with the network application; and
the method further comprises retrieving, based at least in part on the executing the command, the user data before launching the network application.

### Claim 10 (depends on 4)

The method as recited in claim 4, further comprising:
monitoring launching of the network application in order to identify one or more events;
generating additional data representing the one or more events for updating the data; and
sending the additional data to one or more computing devices.

### Claim 11 (depends on 10)

The method as recited in claim 10, wherein monitoring launching of the network application in order to identify the one or more events comprises monitoring launching the network application in order to identify at least one of:
a first event associated with loading a first file of the network application;
a second event associated with creating a second file for the network application;
a third event associated with registering the network application;
a fourth event associated with a dependency on another application;
a fifth event associated with executing software for preventing malicious activities associated with the network application;
a sixth event associated with downloading a shader cache; or
a seventh event associated with retrieving user data.

### Claim 12 (depends on 4)

The method as recited in claim 4, further comprising:
while executing the network application, identifying additional data for optimizing loading of a portion of the network application; and
executing, on the virtual server, an additional command associated with the additional data.

### Claim 13 (depends on 4)

The method as recited in claim 4, further comprising:
launching the network application on an additional virtual server;
receiving additional data representing one or more events that occurred during launching of the network application on the additional virtual server; and
generating the data based at least in part on the one or more events.

### Claim 14 (depends on 13)

The method as recited in claim 13, further comprising:
determining additional information associated with at least one of the network application or the additional virtual server;
storing the second information in association with the data; and
determining that the information is similar to the additional information,
and wherein identifying the data is based at least in part on the information being similar to the additional information.

### Claim 15 (depends on 13)

The method as recited in claim 13, further comprising:
generating a user interface representing the one or more events;
sending, to an electronic device, user interface data representing the user interface; and
receiving, from the electronic device, input data associated with optimizing launching of the network application,
and wherein generating the data is based at least in part on the input data.

### Claim 16 (depends on 4)

The method as recited in claim 4, wherein determining the information comprises determining at least one of:
a binary associated with the network application;
a file associated with the network application;
a resolution associated with the network application;
a graphics quality associated with the network application;
a display setting associated with the network application;
an additional application to execute with the network application;
a number of cores associated with a central processing unit of the virtual server;
an amount of memory associated with the virtual server;
a type of a volume attached to the virtual sever;
a size of the volume;
an operating system of the virtual server;
a library installed on the virtual server;
a graphic adapter; or
systems devices.

### Claim 17 (depends on 4)

The method as recited in claim 4, further comprising:
receiving, from a user device, a request to access the network application; and
based at least in part on receiving the request, associating the user device with the virtual server,
and wherein launching the network application is based at least in part on associating the user device with the virtual server.

### Claim 18

A method comprising:
receiving first data representing one or more events that occurred during a first launching of a network application on a first virtual sever;
generating, based at least in part on the one or more events, second data for optimizing a second launching the network application;
storing the second data in one or more databases;
receiving, from a second virtual server, information associated with at least one of the network application or the second virtual sever; and
sending, based at least in part on the information, the second data to the second virtual server.

### Claim 19 (depends on 18)

The method as recited in claim 18, wherein the information is first information, and wherein the method further comprises:
receiving, from the first virtual server, second information associated with at least one of the network application or the first virtual server;
storing the second information in association with the second data; and
determining that the first information is similar to the second information,
and wherein sending the second data to the second virtual server is further based at least in part on the first information being similar to the second information.

### Claim 20 (depends on 18)

The method as recited in claim 18, further comprising:
receiving third data representing one or more additional events that occurred during the second launching of a network application on the second virtual sever; and
updating, based at least in part on the additional one or more events, the second data for optimizing a third launching of the network application.
