Dependency resolution
What are CNames? How do they work?
Summary
How are dependencies resolved?
There are several ways how the game can pull in dependencies. The dependency paths are stored in CNames and can be held by multiple data structures, such as:
A CName is the engine's internal way of representing a . It's used all over the place in many different contexts, holding tags
or depotPaths
.
rRef
Recommended flags: Default
Represents a mandatory dependency that will be loaded together with the and is stored together with it.
raRef
Represents a dependency where the is only pointing at a resource. As the raRef's holder will not even try to load the linked asset, someone else needs to load it instead.
Flags
Default
Recommended setting when you're unsure which flag to use.
Used by: rRef
Indicates that the engine should load the requested resource together with the . Will try to find it in the same .archive as the file requesting it, falling back to other archives only afterwards.
Embedded
Used by: rRef
When a resource is flagged as embedded, it is directly included in the place where it is used. However, resources flagged as embedded might not work as expected if they live in inplaceresources.
Soft
Used by: raRef
This flag is used for resources that are not immediately mandatory. It seems to be a more flexible reference that does not load the resource immediately but points to where it can be found when needed. It's used in root entities for referencing .app files, for example.
Obligatory
Unknown, but probably a legacy artifact from Witcher3
Template
Unknown, but probably a legacy artifact from Witcher3
Inplace
Unknown, but probably a legacy artifact from Witcher3
Last updated