If user sets InstallSpeed of HttpChunkInstaller to anything other than Pause, the current HttpChunkInstaller checks all Manifests and downloads all Chunks without permission.
Licensee wants to begin chunk downloading when request aseet loading by AssetManager. In other words, they want you to download chunk only when they need to use a asset of the chunk.
As far as the code is concerned, the following code of HttpChunkInstaller is a problem.
void FHTTPChunkInstall::UpdatePendingInstallQueue() { ... if (InstallingChunkID == -1) { ... // Install the first available chunk for (auto It = RemoteManifests.CreateConstIterator(); It; ++It) { if (It) { IBuildManifestPtr ChunkManifest = It.Value(); auto ChunkIDField = ChunkManifest->GetCustomField("ChunkID"); if (ChunkIDField.IsValid()) { BeginChunkInstall(ChunkIDField->AsInteger(), ChunkManifest, FindPreviousInstallManifest(ChunkManifest)); return; } } } ... }
Because of this part, InstallerState of HttpChunkInstaller after startup is put in Installing state. This is the cause of this problem. If comment out this part, HttpChunkInstaller will work as requested by Licensee.
I prepared a sample project for testing on the local server.
In this sample, the timing they want to start Chunk download is when you press 1 key( use Set Install Speed node ), not when you press the 0 key( use Async Load Primary Asset ).
This problem is a very important issue for licensees.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-59005 in the post.
0 |
Component | UE - Online |
---|---|
Affects Versions | 4.19 |
Created | May 11, 2018 |
---|---|
Resolved | May 12, 2021 |
Updated | Oct 28, 2022 |