ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.14k stars 1.05k 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/

imaami commented 4 years ago

@MAD-BUG @LevitatingBusinessMan

So how about new prefix, .eac files, edit TMP and TEMP in the registry, and also create the renamed temp dir? That might tell us whether TEMP being a non-existent path is crucial.

LevitatingBusinessMan commented 4 years ago

@imaami the directory has to be non-existent.

ipimpat commented 4 years ago

@kisak-valve Here is a log file regarding the sudden FPS drop issue.

I played for a while before FPS dropped, if there's anything in the log it's probably near the end

https://easyupload.io/kd3tdn (link is active for 30 days)

LevitatingBusinessMan commented 4 years ago

@ipimpat when did your FPS drop?

I have encountered FPS drops when changing graphics settings mid-game, and when loading a new map. Although the latter stopped happening a while ago and I have not had a single performance issue since.

ipimpat commented 4 years ago

@LevitatingBusinessMan mid-game while playing.

It happens quite frequently to me, this time I had logging enabled tho.

Byter09 commented 4 years ago

I wanted to try out the above instructions to see if I can get Squad working again.

I have a new SSD, have not copied my home directory or anything. Completely new and clean Manjaro installation. System still crashes as soon I click OK on the error and let it load. Same thing when I kill the process. So I can't even complete step 3.

I don't want to interrupt the progress in here with my problem though, so I'll continue to lurk. You guys rock.

ipimpat commented 4 years ago

@Byter09 try to add PROTON_LOG=1 %command% to the game's launch options in Steam, and then check the log file created in your home directory, to see if there is any obvious reason why the game won't start at all.

LevitatingBusinessMan commented 4 years ago

@Byter09, right, you said "when I click OK on the error", I assume you are talking about a popup from EAC? Is there also a "show more details" button you can click? You didn't mess with protontricks or winetricks right? What step are you referring to as step 3?

Byter09 commented 4 years ago

Steps for me to reproduce this issue:

Works as well:

Haven't tested what happens when I kill the process manually, as I don't really like to torture my system like this. If it gives helpful insight, I can do it however.

steam-393380.zip

Haven't looked at it because I really don't understand most of the stuff in there. (EDIT: Just had a look at the end. No, the file is not cut off. That's just my system dying while writing the file.)

@LevitatingBusinessMan There is no "Show more details" button. And that is a fresh prefix so no proton- or winetricks.

brndd commented 4 years ago

Tested out the instructions by @ipimpat above, but no luck -- getting the EAC initialization error (Failed to initialize IGameClient something something). Never ran or installed the game before on Linux, using Fedora 32 and Proton 5.0-9.

I followed the instructions to a T, but noticed that after step 3 the game didn't close properly, a squad_l.exe (or something along those lines) process lingered. I only noticed this after I did the rest of the steps, so that could have messed the voodoo up. Starting from scratch by deleting the prefix and re-following the instructions didn't help either though.

LevitatingBusinessMan commented 4 years ago

@brndd The squad_launcher.exe seems to hang, it shouldn't affect anything. It's weird that some of you guys are still having issues.

ipimpat commented 4 years ago

@brndd just to be clear, what exactly happens, the second time you start Squad, EAC error ?

And can you also upload a log file (see: https://github.com/ValveSoftware/Proton/issues/938#issuecomment-653909978)

brndd commented 4 years ago

@ipimpat

@brndd just to be clear, what exactly happens, the second time you start Squad, EAC error ?

Yeah, the "Failed to create IGameClient instance" error, coupled with EAC not working.

Here's a logfile (and be cautioned, this decompresses into a 153 MiB file): steam-393380.log.zip

I found some logs in the EAC directory within the prefix and they had something about trying to download a file off an EAC CDN and the download timing out. Not sure if that's supposed to happen or not; I saw some discussion above where the download was apparently successful.

brndd commented 4 years ago

OK, I figured it out. The EAC files linked by @imaami were getting deleted somehow, perhaps by EAC. chmod a-w easyanticheat_wine_x64.eac* did the trick. The game is now launching without the error and I could join EAC-enabled servers fine. Tested it twice to confirm (and I can also confirm the weird user.reg patching is necessary).

Might want to add that to the instructions up there.

ryao commented 4 years ago

The curl error is the same issue affecting paladins:

https://github.com/ValveSoftware/Proton/issues/1787#issuecomment-655289213

Basically, Proton has a patch for compatibility with Sword Art Online Fatal Bullet that renders EAC unable to communicate with its CDN. Reverting the patch fixes it, but fails to make squad work because there are no files on the CDN.

DrymarchonShaun commented 4 years ago

Figured i would put this out there, i have gotten into a few servers fine, steam is suggesting i have 90 fps, but i'm stuttering really badly, and i cannot hear anyone on voip, while all other audio is working fine. EDIT: also getting a error about corrupt files, i tried verifying files but all it did was reset the EAC fixes.

antimech commented 4 years ago

Guys, currently I have Windows with GPU passthrough installed, let me know if you need help by the end of the week.

zaggynl commented 4 years ago

OK, I figured it out. The EAC files linked by @imaami were getting deleted somehow, perhaps by EAC. chmod a-w easyanticheat_wine_x64.eac* did the trick. The game is now launching without the error and I could join EAC-enabled servers fine. Tested it twice to confirm (and I can also confirm the weird user.reg patching is necessary).

Might want to add that to the instructions up there.

Good find!

Current instructions copied for reference: Copied from: https://github.com/ValveSoftware/Proton/issues/938#issuecomment-652620750 and https://github.com/ValveSoftware/Proton/issues/938#issuecomment-655251523 Assuming Squad already installed. Disclaimer: this may or may not get you EAC kicked/banned, use at your own risk!

Download some magic EAC files and extract them into the game's Proton prefix:

More EAC trickery

I gave this a test run and Squad is working, have played one round without issues, can anyone else try to confirm?

imaami commented 4 years ago

The curl error is the same issue affecting paladins:

#1787 (comment)

Basically, Proton has a patch for compatibility with Sword Art Online Fatal Bullet that renders EAC unable to communicate with its CDN. Reverting the patch fixes it, but fails to make squad work because there are no files on the CDN.

Adding details that me and @ryao just discussed on Discord: reverting the patch does not make EAC work in Paladins, it merely allows Paladins to launch, but multiplayer will still fail from EAC not working. Paladins doesn't appear to ship a Wine-enabled EAC build at all, so it's not comparable to Squad in that respect.

DrymarchonShaun commented 4 years ago

@zaggynl as i posted previously, yes, it runs and i can join servers, but they have issues; Really bad stuttering on the map I played on, and after that round i'm getting a error about corrupt files, i tried verifying files but all it did was reset the EAC fixes.

brndd commented 4 years ago

@ShaunTheQuietGamer if you're having stuttering issues despite nominally good FPS, make sure your desktop compositing is disabled. On KDE the default hotkey to toggle this is Alt+Shift+F12. If you're using some other DE, Google will no doubt help you.

zaggynl commented 4 years ago

@zaggynl as i posted previously, yes, it runs and i can join servers, but they have issues; Really bad stuttering on the map I played on, and after that round i'm getting a error about corrupt files, i tried verifying files but all it did was reset the EAC fixes.

Haven't seen that before, sounds like a dying disk? Obviously tried lowering settings? What does the error message look like?

LevitatingBusinessMan commented 4 years ago

@ShaunTheQuietGamer things to watch out for: changing graphics settings can while inside a server can ruin performance till you restart the game. After a map change the game can show similar performance issues, so when a server changes map you may need to restart the game also.

Can you show us that error about the certain files getting corrupted? Next time when you get corrupted files and have steam fix it, run a tool that can check what files changed.

DrymarchonShaun commented 4 years ago

I will screenshot it the next time i get it; its somewhat unpredictable, My current thought is that it may be an issue with that specific layer. When steam verified the files, it said that everything was fine, (granted, it did change the eac files, so i'll check next time.) the error looked similar to the EAC error; just a generic Unreal Engine error. (separate note, disabling compositing seemed to help with the stuttering.) Edit: testing some more right now, my fps drops to 20 when sighting in on rifles with 4x zoom, but not binoculars.

Izaic commented 4 years ago

OK, I figured it out. The EAC files linked by @imaami were getting deleted somehow, perhaps by EAC. chmod a-w easyanticheat_wine_x64.eac* did the trick. The game is now launching without the error and I could join EAC-enabled servers fine. Tested it twice to confirm (and I can also confirm the weird user.reg patching is necessary). Might want to add that to the instructions up there.

Good find!

Current instructions copied for reference: Copied from: #938 (comment) and #938 (comment) Assuming Squad already installed. Disclaimer: this may or may not get you EAC kicked/banned, use at your own risk!

* kill any remaining Squad processes (pkill squad_launcher. or use your favorite task manager equivalent)

* GAME_LIBRARY_PATH=$HOME/.local/share/Steam (Find the path to your steam library and set it)

* rm -r $GAME_LIBRARY_PATH/steamapps/compatdata/393380 (Remove the old prefix if any)

* start Squad from steam

* press OK on EAC error

* exit Squad and kill any remaining squad processes (pkill squad_launcher. or use your favorite task manager equivalent)

Download some magic EAC files and extract them into the game's Proton prefix:

* wget -qO- https://github.com/ValveSoftware/Proton/files/4839724/easyanticheat_wine_x64.tar.gz | tar xvfz - -C $GAME_LIBRARY_PATH/steamapps/compatdata/393380

More EAC trickery

* sed -i 's/"TEMP"="C:\\users\\steamuser\\Temp"/"TEMP"="C:\\users\\vagrant\\Temp"/g' $GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/user.reg (change temp path to none existing folder)

* sed -i 's/"TMP"="C:\\users\\steamuser\\Temp"/"TMP"="C:\\users\\vagrant\\Temp"/g' $GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/user.reg (change tmp path to none existing folder)

* chmod a-w "$GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/"* (Make the EAC files read only so they won't get removed)

I gave this a test run and Squad is working, have played one round without issues, can anyone else try to confirm?

LogEasyAntiCheatServer: Warning: Failed to locate EasyAntiCheat server library eac_server64.dll LogEasyAntiCheatClient: Error: Failed to create IGameClient instance!

Does someone have this file so i can try copying it into my prefix to fix this?

brndd commented 4 years ago

@Izaic I'm pretty sure that eac_server64.dll warning is supposed to be there. I don't have that DLL either and was getting that error as well. It's probably only needed for hosting servers.

Make sure you did all the steps correctly and that the easyanticheat_wine_x64.eac and easyanticheat_wine_x64.eac.metadata files are still where they should be in your prefix and are readable but not writable.

eleksaggr commented 4 years ago

I couldn't get the workaround to run at first. For some reason the sed commands did not actually change the paths in user.reg.

So if this isn't working for somebody, try changing the paths by in user.reg by hand.

MAD-BUG commented 4 years ago

There is no actual need in modifying reg file. You can just delete Temp folder of steamuser. In the end it only contains log files and deleting folder is more fail proof method rather than changing path by using sed in file that can drastically change from time to time.

LevitatingBusinessMan commented 4 years ago

@MAD-BUG that requires that the Temp folder doesn't get created again at some point.

There's no way that the sed command can fail, as long as you just find the line starting with Temp= (or Tmp=), and replace it with Temp=/whatever

brndd commented 4 years ago

Perhaps removing read and write permissions from the temp folder would be better than messing with the .reg file.

greymood09 commented 4 years ago

Can confirm the workaround.

I did simple version of the workaround: 1) Download EAC files, put them in the folder, chmod 444 on them. 2) chmod a-rw on Temp folder in .../steamuser/Temp

Works fine, currently in a server playing.

AllizomFoxfire commented 4 years ago

OK, I figured it out. The EAC files linked by @imaami were getting deleted somehow, perhaps by EAC. chmod a-w easyanticheat_wine_x64.eac* did the trick. The game is now launching without the error and I could join EAC-enabled servers fine. Tested it twice to confirm (and I can also confirm the weird user.reg patching is necessary). Might want to add that to the instructions up there.

Good find!

Current instructions copied for reference: Copied from: #938 (comment) and #938 (comment) Assuming Squad already installed. Disclaimer: this may or may not get you EAC kicked/banned, use at your own risk!

  • kill any remaining Squad processes (pkill squad_launcher. or use your favorite task manager equivalent)
  • GAME_LIBRARY_PATH=$HOME/.local/share/Steam (Find the path to your steam library and set it)
  • rm -r $GAME_LIBRARY_PATH/steamapps/compatdata/393380 (Remove the old prefix if any)
  • start Squad from steam
  • press OK on EAC error
  • exit Squad and kill any remaining squad processes (pkill squad_launcher. or use your favorite task manager equivalent)

Download some magic EAC files and extract them into the game's Proton prefix:

More EAC trickery

  • sed -i 's/"TEMP"="C:\users\steamuser\Temp"/"TEMP"="C:\users\vagrant\Temp"/g' $GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/user.reg (change temp path to none existing folder)
  • sed -i 's/"TMP"="C:\users\steamuser\Temp"/"TMP"="C:\users\vagrant\Temp"/g' $GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/user.reg (change tmp path to none existing folder)
  • chmod a-w "$GAME_LIBRARY_PATH/steamapps/compatdata/393380/pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/"* (Make the EAC files read only so they won't get removed)

I gave this a test run and Squad is working, have played one round without issues, can anyone else try to confirm?

Would any of this be useful in games that use EAC that are not Squad? IE New World?

I'd hate to get my ass banned from a game in its pre-release =)

Inexorabilis commented 4 years ago

I've tried to apply this fix on Post Scriptum, but to do this we need the appropriate .eac files. So if anyone has Post Scriptum running if would be good if we can get the .eac files. I've already posted this in the Post Scriptum Issue here on git but got no reply.

ipimpat commented 4 years ago

I can confirm this "frame drop" issues also can happen in the middle of game.

I do restart the whole game after every match, but sometimes, the frame dropping issue still happens !

Anyone have any idea what might be causing it ?

avionar commented 4 years ago

Seems like it works out of the box again with 3.16-9 but not 4.11-13 or 5.0-9.

On 4.11-13 and 5.0-9, Steam still thinks the game is running after it exits because squad_launcher.exe never closes for some reason. I have to do a pkill squad_launcher to get Steam back to normal state. Maybe this is related to the need for the workaround above if that squad_launcher freezes before finishing whatever it needs to do? Wonder what changed in newer Proton versions versus 3.16 to cause it to freeze 🤔

LevitatingBusinessMan commented 4 years ago

I think we've all experienced similar issues with the launcher process not exiting on it's own. Can you confirm again that the game works out of the box with 3? So with a deleted prefix the game works with proton 3, but when you delete the prefix the game won't work correctly with proton 4 or 5.

avionar commented 4 years ago

Can you confirm again that the game works out of the box with 3? So with a deleted prefix the game works with proton 3, but when you delete the prefix the game won't work correctly with proton 4 or 5.

Correct. With 3 everything looks good, no error popups and no squad_launcher hang. With 4 I get the EasyAntiCheat Error: Failed to create IGameClient instance! popup, squad_launcher hangs and has to be killed. With 5 I get the curl issue mentioned above, no error popup but still squad_launcher hang.

imaami commented 4 years ago

Can you confirm again that the game works out of the box with 3? So with a deleted prefix the game works with proton 3, but when you delete the prefix the game won't work correctly with proton 4 or 5.

Correct. With 3 everything looks good, no error popups and no squad_launcher hang. With 4 I get the EasyAntiCheat Error: Failed to create IGameClient instance! popup, squad_launcher hangs and has to be killed. With 5 I get the curl issue mentioned above, no error popup but still squad_launcher hang.

Wait a minute, if you delete the prefix and start from scratch with Proton 3.16-9, does EAC work (so you can play on servers)? Does the .eac file get downloaded as well?

mironovil commented 4 years ago

Someone in the squad discord channel says that “Squad” is working again after the last update of the game. Can anyone check this?

imaami commented 4 years ago

Someone in the squad discord channel says that “Squad” is working again after the last update of the game. Can anyone check this?

Holy carp, it's true! There's a new wine64 EAC binary blob for Squad on the CDN!

$ /git/eac-tools/download.sh --from-id=55 --to-id=55
 game id         dl size        last modified (UTC)     download saved as
 -------         -------        -------------------     -----------------
      55         4168192        2020-08-04 07:20:02     eac-game-55-wine64.bin
$ ls -l eac-game-55-wine64.bin
-rw-r--r-- 1 imaami imaami 4168192 Aug  4 10:20 eac-game-55-wine64.bin
$ sha1sum eac-game-55-wine64.bin
d15d758603955ef224620d977684a0aae33fe193  eac-game-55-wine64.bin
Inexorabilis commented 4 years ago

Have tried it for myself as well. I've created a new Prefix using Proton-5.9-GE-4-ST. During Startup the old IGameClient Error came up, as well on the second start. However the .eac files have been downloaded. After changing the Temp Path in user.reg I was successfully able to start and play Squad online.

However we should monitor this for a few days. After the last update, Squad was working as well for a few days.

BRMateus2 commented 4 years ago

Can you upload the newest dated files below?

"~/.steam/steam/steamapps/compatdata/393380/pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac"
"~/.steam/steam/steamapps/compatdata/393380/pfx/drive_c/users/steamuser/Application Data/EasyAntiCheat/55/easyanticheat_wine_x64.eac.metadata"

Please, and many thanks.

I am asking because the old .eac files could be invalidated in the next days, or the server can stop providing those files again.

DrymarchonShaun commented 4 years ago

Here are your files, its working for me as well, strangely, i had to manually edit the user.reg file, sed wasn't working. Still getting lag after playing more than one round. Not sure if i misunderstood what you wanted for the file upload, if so, explain what you wanted.

squadeacfiles.zip

BRMateus2 commented 4 years ago

The EAC servers could stop uploading those .eac files, as those are supposedly newer version than the older .zip in this issue.

After every big update in Squad the EAC devs seems to test build for Linux, but after some time they simply remove the files (from the curl link).

Also, as it is possible they updated the .eac binary source code, the newer build might have newer features which will be imposed in the future, that's why we have to keep .eac files updated.

DrymarchonShaun commented 4 years ago

Thats what i figured, i wasn't sure if I uploaded it how you were wanting it.

mironovil commented 4 years ago

Finally. I started Squad and got an EAC error. I set "read only" to "steamapps/compatdata/393380/pfx/drive_c/users/steamuser/Temp" then the game works fine. What's wrong with "Temp"?

LevitatingBusinessMan commented 4 years ago

@imaami is it possible to watch the Temp folder for attempted reads and writes?

LevitatingBusinessMan commented 4 years ago

Also, can someone run a diff on the hexdump of both EAC files?

BRMateus2 commented 4 years ago

Also, can someone run a diff on the hexdump of both EAC files?

3977216 ./squadeacfiles-202007080000/easyanticheat_wine_x64.eac 4168192 ./squadeacfiles-202008040720/easyanticheat_wine_x64.eac

diff -u -E -Z -b -B -w --color -i ./easyanticheat_wine_x64.eac.hexdump.20200708.txt ./easyanticheat_wine_x64.eac.hexdump.20200804.txt >diff.txt

--- ./easyanticheat_wine_x64.eac.hexdump.20200708.txt 2020-08-07 09:49:41.164676257 -0300 +++ ./easyanticheat_wine_x64.eac.hexdump.20200804.txt 2020-08-07 09:50:10.294316927 -0300

The hexdumps alone are 11.931.656B for the older and 12.504.584B for the newer, the diff output has 23,8MB. Those files are way different, but both work for Squad Beta 21.0.1.49 - I think they have such a difference because of code obscuration and randomization.

LevitatingBusinessMan commented 4 years ago

Maybe they are encoded differently. @imaami would have to check.