Giter VIP home page Giter VIP logo

frostbite-scripts's Introduction

These are Python scripts that allow you to extract assets from Frostbite Engine games. They're based off Frankelstner's scripts, I've updated them to Python 3 and did a bunch of tweaks and cleanups to them.

All scripts require Python 3 (64-bit)!

There is one folder for each Frostbite version:

  • frostbite2
    • Frostbite Engine 2 (2011-2012) - Battlefield 3, Need for Speed: The Run, ...
  • frostbite3
    • Frostbite Engine 3 (2013-present) - Battlefield 4, Need for Speed: Rivals, ...
    • Newest games from 2018 and later (Star Wars: Battlefront II, Battlefield V, FIFA 19, Anthem) are not supported yet.

IMPORTANT! Some games require proprietary libraries that I can't distribute here. You'll need to get them youself if you want to extract those games:

  • Some X360 games use X360 compression on some SB files. Find Xbox 360 File Decompression Tool (xbdecompress.exe) and put it into thirdparty directory.
  • FIFA 18 uses Oodle compression. Grab oo2core_4_win64.dll from your game installation and put it into thirdparty directory.

In each directory, you'll find the following scripts:

  • dumper - adjust the paths at the start and run it to dump all the contents of superbundles; all the other scripts are meant to be used with the resulting dump
  • ebxtotext - converts EBX files to plain text TXT; useful if you want to view the game's scripts, etc
  • ebxtoasset - runs through EBX files and uses known EBX types to extract assets from chunks, the resulting file takes the EBX name; currently, only sounds and movies are supported

To eleborate on Frostbite asset structure, all data is contained inside superbundles (SB files). Each superbundle contains bundles and each bundle, in turn, contains the following file types:

  • ebx - these are so called asset nodes; this format is the cornerstone of Frostbite, they're used to reference the actual game assets stored inside res and chunk files as well as store game scripts, configurations, etc
  • res - these contain assets like meshes, animations, shaders, texture headers, sometimes movies
  • chunk - these contain assets like textures, movies, sounds, etc

Additionally, superbundle itself can also contain chunks.

So if you want to get the game assets you need to take the EBX files and use them to find your data inside the chunks. This is what ebxtoasset script does for you. Frostbite has many different EBX asset types, here are the most relevant ones:

  • SoundWaveAsset - general sound asset, references chunks containing SPS files (standard EA audio format they've been using since 2010)
  • NewWaveAsset, LocalizedWaveAsset - new sound asset types introduced in 2017, same as SoundWaveAsset but simplified
  • TextureAsset - references texture header (ITexture) RES file which lists chunks containing raw image data for each mipmap level
  • SkinnedMeshAsset, RigidMeshAsset, CompositeMeshAsset, ... - references mesh set header (MeshSet) RES file which lists chunks containing meshes for each LOD

CREDITS:

  • Frankelstner - initial research of Frostbite formats and original Python scripts
  • NoFaTe - some improvements to Ebx and DbObject parser

Libraries used:

frostbite-scripts's People

Contributors

nickninetheeagle avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.