Skip to content

Latest commit

 

History

History
320 lines (221 loc) · 11.4 KB

README.md

File metadata and controls

320 lines (221 loc) · 11.4 KB
logo

Blue Archive - Asset Downloader

A tool that downloads and extracts the Blue Archive JP AssetBundles, TableBundles, MediaResources.

It downloads them directly from the Yostar Servers.

Requirements

  • Python 3.10+
  • .Net Runtime 6.0 (If you are using GNU/Linux or MacOS)
Libraries Used (Click to expand)
  • aiohttp
  • aiofiles
  • requests
  • requests-cache
  • cloudscraper
  • flatbuffers
  • pycryptodome
  • UnityPy
  • rich
  • xxhash

Installation

Download and install python. After that clone this repository

git clone https://github.com/Deathemonic/BA-AD

or just download as a zip by clicking Code > Download Zip. Then open BA-AD folder in your Terminal or CMD

Then install it using pip

pip install .
Tutorial with Screenshots (Click to expand)
  1. Download the repository files

stepone

  1. Extract the downloaded zip and open the folder from the extracted zip

steptwo

  1. Shift + Right Click then click Open PowerShell window here

alternatively you can open cmd then change directory to the folder

stepthree

  1. Install the program by typing pip install .

stepfour

  1. Your done just type baad --help to see the usage. Check out Usage on how to use the tool.

Example Usage (Click to expand)
  • Downloads the assetbundles stepfive stepsix

  • Downloads the tablebundles stepseven

  • Downloads the media reasources stepeight

  • Output results stepnine stepthirteen

  • Extracting assetbundles stepten stepeleven

  • Extracting tablebundles steptwelve

Usage

Important

Before you go downloading the game assets please read Nexon's Terms and Service first. You are not allowed to sell the game files, models or use them for commercial purposes.

> baad --help
usage: baad [-h] [-v] [-u] [-g] {download,extract} ...

Blue Archive Asset Downloader

positional arguments:
  {download,extract}
    download          download game files
    extract           extract game files

options:
  -h, --help          show this help message and exit
  -v, --version       show program's version number and exit
  -u, --update        force update the apk
  -g, --generate      generate the flatbuf schema

Downloading

To download the assetsbundles, tablebundles, and media resources we need to initialize download mode, to do that we pass download so it will be like this baad download.

> baad download --help
usage: baad download [-h] [--output OUTPUT] [--limit LIMIT] [--catalog CATALOG] [--assets] [--tables] [--media] [-a]

options:
  -h, --help         show this help message and exit
  --output OUTPUT    output directory for the downloaded files (default: ./output)
  --limit LIMIT      set a limit the download limit (default: 5)
  --catalog CATALOG  force change the catalog url (will skip apk download)
  --assets           download the assetbundles
  --tables           download the tablebundles
  --media            download the mediaresources
  -a, --all          download all game files

You can pass --update to force update the game version.

> baad --update

Examples:

  • Saves the files using Posix Path style
> baad download --tables --output ./Downloads
  • Limit the concurrent download to 10 files
> baad download --assets --limit 10
  • Downloads both AssetBundles and MediaResources
> baad download --assets --media
  • Saves the files using Windows Path style
> baad download --media --output C:\Users\User\Documents
  • Change the catalog url to a older catalog url
> baad download --assets --catalog https://prod-clientpatch.bluearchiveyostar.com/r67_jjjg51ngucokd90cuk4l_3

Note

If you have low connection and download say error, rerun the program again it will retry downloading the remaining files. Don't worry it will not download the already downloaded files again

Extracting

To extract the assetsbundles, and tablebundles we need to initialize extract mode, to do that we pass extract so it will be like this baad extract.

No need to extract the MediaResources as it's already extracted by default.

> baad extract --help

usage: baad extract [-h] [--path PATH] [--studio] [--assets] [--tables] [-a]

options:
  -h, --help   show this help message and exit
  --path PATH  path of the files that will be extracted
  --studio     uses the assetstudiomod as a backend for extracting the assetbundles
  --assets     extract the assetbundles
  --tables     extract the tablebundles
  -a, --all    extract all game files

AssetBundles

To extract assetbundles you need to pass --assets to extract the asset then pass --path to specify the path to extract the assetbundles. This will extract the assets files to the parent path folder then AssetExtracted.

By default the extracter uses UnityPy as it's backend but you can pass --studio to toggle AssetStudioMod as the backend. Due to the limitations for UnityPy there's no way to extract the fbx, you could use AssetStudioMod backend to extract the fbx but any fbx associated with animator or animationclips will not be extracted.

Generally you just pick the which assetbundle you need and put them in a seperate folder because it will extract all the assetbundles in the specified path. Extracting is RAM heavy.

Example:

  • Use the selected assetbundles then extracts the assets to ./output/AssetExtracted
> baad extract --assets --path ./output/assetbundles
  • Uses AssetStudioMod as backend
> baad extract --assets --path ./output/assetbundles --studio

Note

This is not meant to be used for primary extracting the assetbundles, this is meant for quick and lazy extraction of the assetbundles and people uses GNU/Linux or MacOS. For proper extraction of the assetbundles you need to use AssetStudioMod GUI (Only runs in windows or use wine in linux #696).


TableBundles

Before extracting the tablebundles we need to generate the flatbuffers first.

> baad --generate

To extract tablebundles you need to pass --tables to extract the asset then pass --path to specify the path to extract the tablebundles. This will extract the assets files to the parent path folder then TableExtracted.

Example:

  • Extracts the tables to ./output/TableExtracted
> baad extract --tables --path ./output/tablebundles

Note

Note you may see warnings and some files didn't get parse, it's a known issue for now but most files will be parse just fine.

What to do now?

You may be asking, I've downloaded everything so what do I do now?

Well anything you want, you can use assetbundles to extract the chibi models and port them into a different game like Gmod or Left 4 Dead. You can use the extracted tablebundles to view the character dialogs. You can use the media resources to listen to the character voice lines or the OST.

Examples (Click to expand)
  1. You can export the assetbundles using AssetStudioMod stepfourteen
  • Then you can view the extracted model using Blender stepfifteen

  • Or you can convert the model to pmx to use with MikuMikuDance stepsixteen

  • Or you can port the model to Source to use with Gmod or Source Film Maker stepseventeen I know it looks shit but it works

  1. You can use the extracted tablebundles to view the game database
  • You can view the character dialog stepeighteen

  • You can view the charater skill info stepnineteen

  1. You can use the download media resources to view the game backgrounds, cg, video, or music
  • You can view the game backgrounds and CG steptwenty

  • You can listen character voice lines and ost steptwentyone

Dump

To get dump.cs you need to manually decompile the libil2cpp.so. I recommend following the instructions from Auto-Il2cppDumper or Zygisk-Il2CppDumper. Also I recommend using a emulator like MuMuPlayer to get easy root access.

But you your lazy you can use Il2CppDumper to dump it manually or automatically using a script. You gonna need the Blue Archive JP apk from ApkPure, then rename .xapk to .zip and extract it. You will have multiple apks the apks you need is config.arm64_v8a.apk and UnityDataAssetPack.apk then rename .apk to .zip and extract it.

libil2cpp.so is located at extracted the config.arm64_v8a.apk then at lib/arm64-v8a and the global-metadata.dat is located at the extracted UnityDataAssetPack.apk then at assets/bin/Data/Managed/Metadata.

Note

You will face a ERROR: Can't use auto mode to process file, try manual mode by doing this method.

Contributing

Don't like my shitty code and what to change it? Feel free to contribute by submitting a pull request or issue. Always appreciate the help.

Acknowledgement

Copyright

Blue Archive is a registered trademark of NAT GAMES Co., Ltd., NEXON Korea Corp., and Yostar, Inc. This project is not affiliated with, endorsed by, or connected to NAT GAMES Co., Ltd., NEXON Korea Corp., NEXON GAMES Co., Ltd., Yostar, Inc., or any of their subsidiaries or affiliates. All game assets, content, and materials are copyrighted by their respective owners and are used for informational and educational purposes only.