mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Updated README with Markdown Rules
This commit is contained in:
parent
d4c573e97f
commit
b4766d0389
165
README.md
165
README.md
@ -1,4 +1,5 @@
|
|||||||
## Wabbajack - An automated modlist installer for TES/Fallout games
|
## Wabbajack - An automated modlist installer for TES/Fallout games
|
||||||
|
|
||||||
[](https://dev.azure.com/tbaldridge/tbaldridge/_build/latest?definitionId=1&branchName=master)
|
[](https://dev.azure.com/tbaldridge/tbaldridge/_build/latest?definitionId=1&branchName=master)
|
||||||
|
|
||||||
The general idea behind this program is fairly simple. Given a Mod Organizer 2 folder and profile, generate list of instructions that will allow
|
The general idea behind this program is fairly simple. Given a Mod Organizer 2 folder and profile, generate list of instructions that will allow
|
||||||
@ -7,73 +8,75 @@ files or syncing data between the source and destination machine. The end result
|
|||||||
rights of the game publisher and the mod authors.
|
rights of the game publisher and the mod authors.
|
||||||
|
|
||||||
### Social Links
|
### Social Links
|
||||||
|
|
||||||
- [Discord](https://discord.gg/zgbrkmA)
|
- [Discord](https://discord.gg/zgbrkmA)
|
||||||
- [Patreon](https://www.patreon.com/user?u=11907933) Check this page for updates and to vote on features
|
- [Patreon](https://www.patreon.com/user?u=11907933) Check this page for updates and to vote on features
|
||||||
|
|
||||||
### What Wabbajack can do
|
### What Wabbajack can do
|
||||||
|
|
||||||
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
|
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:
|
let's do a rundown of all the supported features:
|
||||||
|
|
||||||
* Support for the following games is tested on a regular basis
|
- Support for the following games is tested on a regular basis
|
||||||
* Fallout 4
|
- Fallout 4
|
||||||
* Fallout New Vegas
|
- Fallout New Vegas
|
||||||
* Skyrim SE
|
- Skyrim SE
|
||||||
* Skyrim LE
|
- Skyrim LE
|
||||||
* Support for automatic downloads from the following sources
|
- Support for automatic downloads from the following sources
|
||||||
* Nexus Mods (Premium accounts only)
|
- Nexus Mods (Premium accounts only)
|
||||||
* Dropbox
|
- Dropbox
|
||||||
* Google Drive
|
- Google Drive
|
||||||
* Mega
|
- Mega
|
||||||
* ModDB
|
- ModDB
|
||||||
* Direct URLs (with custom header support)
|
- Direct URLs (with custom header support)
|
||||||
* Support the following archive types
|
- Support the following archive types
|
||||||
* .zip
|
- .zip
|
||||||
* .7z
|
- .7z
|
||||||
* .rar
|
- .rar
|
||||||
* The following mod installation types are supported
|
- The following mod installation types are supported
|
||||||
* Files installed with our without fomod isntallers
|
- Files installed with our without fomod isntallers
|
||||||
* Manually installed mods
|
- Manually installed mods
|
||||||
* Renamed/deleted/moved files are detected and handled
|
- Renamed/deleted/moved files are detected and handled
|
||||||
* Multiple mods installed into the same mod folder
|
- Multiple mods installed into the same mod folder
|
||||||
* A mod split across multiple mod folders
|
- A mod split across multiple mod folders
|
||||||
* Any tools installed in the MO2 folder. Want your users to have BethIni or xEdit? Just put them in a folder inside the MO2 install folder
|
- Any tools installed in the MO2 folder. Want your users to have BethIni or xEdit? Just put them in a folder inside the MO2 install folder
|
||||||
* ENBseries files that exist in the game folder
|
- ENBseries files that exist in the game folder
|
||||||
* SKSE install
|
- SKSE install
|
||||||
* The following situations are automatically detected and handled by the automated binary patcher (not an exhaustive list)
|
- The following situations are automatically detected and handled by the automated binary patcher (not an exhaustive list)
|
||||||
* ESP cleaning
|
- ESP cleaning
|
||||||
* form 44 conversion
|
- form 44 conversion
|
||||||
* ESP to ESL conversion
|
- ESP to ESL conversion
|
||||||
* Adding masters
|
- Adding masters
|
||||||
* Dummy ESPs created by CAO
|
- Dummy ESPs created by CAO
|
||||||
* (really any ESP modifications are handled)
|
- (really any ESP modifications are handled)
|
||||||
* Mesh fixing
|
- Mesh fixing
|
||||||
* Texture compression / fixing
|
- Texture compression / fixing
|
||||||
The following BSA operations are detected by extracting or creating BSAs via Wabbajack's custom BSA routines
|
The following BSA operations are detected by extracting or creating BSAs via Wabbajack's custom BSA routines
|
||||||
* BSA Unpacking
|
- BSA Unpacking
|
||||||
* BSA Creation (packing loose files)
|
- BSA Creation (packing loose files)
|
||||||
* BSA repacking (unpacking, fixing files and repacking)
|
- BSA repacking (unpacking, fixing files and repacking)
|
||||||
|
|
||||||
|
|
||||||
That being said, there are some cases where we would need to do a bit more work to develop:
|
That being said, there are some cases where we would need to do a bit more work to develop:
|
||||||
* Manually downloaded files
|
|
||||||
* LL Files (currently no plans to implement)
|
- Manually downloaded files
|
||||||
* esp to esm conversion (there are hacks for this)
|
- LL Files (currently no plans to implement)
|
||||||
* binary patching of non-bsa huge files. 256MB is the largest size Wabbajack can currently handle with the binary patcher
|
- esp to esm conversion (there are hacks for this)
|
||||||
|
- binary patching of non-bsa huge files. 256MB is the largest size Wabbajack can currently handle with the binary patcher
|
||||||
|
|
||||||
### Creating a ModList Installer
|
### Creating a ModList Installer
|
||||||
Overview video [`https://www.youtube.com/watch?v=5Fwr0Chtcuc`]
|
|
||||||
|
|
||||||
|
Overview video [`https://www.youtube.com/watch?v=5Fwr0Chtcuc`]
|
||||||
|
|
||||||
1) Download Wabbajack and install it somewhere outside of your normal Mod Organizer 2 folder
|
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
|
(otherwise Wabbajack will try to figure out how to install itself and that might cause a collapse in the time-space
|
||||||
continuum).
|
continuum).
|
||||||
2) Make sure every archive you used in your MO2 profile has some sort of download information attached.
|
2) Make sure every archive you used in your MO2 profile has some sort of download information attached.
|
||||||
* If the file was downloaded via MO2 you're good, no extra work is needed
|
- If the file was downloaded via MO2 you're good, no extra work is needed
|
||||||
* If the file was downloaded manually from the Nexus, copy it into the MO2 downloads folder, go back to MO2
|
- If the file was downloaded manually from the Nexus, copy it into the MO2 downloads folder, go back to MO2
|
||||||
* and go to the `downloads` tab. Find the file and click `Query Info` from the right-click menu. MO2 should find
|
- and go to the `downloads` tab. Find the file and click `Query Info` from the right-click menu. MO2 should find
|
||||||
the download info for you
|
the download info for you
|
||||||
* For other files (ENBSeries, SKSE, SRO, etc.) Look at the [`RECIPES.md`] file
|
- For other files (ENBSeries, SKSE, SRO, etc.) Look at the [`RECIPES.md`] file
|
||||||
* for instructions specific to your file source.
|
- for instructions specific to your file source.
|
||||||
3) Now load Wabbajack, and point it to the `\<MO2 Folder>\mods\<your profile>\modlist.txt` file.
|
3) Now load Wabbajack, and point it to the `\<MO2 Folder>\mods\<your profile>\modlist.txt` file.
|
||||||
4) Click `Begin`.
|
4) Click `Begin`.
|
||||||
5) Wabbajack will start by indexing all your downloaded archives. This will take some time on most machines as the application
|
5) Wabbajack will start by indexing all your downloaded archives. This will take some time on most machines as the application
|
||||||
@ -92,6 +95,7 @@ will be auto installed and downloaded
|
|||||||
4) After installation has completed, run `Mod Organizer 2.exe`, select `Portable` and your game type.
|
4) After installation has completed, run `Mod Organizer 2.exe`, select `Portable` and your game type.
|
||||||
|
|
||||||
### How it works
|
### How it works
|
||||||
|
|
||||||
At a technical level the process is as follows.
|
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
|
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
|
||||||
@ -100,48 +104,51 @@ At a technical level the process is as follows.
|
|||||||
4) Attach the JSON file to Wabbajack itself, creating a new Auto-installer for the profile
|
4) Attach the JSON file to Wabbajack itself, creating a new Auto-installer for the profile
|
||||||
|
|
||||||
### The Resolution Stack
|
### The Resolution Stack
|
||||||
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.
|
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:
|
Currently the Resolution stack looks like this:
|
||||||
|
|
||||||
1) Ignore the contents of `logs\`
|
1) Ignore the contents of `logs\`
|
||||||
1) Directly include .meta files int the `downloads\` folder
|
2) Directly include .meta files int the `downloads\` folder
|
||||||
2) Ignore the contents of `downloads\`
|
3) Ignore the contents of `downloads\`
|
||||||
3) Ignore the contents of `webcache\`
|
4) Ignore the contents of `webcache\`
|
||||||
4) Ignore the contents of `overwrite\`
|
5) Ignore the contents of `overwrite\`
|
||||||
6) Ignore any files with `temporary_logs` as a folder in the path
|
6) Ignore any files with `temporary_logs` as a folder in the path
|
||||||
5) Ignore `.pyc` files
|
7) Ignore `.pyc` files
|
||||||
8) Ignore `.log` files
|
8) Ignore `.log` files
|
||||||
6) Ignore any files in `profiles` that are not for the selected MO2 profile
|
9) Ignore any files in `profiles` that are not for the selected MO2 profile
|
||||||
7) Ignore any disabled mods
|
10) Ignore any disabled mods
|
||||||
8) Include any profile settings for the selected profile by including them directly in the modlist
|
11) Include any profile settings for the selected profile by including them directly in the modlist
|
||||||
9) Ignore "ModOrganizer.ini", it will be re-created when MO2 starts on the new machine
|
12) Ignore "ModOrganizer.ini", it will be re-created when MO2 starts on the new machine
|
||||||
10) Ignore "Data" in the Game directly (in your Steam folder)
|
13) Ignore "Data" in the Game directly (in your Steam folder)
|
||||||
11) Ignore "Papyrus Compiler" in the game folder
|
14) Ignore "Papyrus Compiler" in the game folder
|
||||||
12) Ignore the "Skyrim" folder in the game folder
|
15) Ignore the "Skyrim" folder in the game folder
|
||||||
13) Ignore any BSAs in the game folder
|
16) Ignore any BSAs in the game folder
|
||||||
14) Include all meta.ini files from all (selected) mods
|
17) Include all meta.ini files from all (selected) mods
|
||||||
15) Include archive and file meta information for any file that matches a file in an archive directly via a SHA256 comparison
|
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
|
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
|
||||||
16) Generate patches for files that may have been modified after being installed from an archive (see section on Patching for more info)
|
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
|
21) Include dummy ESPs directly into the modlist
|
||||||
18) Ignore files in the game directory
|
22) Ignore files in the game directory
|
||||||
19) Ignore .ini files
|
23) Ignore .ini files
|
||||||
20) Ignore .html files (normally these are logs)
|
24) Ignore .html files (normally these are logs)
|
||||||
21) Ignore .txt files
|
25) Ignore .txt files
|
||||||
22) Ignore `HavockBehaviourPostProcess.exe` this seems to get copied around by tools for some reason
|
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
|
27) Ignore `splash.png` it's created for some games (like FO4) by MO2
|
||||||
23) Error for any file that survives to this point.
|
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`](README.md#Creating_a_ModList_Installer) for information on working with the installer
|
So as you can see we handle a lot of possible install situations. See the section on [`Creating a Modpack`](README.md#Creating_a_ModList_Installer) for information on working with the installer
|
||||||
|
|
||||||
### Wabbajack Flags
|
### Wabbajack Flags
|
||||||
|
|
||||||
The if the following words are found in a mod's notes or comments they trigger special behavior in Wabbajack.
|
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 installer
|
|
||||||
* `WABBAJAC_ALWAYS_ENABLE` - The mod's files will be considered by the compiler even if the mod is disabled in the profile
|
- `WABBAJACK_INCLUDE` - All the files int he mod will be inlined into the installer
|
||||||
|
- `WABBAJAC_ALWAYS_ENABLE` - The mod's files will be considered by the compiler even if the mod is disabled in the profile
|
||||||
|
|
||||||
### Patches
|
### Patches
|
||||||
|
|
||||||
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
|
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
|
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
|
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
|
||||||
@ -194,13 +201,18 @@ implementation of some really nice features (like BSA packing). As such I made t
|
|||||||
The end result is an app with a ton of features, and a less than professional UI. But that's my motto when coding "make it work, then make it pretty".
|
The end result is an app with a ton of features, and a less than professional UI. But that's my motto when coding "make it work, then make it pretty".
|
||||||
|
|
||||||
## Thanks to
|
## Thanks to
|
||||||
|
|
||||||
Our tester and Discord members who encourage development and help test the builds.
|
Our tester and Discord members who encourage development and help test the builds.
|
||||||
|
|
||||||
### Patreon Supporters
|
### Patreon Supporters
|
||||||
|
|
||||||
#### Daedra level Patreon Supporters
|
#### Daedra level Patreon Supporters
|
||||||
* Ancalgon
|
|
||||||
|
- Ancalgon
|
||||||
|
|
||||||
#### Patreon Supporters
|
#### Patreon Supporters
|
||||||
* Druwski
|
|
||||||
|
- Druwski
|
||||||
|
|
||||||
### License & Copyright
|
### License & Copyright
|
||||||
|
|
||||||
@ -209,4 +221,3 @@ retain their original copyrights. Note: Wabbajack installers contain code from W
|
|||||||
the files behind any sort of paywall. You recieved this tool free of charge, respect this by giving freely as you were given.
|
the files behind any sort of paywall. You recieved this tool free of charge, respect this by giving freely as you were given.
|
||||||
|
|
||||||
[`RECIPES.md`]: https://github.com/halgari/wabbajack/blob/master/RECIPES.md
|
[`RECIPES.md`]: https://github.com/halgari/wabbajack/blob/master/RECIPES.md
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user