# \[Beta] Patching

## What is patching?

HyperPlay supports differential updates where users only have to download new content when a game is updated.

## How do I join the beta test?

As a developer, you can request to join in the beta test of this feature by reaching out to the team directly.

For developers participating in the program, you can continue to publish your builds the same way you have already been publishing them, and HyperPlay will handle the rest.&#x20;

## Best Practices

There are some general guidelines you can follow to optimize your patch size.

In particular for Unreal Engine games:&#x20;

* Avoid switching the build you submit back and forth between build targets (i.e. Production, Testing, Debug, etc.)
* Group assets into separate PAK files&#x20;
  * Here is the official guide: <https://dev.epicgames.com/documentation/de-de/unreal-engine/cooking-content-and-creating-chunks-in-unreal-engine>
  * An effective strategy can be to group assets by level or area into their own pak files. New content can be added to new pak files instead of modifying existing ones as well.

## Estimating Patch Size

To get an estimate of the patch size, you will need to first get the `project_meta_id` for two separate releases.&#x20;

1. Go to <https://developers.hyperplay.xyz/api/v1/listings> in your browser and find your game
2. Find the channel you are releasing on.
3. Copy `channels[i].release_meta.release_id` to your records as `oldReleaseMetaId`
4. Perform a new release on the channel
5. Copy `channels[i].release_meta.release_id` to your records as `newReleaseMetaId`
6. Make a note of the platform id from `channels[i].release_meta.platforms` to pass in the following url
7. Go to `https://developers.hyperplay.xyz/api/v1/patches/compare?old_release_id=<paste_oldReleasemetaId_here>&platform_name=<platform_name_here>&new_release_id=<paste_newReleasemetaId_here>`&#x20;

Here is a sample response:

```
{"differentBlockPercentage":85.08110505639335,"estimatedPatchSizeInKB":13749760}
```

The value for `differentBlockPercentage` is the amount of new data that was downloaded for the patch divided by the size of the new release on disk.

As a developer, you can use this tool to experiment with your build pipeline on private (i.e. gated) channels to optimize for patch size.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hyperplay.xyz/developer-docs/publish-list-a-game/beta-patching.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
