Skip to main content

Overview

The FrostySdk namespace contains the core components for interacting with Frostbite engine game files. It provides fundamental classes for file system access, profile management, and asset manipulation.

Key Classes

FileSystem

Manages game file system access, catalog enumeration, and path resolution.
FileSystem fs = new FileSystem(string basePath);
fs.Initialize(byte[] key = null);
Properties:
SuperBundleCount
int
Number of superbundles in the game
CatalogCount
int
Number of catalogs in the game
BasePath
string
Base installation path of the game
CacheName
string
Path to the cache file
Methods:
ResolvePath
string
required
Resolves a game-relative path to an absolute file path
string fullPath = fs.ResolvePath("native_data/installpackage_00/cas.cat");
GetCatalogFromSuperBundle
string
required
Gets the catalog name that contains a specific superbundle
string catalog = fs.GetCatalogFromSuperBundle("win32/levels/mp_001");
EnumerateCatalogInfos
IEnumerable<CatalogInfo>
Enumerates all catalog information objects
foreach (CatalogInfo catalog in fs.EnumerateCatalogInfos())
{
    Console.WriteLine($"Catalog: {catalog.Name}");
}

ProfilesLibrary

Static class providing access to game profile information and configuration.
string profileName = ProfilesLibrary.ProfileName;
int dataVersion = ProfilesLibrary.DataVersion;
Type deobfuscator = ProfilesLibrary.Deobfuscator;
Static Properties:
ProfileName
string
Current game profile name (e.g., “FIFA20”, “Battlefield5”)
DataVersion
int
Game data version identifier
CacheName
string
Cache file name for the current profile
Deobfuscator
Type
Deobfuscator type for this game profile
AssetLoader
Type
Asset loader implementation for this game

TypeLibrary

Provides runtime type information and reflection for game asset types.
bool isSubclass = TypeLibrary.IsSubClassOf("MeshAsset", "Asset");

Usage Example

using FrostySdk;
using FrostySdk.Managers;

// Initialize file system
FileSystem fs = new FileSystem(@"C:\Program Files\FIFA 20");
fs.Initialize();

// Create managers
ResourceManager rm = new ResourceManager(fs);
rm.Initialize();

AssetManager am = new AssetManager(fs, rm);
am.Initialize();

// Access current profile
Console.WriteLine($"Profile: {ProfilesLibrary.ProfileName}");
Console.WriteLine($"Data Version: {ProfilesLibrary.DataVersion}");

See Also

Build docs developers (and LLMs) love