Open trymeouteh opened 5 years ago
I can also confirm that the issue is that Microsoft login prompt doesn show up.
Hello @warriormaster12, please add PROTON_LOG=1 %command%
to the game's launch options and drag and drop the generated $HOME/steam-$APPID.log into the comment box.
Dug into the latest Flighting build. Notes:
The game boots but fails to prep Xbox Live, so not much has changed.
Also tried, goes to the menu screen but get error when trying to proceed further.
+1 comments don't extend the discussion. Just use thumbs up.
I've tried adding win10 and dxvk to no avail, maybe dependant on some gfwl libs?
I do not have the beta but I heard this game is supported for Windows 7. Maybe try setting the wine config to Windows 7 to get the Xbox Live part to work?
I do not have the beta but I heard this game is supported for Windows 7. Maybe try setting the wine config to Windows 7 to get the Xbox Live part to work?
It looks like the default is Windows 7 from what I saw in winecfg. I attempted to set to Windows 10 and got the same result.
Like you said, since the game is supposed to work under Windows 7, it seems it would have the necessary pieces to login to Xbox Live in the actual game, but not sure.
Maybe there's something wrong with the loading of CEF itself to show the login window. Are there any necessary manually installed libraries for the webview to work for other games/tools?
CEF by design is pretty much 100% standalone, though lots of files get involved even in a minimal package. Where things get bad, in my experience, is the Chromium subprocesses. I have zero evidence that it’s relevant here.
Apparently I’m insanely far behind on my MCC news. The core UI engine is actually UE4 now! So it’s UE4 at the base with each game’s original engine running on top. This is likely because Scaleform’s dead, so they had to move to something...
If there exists a UE4 CEF demo app, that might be a good thing to test with upstream Wine.
It's possible they are using the ue4 web browser (https://docs.unrealengine.com/en-US/Engine/UMG/UserGuide/WidgetTypeReference/WebBrowser/index.html), unless they did their own implementation of the cef integration.
It could also be useful to try cef by itself. From what I remember these packages have example cef browsers that could be useful for determining compatibility: http://opensource.spotify.com/cefbuilds/index.html
I saw that a while back people were recommending using wine staging patches for cef to work properly in wine, not sure if that's still the case
As an experiment, I took the Windows 64-bit sample app from cefbuilds and ran it on the following:
The last two proton forks look to provide the wine staging patches, with some of them probably helping with getting CEF to work. I tried MCC with Proton-GE 4.14, and got a different result, where pressing enter caused a "Fatal Error" popup to occur. I've attached the logs below, it may be getting a bit closer: steam-1064280.log
This issue is for Halo: The Master Chief Collection - INSIDER, app id 1064280 and should probably be updated to keep pre-release issues separate from release issues.
There does appear to be a lot of OutputDebugString calls for HttpClient, with the addresses and functions lining up with this library here:
https://github.com/microsoft/libHttpClient
Kind of makes me wonder what the CEF part is all about if the Xbox Live sign-in is going through this instead.
https://www.protondb.com/app/976730
It will appear that this game uses EasyAntiCheat. I hope Anti Cheat can be worked around in the near future.
Here's another log. Same issue, Error signing into XBox Live. Sign in dialogue doesn't show. Also don't seem to hear any sound in the menus and during the logo animations.
Log from the Flight 3 build:
Audio seems fine here, as are all the videos now that they're on Bink2. The base engine appears to use standard UE4 audio through XAudio2, but Reach's audio is stored as FMOD Studio banks and the FMOD library is statically linked into the game DLL. Logging in still doesn't work, still seems to be HttpClient compatibility issues.
Steam release, running the EAC-disabled version I get stuck at the xbox live login screen.
Log below.
Tried the release version with 4.11 with an updated bcrypt+winhttp, didn't get past login. Noticing that it hits a stub for WSALookupServiceBeginW
.
So I launched the game, got a dialog box: one with anti cheat and one without. When trying the without anti cheat option I have the same issue with the xbox live login.
Here is my steam log steam-976730.log
Game launches but doesn't manage to get to the login, "Errors encountered while signing into Xbox Live"
Running the game without EAC: steam-976730.log
i have the same issue as everybody else it seems. gets to title screen, but cannot proceed because of an Xbox Live error. steam-976730.log
i believe this is the error causing the xbox live issue.
ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin failed with: 8
The game is launching but couldn't signing into Xbox Live
i have the same error can't sign in steam-976730.log
Manjaro Nvidia
Does the following line indicate an issue:
fixme:bcrypt:key_asymmetric_generate algorithm 11 not supported
?
Wine spews it each time I try to hit 'Retry'.
P. S. 11 corresponds to the ALG_ID_ECDSA_P256 enumeration value.
looks like an issue with wine's bcrypt and winhttp implementations. is there a way to force Proton to use a newer version of wine instead of the default 4.11? there have been a number of commits to wine that relate to bcrypt since 4.11.
@mathew2214 It doesn't work on a recent wine staging with windows steam either, I'm taking a look at fixing this.
This game is pretty broken even on Windows. As in I've been troubleshooting all day and can't get the damn thing to get past that sign in error even on an actual Windows 10 Pro installation.
It's ironic that at this rate, the Linux community might get it working in Linux before it's even functional for most people on Windows.
Update: I've refactored bcrypt's key_asymmetric_sign to use pgnutls_privkey_sign_hash2 and handle more hash/sign algorithms.
However, Halo passes in 0 for flags, meaning we have no way to tell gnutls what hashing algorithm generated the data.
This case isn't documented by the MSDN, and a quick test of it yields STATUS_INVALID_PARAMETER on Windows 10 with the RSA signing algorithm. Maybe there is a special case for the ECDSA signing algorithm.
I can confirm that Halo passing in 0 is not a bug triggered by wine, as disassembling Halo reveals it unconditionally passes in 0.
I'll look further tomorrow.
Apparently, lines related to bcrypt library are not so important. I've just tried a quick patch with private key signature generation implemented for ECDSA algos, and the error still occurs. P. S. Spoke too soon, it looks like I was wasting my time with it...
@Guy1524 According to this: https://github.com/microsoft/Windows-classic-samples/blob/master/Samples/Security/SignHashAndVerifySignature/cpp/SignHashAndVerifySignature.cpp#L327 it's okay to specify empty padding flags and algorithm specifier when using DSA. Maybe 11 actually means DSA and not ECDSA-256 after all...
IDK if it helps, but dumping wine staging 4.20 winhttp.dll.so into the proton directory makes no change in the error's outputted.
I got it working :)
My code is an awful hack, but I just wanted to get it working at all at the moment. The important part is that BCryptSignHash is expected to compute the SHA1 hash and return a IEEE P1363 formatted DSA signature: https://stackoverflow.com/questions/20992760/understanding-bcryptsignhash-output-signature Cutting the result of pgnutls_privkey_sign_hash in half and truncating the remainder or filling it with zeroes worked often enough to log in in. It will take a few tries though. A proper implementation should extract r and s properly from GnuTLS's signature format.
I hope this helps.
For completeness, I attatched the diff to the current wine repo with all wine-staging patches applied: halo_mcc_hack.txt However, I recommend you implement it properly from scratch.
Update: try the second version. Many comments claim to have issues with that one, but at least for me it completely avoids the retries that are necessary with the first version and any issues the resulting failed connection attempts might bring with them (such as your IP being temporarily blocked from signing in).
@LukasRuppert Do you have an ETA for a quicker, cleaner version of this patch, or possibly a wine fork repo with this patch?
Kudos on the find, though. I hope something like this can get implemented into the master wine stream.
Hopefully @GloriousEggroll will be able to add this workaround into proton tricks in a newer proton ge build
The patch looks like it applied nicely when added to proton-ge-custom's set of wine patches. I'm running an experiment building it locally to see if it works. Something like the below should work:
https://github.com/GloriousEggroll/proton-ge-custom
with command in READMEhalo_mcc_hack.txt
file in game-patches-testing/wine-patches and name it halo_mcc_hack.patch
./game-patches-testing/proton-prep.sh &> patchlog.txt
as shown in README@d10sfan how do you then go on to use proton-ge-custom in steam? For those of us who are new to this sort of thing
@d10sfan how do you then go on to use proton-ge-custom in steam? For those of us who are new to this sort of thing
When the build finishes, the last command will give a tar.gz archive file. This can then be extracted into the ~/.steam/root/compatibilitytools.d/
folder, and it'd show up in Steam after a restart. So it's the same procedure that can be used for GloriousEggroll's usual builds. This'd be my first time trying to build one from scratch using his repo.
Keep us posted. :)
I just kicked off a build on my machine as well. Will report back.
I tried it here and got a "Fatal Error popup" after clicking the enter key (and seeing it spin for a while).
I've attached a proton log: steam-976730.log
EAC off?
Yes, this is with EAC off. I just tried it again and getting better results this time (no build changes so I guess it's a bit flaky).
This time the popup to login showed up, but when I tried to login it would either come up with a no internet connection message or it would go back to the can't connect to xbox live message.
This shows the login prompt.
Internet connection issue error message
@d10sfan do you have a logfile from that test?
OP of the patch did mention it might take a few tries.
works with eac off, takes a few tries to login, uploading modified ge build shortly
LOL You just saved me some CPU cycles. :)
Nice work everyone involved.
Awesome! Will try that soon as well, I'm continuing trying to login on this end as well :)
And of course my build had to finish now.
has anybody had luck with non-EAC multiplayer using @LukasRuppert 's hack?
@mathew2214 Do you own the game? If so, happy to try on Steam w/ you after the build is uploaded or mine finishes compiling.
Compatibility Report
System Information
I confirm:
Symptoms
Game will not launch
Reproduction
Notes
I do not have this game but I got the details of this issue from this reddit post.
https://www.reddit.com/r/linux_gaming/comments/c6xh55/halo_reach_through_proton/