3_LowLevel_Data_Guide.md 3.7 KB

LLM Guide: Low-Level Project Data (LowLevel.zip)

1. Purpose

This data level provides the most granular, detailed, and raw view of the project's assets. It is designed for deep inspection of specific object properties, component values, and raw file contents.

Use this data ONLY when:

  • The user asks for a specific property value that is not available in the Mid-Level data (e.g., "What are the exact position coordinates of the 'Player' object?").
  • You need to read the content of a C# script or a shader file.
  • You need to examine the raw, unmodified project settings files.

2. File Structure

The zip file contains a highly detailed breakdown of the project, where scenes and prefabs are exploded into their constituent GameObjects.

LowLevel/
├── Assets/
│   ├── Scenes/
│   │   └── SampleScene.unity/  // A directory, not a file
│   │       ├── 14854.json      // Represents the Main Camera GameObject
│   │       ├── 99012.json      // Represents the Player Character GameObject
│   │       └── root_objects.json // Lists the fileIDs of top-level objects
│   ├── Scripts/
│   │   └── PlayerController.cs // The actual C# script file
│   └── Shaders/
│       └── Lit.shader      // The actual shader file
└── ProjectSettings/
    ├── TagManager.json
    └── ... (other raw project settings files as JSON)

3. Key Files & Schema

Assets/.../{fileID}.json

This file represents a single GameObject or Component from a scene or prefab. The filename is the object's unique fileID within its original asset file. This is a raw dump of the object's data as seen in the YAML source.

Schema Example (99012.json for the Player Character):

{
  "GameObject": {
    "m_ObjectHideFlags": 0,
    "m_CorrespondingSourceObject": { "fileID": 0 },
    "m_PrefabInstance": { "fileID": 0 },
    "m_PrefabAsset": { "fileID": 0 },
    "m_Component": [
      { "component": { "fileID": 990120 } }, // Link to its own Transform
      { "component": { "fileID": 990121 } }, // Link to a BoxCollider
      { "component": { "fileID": 990122 } }  // Link to a MonoBehaviour
    ],
    "m_Layer": 8,
    "m_Name": "Player Character",
    "m_TagString": "Player",
    "m_IsActive": 1
  }
}
  • The data is raw. To find the position, you would need to find the Transform component (e.g., 990120.json) and look for the m_LocalPosition property within it.
  • To find which script is attached, you would need to find the MonoBehaviour component (e.g., 990122.json) and look for the m_Script property, which contains the script's GUID.

Assets/.../root_objects.json

This file contains a simple JSON list of the fileIDs for all the root (top-level) GameObjects within that scene or prefab.

Schema Example:

[
  14854,
  99012,
  123456
]

Other Files

  • *.cs and *.shader files: These are direct, plain-text copies of the original source files.
  • ProjectSettings/*.json: These are raw, one-to-one conversions of the corresponding .asset files from YAML to JSON.

4. Handling Shrunken / Tokenized Data

The JSON files in this zip may have been processed by json_reducer.py.

If the data is shrunken:

  1. The file content will look like this: {"key_mapper":{"k0":"GameObject",...},"data":{"k0":{...}}}
  2. You MUST use the key_mapper to de-tokenize the keys in the data object before you can interpret the schema.
  3. The json_reducer also removes keys with empty values. If a key is missing from a de-tokenized object, you can assume its value was empty.

Once de-tokenized, the data will conform to the schemas described above.