Skip to content

A tool to export names, descriptions, and other data related to game items from Fortnite: Save The World.

License

Notifications You must be signed in to change notification settings

BanjoByTheBay/BanjoBotAssets

Repository files navigation

BanjoBotAssets

A tool to export names, descriptions, and other data related to game items from Fortnite: Save The World.

Usage

git submodule update --init --recursive
cd BanjoBotAssets
dotnet run

This will produce assets.json and schematics.json. Enjoy!

Options

By default, all supported asset types are extracted and saved, along with their images.

To restrict the exported asset types, use /Only:

dotnet run -- /only SchematicExporter,AssetRegistryExporter,CraftingRecipeExporter

To control whether images are exported, use /ImageExportOptions:

/ImageExportOptions:Type:LargePreview PathOnly /ImageExportOptions:Type:SmallPreview PathOnly /ImageExportOptions:Type:Icon PathOnly /ImageExportOptions:Type:LoadingScreen PathOnly /ImageExportOptions:Type:PackImage PathOnly

To limit multithreading, use /PerformanceOptions:

/PerformanceOptions:MaxParallelism 1

To try to merge the exported assets into existing JSON files instead of overwriting them, use /Merge.

See appsettings.json for more options.

Contributing

In order to troubleshoot or modify BanjoBotAssets, it's helpful to understand the basic sequence of operations it performs:

  1. Locate the Fortnite game files.
  2. Get the AES keys and structure mappings for the current game version from a web service.
  3. Decrypt the game files, list all game assets, and let each exporter class pick out the asset paths it wants to load.
  4. Run all selected exporters (IExporter) in parallel, collecting the intermediate results for each type in a separate IAssetOutput.
  5. Combine intermediate results from all exporters into a single ExportedAssets and a list of ExportedRecipe.
  6. Run all post-exporters (IPostExporter) in parallel to modify the intermediate results in place.
  7. Run all artifact generators (IExportArtifact) to write the results to disk.

The AES keys and mappings are cached on disk between runs until the game files are updated.

Game assets are loaded with CUE4Parse, using a memory cache to reduce duplicate loads of referenced assets.

Adding support for a new asset type

Create a new exporter class extending one of:

  • UObjectExporter is used for most assets derived from UObject that are exported as named items, i.e. dictionary values with unique keys derived from the assets' paths or template IDs.
  • GroupExporter is used for assets that have variations for different rarities and tiers, like heroes and schematics. Instead of processing each asset separately (e.g. all 25 variations of a weapon schematic), the assets are matched up into groups, and data from one representative asset in each group is reused for the others.
  • BlueprintExporter is used for assets derived from UBlueprintGeneratedClass.
  • BaseExporter is used for data tables and singleton assets that aren't exported as named items.

About

A tool to export names, descriptions, and other data related to game items from Fortnite: Save The World.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 4

  •  
  •  
  •  
  •  

Languages