#rb Per.Larsson
#jira UE-218584
#rnx
- This is only intended for development and testing IoStoreOnDemand as it allows us to apply it to a project without changing the project files on disk. This should not be used to enable the feature on a project in production.
### Enabling the code module
- When forcing on IoStoreOnDemand, BuildCookRun will pass '-CompileIoStoreOnDemand' to UnrealBuildTool which will set 'bCompileIoStoreOnDemand' to true in the target rules. This in turn will add the 'IoStoreOnDemand' module to the Engine module but only for runtime targets.
- None of this should be used when enabling the feature for a project permanentl, instead just add 'IoStoreOnDemand' module to your project's *.build.cs
### Staging SSL certificates
- IoStoreOnDemand needs access to the engine/project#s SSL certificates at runtime so we need to stage them, which is done by forcing 'bStageSSLCertificates' to be true during BuildCookRun.
- To do this properly for a project set ini:Engine:[/Script/Engine.NetworkSettings]:n.VerifyPeer=true
### Generate Chunks
- In order for IoStoreOnDemand to work we need to generate chunks (more than one container file) which can be done by forcing ProjectParams.Manifests to true.
- To do this properly for a project set ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:bGenerateChunks=true
### Pak Rules
- Once chunked builds are enabled IoStoreOnDemand will require at least one PakRule that sets 'bOnDemand' to true. So first we check to see if any rules like this for the existing project and if not we force add one via CreateIoStoreOnDemandPakRules. This rule will include all *.ubulk and *.uptnl files except ones found under a \map\ directory. This is because some level bulkdata files can get too large for IoStoreOnDemand to support so excluding anything under a map directory is a quick and easy way to try and work around that. The end result is that other than map data, pretty much all bulkdata will end up on demand, which is a good stress test for the system but not a great representation on how the system should be used.
- If you are trying to set up rules properly you'd need to consider what data you actually want to stream over the network and what data you want to remain on disk, which would greatly depend on your project set up. One popular choice is to only stream optional (.uptnl) bulkdata and leave the required bulkdata to be found on disk.
### Enabling Persistent Local Storage
- IoStoreOnDemand requires persistent local storage to be set aside for it's caching which may or may not require special set up for a project depending on the target platform. If we detect that the current project has not been set up for persistent local storage we will attempt to enable it for the project during staging.
- To set this up properly you will need to consult the documentation for your target platform and follow the instructions.
[CL 34702097 by paul chipchase in ue5-main branch]
I also worked out how to add a new AutoRTFMEngineTests target that lets us test a much greater surface area of the engine.
[CL 34452505 by neil henning in ue5-main branch]
This is passed through to the target receipt, and respected in FPluginManager.
#jira UE-214749
#rb Joe.Kirchoff
[CL 33811096 by zach brockway in ue5-main branch]
* Added GetBuildUser, GetBuildUserDomain and GetBuildMachine to BuildSettings. These functions will return private information about the build if Target.bEnablePrivateBuildInformation is set to true. If set to false all functions will return empty strings
[CL 33319106 by henrik karlsson in ue5-main branch]
- Remove bUsesSteam from ShooterGame targets
[REVIEW] [at]Jake.Nyman [at]Sam.Zamani
#rb jake.niman
[CL 32282855 by chris varnsverry in ue5-main branch]