Merge pull request #54 from erri120/patch-readme

README Updates
This commit is contained in:
Timothy Baldridge 2019-09-26 14:56:17 -06:00 committed by GitHub
commit d1b44197ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

167
README.md
View File

@ -1,4 +1,5 @@
## Wabbajack - An automated modlist installer for TES/Fallout games ## Wabbajack - An automated modlist installer for TES/Fallout games
[![Build Status](https://dev.azure.com/tbaldridge/tbaldridge/_apis/build/status/halgari.wabbajack?branchName=master)](https://dev.azure.com/tbaldridge/tbaldridge/_build/latest?definitionId=1&branchName=master) [![Build Status](https://dev.azure.com/tbaldridge/tbaldridge/_apis/build/status/halgari.wabbajack?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,77 @@ 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 - `.fomod` (FNV archives)
* Files installed with our without fomod isntallers - The following mod installation types are supported
* Manually installed mods - Files installed with our without fomod installers
* Renamed/deleted/moved files are detected and handled - Files from `.omod` mods like `DarNified UI` or `DarkUId Darn`
* Multiple mods installed into the same mod folder - Manually installed mods
* A mod split across multiple mod folders - Renamed/deleted/moved files are detected and handled
* 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 - Multiple mods installed into the same mod folder
* ENBseries files that exist in the game folder - A mod split across multiple mod folders
* SKSE install - 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
* The following situations are automatically detected and handled by the automated binary patcher (not an exhaustive list) - ENBseries files that exist in the game folder
* ESP cleaning - SKSE install
* form 44 conversion - The following situations are automatically detected and handled by the automated binary patcher (not an exhaustive list)
* ESP to ESL conversion - ESP cleaning
* Adding masters - form 44 conversion
* Dummy ESPs created by CAO - ESP to ESL conversion
* (really any ESP modifications are handled) - Adding masters
* Mesh fixing - Dummy ESPs created by CAO
* Texture compression / fixing - (really any ESP modifications are handled)
- Mesh 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`](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 +97,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 +106,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 +203,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 +223,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