ValveSoftware / Proton

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

Halo: The Master Chief Collection (976730) #2907

Open trymeouteh opened 5 years ago

trymeouteh commented 5 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/

LukasRuppert commented 4 years ago

I can check with my wine build again in a couple of hours. Currently, I don't have time to test it myself. There may very well still be a bug in there. It's really just a quick and dirty implementation which worked for me this morning.

mathew2214 commented 4 years ago

sounds like the second patch is a regression. is the game fully playable with the original patch? once past the first login screen, does the game work reliably? or is there crashing/disconnections mid-gameplay?

ananace commented 4 years ago

With first patch (GE build), game seems to be fully playable once past the random "Fatal error" crashes and the many failed login attempts. Almost finished the entire campaign so far with not a single strangeness except for some shader compilation stutters.

thebozzcl commented 4 years ago

It took me several dozen tries, but I was finally able to log in using @GloriousEggroll 's build! Thanks!

I tried using @LukasRuppert 's patch (plus typo fix for pgnutls), but I started running into what I think are dependency issues in the build. First it was GNUTLS, then some other package... so I tried a build completely from scratch, and it somehow made it worse.

No idea what went wrong, and now that I have the game running I'd rather play for a bit before going to work. I'll experiment with this again tonight.

LukasRuppert commented 4 years ago

It's not a typo. If you change it you will get a linker error.

MAKE_FUNCPTR(gnutls_decode_rs_value);

creates the function pointer

pgnutls_decode_rs_value

and

LOAD_FUNCPTR(gnutls_decode_rs_value);

takes care of the linking.

thebozzcl commented 4 years ago

@LukasRuppert oh, interesting. Okay, I'll try that again later then.

vsod99 commented 4 years ago

@LukasRuppert oh, interesting. Okay, I'll try that again later then.

My build has these fixes implemented but it seems to still be having issues. I'll be interested to see if yours fairs better

NTMan commented 4 years ago

"Test release - MCC" build of Proton GE is crashed too on my system. steam-976730.log Screenshot from 2019-12-04 20-39-01

vsod99 commented 4 years ago

@LukasRuppert My tired eyes did not catch this error in my output log last night: patch: **** malformed patch at line 29: #undef MAKE_FUNCPTR

LiamDawe commented 4 years ago

@NTMan yes that comes up, you have to keep trying and eventually you get a login.

Skivet commented 4 years ago

@mathew2214 did you add the patch to game-patches-testing/proton-prep.sh and add a patch line for it under #WINE CUSTOM PATCHES before running ./game-patches-testing/proton-prep.sh &> patchlog.txt?

mathew2214 commented 4 years ago

@Skivet i did. i just nuked that entire build and am starting from scratch with another attempt. every time i try to run proton-prep.sh, it doesnt work. it cant find the files to patch and prompts me for them.

rkfg commented 4 years ago

@mathew2214 you should run the script from the root directory, not from game-patches-testing. Use ./game-patches-testing/proton-prep.sh as @Skivet suggested.

mathew2214 commented 4 years ago

@rkfg that was my issue. the script runs now. thank you.

rkfg commented 4 years ago

I had the same issue. It's a good practice to cd to the expected directory in the beginning of the script so that the user won't have to suffer. I usually add cd "$(dirname "$0")" so I know all the paths are now relative to the script file itself. Of course, it only applies to such tools that are only run from one specific directory and operate on the known files.

rkfg commented 4 years ago

Can't compile Proton-GE with the second patch. I succeeded with the first. The error is:

../../../../proton/wine/dlls/bcrypt/gnutls.c:103:14: error: 'gnutls_decode_rs_value' undeclared here (not in a function)                                                                                             
 MAKE_FUNCPTR(gnutls_decode_rs_value);                                                                                                                                                                               
              ^                                                                                                                                                                                                      
../../../../proton/wine/dlls/bcrypt/gnutls.c:90:39: note: in definition of macro 'MAKE_FUNCPTR'                                                                                                                      
 #define MAKE_FUNCPTR(f) static typeof(f) * p##f                                                                                                                                                                     
                                       ^                                                                                                                                                                             
In file included from ../../../../proton/wine/dlls/bcrypt/gnutls.c:40:0:                                                                                                                                             
../../../../proton/wine/dlls/bcrypt/gnutls.c: In function 'key_asymmetric_sign':                                                                                                                                     
../../../../proton/wine/dlls/bcrypt/gnutls.c:1130:20: warning: format '%s' expects argument of type 'char *', but argument 5 has type 'LPCWSTR {aka const short unsigned int *}' [-Wformat=]
             FIXME( "padding: %s\n", pad->pszAlgId );                                                     
                    ^                                
../../../../proton/wine/include/wine/debug.h:93:49: note: in definition of macro '__WINE_DBG_LOG'                                                                                                                    
     wine_dbg_log( __dbcl, __dbch, __FUNCTION__, args); } } while(0)                                                                                                                                                 
                                                 ^                                                        
../../../../proton/wine/include/wine/debug.h:484:36: note: in expansion of macro '__WINE_DPRINTF'                                                                                                                    
 #define WINE_FIXME                 __WINE_DPRINTF(_FIXME,__wine_dbch___default)                                                                                                                                     
                                    ^                                                                     
../../../../proton/wine/include/wine/debug.h:523:36: note: in expansion of macro 'WINE_FIXME'                                                                                                                        
 #define FIXME                      WINE_FIXME                                                            
                                    ^                                                                     
../../../../proton/wine/dlls/bcrypt/gnutls.c:1130:13: note: in expansion of macro 'FIXME'                                                                                                                            
             FIXME( "padding: %s\n", pad->pszAlgId );                                                     
             ^                                       
../../../../proton/wine/dlls/bcrypt/gnutls.c:1183:13: error: called object 'pgnutls_decode_rs_value' is not a function or function pointer
             pgnutls_decode_rs_value(&signature, &r, &s);                                                 
             ^                                       
../../../../proton/wine/dlls/bcrypt/gnutls.c:90:44: note: declared here                                                                                                                                              
 #define MAKE_FUNCPTR(f) static typeof(f) * p##f                                                          
                                            ^                                                             
../../../../proton/wine/dlls/bcrypt/gnutls.c:103:1: note: in expansion of macro 'MAKE_FUNCPTR'                                                                                                                       
 MAKE_FUNCPTR(gnutls_decode_rs_value);                                                                    
 ^                                                   
make[1]: *** [Makefile:206: gnutls.o] Error 1                                                             

I have no idea why this happens as gnutls_decode_rs_value definitely exists in /srv/chroot/proton_crosscc/usr/include/gnutls/crypto.h but for some reason gcc fails to find it. Any ideas?

NTMan commented 4 years ago

@LiamDawe After a lot of unsuccessful attempts trying enter to Xbox Live account with build @GloriousEggroll ProtonGE. I decided to try another build from @vsod99 and with this build ProtonGE I could login to Xbox Live account from the third attempt.

I hope this information would be useful for another users.

Screenshot from 2019-12-04 22-10-52

mathew2214 commented 4 years ago

@LiamDawe After a lot of unsuccessful attempts trying enter to Xbox Live account with build @GloriousEggroll ProtonGE. I decided to try another build from @vsod99 and with this build ProtonGE I could login to Xbox Live account from the third attempt.

correct me if im wrong, but the first patch never worked for you, but the second patch worked third try?

rkfg commented 4 years ago

So I added the function definiton before the macro and it seems to compile further...

int gnutls_decode_rs_value(const gnutls_datum_t * sig_value, gnutls_datum_t *r, gnutls_datum_t *s);
#define MAKE_FUNCPTR(f) static typeof(f) * p##f

Pretty weird as only this function produced an error, all others are fine... And I see no conditional compilation in crypto.h either.

LukasRuppert commented 4 years ago

I just tested my code from the updated version again a few times. It signs me in the first time each try.

The many failed attempts caused by the early first version might get you locked out for a while as some of us have experienced with the "offline" message.

One issue might be incompatible GnuTLS versions which do not yet export

gnutls_decode_rs_value

you can check using

nm -gD /usr/lib64/libgnutls.so | grep gnutls_decode_rs_value

(you may need to adjust the path) If it helps, I'm using libgnutls.so.30.23.2

Another thing to keep in mind: I only tested using wine, not proton. (using the current wine repo with all patches from the wine-staging repo applied)

LukasRuppert commented 4 years ago

If it's not working for you, you can also check if

~/.steam/steam/steamapps/compatdata/976730/pfx/drive_c/windows/system32/bcrypt.dll

matches

<your proton version here>/dist/share/default_pfx/drive_c/windows/system32/bcrypt.dll

During development I had some crashes when that file belonged to a different wine version.

If you don't have any savegames to lose, you can also try deleting (or renaming) the entire wine environment for Halo

~/.steam/steam/steamapps/compatdata/976730
rkfg commented 4 years ago

I applied the new patch to Proton-GE, see here: https://github.com/rkfg/proton-ge-custom/commit/246632ca855666937049931bbb80819dcab38303

Also, if you get weird errors like vkd3d.h not found try to do vagrant provision, it should update something and then it builds fine. A radical way would be nuking the VM but it takes too long to install/update everything. A less radical way is to delete ~/build and ~/proton in the VM, then do vagrant halt, vagrant up and vagrant provision.

rkfg commented 4 years ago

Can confirm that I login from the first try using the second patch and Proton I built myself. I used GitHub login for that (lol), it's in advanced sign-in options.

Many thanks @LukasRuppert!

McMarius11 commented 4 years ago

@rkfg can you upload your self build proton file here?

rkfg commented 4 years ago

@McMarius11 sure, I pushed a release: https://github.com/rkfg/proton-ge-custom/releases/tag/halo_mcc_test

It also has a custom name Proton-MCC so you'll not mistake it for another Proton-GE build.

McMarius11 commented 4 years ago

IT WORKS i tried all version, you guys are the best <3 thanks @rkfg and @LukasRuppert and @vsod99 all other involved i tried to log in 5/5 times it worked flawless

vsod99 commented 4 years ago

@McMarius11 sure, I pushed a release: https://github.com/rkfg/proton-ge-custom/releases/tag/halo_mcc_test

It also has a custom name Proton-MCC so you'll not mistake it for another Proton-GE build.

Just beat me to it. Nice work, time to see if it actually runs on my uncooperative machine. All of my issues from last night were resolved by appling the patch on an older commit of Proton-GE (because of the first patch, there were conflicts) >_<

dennis1248 commented 4 years ago

Thanks everyone! It indeed works flawless on the first try.

NTMan commented 4 years ago

@rkfg your build is best! I login into Xbox Live account always with first attempt even after game restart. When I use build from @vsod99 after game restart I am again have problem with login and game crashes after each login attempt it's really annoying. Great work, thanks.

solenum commented 4 years ago

Are there any extra steps to get @rkfg 's Proton build working with this? I get no login window popup and eventually just get a "fatal error" popup and then the game closes.

Edit; (I have tried with a clean prefix) Edit 2; After restarting a few times I'm just getting the old "error while signing into Xbox Live" issue.

mathew2214 commented 4 years ago

the second patch works once. other times it just spins forever at the title screen. i have to remake the prefix every time i want to play the game.

rkfg commented 4 years ago

@exezin not that I'm aware of. You might be locked out for some time due to previous failed attempts, just wait and try again.

solenum commented 4 years ago

@rkfg Is a login screen meant to pop up at all? I've not seen one after 10 or so restarts of the game.

LukasRuppert commented 4 years ago

@exezin if you're not seeing anything (except for the loading icon), that most likely means something crashed. Try creating a log, maybe we can figure it out.

solenum commented 4 years ago

Here's the log.

steam-976730.log

LukasRuppert commented 4 years ago

And there is your problem: (Line 221)

3696.755:002e:002f:err:bcrypt:gnutls_initialize failed to load gnutls_decode_rs_value

Try updating the gnutls library.

GorrillaRibs commented 4 years ago

Works for me on archlinux w/ the most recent patch - Has anyone tried/asked MS about the version with anticheat? I'd be weary to try, but it officially supports win 7 so maybe wine supports the version of easyAC it uses?

mathew2214 commented 4 years ago

here is my log from trying to use the second patch without deleting Halo's prefix first. steam-976730.log

McMarius11 commented 4 years ago

here is my log from trying to use the second patch without deleting Halo's prefix first. steam-976730.log

@mathew2214 i think your using the old Proton version please download https://github.com/rkfg/proton-ge-custom/releases/download/halo_mcc_test/Proton-MCC.tar.gz extract it and copy it into the /home/username/.steam/steam/compatibilitytools.d/ folder and restart steam and use it,

mathew2214 commented 4 years ago

@McMarius11 that build doesnt even launch the game. here's the log. steam-976730.log

davidebeatrici commented 4 years ago

@exezin @LukasRuppert

Steam currently ships libgnutls 26.21.8 and 30.6.2.

STEAM_RUNTIME_PREFER_HOST_LIBRARIES=1 fixes the issue, as long as your distribution has an up-to-date version of libgnutls.

McMarius11 commented 4 years ago

@McMarius11 that build doesnt even launch the game. here's the log. steam-976730.log

@mathew2214 try to launch the game with launch option "PROTON_NO_ESYNC=1 %command%" without the "" or try to use "PROTON_NO_FSYNC=1 %command%" or "PROTON_NO_FSYNC=0 %command%"

cybik commented 4 years ago

Kind of a jerk request, but can we please start using gist instead of direct uploads? With Gists we wouldn't need to download the logs to peruse them.

solenum commented 4 years ago

@LukasRuppert I'm already on libgnutls30, the latest on my distro (lubuntu 18.04.3 LTS). What version would you suggest?

crespyl commented 4 years ago

@davidebeatrici @exezin adding that to the launch options seems to have fixed it for me, on KDE Neon 5.17 (an Ubuntu 18.04 variant). I'd forgotten about the steam runtime option and was thinking I'd have to build/install gnutls 3.6.6 directly (the distro shipped with 3.5).

I was able to log in with my Microsoft account and get to the main menu. I'm using the build from @rkfg.

mathew2214 commented 4 years ago

@McMarius11 using both those arguments, that proton build behaves exactly the same as my own. it works once after i delete the prefix, then it will always spin for a few seconds and crash. https://gist.github.com/mathew2214/966d11905790fe9a2fcf3cf874407cb0

solenum commented 4 years ago

@davidebeatrici What do we consider an up-to-date version to be? I'm on libgnutls30 at the moment, those flags prevent crashing but I still can't get any login screen to pop up.

Guy1524 commented 4 years ago

I found the cause of the inconsistency. I have an updated patch with tests added that I will submit upstream later today.

mathew2214 commented 4 years ago

@Guy1524 any chance of a patch file one could apply to an existing proton build environment?

davidebeatrici commented 4 years ago

@exezin gnutls/gnutls@d5f226c8e605b5ee14a6d9ed289b32dedb903d4d