-
Notifications
You must be signed in to change notification settings - Fork 72
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
tracked_files needs first run in order to be created in prefix; Special K still shows warning, but works fine if vcrun and d3dcompiler_47 are installed through winetricks #893
Comments
I saw your initial issue earlier with your "Ted Talk", I apologise that I didn't get a chance to fully dig into it (took a nap after work to beat a heatwave). But I am assuming that all of that from earlier is now resolved, and that the core of the issue is what you've described here, which should boil down to:
If that is the case, right now the following is needed for games to use Special K (or at least NieR:Automata), where Step 2 and Step 3 could be done in either order (though it will crash without Step 2, which resolves the crash):
And once again assuming the above is correct, SteamTinkerLaunch would need to do the following:
So if that's all correct, let me move onto my understanding of what STL should be doing right now:
I would also be interested in knowing if these steps can cause conflicts with other games. They shouldn't, but does this mean that with these tweaks, SpecialK generally speaking works? I'm sure some games will be a PITA but I'd like to make sure that basically this isn't a case of fixing SpecialK for NieR:Automata and breaking it for all others. I can do some light testing once I get around to trying to fix these issues (i.e. properly installing vcrun for SpecialK and also properly exporting d3dcompiler_47). I tested Special K a long time ago and it crashed NieR:Automata, your comments on a previous issue suggested workarounds that appear to work from your screenshots. I also tested NieR:Replicant and it worked, but it was a bit crashy (this could've been other things, not specifically SpecialK). So at the least I can test both of these games afterwards to make sure compatibility is preserved :-) I appreciate the enormous amount of time you have spent investigating and troubleshooting this issue, and for doing your best to make sure it contains the most accurate information possible in order to best report bugs and suggest improvements. Your comment on the previous issue and your comment here have given me a lot of hope that Special K isn't utterly broken beyond repair at the moment, and also that games will generally work with it albeit with some workarounds (including NieR:Automata). And finally,
I agree that this is likely a bug. Could you give some more information on this warning that Special K shows, i.e. does it go away, and also what you mean by the Special K setup process not triggering? Thanks! cc @zany130 you may be interested in the discussion here :-) |
I should also note that, if we can perform these vcrun and d3dcompiler installation steps without Winetricks, hopefully that will resolve the Just wanted to say again that the investigation you did and mentioning even details like |
TBH I am very out of the loop with Special K. I was at one point keeping up with it and trying to get it to work with ReShade but gave up. So not sure I can add much here. However, I don't remember much needing to be done to get it to work other than Adding the .dll the same way you would for ReShade (dxgi.dll for d3d11+, d3d11.dll,d3d9,d3d8,OpenGL32.dll, there were a few more you could install it as I think but don't remember) and then adding the .dll override not sure if |
Not all games use vcrun and some use older versions, it is possible Special K may require a specific kind. No worries that you can't add much but if there is a development here it may be something that would interest you as well, just keeping you in the loop also :-) |
I tested out NieR:Automata with SpecialK and I have learned a few things:
So the takeaways from this on my end are the following:
Likely the vcrun2022 winetrick worked because it should do the same thing as running vcredist2022. I am not sure why it appeared that d3dcompiler_47 was required as a Winetrick, as I am not sure it is exported anywhere. In my testing for NieR:Automata, it wasn't needed. I am going to test all of this with a fresh prefix and no SpecialK files, then try to do all this from scratch. Fingers crossed! |
Confirmed that the following steps worked:
In the code I am having difficulty getting STL to automatically install the vcredist2022. It is very fast, a matter of seconds, from the menu button, but it would be nice to automate this as part of the SpecialK installation. Using I think as far back as |
Nice. Unfortunately, I'm a little behind on this issue; I've been trying to test #894, but the ReShade dll looks like it's only installed if the Special K checks pass, so...I couldn't really do much there 😅 |
I was able to confirm that So the remaining issue to solve is how to get SteamTinkerLaunch to properly install |
Is this related to the |
I'm guessing so. It's the only thing in the way that I can think of 🤔 |
OK! Finally caught up with the replies here 😁
The only thing I'd want to add here is that--with vcrun2022, I think--a single run did not create tracked_files in the prefix. I either had to use Steam first run setup + Re-create Wineprefix--which worked great for this purpose--or some combination of two game launches or installing something else through Winetricks (usually d3dcompiler_47). I was kind of frustrated that it wouldn't show up after a single launch.
I was planning to check Monster Hunter: World. Previously, the third-party mod loader crashed with vcrun2015 (which may have just been the steam API dll again), which led me to try vcrun2022, and that caused Special K to throw the ms-api warning...leading me to return to NieR: Automata to see what went wrong (and create this bug). All of that might have been unnecessary, but it seems like we're all gaining from it 😁
Thanks 😊 . I still feel kind of dumb for presenting all that as legitimate bugs when it was just me deleting a dll that turned out to be important. Like, someone took the time to read and process all that, and then most of it just got invalidated because I did something dumb. I don't want to waste anyone's time, you know?
Thanks for the supportive words 🫡. I figured I'd just throw as much as I could out into the wild to give you (or whoever else) the information needed to solve the problem. In the other issue, you mentioned wanting to know how tracked_files worked (if Steam populates an empty file, etc.), so I thought I'd throw that into the rest of the files as well.
This was in reference to the api-ms-win-crt-string-l1-1-0.dll error--the issue we're currently working on 😁 Hope this helps. Once again, thank you for your kind words 🙏 💜 Hopefully, I didn't ramble on too much 🤣 |
Not too much rambling, I appreciate keeping up with this! Even as maintainer it's easy for me to get a bit lost with all of this.
I'm not sure that I experienced that, but it is late and I may have just forgotten. To my understanding, all I had to do was (with the
The issue with tracked files could be something prefix-specific. I am not sure what might be causing it.
Ah okay, I caught up in the end with this and #896 should resolve it. I will probably just merge it after posting this comment -- seems pretty important. This will hopefully allow you to test out the (very basic) ReShade and SpecialK stuff for #894.
I think this issue has helped highlight that the SpecialK installation code was in dire need of some tweaking. Even if it took us a while to figure out what exactly the problems were and what causes them, I think indeed for me I've gotten to learn a lot more about how STL handles SpecialK. It's much less of a mystery box for me now! Plus it's good fun tracking down issues like this :-)
It's no problem, you spent the time figuring out the problem. I've been here too, I can very easily get myself tangled up in rabbit holes where I get all the details wrong in the end (happened this summer with Vortex, spent about a week entirely on the wrong track). I appreciate any user who spends time to try and understand the problem because even if initially there was some misunderstandings, clearing that up helps everyone. And hey, it's always better than just opening a blank issue 😉 To help straighten things out in my mind, this issue has uncovered a few issues:
So to resolve this issue, we need to do the following:
Please feel free to correct me if I am wrong on any of these points, or if more needs to be done. It is possible more might crop up, i.e. there may be one or two generally useful tweaks on top of this that can help other games, but that's fine :-) |
I did some messing around trying to figure out why I am going to push these changes to a branch that removes this installation, and when it's up, please feel free to test. You should be able to test with a clean prefix (re-create wineprefix should work, just a fresh prefix) and with no SpecialK files in the game folder (this is less important, but I prefer testing from as much of a clean slate as possible). So once this branch is up, when you run that version of STL, all you should have to is enable the SpecialK checkbox. STL won't install In short, the solution to the vc2022 issue (and hopefully the I'll post another comment here when this branch is up, and you can test it the same way you tested the ReShade branch :-) |
The PR is up at #898, the relevant branch is If you have time please do test, hoping for some good news! Thanks for all your patience with this as I fumble my way around :-) |
All done 😄 The game crashed with ReShade and SpecialK enabled together (also took a really long time, due to whatever's going on with #894), so I just disabled ReShade. Like you suggested, I started with clean prefixes, and removed the Special K stuff from the folder beforehand. Game loads quickly, with no external dependencies needed and no errors (that I noticed). I'm still half-awake, but I'd also consider this a win. Well done! 👏 For fumbling around, your solutions seem to be pretty on point 😁 Thanks for all your hard work! 👍 🙏 |
That's interesting that using ReShade and SpecialK together took a while, not sure what's up with that but that's for another time methinks. Glad this solution worked! I'll have to test with another game before merging, and make a couple of other technical changes (there's hardcoded notifier text that should be in the language files to be translatable, and some code cleanup I should do...). There are other technical changes I'd like to implement as well, I feel like there is opportunity to clean up some of the Special K code as well as some of the SpecialK+ReShade code (even if it doesn't work fully well together (for now?)) so it's all a bit cleaner. To be honest there's a lot of refactoring I'd like to do with STL, but since I've touched these areas recently, I think it's a good place to start. Just in case you see some movement around the SpecialK stuff, and feel free to make an issue if something breaks 😅 Thanks a bunch for your active involvement here. Once the changes are merged I'll close this issue, though feel free to comment/re-open if this issue comes up again (or open a new issue if you feel there's a different problem that comes up). |
You're welcome! Thanks for your attention here, as well; your efforts really helped turn this issue around for the better 😆 I feel like this solution should work well, but I'll comment here or in a new issue if I discover any problems. Thanks again! 🥳 🎉 |
No problem! I tested two games (NieR:Automata and NieR:Replicant). I didn't test either too in-depth, I did play a little bit of NieR:Automata (had a save file from one of my many playthroughs) but not so much NieR:Replicant (I'll give it a proper play one day, I swear!). They both loaded SpecialK and didn't have any immediate problems which is good enough for me, any problems after that are probably general Linux compatibility problems I would assume. Now that #898 has been merged, this issue should be fixed in Closing this issue now :-) Hopefully Special K integration works a lot better now! |
Thank you very much. I'll give it a test on my end, as well 👍 |
Also gave the SpecialK wiki page a bit of a makeover as part of this change. It had not been significantly updated since 2021. |
System Information
Issue Description
First off, I apologize: this issue was mostly due to me deleting steam_api64.dll (which NieR: Automata--the game I was testing--requires to not crash), thinking it was a part of the Special K installation. The next big problem was the tracked_files file not appearing in the game prefix, which happens if you don't do a first run beforehand to create it in there. Not sure if that last part's a bug or not--I feel like STL should create it if it's not there--but overall, it's probably not a huge issue by itself.
A slightly more annoying thing is that vcrun2022 and d3dcompiler_47 have to be installed through Winetricks (the former for Special K, and the latter for both Special K and ReShade), which makes the launch process much longer. The warning about Special K not finding the specific dll it wants still shows up, and the setup process for it doesn't trigger, but installing both vcrun2022 and d3dcompiler_47 allow it to run properly. Again, I'm not sure if that's a bug (it feels like it) or not. I think it took two launches for the Winetricks verbs to actually install, as well, making the process take even longer. As far as I can tell, this needs to be done for any game that uses Special K.
Logs
524220_gamelaunch.log
steam-524220.log
524220_steamtinkerlaunch.log
The text was updated successfully, but these errors were encountered: