v5-lts: Update Doorstop to version 4.1.0 #762
Merged
+244
−123
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This pr backports the Doorstop 4 upgrade master has to v5-lts.
It also upgrades UnityDoorstop.Unix to UnityDoorstop as they both got merged after v6 pre1 came out. As a result, there's now 5 build zips produced instead of 3:
This follows the current distribution scheme master has.
Motivation and Context
While it technically introduce a relatively minor breaking change (see below for details on what it is and why I consider it minor), Doorstop 4's main feature that makes it quite a huge deal compared to 3 is the ability to have a debugging server running without the need of DnSpy. This allows a more reliable, flexible and interesting debugging scheme: you are now able to debug the game's assemblies using recompiled sources without the messiness that is turning the build into a debug build or using DnSpy. While DnSpy has been working for lots of people it has shortcomings that makes the doorstop 4 method appealing:
The one drawback with this method is it requires to use recompiled sources to debug the game meaning if the decomp isn't recompilable, it needs to be sanitised. I happen to deal with a game where I don't need to do this, but from what I have been hearing, this case, while uncommon, isn't unique. Also, this only works for games using the new mono shipped as stable in unity version 2018.x and up, it doesn't work for the older one, but this was a limitation of doorstop so not loss here.
For debugging plugins, this also offers an alternative to DnSpy, but without needing to turn the release build into a debug one which can be a bit messy as it requires lots of files to be overwritten while doorstop 4 debugging doesn't.
How Has This Been Tested?
I have been using a v5 build equivalent to the win_x64 one produced by this pr for about 1.5 years with no issues on a 2018.4.12f1 unity mono game running via wine/proton.
This of course isn't exhaustive, but I made sure to follow the similar distribution scheme than what master did so everything should work, but I do recommend to gut check this.
Types of changes
I should note what I mean by there's a breaking change: if someone was launching BepInEx externally via CLI, doorstop 4 changes how the args are passed in. This means that if someone had say a script or something that was launching with custom args, they would no longer be recognised after this PR. The config file technically is breaking, but realistically, if one does upgrade, the ini/sh files would also be replaced so it's not in practice breaking in reality. It's only for CLI args that it is.
However, it seems to me that this is minor: realistically, if someone would upgrade from v5, this doesn't seems to be a huge deal. Most users seems to not necessarily update v5 to their latest and if they did, the change only involves changing the name of the args.
No features is actually lost from this upgrade, only 2 features are gained:
Checklist: