About This File
Please see http://github.com/th3w1zard1/KOTORModSync for the main repo.
Please report any bugs or problems you encounter. While I test this heavily, it's difficult to find any and all problems when incorporating 200+ mod's instructions across dozens of operating systems and platform combinations. If you happen to notice something odd or out of place, please report them.
KOTORModSync is a multi-mod installer for KOTOR games that makes it easier to install and manage mods.
I usually install the Reddit mod build every year or so. The process takes about an hour and it's repetitive moving files, running tslpatcher, deleting specific files, and occasionally renaming some files. The last time I installed the modbuild I made a mistake on a single different step, 3 times in a row. Most mistakes require a full restart from the beginning. This is tedious, so I decided to create an installer creator in C# to simplify the process.
Goals
Mod creators work really hard on their mods. It's the least we can do to install them and use them, right? However, who wants to reinstall to vanilla and spend several hours reinstalling mods, just to add 1 or 2 extra mods on top of it? Other mod managers I've tried were either too difficult to configure, require significant changes to a hard-to-understand configuration file, or only provided limited functionality for defining new mods. KOTOR mods definitely can have complex dependency relationships with each other in regard to compatibility, due to the nature and age of TSLPatcher.
Usage
If you are an end user just wanting to install some mods, simply load up the instruction files provided, choose the mods you want from the left list and any options, and press 'Start main install' Watch Xuul's tutorial video here: Effortless Modding with Kotor Mod Sync: The Ultimate Guide for Star Wars KOTOR Mods (youtube.com)
If you are a mod developer, this program contains a full-blown instruction editor that'll allow you to quickly create instructions for your mod and define its compatibility with other mods. See Dependencies/Restrictions and InstallBefore/InstallAfter explanation - Pastebin.com for more information. See the video tutorial here: Creating involved instructions for KOTORModSync - YouTube
Features
- Can install the https://kotor.neocities.org/ mod builds in about 20 minutes from a vanilla install.
- Supports TSLPatching on mac/linux without wine!
- Select the individual mods you want for an install - the dependencies and incompatibilities will automatically be chosen and sorted. This means end users don't have to worry about specific instructions regarding other mods in the list.
- All the compatibility steps are handled internally by KOTORModSync and the default instructions files provided here. An end user simply can select the mods they want to install in the left list, and any customizations if they like, and simply press 'Install All' to have everything installed automatically.
- This program has a built-in GUI editor and an installer packed into one. Modbuild creators can create instructions with little to no knowledge of the format and easily share them with end users. End users can install everything from the instruction file with a simple click of a button. Edit any instructions and verify the configuration with built-in tools.
- Some support to dry run an install.
- A flexible configuration editor and parser utilizing TOML syntax. This is very user-friendly and similar to INI which TSLPatcher already uses and most modders are used to.
- Create instructions files with complex dependency structures for multiple mods, and have end users install everything exactly according to the instructions created. No more manually copying/deleting files: KOTORModSync handles all of that for your end user.
Platforms
KOTORModSync is a cross-platform 32-bit and 64-bit .NET application. It is compatible with the following operating systems:
- Windows 7 and 8: Compatible if running .NET Framework 4.6.2 or higher.
- Windows 10 and 11: Fully compatible with any Windows release.
- Linux and Mac: Fully compatible - choose one of the two that match your operating system.
Users do not need to download any additional runtimes: everything is self-contained within the application.
Linux
You may need additional X11 libraries. In order to get this working on WSL, for example, I had to install the following packages:
sudo apt install libsm6 libice6 libx11-dev libfontconfig1 libx11-6 libx11-xcb1 libxau6 libxcb1 libxdmcp6 libxcb-xkb1 libxcb-render0 libxcb-shm0 libxcb-xfixes0 libxcb-util1 libxcb-xinerama0 libxcb-randr0 libxcb-image0 libxcb-keysyms1 libxcb-sync1 libxcb-xtest0
Then you can simply run in a terminal like this:
./KOTORModSync
If you run into problems with the Linux or Mac builds, please contact me and I'll try to get a fix ready for the next release.
Credit
Snigaroo
This man saved me a countless amount of hours. I'd still be struggling through game glitches and mod-specific instructions I didn't understand. Actually, I'd probably still be on Dantooine trying to determine why I'm getting visual glitches and crashes which he solved with the one-word message 'grass'.
Cortisol
Created HoloPatcher and the PyKotor library that KOTORModSync uses to patch mods. These projects are the main reason KOTORModSync can be supported on Mac/Linux. While the PyKotor/HoloPatcher projects have had some issues, this guy was more or less available for comment if I had questions on how I could fix any remaining problems myself.
JCarter426
There were so many KOTOR-specific things to learn, without his help I'd still be trying to deserialize encapsulated resource files. His time and patience were incredibly useful to the project and this project would be impossible without him.
Testers:
Lewok from r/KOTOR
Thank you for helping test that obnoxious UAC elevation problem legacy Windows apps like TSLPatcher have.
Other notable users
Fair-Strides
Provided the perl source code of TSLPatcher on GitHub, and generally maintained the TSLPatcher project in Stoffe's absence.
Stoffe
Creator of TSLPatcher
Thank you to the entire KOTOR modding community for what you do.
KOTORModSync - Official Documentation.txt
KOTOR1_Full.tomlKOTOR2_Full.toml
KOTOR1_Spoiler_Free.tomlKOTOR2_Spoiler_Free.toml
KOTOR1_Mobile_Full.tomlKOTOR2_Mobile_Full.toml
What's New in Version v0.10.31 See changelog
Released
v0.10.32
No KOTORModSync changes to see here!
PyKotor changes:
- added support for !FieldPath (visually repair hk47 is now supported)
- fixed some problems with case-sensitive key/section lookups in some mod's changes.ini (happens in some mods not in the builds)
With this release, the k1 modbuild and k2 modbuild are, for all intents and purposes, 'identical' in the PyKotor patcher and TSLPatcher patcher. PyKotor actually fixes some problems that TSLPatcher has in the k1cp.
v0.10.31
This release once again focuses more on PyKotor, but also fixes a few bugs with KOTORModSync.
KOTORModSync changes:
- Fixed a bug where ConfirmMessage=(text) wouldn't be replaced with ConfirmMessage=N/A in the last release.
Instruction file changes:
- Updates all instructions so they'd use a namespace ini option, even if the default named 'changes.ini' was provided in tslpatchdata. This fixes the problem where some of the KMS notifiers (the dialog that tells users what option to choose) wouldn't appear.
PyKotor Changes:
- Fixed a bug in some mods where a namespace ini option couldn't be found due to case-insensitive ini section names (fixes Kreia's fall in-game)
- Fixed the priority order for which resource to choose in `[GFFList]`. We needed to account for mods using `!ReplaceFile`
- Since Powershell scripts are usually only useable on Windows, the uninstall scripts that are being written to the mod folder will now include a bash file for Mac/Linux users.
- Probably some more nuanced changes - see my [fork](http://github.com/th3w1zard1/PyKotor) for the full changelog.
TSLPatcher has been compared to PyKotor when installing the mod build, the only remaining unsupported mods are the RepairHK47 k2 mod, and the Logical Datapads mod for k1. Full mod build tslpatcher vs pykotor has been diffed and can be found here: https://pastebin.com/C6MxvhYG
**Full Changelog**: https://github.com/th3w1zard1/KOTORModSync/compare/v0.10.23...v0.10.31
v0.10.3
There was a great deal of testing that went into this release. There are very few new features present, the goal of this release was to install the mod builds together with pykotor/tslpatcher in separate install dirs, and then diff them to find any remaining problems with the pykotorcli until there were no more problems/differences found.
Kotor Mod Sync changes:
- Modified some instructions' path globbing to support future updates to those mods.
- Fixed a problem with Ajunta Pall's Appearance where the files could be moved out of order, depending on what the user selected.
- Fixed a rare thread-dependent bug that caused the progress window to be desynced from the install, requiring a restart and a reinstall
- Set the ConfirmMessage of TSLPatcher installs to N/A to reduce user clicks. Most of them just want to ensure a user doesn't install the wrong mod in the wrong order etc., but Kotormodsync already handles that.
- Fixed the K1 style theme's download link foreground color so they wouldn't blend into the background anymore.
PyKotor changes:
- Fixed a critical issue with the priority order of the resource data that are chosen to be patched in `GFFList` (Thank you @NickHugi)
- Fixed a critical issue that may or may not have been present in the last release where modules with the .mod filetype would have the header's filetype set to ERF.
- Fixed a bug with Darth Sion/Male Exile mod where the cutscene in the Sith academy would never start, resulting in a soft lock (!Destination=*.erf was broken in past releases)
- Fixed problems with the prototyped backup code in the last release. You can now go to the 'uninstall' folder created in the mod's root and run the PowerShell script to easily undo that mod's changes accurately and efficiently in just a few clicks.
**Full Changelog**: https://github.com/th3w1zard1/KOTORModSync/compare/v0.10.23...v0.10.3
v0.10.23
KOTORModSync changes:
- reduce the number of extract instruction logs by making them verbose
- fix 'quit installation' ignoring user prompts in option instructions.
- add PyKotorCLI Mac binary to releases.
PyKotorCLI changes:
- Fix writing the correct struct ID for GFFStructs
- Fix encapsulated ERF filename extension destinations causing corruption
- Fix NCS compiler saving to the wrong filename/directory
- Fix encoding error when saving an NCS file
- Type-handle when the struct id is not an integer (invalid syntax)
Please know PyKotorCLI is still in beta - see the current K2 modbuild discrepancies in the diff here: https://pastebin.com/zK8S0kH2 before deciding if you'd like to use it.
v0.10.22
No KOTORModSync changes were made, this release focused on PyKotor. Some changes include:
- Fixed write_tlk so it wouldn't set the sound_present and sound_length bits on tlk files if no sound is present
- Fixed the CLI so that namespace indexes could be used again.
- Fixed 'no module found 'ply'' error on the windows executable.
- Fixed TLKList appending the wrong entries with the wrong strrefs (fixes unvoiced/uncaptioned dialog)
- Massively refactor case-insensitive pathing on linux systems. Should be much more streamlined now.
- PyKotor will now create backups during an install, and will backup to a timestamped subfolder inside of where tslpatcher normally does. This means you can have multiple backups without them overwriting each other.
**Full Changelog**: https://github.com/th3w1zard1/KOTORModSync/compare/v0.10.2...v0.10.22
v0.10.0
This will be the last update to KOTORModSync for a while. I have started classes this week and won't really have much time to be working on this until break. I wanted to get everything stable and release one more update before I stepped away, so I bring you v0.10.0
## What's Changed
### Linux/Mac updates:
- **Add case-insensitive pathing option for Unix-based operating systems**: Since most mods are written for TSLPatcher on Windows, there are many that don't use case-sensitive paths which are major issues for Linux/Mac. This release fixes the problem for KMS pathing, and partially implements the same into the PyKotor CLI. The way we do this is by determining which part of a path string is already case-sensitive and determining the part that doesn't exist, then we iterate the parent directory to find the case-insensitive remaining portions.
- **Add 'find and resolve duplicate files/folders' functionality:** This is done because KOTOR uses case-insensitive file/folder lookups, so duplicates can cause a myriad of undetected problems as the game can potentially choose a random file/folder if it's duplicated. Button is available in the UI on the right.
### New features:
- **Add multithreaded IO option**: Behind the scenes, KOTORModSync always did multi-threaded IO for file read/writes to disk. However, this isn't efficient at all on HDDs, and can even increase wear and tear without improving performance at all, due to drive thrashing. In this release, multi-threaded io features are now DISABLED by default. Users who are using SSDs should enable this option in the UI for serious performance improvements.
- **Color-code the console window**: Warnings are highlighted yellow, errors red, and verbose logging is a dull grey. Increases readability.
- **Use relative pathing for logging:** The KOTORModSync logs are large enough already, we shorten them and make them more readable by using relative pathing based on the mod directory and the destination directory.
### Bug Fixes:
- Fixed many PyKotorCLI bugs present in prior releases. Please let me know if this release introduced any new ones.
- Fixed the mod move/reordering buttons in the UI.
- **Disable Console Quick-Edit:** The console window can freeze/hang the main UI if a user left-clicks and selects any text on it. We turn QuickEdit off to avoid this problem. Use the built-in Output Window button or check the log file if you need to copy any logs.
- **Refactor file/folder enumerations:** Use safe methods of acquiring files/folders in a directory to avoid errors related to permission issues.
- Fixed the LookupGameFolder and PlaintextLog hooks for some TSLPatcher mods.
### Other changes:
- Set progress window as Always-On-Top
- Update Avalonia to 11.0.3
- Add more useful tooltips to the UI
**Full Changelog**: https://github.com/th3w1zard1/KOTORModSync/compare/v0.9.3...v0.10.0
With version v0.10.31:
- Download