# US 12,003,580 B2 · Techniques for updating files

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

- Number: US 12,003,580 B2
- Document ID: US12003580B2
- Status: Granted
- Kind: B2
- Application number: 17/358,759
- Filed: 2021-06-25
- Published: 2021-10-21
- Granted: 2024-06-04
- Earliest claimed: 2019-01-30
- Assignees: Valve Corporation
- Applicants: Valve Corporation
- Inventors: Martin Otten; Taylor Sherman; Henry Goffin
- Web page: https://patentgrep.com/patent/US12003580B2

## CPC

- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/1744: {using compression, e.g. sparse files}
- G06F 16/1873: {Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files}
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 69/04: Protocols for data compression, e.g. ROHC
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The application is directed to techniques, devices, and systems for updating files. For example, a remote system may store first data representing a first version of a file and second data representing a second version of the file. The remote system may then determine that a first portion of the first data corresponds to a first portion of the second data. Based at least in part on the determination, the remote system may identify a second portion of the first data using the first portion of the first data and identify a second portion of the second data using the first portion of the second data. The remote system may then generate third data representing a difference between the second portion of the second data and the second portion of the first data. Additionally, the remote system may store the third data in association with the file.

## Claims

### Claim 1

A method comprising:
determining, by a remote system, that a first portion of first data representing a first version of a file corresponds to a first portion of second data representing a second version of the file;
determining, by the remote system, a first difference between a second portion of the second data and a second portion of the first data;
determining, by the remote system, that the second portion of the second data is similar to the second portion of the first data based at least in part on the first difference satisfying a threshold difference;
determining, by the remote system, a second difference between a third portion of the second data and a third portion of the first data;
determining, by the remote system, that the third portion of the second data is not similar to the third portion of the first data based at least in part on the second difference failing to satisfy the threshold difference; and
sending, by the remote system, and based at least in part on the first difference satisfying the threshold difference and the second difference failing to satisfy the threshold difference, a patch file to an electronic device with access to the first data, the patch file including:
data for converting the second portion of the first data to the second portion of the second data; and
the third portion of the second data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first difference comprises one or more bytes of data that were added to, removed from, or changed within the second portion of the first data to generate the second portion of the second data.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
generating, by the remote system, a dictionary associated with the second portion of the second data,
wherein the first difference is determined based at least in part on the dictionary.

### Claim 4 (depends on 3)

The method of claim 3, wherein the dictionary is a third dictionary, the method further comprising:
generating, by the remote system, a first dictionary associated with the second portion of the first data; and
generating, by the remote system, a second dictionary associated with the second portion of the second data,
wherein the third dictionary is generated using at least the first dictionary, and
wherein the first difference is determined based on the second dictionary.

### Claim 5 (depends on 3)

The method of claim 3, wherein the patch file includes at least a portion of the dictionary.

### Claim 6 (depends on 3)

The method of claim 3, wherein the patch file includes a reference associated with the dictionary, and wherein the reference comprises a sequence of symbols and phrase references.

### Claim 7 (depends on 1)

The method of claim 1, wherein the file is associated with a game.

### Claim 8 (depends on 1)

The method of claim 1, wherein the patch file does not include the second portion of the second data.

### Claim 9

A system comprising:
one or more processors; and
memory storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to:
determine that a first portion of first data representing a first version of a file corresponds to a first portion of second data representing a second version of the file;
determine a first difference between a second portion of the second data and a second portion of the first data;
determine that the second portion of the second data is similar to the second portion of the first data based at least in part on the first difference satisfying a threshold difference;
determine a second difference between a third portion of the second data and a third portion of the first data;
determine that the third portion of the second data is not similar to the third portion of the first data based at least in part on the second difference failing to satisfy the threshold difference; and
send, based at least in part on the first difference satisfying the threshold difference and the second difference failing to satisfy the threshold difference, a patch file to an electronic device with access to the first data, the patch file including:
data for converting the second portion of the first data to the second portion of the second data; and
the third portion of the second data.

### Claim 10 (depends on 9)

The system of claim 9, wherein the first difference comprises one or more bytes of data that were added to, removed from, or changed within the second portion of the first data to generate the second portion of the second data.

### Claim 11 (depends on 9)

The system of claim 9, wherein the computer-executable instructions, when executed by the one or more processors, further cause the one or more processors to:
generate a dictionary associated with the second portion of the second data,
wherein the first difference is determined based at least in part on the dictionary.

### Claim 12 (depends on 11)

The system of claim 11, wherein the dictionary is a third dictionary, and the computer-executable instructions, when executed by the one or more processors, further cause the one or more processors to:
generate a first dictionary associated with the second portion of the first data; and
generate a second dictionary associated with the second portion of the second data,
wherein the third dictionary is generated using at least the first dictionary, and
wherein the first difference is determined based on the second dictionary.

### Claim 13 (depends on 11)

The system of claim 11, wherein the patch file includes at least a portion of the dictionary.

### Claim 14 (depends on 9)

The system of claim 9, wherein the computer-executable instructions, when executed by the one or more processors, further cause the one or more processors to:
identify the second portion of the first data using the first portion of the first data; and
identify the second portion of the second data using the first portion of the second data.

### Claim 15 (depends on 9)

The system of claim 9, wherein the patch file does not include the second portion of the second data.

### Claim 16 (depends on 9)

The system of claim 9, wherein the file is associated with a game.

### Claim 17

A method comprising:
determining, by a remote system, a first difference between a first portion of second data representing a second version of a file and a first portion of first data representing a first version of the file;
determining, by the remote system, that the first portion of the second data is similar to the first portion of the first data based at least in part on the first difference satisfying a threshold difference;
determining, by the remote system, a second difference between a second portion of the second data and a second portion of the first data;
determining, by the remote system, that the second portion of the second data is not similar to the second portion of the first data based at least in part on the second difference failing to satisfy the threshold difference;
storing, by the remote system, and based at least in part on the first difference satisfying the threshold difference and the second difference failing to satisfy the threshold difference, a patch file that includes:
data for converting the first portion of the first data to the first portion of the second data; and
the second portion of the second data;
determining, by the remote system, to update the first version of the file to the second version of the file on an electronic device with access to the first data; and
sending, by the remote system, the patch file to the electronic device.

### Claim 18 (depends on 17)

The method of claim 17, wherein the first difference comprises one or more bytes of data that were added to, removed from, or changed within the first portion of the first data to generate the first portion of the second data.

### Claim 19 (depends on 17)

The method of claim 17, wherein the first difference is determined based at least in part on a dictionary associated with the first portion of the second data, and wherein the patch file includes at least a portion of the dictionary.

### Claim 20 (depends on 17)

The method of claim 17, wherein the patch file does not include the first portion of the second data.
