Catalog.json: Difference between revisions

From Rhythm Game Wiki
Jump to navigation Jump to search
Created page with "{{DISPLAYTITLE:catalog_catalog.json}} A file from the com.unity.addressables library. It is a list of all assets used in a game. == JSON structure == {{DataStructure| {{DataStructureField|m_LocatorId|string|Name of this catalog, for example: <code>AddressablesMainContentCatalog</code>}} {{DataStructureField|m_BuildResultHash|string|Hash of the catalog build, for example: <code>71d0441090abbc8f1a7305f2ea3c8b62</code>. Notably, it seems to be different from ca..."
 
No edit summary
Line 1: Line 1:
{{DISPLAYTITLE:catalog_catalog.json}}
{{DISPLAYTITLE:catalog_catalog.json}}
A file from the [[com.unity.addressables]] library. It is a list of all assets used in a game.
A file from the [[com.unity.addressables]] library. It is a list of all assets used in a game.


Line 43: Line 42:
}}
}}


=== Key data binary format ===
== Binary formats ==


Note: All values are in [[little-endian]].
Note: All values are in [[little-endian]].
=== Key data binary format ===


{{DataStructure|
{{DataStructure|
Line 61: Line 62:


=== Bucket data binary format ===
=== Bucket data binary format ===
{{Unfinished}}
 
<!-- fun fact, this format consists entirely out of uint32 values. fun! -->
 
{{DataStructure|
  {{DataStructureField|bucket_count|uint32|4-byte integer, indicating the amount of buckets stored in the whole structure.}}
  {{DataStructureField|buckets|array|A list of buckets. The length of the list can be determined by either using the <code>bucket_count</code> field, or reading until the end of the binary data.|
    {{DataStructureField||struct|A bucket. The size of the struct is variable.|
      {{DataStructureField|bucket_id|uint32|4-byte integer, probably some kind of bucket ID.}}
      {{DataStructureField|entry_count|uint32|4-byte integer, determining the amount of entries in the <code>entries</code> array.}}
      {{DataStructureField|entries|array|Array of 4-byte indices. The length of this array is determined by the <code>entry_count</code> field.|
        {{DataStructureField||uint32|An index. This value is used to index the array within the base64-encoded <code>m_EntryDataString</code>.}}
      }}
    }}
  }}
}}


=== Entry data binary format ===
=== Entry data binary format ===

Revision as of 12:49, 10 December 2024

A file from 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_catalog.hash
    • m_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.
    • m_ProviderIds (array) - List of some of the IDs from m_ResourceProviderData.
      • (string) - An ID of a resource provider, for example: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider.
    • 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.
    • 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.

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 the key_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 is 0 or 1. The type of the string is UTF-8 if key_type is 0 and UTF-16 (little-endian) if key_type is 1. This field is the key's name. See #Sized string binary format for details.
          • numeric_content (uint32) - Only present if key type is 4. This field is the key's name.

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 the bucket_count field, or reading until the end of the binary data.
      • (struct) - A bucket. The size of the struct is variable.
        • bucket_id (uint32) - 4-byte integer, probably some kind of bucket ID.
        • entry_count (uint32) - 4-byte integer, determining the amount of entries in the entries array.
        • entries (array) - Array of 4-byte indices. The length of this array is determined by the entry_count field.
          • (uint32) - An index. This value is used to index the array within the base64-encoded m_EntryDataString.

Entry data binary format

[unfinished]

Extra data binary format

[unfinished]

Sized string binary format

  • (root)
    • length (uint32) - 4-byte integer, determines the amount of bytes in the text 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.