Catalog.json: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
|||
Line 105: | Line 105: | ||
{{DataStructureField|class_name_length|uint8|1-byte integer, length of the following string.}} | {{DataStructureField|class_name_length|uint8|1-byte integer, length of the following string.}} | ||
{{DataStructureField|class_name|string|UTF-8 string, the length is stored in the <code>class_name_length</code> field.}} | {{DataStructureField|class_name|string|UTF-8 string, the length is stored in the <code>class_name_length</code> field.}} | ||
{{DataStructureField|payload|sized string struct|A little-endian UTF-16 string containing [[JSON]] data. The JSON structure is described below. See [[#Sized string binary format]] and [[#AssetBundleRequestOptions object structure]] for details.}} | {{DataStructureField|payload|sized string struct|A little-endian UTF-16 string containing [[Wikipedia:JSON|JSON]] data. The JSON structure is described below. See [[#Sized string binary format]] and [[#AssetBundleRequestOptions object structure]] for details.}} | ||
}} | }} | ||
}} | }} |
Revision as of 08:30, 11 December 2024
catalog.json is a JSON file used by the com.unity.addressables library. It is a list of all assets used in a game.
JSON structure
- (root)
m_LocatorId
(string) - Name of this catalog, for example:AddressablesMainContentCatalog
m_BuildResultHash
(string) - Hash of the catalog build, for example:71d0441090abbc8f1a7305f2ea3c8b62
. Notably, it seems to be different from catalog.hashm_InstanceProviderData
(provider object) - InstanceProvider information. See #Provider object structure for details.m_SceneProviderData
(provider object) - SceneProvider information. See #Provider object structure for details.m_ResourceProviderData
(array) - All available resource providers.- (provider object) - A ResourceProvider. See #Provider object structure for details.
m_ProviderIds
(array) - List of some of the IDs fromm_ResourceProviderData
.-
(string)
- An ID of a resource provider, for example:
UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
.
-
(string)
- An ID of a resource provider, for example:
m_InternalIds
(array) - List of all internal IDs. These IDs are most likely used by the game, and this list is used to find details about the asset.-
(string)
- An internal ID. May be a weird path, for example:
{UnityEngine.AddressableAssets.Addressables.RuntimePath}/Android/crilocaldata_assets_all.bundle
; a 32-character-long hexadecimal string, for example:033f3660efceadd40b8cd2845b485652
; an asset path, for example:Assets/CriData/Addressables/dice20.daily.0.acb=4493e0.asset
; a short name, for example:EfficientBlur
; a URL, for example:http://rizastcdn.pigeongames.cn/default/Android/1a2a40bd550976c58c842045215f204e.bundle
; and it probably can be any other UTF-8 string.
-
(string)
- An internal ID. May be a weird path, for example:
m_KeyDataString
(string) - Base64 encoded string containing binary data. See #Key data binary format for details.m_BucketDataString
(string) - Base64 encoded string containing binary data. See #Bucket data binary format for details.m_EntryDataString
(string) - Base64 encoded string containing binary data. See #Entry data binary format for details.m_ExtraDataString
(string) - Base64 encoded string containing binary data. See #Extra data binary format for details.m_resourceTypes
(array) - A list of all of the types of assets in the catalog.-
(object type object)
- An object type, for example:
{"m_AssemblyName": "UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "m_ClassName": "UnityEngine.TextAsset"}
. See #Object type object structure for details.
-
(object type object)
- An object type, for example:
Provider object structure
- (root)
m_Id
(string) - ID of this provider, for example:UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
.m_ObjectType
(object type object) - Object type of this provider, for example:{"m_AssemblyName": "Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "m_ClassName": "UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"}
. See #Object type object structure for details.m_Data
(string) - Additional data for this provider. So far, only empty strings have been found.
Object type object structure
- (root)
m_AssemblyName
(string) - Assembly name of the object's class, for example:Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
.m_ClassName
(string) - This object's class name, for example:UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
.
Binary formats
Note: All values are in little-endian.
Key data binary format
- (root)
key_count
(uint32) - 4-byte integer, indicating the amount of keys stored in the whole structure.keys
(array) - A list of keys. The length of the list can be determined by either using thekey_count
field, or reading until the end of the binary data.-
(struct)
- A key. The size of the struct is variable.
key_type
(uint8) - 1-byte number, indicating the type of the key. Known key types are:0
- UTF-8 key;1
- UTF-16 key;4
- int32 key.key_content
(union)text_content
(sized string struct) - Only present if key type is0
or1
. The type of the string is UTF-8 ifkey_type
is0
and UTF-16 (little-endian) ifkey_type
is1
. This field is the key's name. See #Sized string binary format for details.numeric_content
(uint32) - Only present if key type is4
. This field is the key's name.
-
(struct)
- A key. The size of the struct is variable.
Bucket data binary format
- (root)
bucket_count
(uint32) - 4-byte integer, indicating the amount of buckets stored in the whole structure.buckets
(array) - A list of buckets. The length of the list can be determined by either using thebucket_count
field, or reading until the end of the binary data.-
(struct)
- A bucket. The size of the struct is variable.
key_offset
(uint32) - 4-byte integer, offset into theKeyData
binary blob. Points to the beginning of a key entry associated with this bucket.entry_count
(uint32) - 4-byte integer, determining the amount of entries in theentries
array.entries
(array) - Array of 4-byte indices. The length of this array is determined by theentry_count
field.-
(uint32)
- An index. This value is used to index the array that is contained within the binary blob encoded in
m_EntryDataString
.
-
(uint32)
- An index. This value is used to index the array that is contained within the binary blob encoded in
-
(struct)
- A bucket. The size of the struct is variable.
Entry data binary format
- (root)
entry_count
(uint32) - 4-byte integer, indicating the amount of entries stored in the whole structure.entries
(array) - A list of entries. The length of the list can be determined by either using theentry_count
field, or reading until the end of the binary data.-
(struct)
- An entry. The size of one entry is always 28 bytes (7 * 4 bytes).
internal_id_index
(uint32) - 4-byte integer, index into them_InternalIds
array inside the parent catalog.json file.resource_provider_index
(uint32) - 4-byte integer, index into them_ProviderIds
array inside the parent catalog.json file.unknown_bucket_index
(uint32) - 4-byte integer, index into the array that is contained within the binary blob encoded inm_BucketDataString
. [verify]unknown_asset_value
(uint32) - 4-byte integer. Set to 0 for most assets, but set to a seemingly random value from 0 to 4294967295 if the entry's internal ID is either: (1) a 32-character-long hexadecimal string, or (2) a file path ending in.asset
. [verify]extra_data_block_offset
(uint32) - 4-byte integer, offset into theExtraData
binary blob. Points to the beginning of an extra data entry associated with this entry.unknown2_bucket_index
(uint32) - 4-byte integer, index into the array that is contained within the binary blob encoded inm_BucketDataString
. [verify]resource_type_index
(uint32) - 4-byte integer, index into them_resourceTypes
array inside the parent catalog.json file.
-
(struct)
- An entry. The size of one entry is always 28 bytes (7 * 4 bytes).
Extra data binary format
- (root)
extra_data_entries
(array) - A list of entries. The length of this list should be determined by reading until the end of the binary data. This structure is probably not guaranteed to be an actual list, where each element is right next to another one -- it should be thought of as a heap of arbitrary data, with pointers stored in theextra_data_block_offset
field within theEntryData
binary.-
(struct)
- An entry with extra data. The size of the struct is variable.
magic_value
(uint8) - 1-byte integer, always 7. The purpose of this value is unknown. [verify]assembly_name_length
(uint8) - 1-byte integer, length of the following string.assembly_name
(string) - UTF-8 string, the length is stored in theassembly_name_length
field.class_name_length
(uint8) - 1-byte integer, length of the following string.class_name
(string) - UTF-8 string, the length is stored in theclass_name_length
field.payload
(sized string struct) - A little-endian UTF-16 string containing JSON data. The JSON structure is described below. See #Sized string binary format and #AssetBundleRequestOptions object structure for details.
-
(struct)
- An entry with extra data. The size of the struct is variable.
AssetBundleRequestOptions object structure
This is a JSON document embedded within the extra data entry. It provides more information about downloadable asset bundles, for example, the asset bundle name, asset bundle hash, the size of the bundle and, other information.
- (root)
m_Hash
(string) - The asset bundle hash.m_Crc
(number) - A CRC checksum of the bundle. [verify]m_Timeout
(number) - How much time before timing out. The unit is unknown. [verify]m_ChunkedTransfer
(bool) - Whether to allow chunked transfer. [verify]m_RedirectLimit
(number) - How many redirects to allow.-1
to disable. [verify]m_RetryCount
(number) - How many times to retry the request if failed. [verify]m_BundleName
(string) - The asset bundle name.m_AssetLoadMode
(number) - Unknown; always0
. [verify]m_BundleSize
(number) - The size of the bundle. The unit is unknown. [verify]m_UseCrcForCachedBundles
(bool) - Unknown; alwaystrue
. [verify]m_UseUWRForLocalBundles
(bool) - Unknown; alwaysfalse
. [verify]m_ClearOtherCachedVersionsWhenLoaded
(bool) - Whether to delete old versions of this bundle when downloading an update.
Sized string binary format
- (root)
length
(uint32) - 4-byte integer, determines the amount of bytes in thetext
field.text
(array) - Byte array with the contents of the string. The exact format (UTF-8 vs UTF-16) must be determined separately.- (uint8) - A byte within the string.