ValveSoftware / Proton

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

Sins of a Solar Empire II (1575940) #7992

Open pdc4444 opened 1 month ago

pdc4444 commented 1 month ago

Compatibility Report

System Information

I confirm:

https://gist.github.com/pdc4444/9c0efe29cd83115a5c497bae6c047d2c

Symptoms

I cannot join a multiplayer game with my friend who was hosting a game via windows. I'm not sure if a Linux host would allow a Proton / Linux client to join, but from the dialog observed it looks like Sins has a processor architecture check which requires a match between server (game hoster) and client (game joiner).

Reproduction

1.) Have a buddy host a Sins of a solar empire II game who is playing via a Native Windows install 2.) Attempt to join your buddy's game on your linux pc running Sins of a Solar Empire II through proton 3.) Observe the error dialog

Screenshot from 2024-08-15 19-58-05

cswimr commented 1 month ago

+1 to this issue, apparently the check exists because of desync issues. Here's a forum thread from the Sins 2 forums that provides a bit more information: https://forums.sinsofasolarempire2.com/529788/
I've contacted the Sins 2 developers as well, and got the following response:

we do not support multiplayer between different architectures sorry (will go out of sync)

And I can confirm, this affects both joining and hosting lobbies.

image image

Just thought I'd provide a bit more information on this issue, as I'm also affected.

Leseratte10 commented 1 month ago

Looking at the error log posted in said forum (https://pastebin.com/MNw9tLe6), the desync happens due to a different "random_stream" value. Maybe the game is relying on the random number generator being exactly the same on both machines and there's some kind of one-off error in Wine that results in different random numbers?

But the dev's answer also sounds phishy. Windows and Linux with Wine aren't two different architectures. The architecture is exactly the same - amd64. The fact that they decided to display it as "amd64-wine" doesn't make it a different architecture.

LinLo commented 1 month ago

Hello,

I successfully played an entire game (more than 2hours) with a windows gamer and one AI. I used proton experimental and hosted the game, and my friend modified its settings.json to override the game_client platform_architecture to AMD64-WINE.

I made comments on steam community hub: https://steamcommunity.com/app/1575940/discussions/1/7026264603287932608/#c7026264603290039319

I Hope this can help.

zFERDQFREZrzfq commented 1 month ago

The issue here is that Wine's reimplementations of the Microsoft's Visual C runtime does not copy the behavior perfectly, so with some games like this ones where each players runs the whole simulation and sync only commands, these very small behavioral differences can cause missmatches.

Therefore : only wine players is ok, only windows is ok, but any mix cause desync sooner or later.

The devs probably tested and witnessed this and decided to isolate them.

The solution to install the official Microsoft's DLL from the redist package solves the issue, because by doing that, everyone have uses the same implementation : the Microsoft's one.

jseward commented 4 weeks ago

@zFERDQFREZrzfq is correct (I added the sandboxing for this reason)

chsjr1996 commented 3 weeks ago

Hello, I'm the author of SOAS forum post cited here, and using the Steam discussion link I was able to play multiplayer between Windows and Linux. Basically is needed run:

protontricks 1575940 winecfg

or winetricks

Go to 'Staging' then checks the 'Hide wine version from applications' option. Also is needed to run the script on Steam discussion's thread, that remove some "vc_redist" libs and reinstall correctly version from this links (VC Redist x64), (VC Redist x86).

After to made this changes I tried to join with my friend and the games runs perfectly and desync issue was gone.