ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.34k stars 1.02k forks source link

Halo: The Master Chief Collection (976730) #2907

Open trymeouteh opened 4 years ago

trymeouteh commented 4 years ago

Compatibility Report

System Information

I confirm:

Symptoms

Game will not launch

Reproduction

  1. Start Game 2.Will not show Microsoft Login Prompt

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/

warriormaster12 commented 4 years ago

I can also confirm that the issue is that Microsoft login prompt doesn show up.

kisak-valve commented 4 years ago

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.

flibitijibibo commented 4 years ago

Dug into the latest Flighting build. Notes:

The game boots but fails to prep Xbox Live, so not much has changed.

steam-1064280.log

d10sfan commented 4 years ago

Also tried, goes to the menu screen but get error when trying to proceed further.

elken commented 4 years ago

+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?

trymeouteh commented 4 years ago

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?

d10sfan commented 4 years ago

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?

flibitijibibo commented 4 years ago

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.

flibitijibibo commented 4 years ago

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.

d10sfan commented 4 years ago

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

d10sfan commented 4 years ago

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

craftycodie commented 4 years ago

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.

flibitijibibo commented 4 years ago

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.

trymeouteh commented 4 years ago

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.

Kylindrias commented 4 years ago

steam-1064280.log

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.

flibitijibibo commented 4 years ago

Log from the Flight 3 build:

steam-1064280.log.zip

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.

solenum commented 4 years ago

Steam release, running the EAC-disabled version I get stuck at the xbox live login screen.

Log below.

steam-976730.log

flibitijibibo commented 4 years ago

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.

steam-976730.log

jerebare commented 4 years ago

Stuck on connecting to xbox live.

KDE neon User Edition 5.17 5.0.0-37 kernel

steam-976730.log

KeithSantamaria commented 4 years ago

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

dennis1248 commented 4 years ago

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

mathew2214 commented 4 years ago

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

NTMan commented 4 years ago

The game is launching but couldn't signing into Xbox Live

steam-976730.log

Screenshot from 2019-12-04 00-16-04

McMarius11 commented 4 years ago

i have the same error can't sign in steam-976730.log

Manjaro Nvidia

ltodoto commented 4 years ago

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.

mathew2214 commented 4 years ago

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.

Guy1524 commented 4 years ago

@mathew2214 It doesn't work on a recent wine staging with windows steam either, I'm taking a look at fixing this.

Xeraster commented 4 years ago

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.

Guy1524 commented 4 years ago

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.

ltodoto commented 4 years ago

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...

ltodoto commented 4 years ago

@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...

ghost commented 4 years ago

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.

LukasRuppert commented 4 years ago

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. reach_on_linux

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).

CheeseManFuu commented 4 years ago

@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.

minilandl commented 4 years ago

Hopefully @GloriousEggroll will be able to add this workaround into proton tricks in a newer proton ge build

d10sfan commented 4 years ago

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:

  1. Clone https://github.com/GloriousEggroll/proton-ge-custom with command in README
  2. Drop halo_mcc_hack.txt file in game-patches-testing/wine-patches and name it halo_mcc_hack.patch
  3. Run ./game-patches-testing/proton-prep.sh &> patchlog.txt as shown in README
  4. Follow the rest of the steps in README to build proton-ge-custom
naanlizard commented 4 years ago

@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 commented 4 years ago

@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.

hilts-vaughan commented 4 years ago

Keep us posted. :)

I just kicked off a build on my machine as well. Will report back.

d10sfan commented 4 years ago

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

hilts-vaughan commented 4 years ago

EAC off?

d10sfan commented 4 years ago

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. 20191203235128_1 20191203235130_1

Internet connection issue error message 20191203235020_1

mathew2214 commented 4 years ago

@d10sfan do you have a logfile from that test?

hilts-vaughan commented 4 years ago

OP of the patch did mention it might take a few tries.

GloriousEggroll commented 4 years ago

works with eac off, takes a few tries to login, uploading modified ge halomc build shortly

hilts-vaughan commented 4 years ago

LOL You just saved me some CPU cycles. :)

Nice work everyone involved.

d10sfan commented 4 years ago

Awesome! Will try that soon as well, I'm continuing trying to login on this end as well :)

thebozzcl commented 4 years ago

And of course my build had to finish now.

mathew2214 commented 4 years ago

has anybody had luck with non-EAC multiplayer using @LukasRuppert 's hack?

hilts-vaughan commented 4 years ago

@mathew2214 Do you own the game? If so, happy to try on Steam w/ you after the build is uploaded or mine finishes compiling.