Core Components
The architecture is built around several key managers that coordinate asset handling:FileSystem
Manages game file paths, catalogs, and data sources
AssetManager
Tracks and manages all EBX, RES, and chunk assets
ResourceManager
Handles CAS/CAT archive reading and decompression
PluginManager
Loads and coordinates plugin extensions
System Layers
SDK Layer (FrostySdk)
The SDK layer provides low-level access to Frostbite data structures and file formats. Key Classes:FileSystem- Path resolution and catalog management (FileSystem.cs:58)AssetManager- Asset tracking and modification (Managers/AssetManager.cs:440)ResourceManager- CAS/CAT archive handling (Managers/ResourceManager.cs:10)TypeLibrary- Runtime type information systemProfilesLibrary- Game-specific configuration profiles
- Reading and writing Frostbite file formats (EBX, RES, chunks)
- Managing game catalogs and superbundles
- Handling asset compression/decompression
- Providing game profile abstraction
Core Layer (FrostyPlugin/FrostyCore)
The Core layer builds on the SDK to provide editor and mod management functionality. Key Classes:PluginManager- Plugin discovery and lifecycle (PluginManager.cs:18)FrostyProject- Project file management (FrostyProject.cs:16)App- Application-wide state and managersConfig- User configuration and settings
- Plugin system and extensibility
- Project save/load operations
- Asset modification tracking
- UI framework integration
Plugin Layer
Plugins extend functionality through well-defined extension points:Data Flow
Asset Management Architecture
The AssetManager maintains three primary registries:- EBX Assets
- Resource Assets
- Chunks
Entity data stored in Provides lookup by name (case-insensitive) or GUID.
ebxList dictionary:Modification Tracking
Frosty tracks asset modifications at multiple levels: Asset States:IsAdded- Asset created by userIsModified- Asset or linked asset has changesIsDirty- Asset has unsaved changesHasModifiedData- Asset data has been altered
The system uses a lazy modification approach - assets are only fully loaded and deserialized when accessed for editing. This keeps memory usage low even with large game files.
Cache System
Frosty maintains a cache to speed up subsequent loads: Cache Contents:- Asset registry (EBX/RES/Chunk lists)
- Bundle and superbundle structure
- Asset metadata (type, size, location)
- Dependency graphs
- Game version changes (patch detection)
- Cache version mismatch
- Profile changes
- Cache file corrupted or missing
Caches/{ProfileName}_*.cache.
Profile System
Profiles provide game-specific configuration:Profiles.bin and loaded via ProfilesLibrary.cs:12.
Thread Safety
Next Steps
Frostbite Engine
Learn about Frostbite file formats and structure
Asset System
Understand EBX, RES, chunks, and bundles
Plugin System
Extend Frosty with custom plugins