The general idea behind this program is fairly simple. Given a Mod Organizer 2 folder and profile, generate list of instructions that will allow a program to automatically recreate the contents of the folder on another machine. Think of it as replication, but without ever distributing copyrighted files or syncing data between the source and destination machine. The end result is a program that recreate a modlist on a computer while respecting the rights of the game publisher and the mod authors.
Please visit our Discord link below for information on how to obtain and install a modlist.
At this point you may be wondering how much of a complex modlist Wabbajack can handle. At this point it's more about what Wabbajack can't handle, but let's do a rundown of all the supported features:
.zip
.7z
.rar
.fomod
(FNV archives).omod
mods like DarNified UI
or DarkUId Darn
That being said, there are some cases where we would need to do a bit more work to develop:
While Wabbajack can perform a large variety of operations on mod files, we recognize that some authors don't want to deal with the support requests that come from some users performing operations on these files. Therefore we worked together with several authors to create a permissions system Wabbajack will follow during installation and creation of a modlist. This permissions file can be found on Github. Feel free to contact us via discord about any questions you may have.
Overview video https://www.youtube.com/watch?v=5Fwr0Chtcuc
1) Download Wabbajack and install it somewhere outside of your normal Mod Organizer 2 folder (otherwise Wabbajack will try to figure out how to install itself and that might cause a collapse in the time-space continuum). 2) Make sure every archive you used in your MO2 profile has some sort of download information attached.
downloads
tab. Find the file and click Query Info
from the right-click menu. MO2 should find
the download info for you
RECIPES.md
] file\<MO2 Folder>\mods\<your profile>\modlist.txt
file.
4) Click Begin
.
5) Wabbajack will start by indexing all your downloaded archives. This will take some time on most machines as the application
has to performa SHA-256
hash on every file in every archive. However the results of this operation are cached, so you'll only need
to do this once for every downloaded file.
6) Once completed, Wabbajack will collect the files required for the modlist install and begin running them through the compilation stack.
7) If all goes well, you should see a new <your profile name>.exe
file next to Wabbajack.exe
that you just ran. This new .exe
is the one
you want to hand out as a auto modlist installer.
1) Get a modlist installer, it's a .exe
file that was created by Wabbajack
2) Run the .exe
, the install folder defaults to the same folder as the executable, change it if you want.
3) Click Begin
to start installation. At some point you will be prompted for SSO authorization on the Nexus, files
will be auto installed and downloaded
4) After installation has completed, run Mod Organizer 2.exe
, select Portable
and your game type.
At a technical level the process is as follows.
1) Hash and cache the contents of every archive in the \downloads
folder. This lets Wabbajack know of all the possible locations where you could have installed mods
2) Apply the resolution stack
to every file in both the game's root folder and in the MO2 folder.
3) Take the install directives and required archives and write their metadata to a JSON file.
4) Attach the JSON file to Wabbajack itself, creating a new Auto-installer for the profile
Every file analyzed by Wabbajack is passed through a stack of rules. The first rule to match the file creates a Install Directive
or a instruction on how to install that specific file.
Currently the Resolution stack looks like this:
1) Ignore the contents of logs\
2) Directly include .meta files int the downloads\
folder
3) Ignore the contents of downloads\
4) Ignore the contents of webcache\
5) Ignore the contents of overwrite\
6) Ignore any files with temporary_logs
as a folder in the path
7) Ignore .pyc
files
8) Ignore .log
files
9) Ignore any files in profiles
that are not for the selected MO2 profile
10) Ignore any disabled mods
11) Include any profile settings for the selected profile by including them directly in the modlist
12) Ignore "ModOrganizer.ini", it will be re-created when MO2 starts on the new machine
13) Ignore "Data" in the Game directly (in your Steam folder)
14) Ignore "Papyrus Compiler" in the game folder
15) Ignore the "Skyrim" folder in the game folder
16) Ignore any BSAs in the game folder
17) Include all meta.ini files from all (selected) mods
18) Include archive and file meta information for any file that matches a file in an archive directly via a SHA256 comparison
19) Rip apart any .bsa
files and run a mini resolution stack on the contents to figure out how to build the .bsa from the input files
20) Generate patches for files that may have been modified after being installed from an archive (see section on Patching for more info)
21) Include dummy ESPs directly into the modlist
22) Ignore files in the game directory
23) Ignore .ini files
24) Ignore .html files (normally these are logs)
25) Ignore .txt files
26) Ignore HavockBehaviourPostProcess.exe
this seems to get copied around by tools for some reason
27) Ignore splash.png
it's created for some games (like FO4) by MO2
28) Error for any file that survives to this point.
So as you can see we handle a lot of possible install situations. See the section on Creating a Modpack
for information on working with the installer
The if the following words are found in a mod's notes or comments they trigger special behavior in Wabbajack.
WABBAJACK_INCLUDE
- All the files int he mod will be inlined into the installerWABBAJAC_ALWAYS_ENABLE
- The mod's files will be considered by the compiler even if the mod is disabled in the profile
Wabbajack can create binary patches for files that have been modified after installation. This could be .esp
files that have been cleaned or patched. Or
it could be meshes and textures that have been optimized to work better in a given game. In any case a BSDiff file is generated. The output of this process
is copied directly into the modlist instructions. However! It is important to note that the patch file is 100% useless without the source file. So original + patch = final_file
. Without the original file, the final file cannot be recrated. This allows us to distribute arbitrary changes without violating copyrights as we do not copy
copyrighted material. Instead we copy instructions on how to modify the copyrighted material.
How do I get Wabbjack to handle mods from X