# DA_DataAssetArchitecture — Data Asset Architecture Overview **Parent Class:** `UDataAsset` **Dependencies:** All consuming systems **Purpose:** Overview of all 20 Data Asset types in the framework, naming conventions, and dependency rules. --- ## Architecture The Modular Game Framework uses `UDataAsset` (and subclass `UPrimaryDataAsset` where persistent identifiers are needed) as the primary authoring format for designer-facing content. Each DA type covers one content domain: weapons, AI profiles, atmosphere presets, narrative data, encounter definitions, etc. ### Conventions - **Naming:** `DA_` — e.g., `DA_WeaponData`, `DA_AIProfile`, `DA_AtmosphereProfile` - **Storage:** All DA files live in `Content/DataAssets//` in-engine - **Parent Class:** `Primary Data Asset` (Blueprint class). Maps to C++ `UPrimaryDataAsset`. - **Loading:** Use `Async Load Primary Asset` node with `Primary Asset Id` and `Primary Asset Type` - **Validation:** Each DA implements a `ValidateData()` function for editor-time data integrity checks - **Gameplay Tags:** All DAs carry a `Gameplay Tag Container` for query and filtering ### Dependency Rules 1. DAs reference other DAs by `Primary Asset Id` or `Soft Object Reference`, never by hard pointer 2. No DA may reference a runtime system; only other DAs 3. Circular DA references are prohibited — use `World Context Object` for runtime resolution 4. All DA types are registered in `DefaultGame.ini` under `[/Script/Engine.AssetManagerSettings]` - In BP: configure via **Project Settings → Asset Manager → Primary Asset Types to Scan** ### BP Type Reference | C++ Type | Blueprint Variable Type | BP Node | |----------|------------------------|---------| | `FPrimaryAssetId` | `Primary Asset Id` | `Make Primary Asset Id`, `Break Primary Asset Id` | | `FPrimaryAssetType` | `Primary Asset Type` | `Make Primary Asset Type` | | `TSoftObjectPtr` | `Soft Object Reference` | `Async Load Primary Asset`, `Resolve Soft Reference` | | `FGameplayTagContainer` | `Gameplay Tag Container` | `Has Tag`, `Add Tag`, `Has Any` | | `UPrimaryDataAsset` | `Primary Data Asset` (parent class) | Right-click → Miscellaneous → Data Asset → PrimaryDataAsset | ### Registered DA Types (Section 13 of Master) | # | DA Type | Domain | Consumed By | |---|---------|--------|-------------| | 1 | `DA_ItemData` | Items | `BPC_InventorySystem` | | 2 | `DA_WeaponData` | Weapons | `BPC_FirearmSystem`, `BPC_MeleeSystem` | | 3 | `DA_AmmoData` | Weapons | `BPC_AmmoComponent` | | 4 | `DA_AIProfile` | AI | `AI_BaseAgentController` | | 5 | `DA_NarrativeData` | Narrative | `BPC_NarrativeStateSystem` | | 6 | `DA_EndingData` | Narrative | `BPC_EndingAccumulator` | | 7 | `DA_InteractionData` | Interaction | `BPC_InteractionDetector` | | 8 | `DA_ObjectiveData` | Narrative/UI | `BPC_ObjectiveSystem`, `WBP_ObjectiveDisplay` | | 9 | `DA_EncounterData` | Adaptive | `BPC_ProceduralEncounter` | | 10 | `DA_AtmosphereProfile` | Adaptive | `BPC_AtmosphereStateController` | | 11 | `DA_ScareEvent` | Adaptive | `BPC_ScareEventSystem` | | 12 | `DA_RoomMutation` | Adaptive | `BPC_AdaptiveEnvironmentDirector` | | 13 | `DA_BehaviourVariant` | AI | `BPC_BehaviourVariantSelector` | | 14 | `DA_HapticProfile` | Settings | `BPC_HapticsController` (148) | | 15 | `DA_RenderPipelineProfile` | Settings | `BPC_RenderPipelineManager` (149) | | 15 | `DA_AdaptationRule` | Adaptive | `BPC_DifficultyManager` | | 16 | `DA_EquipmentConfig` | Inventory | `BPC_EquipmentSlotSystem` | | 17 | `DA_PuzzleData` | Interaction | `BP_PuzzleDeviceActor` | | 18 | `DA_RareEvent` | Adaptive | `BPC_RareEventSystem` | | 19 | `DA_LevelConfig` | Core | `GM_CoreGameMode` | | 20 | `DA_AudioSettings` | Audio | `SS_AudioManager` (132) — replaces deprecated `DA_AudioPresets` | ### Reuse Notes - This overview serves as a registry — all DA types referenced in any system must appear here - New DA types require registration in DefaultGame.ini AND this document - All individual DA spec files are in `docs/blueprints/14-data-assets/`