[TOOL] RimWorld Conflict Checker [Updated 11/29/18]

Started by biship, August 31, 2016, 04:25:25 PM

Previous topic - Next topic

biship


RimWorld Conflict Checker v0.0.1.1

Description
I've heavily modified and updated bobisback's RimworldConflictFinder, expanding on his nameDef check, and adding a bunch more mod checks and validations.

Download
Here: https://github.com/biship/RimworldConflictChecker/releases
Or attached to this post.

Features

  • Checks for the same nameDef defined in 2 or more mods
  • Lists all core (game default) nameDef's overwritten by mods
  • Finds any DLL existing in 2 or more mods
  • Identifies possibly corrupt or incomplete mods (partially implemented)
  • Checks versions of all mods against the RimWorld version
  • Lists mods load order also showing disabled mods
Instructions
Extract files from zip to any folder.
Run RCC.exe from windows or from a dos window.
When RCC.exe is run it will open the UI for you to pick at least 2 paths (RimWorldWin.exe & Mod folder path).
The first 2 folders are required (Mod folder 1 is auto-calculated when you choose the RimWorldWin.exe folder - but it can be changed).
(optional) Mod Folder 2 is only needed for Steam users.
(optional) ModsConfig.xml folder is only needed if using non-default location
(optional) Able to also include all non-enabled mods in all checks.


It can also be run from the command line with parameters:


Results & Output
All findings are reported to file RCC.txt in the same folder as RCC.exe.
Each check, or main function of the program is delimited by "============"'s.
Be sure to scroll down RCC.txt, as there are checks all the way through the file.


There is also a (work-in-progress) form which currently only displays the mod load order and numbers of conflicts for each.
Get all the detail info from RCC.txt


Limitations

  • Windows only (sorry!)
  • Will trigger UAC request for bug submission (can decline)
Bugs
NB: Uses opensource library NBug to submit crashes to a Mantis tracker so I can fix any issues.
Feel free to block it if you do not want the reports sent.
Please report bugs in this thread, or on GitHub.
Bug List
Copying to clipboard on results form might crash the app.

Todo
Check XML inheritance: http://ludeon.com/forums/index.php?topic=19499.0"
Check if CCL is compat with RimWorld.
Check if root, tag, defname are valid (by parsing core).
Check if a mod is valid - needs about.xml, at least one XML or dll.
Check if mod exists twice. a) based on folder name & b) based on About.xml name.
Check if a mod's defname conflicts with another defname of the same mod.
Change output to tabbed tables in a Windows Form."


Source & License
Source: https://github.com/biship/RimworldConflictChecker
License: GPL 3.0 Please include credit.
Versions

0.0.1.1 11/29/18 Updated to support Rimworld 64bit executable.
0.0.1.0 07/02/18 Updated to support Rimworld 1.0. Updated dependencies. Added ability to turn off log details.
0.0.0.9 04/16/17 Better exception handling, fixed case-sensitive bugs, handles missing version.txt or modsconfig.xml
0.0.0.8 12/31/16 Logging for opening & parsing Version.txt, NBUG & Octokit updated
0.0.0.7 12/30/16 ModsConfig.xml picker, command line changes, option to also check all non-enabled mods
0.0.0.6 12/30/16 Tweaks and change. Internal release only
0.0.0.5 12/29/16 Fixed for A16. No longer checks conflicts for non-enabled mods. More bug fixes
0.0.0.4 09/09/16 This tool will now check and notify on updates for it. More info on results form. Loads of bug fixes!
0.0.0.3 09/05/16 Added basic mod conflict form, code cleanup, null checking & bug fixes
0.0.0.2 09/01/16 Folder picker updates
0.0.0.1 08/31/16 Initial alpha release


[attachment deleted due to age]

Dingo

Very interesting tool. I, too, come from the Fallout / Skyrim Nexus modding community and I think tools like this and a proper mod manager is what RimWorld mods really need to work better. The day we can make merged patches, man, that'll be the life.

notfood

I feel this would be better off right inside Rimworld in the PostLoad method as a mod that runs last and generates the report.

Everything needed is available at LoadedModManager.RunningMods at PostLoad before they are squashed into the DefDatabase.

Tynan

Impressive work!

Utilities are always so under-done.
Tynan Sylvester - @TynanSylvester - Tynan's Blog

Dingo

Heads up, this utility stops its working thread if the 3rd folder (2nd mod folder, i.e. Steam Workshop) is not found. You should probably just let it run even if one of the mod folders is missing.

biship

Quote from: Dingo on August 31, 2016, 11:08:44 PM
Heads up, this utility stops its working thread if the 3rd folder (2nd mod folder, i.e. Steam Workshop) is not found. You should probably just let it run even if one of the mod folders is missing.

Ah, when its run from command line, it reports the missing folder and aborts, but when just running RCC.exe it aborts and you don't get to see the error.
I'll add a error popup when using the UI - thanks for the report.

rcc.exe D:\SteamLibrary\steamapps\common\RimWorld D:\SteamLibrary\steamapps\common\RimWorldxxx
Rimworld Conflict Checker Starting
Rimworld Conflict Checker Running checks...
Not able to find mod folder: D:\SteamLibrary\steamapps\common\RimWorldxxx



Dingo

I meant you should let it check for conflicts even if a Steam folder was configured in the UI but was not found (incase the user deleted their Steam mods or something).

biship

#7
Quote from: Dingo on September 01, 2016, 07:53:33 AM
I meant you should let it check for conflicts even if a Steam folder was configured in the UI but was not found (incase the user deleted their Steam mods or something).

Yeah I understood you, but if I don't tell the user the folder is invalid, they might think they set it correctly. Then if I let it run anyway, it will either not check what the user intended (if folder doesn't exist), or it will start examining non-mod files (if folder exists, but is not a mod folder).
I'll put in a few more validation checks on the folder picker. I don't really like ignoring or processing incorrect entries, but I'll see if giving the user the option to run anyway is acceptable.

SpaceDorf

Maxim 1   : Pillage, then burn
Maxim 37 : There is no overkill. There is only open fire and reload.
Rule 34 of Rimworld :There is a mod for that.
Avatar Made by Chickenplucker

Kosba2

Hey thank you for this amazing mod. I've noticed you haven't seen much appreciate for this great tool anywhere else but I just wanted to let you know this tool is priceless! I'm running a modest amount of mods (68) and being able to see all the conflicts that occur is a must. So thank you!

Fafn1r

I love this tool. :D With it creating combatibility patches is no longer a guessing game.

biship

Updated for A16.
Also with a few bug fixes & disabled checking for non-enabled mods as it only added time and log spam.

Der Failer

Quote from: biship on December 29, 2016, 12:34:01 PM
Updated for A16.
Also with a few bug fixes & disabled checking for non-enabled mods as it only added time and log spam.
Dude ... would you mind, stop reading my mind?
I just finished writing a long post, whining about log spam from inactive mods (over 50 in my case). I click on Post and BOOM
1 new Post and it is already fix
This is creepy... and it's kind of cool, but mostly creepy...

The only inconveniences left for me is this:
ModsConfig.xml NOT Found
Sorry, I'm going to assume no mods are active
One day there will be a folder picker for ModsConfig.xml

Although it is rather easy to fix on my end.

Anyway thank for fixing my problem ;) and thank for this tool.

biship

Quote from: Der Failer on December 29, 2016, 01:14:42 PM
The only inconveniences left for me is this:
ModsConfig.xml NOT Found
Sorry, I'm going to assume no mods are active
One day there will be a folder picker for ModsConfig.xml

Although it is rather easy to fix on my end.

Anyway thank for fixing my problem ;) and thank for this tool.

Why's it not finding your modsconfig.xml?  Can you zip & attach your RCC.txt?
Glad you are finding the tool useful.

Der Failer

Quote from: biship on December 29, 2016, 01:29:39 PM
Quote from: Der Failer on December 29, 2016, 01:14:42 PM
The only inconveniences left for me is this:
ModsConfig.xml NOT Found
Sorry, I'm going to assume no mods are active
One day there will be a folder picker for ModsConfig.xml

Although it is rather easy to fix on my end.

Anyway thank for fixing my problem ;) and thank for this tool.

Why's it not finding your modsconfig.xml?  Can you zip & attach your RCC.txt?
Glad you are finding the tool useful.
I'm using the starting parameter like:
-savedatafolder="[Rimworld_dir]\SaveData"
This allows me to easily maintain several independent configs, for testing or just completely different modded games. So it is to be expected, that it didn't find it.
For now I've just copied the modcfg over to the original dir.