-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linux (Steam Proton) support #44
Comments
Stracker's Loader and SPL are completely separate, aside from the shared config file. Unfortunately I don't have a linux machine to test on so it'll be quite difficult to diagnose this problem. A few questions:
Also, currently, SPL has a hard windows dependency which I doubt Wine could solve without a bunch of manual work. I assume you installed the .NET Runtime (which is cross platform), whereas on windows you should install the .NET Desktop Runtime. You can eliminate this requirement by removing the |
Thank you for your reply! To answer your questions:
Additional note: using Proton on Steam, we have to use arguments to even get Stracker's to work. Following that logic, I added a dll override argument for SPL's winmm. Without that override, the console does not appear, no matter what I try. Steam Arguments: By the way, I also found this unrelated issue, so the Steam argument for winmm seems to be correct.
I had installed both the .NET Runtime and the Desktop runtime in the Proton prefix, so in theory the dependencies should be there just as on Windows. Removing the desktop dependency from the config does not seem to change anything. I will let you know if I find anything! |
I have tried to look at logs from Proton and I see some warnings that do not appear when I run the game without loading winmm. I am not sure whether this means anything to you, but maybe it has something to do with this issue?
Apologies for the formatting... |
I'm also trying to get this to work. I was able to install the .net Desktop into my wine prefix as well, but I'm not seeing any log generated in that folder. I don't have a difference in exceptions between a version that has EDIT EDIT 2
This looks to imply that winmm is expecting loader.dll? |
Where does winmm.dll come from? I'm seeing that as the last thing being loaded before the app hangs |
Yeah, so we are both getting the same results, no logs from SPL but Proton logs just explode.
Winmm.dll is included with the SPL download. I'm guessing that dlls such as winmm and others are usually used to inject the required code when loading a game. On Windows, these dlls probably just load when starting a game, but with Proton it seems that we have to tell Proton to include modded dlls.
winmm is also used by mods for other games.
Yes, I believe I tried to run SPL without Stracker's as well at some point, but that did nothing. To be honest, I just gave up. Something about all of this is just not behaving correctly and I don't know how to figure out what exactly is causing the problem. I would love to see this work, but I don't have the knowledge to diagnose and fix the problem. |
I believe in this case, winmm.dll is actually the dll created from this projected renamed to winmm.dll, which is what I was looking to try and find out and confirm. Also trying to see why it's trying to load loader.dll at startup for some reason |
Ok, getting more information here.
I'm still not certain what this means, I'm continuing to investigate, but just wanted to share my findings. |
Adding this for visibility from our Discord discussion, but here's the full gdb process. The backtrace is also included below
Backtrace
|
Recapping what I posted on Discord: The root issue stems from this line: https://github.com/Fexty12573/SharpPluginLoader/blob/master/mhw-cs-plugin-loader/Preloader.cpp#L215. If I remove that line, the game now loads properly. However nothing works, I'm assuming because of the check at https://github.com/Fexty12573/SharpPluginLoader/blob/master/mhw-cs-plugin-loader/Preloader.cpp#L136. I went ahead and bypassed that check, and the log shows everything loads properly, but I can't get any plugins to load nor can I get a menu to popup if I press F9 Here's the log if I start with these changes and then also add this plugin: https://www.nexusmods.com/monsterhunterworld/mods/7538 (not condoning this mod, just tried to find a simple mod to load). From what I can tell, this never even attempts to load
|
Figured it out partially. Wine/Proton is loading its imports in a different order than Windows does (these accursed delayed imports on the MHW PE). Because of this, I think we can just support both That will only fix the preloader portion of it though. DX12 shader compilation is failing for..... some reason. |
@Andoryuuta
https://github.com/ImDevinC/SharpPluginLoader/pull/3/files |
@Andoryuuta got it! After merging your change in, I needed to add d3dcompier_47.dll to my MHW folder and add it to my winedlloverrides. So to clarify, here's everything I had to do to get this to work:
|
@ImDevinC Awesome, glad you got it working! I'd love to add some linux/wine install docs, so a few additional questions if you don't mind:
|
|
@ImDevinC How did you get the updated |
The instructions in the readme should say how to generate the cimgui project files |
The |
I used GitHub Actions to build it on a windows box. The artifacts are here: https://github.com/ImDevinC/SharpPluginLoader/actions/runs/10660962685. There's some extra logging in place currently (I was too lazy to remove it), but not heavily. |
Thanks alot! |
@ImDevinC I've been trying to get this to run on my deck can you send over the built modified dll? |
https://github.com/ImDevinC/SharpPluginLoader/actions/runs/11433537671/artifacts/2080573984 @mdusch here's a link to the latest build. Use it in place of the step 1 from these instructions: #44 (comment) |
Hey @ImDevinC apologies for the additional questions. How do I acquire msvcrt.dll for step 2? Thanks! |
@mdusch download the zip file from the link I included above, and rename mhw-cs-plugin-loader.dll to msvcrt.dll |
SharpPluginLoader.log Thanks for the clarification. I installed Net8 desktop x64 with Protontricks selecting mhw, extracted spl into nativepc and followed the above steps for the modified dll (got the d3dcompiler_47.dll from dll-files.com) Strackers still works as mods that don't use spl work so strackers is working with the updated wine override. Despite this, no logs show up (just a black screen then mhw loads and works fine, but no spl mods and no logs in the loader folder) and I can't bring up the menu with f9. Any ideas? Edit - added %COMMAND% to the wine argument, now spl loads with logs but fails hresulthresult 0x-7FFFBFFB within mhw-cs-plugin-loader\PrimitiveRenderingModule.cpp:1103 |
To clarify, you have both |
That is correct, renamed the included dll file to msvcrt and placed those 4 files from the new repro in mhw, dropped d3dcompiler into mhw, and copied and pasted the above launch options. I receive the error message in the log above. Also the game has a black screen right after the autosave info page when the error occurs. If I remove %command% then the game loads strackers but not spl. Not using ge Proton or experimental Proton. |
Hmm.. very strange. Are you on the latest version of the game (15.23)? |
Hey @ImDevinC Yeah, on the latest version. I appreciate the help. |
@mdusch Not a fix, but if you don't have anything that relies on the PrimitiveRendering module (i.e. rendering 3d shapes on screen), or plan to use it yourself, you can disable it in the config. ( |
Hey @Fexty12573 @ImDevinC Setting I only use SPL for the matchmaking mod which works once I load the game with: Thanks for the help! Would setting PrimitiveRenderingEnabled=false affect any mods that use the nativePC folder or just the loader plugins that SPL utilizes? I think the only mod that I use that affects anything on screen is changing how the dropped items look with icons but that just requires strackers. I'll test around but it should be all good. |
Glad you got it working @mdusch. Unrelated, I also just tested that using ProtonTricks to install d3dcompiler_47.dll works and doesn't need to be copied from any website or put in the |
Thanks for the msvcrt loader. The current instructions are incomplete and I had to rewrite it for someone anyway, so here it is.
I tested SPL using Standalone Quest End Timer Skip v1.0 plugin. Easy to test offline in <1min with event gathering quest.
As far as I can tell, you don't need to manually install any version of vc redists ( |
@jn64 Thank you for putting the complete set of instructions here, do you mind if I add these to the SPL documentation? And thank you everyone who contributed to this; finding issues, reporting, and solving them. I have now finally merged the Linux PR (#45) Ando made and will add an official linux (read "wine/proton compatible") release with version 0.0.7.2. |
Sure please use it
…On 2024-11-20T20:05:04.000+08:00, Fexty ***@***.***> wrote:
***@***.*** Thank you for putting the complete set of instructions here, do you mind if I add these to the SPL documentation?
And thank you everyone who contributed to this; finding issues, reporting, and solving them. I have now finally merged the Linux PR (#45) Ando made and will add an official linux (read "wine/proton compatible") release with version 0.0.7.2 [http://0.0.7.2].
--
Reply to this email directly or view it on GitHub:
#44 (comment)
You are receiving this because you were mentioned.
***@***.***>
|
Closing this with the release of 0.0.7.2 |
I would like to use the Better Matchmaking mod on Linux. However, it seems as though I cannot get Sharp Plugin Loader to work under Proton. I have tried different Proton versions and the experimental SPL version based on #34. The required dependencies are installed.
If I set winmm.dll as a wine dll override, an empty console shows up and the game does not start. I also cannot get any logs, even with the config option enabled.
Being no programmer myself, I wanted to ask whether you have some idea what might be wrong here. I understand that you probably did not consider Linux when developing SPL, and that SPL is consequently unsupported under Proton. Still, I hope that we might at least find the cause of the problem, even if there is no solution at present, especially as I am not the only one playing MHW on Linux.
Edit: I should perhaps add some additional information.
Stracker's loader works. Does Stracker's load SPL, or are they somewhat separate?
The text was updated successfully, but these errors were encountered: