ValveSoftware / Proton

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

Squad (393380) #938

Open felschr opened 6 years ago

felschr commented 6 years ago

When downloading the game ¨Squad¨ from Steam it directly finishes and trying to start the game causes en error: ¨An error occurred while updating Squad (missing executable) {some very long path here}/squad_launcher.exe¨

When I use the inspect game folder option I can see that the folder is completely empty.

https://store.steampowered.com/app/393380/Squad/

sticsk commented 4 years ago

I'd caught a reddit thread a few weeks ago that claimed uninstalling EAC through wine uninstaller and reinstalling it had a chance to make it work. I didn't bother to mention it here because the claim was never really substantiated. It may truly just be a matter of playing the odds and hoping you get a lucky draw.

I already tried this 2 days ago, I did it individually, I tried it by adding it as "Non-Steam Game", I even copied the EAC Folders (the one from master folder and the other from Binaries) from my Windows PC and is still not working.

I also did an Clear Cache, Verify Integrity, Reinstall EAC. Nothing works

MAD-BUG commented 4 years ago

Looks like using "hidewineexports=enable %command%" in startup parameters with staging wine (in my case it is Proton-5.9-GE-MF-2) works. This method doesn't modify any files, as other methods from internet suggests, but i still can't say if this will lead to a ban.

sticsk commented 4 years ago

Looks like using "hidewineexports=enable %command%" in startup parameters with staging wine (in my case it is Proton-5.9-GE-MF-2) works. This method doesn't modify any files, as other methods from internet suggests, but i still can't say if this will lead to a ban.

Sorry to ask but how do I do this, I tried in Set Launch Options thing, even with + and - before, and still not working, it tells me to activate EAC when I join a server

NGGJamie commented 4 years ago

Tested Squad with "hidewineexports=enable %command%" with Proton-5.9-GE-MF-2, all cases ended in the game failing to create the EAC interface.

Things tried:

One theory I have could be to get a working prefix from someone whose game is functional, and put that into the compatdata of someone whose game is not functional. It might make a non-functioning game work. However, one should be careful if they try to package up compatdata, in case the prefix happens to contain any sensitive information from the game or user.

MAD-BUG commented 4 years ago

I knew i was doing something stupid yesterday. "hidewineexports=enable %command%" should do nothing. What you realy should do is set hidewineexports=enable in winetricks. i do this with protontricks

protontricks 393380 hidewineexports=enable

After that you should get a fail to start both EAC and game on first run (not just fail to start igameclient), but on second start it should work. After that i got it to start from time to time but maximum on third try. It should not show you a fail to start igameclient, it should be eather fail to start a game at all because of EAC or a good start of game. If it still a fail to start igameclient then there is something more than i could tell.

Byter09 commented 4 years ago

I don't really know how to investigate this so any help is appreciated:

I wanted to try the above with the latest proton available in Steam and deleted the prefix so its a clean setup. I of course needed to start the game once to let that happen. I verified the game files, booted it up and right after clicking on the IGameClient message my system does a hard reset. Same thing happens when I exit out of the game (using the close button on the windowed game) before the message pops up.

Essentially, I now can't even boot it up anymore. Meaning I also couldn't test the protontricks command :(

Is this just a weird quirk of my system setup or is there more going on? How would I find out what happens when it kills my system?

imaami commented 4 years ago

I don't really know how to investigate this so any help is appreciated:

I wanted to try the above with the latest proton available in Steam and deleted the prefix so its a clean setup. I of course needed to start the game once to let that happen. I verified the game files, booted it up and right after clicking on the IGameClient message my system does a hard reset. Same thing happens when I exit out of the game (using the close button on the windowed game) before the message pops up.

Essentially, I now can't even boot it up anymore. Meaning I also couldn't test the protontricks command :(

Is this just a weird quirk of my system setup or is there more going on? How would I find out what happens when it kills my system?

Is it now noticeably hotter indoors than a few weeks/months ago? Have you checked what the CPU and GPU temps are after you start the game?

That's just the first thing that came to mind that could cause a hard reboot. Also if your PSU or mobo has blown a capacitor from the high temps, that could be a cause.

Basically a fault in power delivery, or over-temperature protection, those will reset your computer. Other than that I have no ideas.

Edit: if you see this on your mobo or PSU, or any other component, you're gonna have problems that look a lot like random mysterious reboots and crashes. That happens when a capacitor boils. Literally boils, not a figure of speech. Being close to hot components for extended periods of time increases the likelihood that caps will boil.

Byter09 commented 4 years ago

@imaami Thanks for the concern but its definitely nothing like that. I can play other demanding games too no problem. And if it were a temp thing, I don't think "clicking the X to close the game causing a immediate reset" would work every time. But it does. I tested it 3 times. It has to be the game causing a panic or something.

imaami commented 4 years ago

@imaami Thanks for the concern but its definitely nothing like that. I can play other demanding games too no problem. And if it were a temp thing, I don't think "clicking the X to close the game causing a immediate reset" would work every time. But it does. I tested it 3 times. It has to be the game causing a panic or something.

Yeah, definitely sounds like something specific to Squad with that additional info. Squad is generally weird when being closed, whatever it does it often causes a short freeze of 10-20 seconds during which everything pauses.

What CPU, GPU, etc. do you have?

Byter09 commented 4 years ago

@imaami

CPU: Intel i7-2600 (8) @ 3.800GHz
GPU: Radeon RX Vega (VEGA10, DRM 3.36.0, 5.6.16-1-MANJARO, LLVM 10.0.0)
RAM: 16 GB
MB: P67A-D3-B3
KRNL: 5.6.16-1-MANJARO

Hope that helps. And just to give you a perspective about the demanding game thing: I can play X4, which is a Linux native game, perfectly fine. It heats my room pretty quickly, but so does Squad. And I'm pretty sure I posted my system info further up in this issue already, nothing much has changed in between except maybe some package upgrades and a new kernel.

EDIT: Found it: https://github.com/ValveSoftware/Proton/issues/938#issuecomment-570157290

aCeTotal commented 4 years ago

Proton 5.9 with hidewineexports enabled.

GameID: 55 (32bit) Windows Version: 10.0 (Build 17134) Error Code: 30005 Process Exit Code: 0h UUID: 74f2ef78-445f-aa07-a79c-f79eb3c1fa01 Processes list: explorer.exe plugplay.exe services.exe squad_launcher.exe steam.exe winedevice.exe I guess EAC doesn't like winedevice.exe

NGGJamie commented 4 years ago

I forgot to post an update, but all tests I performed resulted in the same issue as @aCeTotal posted.

LevitatingBusinessMan commented 4 years ago

I get about the same error as @aCeTotal. It's weird that it calls my Windows version 6.1

This was after clearing prefix, making prefix with proton 4.11 enabling hidewineexports running with Proton-5.9-GE-1-MF

Then this error is returned from some kind of EAC frontend.

GameID: 55 (32bit)
Windows Version: 6.1 (Build 7601)
Error Code: 30005
Process Exit Code: 0h
UUID: 1898b708-c9e3-bb00-7471-bae27b36a354
Processes list:
explorer.exe
plugplay.exe
services.exe
squad_launcher.exe
steam.exe
winedevice.exe

And it didn't work on the second run either like @MAD-BUG reported.

Anyway, is there ANYONE playing this game on Linux as of right now?

Edit: Switched back to Proton-5.0-9 Now I am back to getting the IGameClient error. (prob because hidewineexports got disabled again?).

Edit: Started all over again, I tried following this comment by @imaami as close as possible: https://github.com/ValveSoftware/Proton/issues/938#issuecomment-606813813

Deleted existing pfx (rm -r .local/share/Steam/steamapps/compatdata/393380/) Removed folders called EasyAntiCheat from game files (one in root, one in Binaries folder), and had Steam reinstall them.

I ran the game with Proton-i-4.13-3 from imaami's fork. (IGameClient error)

I then ran the game with Proton-5.4-GE-3. (IGameClient error still)

I am still getting the IGameClient error...

LevitatingBusinessMan commented 4 years ago

@imaami if you'd send your wineprefix we could try to launch our game with your wineprefix.

imaami commented 4 years ago

@imaami if you'd send your wineprefix we could try to launch our game with your wineprefix.

I was unable to bypass the IGameClient error when I installed Squad's public testing client yesterday. My normal Squad game still continues to work. So I compared the hash sums of some of the EAC files between normal and public testing Squad prefix, and I noticed that the public testing prefix was missing these two entirely:

pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac
pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac.metadata

I have a recollection from earlier that EAC seems to download these during install and/or startup. So I thought maybe if I just copy these over to the public testing prefix and see what happens... it worked. EAC starts up again.

I'm attaching a tarball that contains these two files (with the full path as above). Maybe it works in other Squad prefixes too.

easyanticheat_wine_x64.tar.gz

NGGJamie commented 4 years ago

@imaami if you'd send your wineprefix we could try to launch our game with your wineprefix.

I was unable to bypass the IGameClient error when I installed Squad's public testing client yesterday. My normal Squad game still continues to work. So I compared the hash sums of some of the EAC files between normal and public testing Squad prefix, and I noticed that the public testing prefix was missing these two entirely:

pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac
pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac.metadata

I have a recollection from earlier that EAC seems to download these during install and/or startup. So I thought maybe if I just copy these over to the public testing prefix and see what happens... it worked. EAC starts up again.

I'm attaching a tarball that contains these two files (with the full path as above). Maybe it works in other Squad prefixes too.

easyanticheat_wine_x64.tar.gz

Placing these files in the directory specified didn't change anything for my client. However, they did cause me to stumble upon the loader.log file in the same directory, which may provide a clue as to why my client in particular may be failing to load. Here is a uniq'd version of my loader.log, with the uuids in the URLs clipped out since I don't know anything about their use.

[2020.06.27-00.37.23] Loader initialized.
[2020.06.27-00.37.23] [Connection] Connecting to URL: https://download.eac-cdn.com/api/v1/games/55/client/wine64/download/?uuid=(uuidhere)
[2020.06.27-00.37.23] Download Progress: 0%.
[2020.06.27-00.37.23] [Connection] Connect result: No error (0) Response Code: 200 Destination IP: 13.226.205.101
[2020.06.27-00.37.23] [HTTP Error Response] HTTP Response Code: 200 Curl Code: 0.
[2020.06.27-00.37.23] Falling back to a secondary CDN path.
[2020.06.27-00.37.23] [Connection] Connecting to URL: https://download-alt.easyanticheat.net/api/v1/games/55/client/wine64/download/?uuid=(uuidhere)
[2020.06.27-00.37.23] Download Progress: 0%.
[2020.06.27-00.37.23] [Connection] Connect result: SSL connect error (35) Response Code: 0 Destination IP: 172.67.156.223
[2020.06.27-00.37.23] Connection to the Content Distribution Network failed! Curl Code: 35.
[2020.06.27-00.37.23] [EAC Callback] Code 914. Message: ''.

EAC is attempting to download something from their CDN, getting a 200 response, but then failing anyway. Then falling back to the alternative CDN, but failing due to an SSL error. Replicating the exact URL call in my terminal doesn't provide me with any downloaded data, but connects successfully without errors. I'd be interested in seeing if your loader.log provides different output given its success.

This leads me to potentially believe that installed packages could influence whether the game works or not? Alternatively, maybe EAC attempts to use a different SSL certificate/method than a traditional request that causes it to fail more frequently? I honestly can't really tell, but I think this could possibly be a hint to solving the issue.

LevitatingBusinessMan commented 4 years ago

@NGGJamie, yesterday I noticed that same file. There's actually a similar log file somewhere near that location, which shows the same curl 35 error as well. It means the SSL handshake wasn't successful. I didn't report it here yet because I first wanted to check if @imaami had the same logs in his prefix.

LevitatingBusinessMan commented 4 years ago

I loaded those files into my prefix and they immediately got deleted. The other log file I mentioned is pfx/drive_c/users/steamuser/Application\ Data/EasyAntiCheat/gamelauncher.log.

Although this time that log did not show any errors, which could be a clue. The other loader.log file however did show logs.

When I restarted the game gamelauncher.log reported

[Info] [LauncherFinished] EACAsyncResult: 3 Message: 'Connection to the Content Distribution Network failed! Curl Code: 35.'.
[Err!] [Network Error] CDN connection failed!

again.

I did another check just to be sure, and again when using @imaami's files, the gamerlauncher.log showed:

[Info] [LauncherFinished] EACAsyncResult: 0 Message: 'Easy Anti-Cheat successfully loaded in-game'.
[Info] Unloading the EasyAntiCheat library.

Hypothesis: EAC tries to download some binary file, the HTTP request is successful but closes without single a single bit of data send. So it assumes the request failed, logs it as an error and uses the fallback CDN, which frankly just doesn't work.

The CDN returns content-type: application/octet-stream but content-length: 0

The alternative CDN behaves the same for me.

I am curious what the purpose of the UUID is and how it is defined. It seems to work fine without but maybe that's the issue.

Edit: I think I might be onto something. I read a couple of threads about this endpoint, and how it has caused the exact same issue in multiple games. Replacing wine64 with win64 makes the config download correctly. @imaami probably already has that config downloaded correctly. And somebody already mentioned that the game become unplayable around at the time when wine related strings started appearing in the EAC dll.

imaami commented 4 years ago

OK, this is such a weird mess. I have the exact same errors in my loader.log. Both normal Squad and public testing version have the same. Full log from last night with UUIDs and repeating lines removed:

[2020.06.27-02.23.54] Loader initialized.
[2020.06.27-02.23.54] [Connection] Connecting to URL: https://download.eac-cdn.com/api/v1/games/55/client/wine64/download/?uuid=(...)
[2020.06.27-02.23.54] Download Progress: 0%.
(...)
[2020.06.27-02.23.54] Download Progress: 0%.
[2020.06.27-02.23.54] [Connection] Connect result: No error (0) Response Code: 200 Destination IP: 13.33.242.102
[2020.06.27-02.23.54] [HTTP Error Response] HTTP Response Code: 200 Curl Code: 0.
[2020.06.27-02.23.54] Falling back to a secondary CDN path.
[2020.06.27-02.23.54] [Connection] Connecting to URL: https://download-alt.easyanticheat.net/api/v1/games/55/client/wine64/download/?uuid=(...)
[2020.06.27-02.23.54] Download Progress: 0%.
(...)
[2020.06.27-02.23.54] Download Progress: 0%.
[2020.06.27-02.23.54] [Connection] Connect result: SSL connect error (35) Response Code: 0 Destination IP: 104.28.3.249
[2020.06.27-02.23.54] Connection to the Content Distribution Network failed! Curl Code: 35.
[2020.06.27-02.23.54] [EAC Callback] Code 914. Message: ''.

Yet I still have the easyanticheat_wine_x64.eac and easyanticheat_wine_x64.eac.metadata files, and the game works.

LevitatingBusinessMan commented 4 years ago

@imaami could you download https://download.eac-cdn.com/api/v1/games/55/client/win64/download (win64 instead of wine64) and check if a file with the same md5sum is in your prefix?

imaami commented 4 years ago

Edit: I think I might be onto something. I read a couple of threads about this endpoint, and how it has caused the exact same issue in multiple games. Replacing wine64 with win64 makes the config download correctly. @imaami probably already has that config downloaded correctly. And somebody already mentioned that the game become unplayable around at the time when wine related strings started appearing in the EAC dll.

I read about this as well, and I also tried downloading manually from the different types of URLs (win{,e}{32,64}). With a normal command line curl or wget the wine{32,64} downloads succeed, but the file length is 0. With win{32,64} the downloads succeed, and the files are 2-3 megabytes of data.

The strange thing here is that the file I have (and have had since March) - easyanticheat_wine_x64.eac - is a different size than either of the win{32,64} files. It's clearly an actual Wine-enabled client file. And I do remember that I've downloaded it manually before when looking into EAC. But at least right now the EAC server returns an empty file.

Also, you said that the files got deleted when you put them there manually. My files seem to have their modify date updated on every launch, but they're not deleted, and they also don't seem to get re-downloaded (?) because I also get the SSL error in loader.log.

Anyway, I think I need to run some tests to verify that my observations are correct.

LevitatingBusinessMan commented 4 years ago

@imaami I am heading off right now, but I recommend trying to use a proxy (burp, zap) to change the outgoing request, or redirect their domain (/etc/hosts) to a server of your own where you host the win64 version.

imaami commented 4 years ago

No, the win64 download isn't the same file. It's got a different size and hash sum (of course).

I haven't tried it yet, but I think the win64 download is not going to work here. It's likely the normal, non-wine-enabled client file, and will fail because of the whole kernel driver mess.

Here's a short script I wrote for downloading all 4 permutations of win{,e}{32,64} and showing the results:

#!/bin/bash

urlbase='https://download.eac-cdn.com/api/v1/games/55/client'

tmpuuid="$(uuidgen)" || exit $?

rm -vf sha1sums win{,e}{32,64}.{log,out} >&2

for w in win{,e}{32,64}; do
  url="$urlbase/$w/download/?uuid=$tmpuuid"
  echo "fetching $url" >&2
  curl -v -o "$w.out" "$url" > "$w.log" 2>&1
  echo " ==== return value: $? ====" >> "$w.log"
done

ls -l win{,e}{32,64}.out >&2
sha1sum win{,e}{32,64}.out | tee sha1sums >&2

Output from one run:

fetching https://download.eac-cdn.com/api/v1/games/55/client/win32/download/?uuid=df7b8f11-9228-4a95-b8f1-dca8ceb64eba
fetching https://download.eac-cdn.com/api/v1/games/55/client/win64/download/?uuid=df7b8f11-9228-4a95-b8f1-dca8ceb64eba
fetching https://download.eac-cdn.com/api/v1/games/55/client/wine32/download/?uuid=df7b8f11-9228-4a95-b8f1-dca8ceb64eba
fetching https://download.eac-cdn.com/api/v1/games/55/client/wine64/download/?uuid=df7b8f11-9228-4a95-b8f1-dca8ceb64eba
-rw-r--r-- 1 imaami imaami 1552496 Jun 27 14:52 win32.out
-rw-r--r-- 1 imaami imaami 2732656 Jun 27 14:52 win64.out
-rw-r--r-- 1 imaami imaami       0 Jun 27 14:52 wine32.out
-rw-r--r-- 1 imaami imaami       0 Jun 27 14:52 wine64.out
02d91b86d6c29197361236b2b7275ebd1c0c82be  win32.out
24df1e2853b8908692504b87d7f1fd9124a7bd62  win64.out
da39a3ee5e6b4b0d3255bfef95601890afd80709  wine32.out
da39a3ee5e6b4b0d3255bfef95601890afd80709  wine64.out
imaami commented 4 years ago

@imaami I am heading off right now, but I recommend trying to use a proxy (burp, zap) to change the outgoing request, or redirect their domain (/etc/hosts) to a server of your own where you host the win64 version.

Like I said I don't think forcing EAC to download the actual win64 binary (instead of the wine64 one) would work. It probably just means you'd be in the same situation as all the games that don't even use a Wine-enabled EAC build. It would try to load the Windows kernel driver and fail.

The wine64 files I have in my prefix aren't the same files as the win64 or win32 ones, they're clearly meant for Wine.

Also, I'm pretty sure trying to man-in-the-middle the EAC server would also fail due to SSL certificate error.

LevitatingBusinessMan commented 4 years ago

@imaami, you're right. So really our goal should be to obtain the wine64 download. Can't you send that file? I am curious if the uuid means that it will only work for 1 client. Can you check if the md5sum is different when you change the uuid it's requested with?

imaami commented 4 years ago

@imaami, you're right. So really our goal should be to obtain the wine64 download. Can't you send that file? I am curious if the uuid means that it will only work for 1 client. Can you check if the md5sum is different when you change the uuid it's requested with?

I did already send it, it's the tarball I attached earlier: https://github.com/ValveSoftware/Proton/files/4839724/easyanticheat_wine_x64.tar.gz

The UUID doesn't seem to matter, it's always the same file.

imaami commented 4 years ago

To be absolutely clear: this file:

pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac

is downloaded from https://download.eac-cdn.com/api/v1/games/55/client/wine64/download/?uuid=... when things work. I don't know why downloading from that URL now gives a zero-length file.

BRMateus2 commented 4 years ago

I get about the same error as @aCeTotal. It's weird that it calls my Windows version 6.1


GameID: 55 (32bit)
Windows Version: 6.1 (Build 7601)

"Windows" (NT) 6.1 is the internal Windows family version, equivalent to "Win 7", which means Wine is running with Win 7 specifications. NT 6.2 is Win 8, NT 6.3 is Win 8.1 and NT 10 is Win 10. NT means "New technology" which maybe is valid lol.

imaami commented 4 years ago

I ran a little test. I moved these files out of the prefix (took a backup of them and deleted the originals):

pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac
pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac.metadata

Then I launched Squad. I got the IGameClient error.

I closed the game and confirmed that there were no new files in pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/. There was only the loader.log there as I expected. The logfile has the SSL handshake error, just like before.

Then I copied the files back to the original location inside the prefix and launched the game. No IGameClient error, Squad started normally.

After this second launch the loader.log still looks exactly the same - same SSL errors, and the download attempt seems to fail. easyanticheat_wine_x64.eac and easyanticheat_wine_x64.eac.metadata were still in place after the second launch, so they were not deleted. Their hash sums were identical to before, so their content is not modified, either.

I can only conclude that easyanticheat_wine_x64.eac and easyanticheat_wine_x64.eac.metadata are necessary for EAC to launch, and if they're missing you'll get the IGameClient error.

For some reason EAC has successfully downloaded these files before when launched with Proton 4.11 (or my Proton-i 4.13 build). That's why I have them in my prefix. Maybe the reason why the download fails for everyone now is that EAC have simply removed the file from the download location.

Maybe the EAC server has some short-lived UUID whitelist system, and it will actually send the correct file if it's given an UUID parameter that it's expecting to see within some short time window. Then again why would the server happily send out the file through the win64 URL even if the UUID is empty, but the wine64 URL behaves differently? God damn this freaking mess.

imaami commented 4 years ago

I know this is useless and I'm not expecting a response, but: https://twitter.com/JuusoAlasuutari/status/1276939752328040450

LevitatingBusinessMan commented 4 years ago

@imaami I didn't realize that the downloaded file was the .eac file from ealier.

Is it normal for my prefix to be win7? Anyway I'll do some more testing.

sticsk commented 4 years ago

Can someone get on PoP! Os? I know someone who can run the game with no issues, through Proton, maybe we can figure it out, if you can't , I can install it on an external HDD in a week, but idk what to test and share with you so I need your help.

Inexorabilis commented 4 years ago

This also might be interesting, after running protontricks-flat 393380 hidewineexports=enable the download path changes from https://download.eac-cdn.com/api/v1/games/55/client/wine64/download/?uuid= to https://download.eac-cdn.com/api/v1/games/55/client/wow64_win64/download/?uuid=

Also the download runs to 100% and then fails

[2020.06.27-19.15.00] Loader initialized. [2020.06.27-19.15.00] [Connection] Connecting to URL: https://download.eac-cdn.com/api/v1/games/55/client/wow64_win64/download/?uuid=xxxxxxx [2020.06.27-19.15.00] Download Progress: 0%. ... (Removed around 700 Lines of Download Progress) [2020.06.27-19.15.00] Download Progress: 100%. [2020.06.27-19.15.00] [Connection] Connect result: No error (0) Response Code: 200 Destination IP: 13.224.198.70 [2020.06.27-19.15.00] Download Progress: 100%.

LevitatingBusinessMan commented 4 years ago

@Inexorabilis that's super interesting, what was your total behavior? Did you get the IGameClient issue? Or did you get the same issue me as and aCeTotal, where the EAC launcher itself returned an error? Did the easyanticheat_*_x64.eac file download?

Inexorabilis commented 4 years ago

Starting Squad with those settings, you see the EAC Splash including the loading bar. After running through, a bug report window will open, stating "Errorcode: 30005 (StartService failed with 1053)

More details is showing the following

GameID: 55 (32bit) Windows Version: 10.0 (Build 17134) Error Code: 30005 Process Exit Code: 0h UUID:xxxxxxxxxxxxxx Processes list: explorer.exe plugplay.exe services.exe squad_launcher.exe steam.exe winedevice.exe

If you click on check for solutions online, you'll get directed to https://www.easy.ac/en-us/support/game/issues/errors/

LevitatingBusinessMan commented 4 years ago

That matches the previous errors we had with hidewineexports. What's in your pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55 folder?

Inexorabilis commented 4 years ago

Sadly nothing more than the loader.log

LevitatingBusinessMan commented 4 years ago

I tested it myself with @imaami's .eac files in the prefix. launcher.log showed no errors

[2020.06.27-20.34.31] [Connection] Connect result: No error (0) Response Code: 200 Destination IP: 99.86.109.7
[2020.06.27-20.34.31] Download Progress: 100%.

The downloaded(?) files I found were not different from the ones I already had there.

@imaami If you'd shoot an email you'd have more chance.

Edit: so yes with hidewinexports enabled I just don't see any downloaded files.

LevitatingBusinessMan commented 4 years ago

Maybe the reason why the download fails for everyone now is that EAC have simply removed the file from the download location.

All of these files are game specific, so for some reason the wine enable download for Squad got removed. It's possible that this is by the choice developers, I'll shoot them an email.

LevitatingBusinessMan commented 4 years ago

I think this is a pretty interesting post: https://reddit.com/r/linux_gaming/comments/ao3au6/some_interesting_notes_about_eac_error_in_apex/

It covers the same issue but with Apex. They looked into trying to run the game with a wine64 download from different games. A lot of people from a bunch of forums I've been reading on think that developers simply have the possibility to support wine, and that squad just toggled if off at some point. If this is true, I am curious how many popular EAC games can't be played on Linux simply because the developers don't allow it. Though I doubt it's that easy.

LevitatingBusinessMan commented 4 years ago

@imaami Are you comfortable with sharing your whole wineprefix? I am wondering how it's possible for the old binaries to work on your machine but not on mine.

imaami commented 4 years ago

@imaami Are you comfortable with sharing your whole wineprefix? I am wondering how it's possible for the old binaries to work on your machine but not on mine.

I'll try to look into it tomorrow, I'll probably need to prune something out before sharing. From the registry or something.

That reminds me: taking a closer look at the registry might reveal something new about this issue generally.

LevitatingBusinessMan commented 4 years ago

@imaami Are you comfortable with sharing your whole wineprefix? I am wondering how it's possible for the old binaries to work on your machine but not on mine.

I'll try to look into it tomorrow, I'll probably need to prune something out before sharing. From the registry or something.

That reminds me: taking a closer look at the registry might reveal something new about this issue generally.

Feel free to send the prefix to me in private first, no point in risking leaking sensitive information for a solution that might not work.

I could take a look at the registry but I am not sure what I'd be looking for.

Edit: I made this reddit post yesterday: https://www.reddit.com/r/joinsquad/comments/hgzgnb/squad_via_wineproton_why_did_it_stop_working_will/ Hoping we could maybe get a statement from a developer. But I think the dev which used to respond to these kinds of threads doesn't work at the company anymore.

imaami commented 4 years ago

Posting a script I wrote for scraping EAC downloads. It tries the download URLs of game IDs in sequence to see which IDs have a wine64 binary available. It prints out and logs the results, and also saves every successful download larger than 0 bytes.

Game IDs that return "Access Denied" are not printed; game IDs with a zero-length download are printed but the download is not saved (of course because they would be 0 bytes every time). It's interesting that "Access Denied" and zero-length download are distinct categories of results; I guess access denied means the game ID doesn't exist or is not in use at all, and the zero-length ones are valid game IDs without Wine support.

There are still game IDs which return a valid binary download. Interestingly only very few have a binary that is larger than some hundreds of kilobytes.

The first and last game ID are set to 1 and 500, respectively; you can change them by modifying the from_id and upto_id vars.

#!/bin/bash

from_id=1
upto_id=500

urlhead='https://download.eac-cdn.com/api/v1/games'
urltail="client/wine64/download/?uuid=$(uuidgen)" || exit $?

# printf format specifier for zero-padding game id
id_fmt0="%0${#upto_id}d"

logfile=$(printf "eac-games-$id_fmt0-to-$id_fmt0.log" "$from_id" "$upto_id")
tmpfile='/dev/shm/eac.bin'

rm -f "$tmpfile"

{
  echo -e ' game id\t dl size\tsaved as'
  echo -e ' -------\t -------\t--------'

  for ((i = from_id; i <= upto_id; i++)); do
    url="$urlhead/$i/$urltail"

    if curl -o "$tmpfile" "$url" 2>/dev/null &&
       len=$(stat -c %s "$tmpfile"); then

      if (( len > 0 )); then
        [[ "$(head -c5 "$tmpfile")" == '<?xml' ]] \
        && grep -i -q 'Access Denied' "$tmpfile"  \
        && {
          rm -f "$tmpfile"
          continue
        }

        dst=$(printf "eac-game-$id_fmt0.bin" "$i")
        mv "$tmpfile" "$dst"
        dst=$'\t'"$dst"

      else
        dst=''
      fi

      printf "%8d\t%8d$dst\n" "$i" "$len"
    fi

    rm -f "$tmpfile"

  done;
} | tee "$logfile"
LevitatingBusinessMan commented 4 years ago

@imaami I think you might've over-engineered your script a little. You could've just used the HEAD method, to check the content-length and the content-type variable.

Anyway what were the results? And did you already try altering the dll to use a different url?

imaami commented 4 years ago

@imaami I think you might've over-engineered your script a little. You could've just used the HEAD method, to check the content-length and the content-type variable.

Sure, but the point is to also download the file, so an extra curl command just to check the size would add complexity.

Anyway what were the results?

I summarized the results already, I don't understand the question.

I can post the output later today, but you can run the script yourself too. It doesn't take long to check all 500 game IDs.

And did you already try altering the dll to use a different url?

I already know that would accomplish nothing. At best it would download the normal Windows EAC binary, and it wouldn't work. Worst case scenario is I would get flagged by a hash check and autobanned.

The EAC server doesn't serve a binary to wine64 clients, we can't change that. We can try to figure out why your prefix doesn't work even with the binary from my prefix.

LevitatingBusinessMan commented 4 years ago

I made a ticket at Offworld Industries, and I got this reply:

Hello Rein, Thank you for the info, I forwarded it onto our contact at EAC. Please keep in mind Squad does not support Linux and we do not advertise that we support it. Squad also does not develop Easy Anti Cheat, we merely license it.

I have sent this off to EAC, this would be something on their end to look into.

MAD-BUG commented 4 years ago

Beta 20 start working again with Proton 5.9 GE and hidewineexports for me. But there still no files in Application Data. And there are log errors for anticheat: [Info] [LauncherFinished] EACAsyncResult: 3 Message: 'Connection to the Content Distribution Network failed! Curl Code: 35.'. [Err!] [Network Error] CDN connection failed! [Info] [LauncherFinished] EACAsyncResult: 0 Message: ' But i don't get an iclient error and can join official servers. I wonder if there is a failsafe mechanism that will allow to play in such state for a limited time.

LevitatingBusinessMan commented 4 years ago

@MAD-BUG It didn't work for me, I didn't try hidewineexports however. I did try a new prefix.

Anyway I'll do some testing, glad to see I wasn't the only one that immediately started trying to run it again with the new update.

LevitatingBusinessMan commented 4 years ago

The game worked! My launcher.log also still showed exactly the same errors, which is as expected because I checked the wine64 endpoint before and it was still showing the content-length as 0. I also don't have the .eac files.

Maybe we were wrong about thinking that was the origin of the issue??

Anyway I am soooo happy to finally be able to play this game, and wanted this game for ages and when it finally got another sale I was quite disappointed with it not working.

Massive thanks @MAD-BUG @imaami

Edit: I did notice that the whole game freezes in the tutorial as soon as you get to the kit role station.

Edit 2: I have also been having some major performance issues, sometimes it works flawlessly, sometimes I can't get over 20 fps

Edit 3: I just had a game where I barely had 50 fps on low settings, I switched to medium to see what would happen, I got 8 fps, then I switched back to low, and I got no more than 20 fps again. Than an A10 flew over and my game just crashed and closed.