Setup

Downloading, running, and upgrading automod

automod-demo

curl -JLo automod.zip https://codeload.github.com/jpabscale/automod/legacy.zip/master
tar xf automod.zip
move jpabscale-automod-* automod
del automod.zip
cd automod                                              & :: change to uncompressed directory if downloaded as a zip file
automod .demo.sb                                        & :: generate Stellar Blade demonstration mods
automod .demo.soa                                       & :: generate Sands of Aura demonstration mod
automod .setup.vscode                                   & :: or, automod .setup
curl -JLo automod.tar.gz https://codeload.github.com/jpabscale/automod/legacy.tar.gz/master
tar xf automod.tar.gz
mv jpabscale-automod* automod
rm automod.tar.gz
cd automod                                              # change to uncompressed directory if downloaded as a zip file
./automod .demo.sb                                      # generate Stellar Blade demonstration mods
./automod .demo.soa                                     # generate Sands of Aura demonstration mod
./automod .setup.vscode                                 # or, ./automod .setup

As it generates a mod (e.g., .demo.sb or .demo.soa), automod uses retoc/repak to extract legacy .uasset/.uexp files, converts them to UAssetAPI .json format in-process using uasset4j (the JVM port of UAssetAPI), programmatically patches the .json file, converts the patched .json file back to .uasset/.uexp in-process using uasset4j, and then to .utoc/.ucas/.pak using retoc/repak.

At the end of the mod generation, it will create a <mod-name>.zip (or <mod-name>.7z) archive file containing the .utoc/.ucas/.pak files that can be uncompressed inside ...\<game-folder>\<game-id>\Content\Paks\~mods (or ...\Paks\LogicMods), manually or managed by using a mod manager.

.config.json

Game and tool information is stored in a .config.json file in the directory you run automod from (a workspace folder, or the automod installation directory). It is created automatically on the first run with sensible defaults, and it is the only thing you normally need to edit: fill in the directory of the game you want to mod, then select it with -g <game-id> (or the extension’s Active Game ID setting).

{
  "games": {
    "SB": {
      "aesKey": "",
      "contentPaks": "SB/Content/Paks",
      "directory": "D:\\SteamLibrary\\steamapps\\common\\StellarBlade",
      "mapUri": "https://github.com/jpabscale/automod/releases/download/usmap/StellarBlade_1.4.1.usmap.7z",
      "repakPackOptions": "",
      "unity": false,
      "unrealEngine": "4.26",
      "zen": true
    },
    "WarmSnow": {
      "aesKey": "",
      "contentPaks": "WarmSnow_Data",
      "directory": "D:\\SteamLibrary\\steamapps\\common\\WarmSnow",
      "mapUri": "https://github.com/jpabscale/automod/releases/download/ttmap/warmsnow_3.1.0.1.ttmap",
      "repakPackOptions": "",
      "unity": true,
      "unrealEngine": "",
      "zen": false
    }
  },
  "tools": {
    "fmodel": "7c86ee47ec2722152b735b7cb788686f6ea3e91a",
    "jd": "2.5.0",
    "repak": "0.2.4-pre.2",
    "retoc": "0.1.6-pre.3"
  }
}

The important games.<game-id> fields:

  • directory – the game’s install directory
  • contentPaks – for Unreal Engine games, the path to the Paks directory relative to the game (e.g., SB/Content/Paks); for Unity games, the game’s data directory (e.g., WarmSnow_Data)
  • unitytrue to patch the game as a Unity game (asset4j); otherwise it is treated as an Unreal Engine game
  • unrealEngine – the Unreal Engine version (e.g., 4.26); empty for Unity games
  • mapUri – the usmap (Unreal Engine) or ttmap (Unity) URL, auto-downloaded during setup (optional; can be empty when the map file is already present or not needed, e.g., Unity games with embedded type trees)
  • aesKey – the game’s AES key, if it requires one
  • zentrue for Unreal Engine zen containers (.utoc/.ucas); false for legacy .pak and Unity games
  • repakPackOptions – extra repak packing options (e.g., --version V11)

The tools section holds the versions of the managed tools (retoc, repak, jd, fmodel) and is auto-managed, so you generally do not need to touch it. You can edit .config.json by hand or through the VSCode extension settings.

Unity mods

Unity mods are generated the same way — pick the game with -g <game-id> and run .batch (or pass a mod name directly). For example:

./automod -g WarmSnow .batch
./automod -g BladedFury .batch --ultra-compression        # also build a .7z archive

Each generated archive embeds an install.py installer and a gameDataDir.txt hint, so installing (and uninstalling) a mod is just:

python3 install.py                                         # install (backs up originals)
python3 install.py -r                                      # restore the originals (undo)

The installer requires Python 3 on the machine installing the mod (not to run automod itself), and it is optional — you can instead uncompress the archive and copy the files into the game’s data directory manually. The originals are backed up to <game-dir>/../<mod-name>-backup/ before they are overwritten. See the Unity Modding guide for the patch file forms.

Upgrading automod

automod .upgrade
./automod .upgrade