Jump to content


Photo

Linux/Wine: All game servers time out


  • Please log in to reply
1 reply to this topic

#1 jwaffe

jwaffe
  • New Members
  • 1 posts

Posted 16 February 2021 - 01:03 AM

Hello,

 

Using trial and error I was able to almost get MO working on WINE, I cobbled together some old forum results.

- I'm running Ubuntu Mate 20.04 x86_64 if it matters.

 

Here are my steps for creating the Wineprefix from scratch:


winetricks xna40
winetricks vcrun2008 #to try and fix the wsock thing???
wineboot
# https://forums.revora.net/topic/106978-mo33-support-game-or-client-crashes-launch-issues-megathread/page-35#entry1070916
# in winecfg, set compatiblity mode to windows xp
# in mo/Resources, delete all .xnb (except the sprite font ones) and .wav files
# in mo/Resources/MainMenu, delete all .nxb and .wav files
# in winecfg, set it to use system native (Windows) for ddraw, you have to explicitly type it in, it doesn't want you to do this so it doesn't put them in the dropdown
# The guide also recommends wsock but that didn't work

# copy these files directly into the MO directory from the RA2 directory:
# https://forums.revora.net/topic/106978-mo33-support-game-or-client-crashes-launch-issues-megathread/
#- BINKW32.dll
#- BLOWFISH.dll
#- gamemd.exe
#- ra2.mix
#- ra2md.mix
#- language.mix
#- langmd.mix

Then my run script sets the prefix accordingly and runs wine mo/Resources/clientxna.exe .

 

What works:

- Skirmish, I can pick a map, start a game, and play. The game seems to be fine.

- It shows 88 players online right now in the main menu, so some kind of network query is working

- Other main menu stuff like options, etc.

 

What doesn't work:

- The IRC client / server browser. It appears that the call to Ping fails and it can't reach any server.

- When I click the Multiplayer button, I just get "Connecting to CnCNet failed!"

- I have attached my client log file. For the sake of not having people comb through 500 lines of unrelated errors, I have provided a small excerpt below that I think is the root cause of the issue.

15.02. 19:34:37.152    Failed to ping the server GameSurge IP 208.167.237.120 (208.167.237.120): TimedOut.
15.02. 19:34:37.201    Failed to ping the server GameSurge Seattle, WA (162.248.94.123): TimedOut.
15.02. 19:34:37.204    Failed to ping the server GameSurge NYC, NY (192.223.27.109): TimedOut.
15.02. 19:34:37.207    Failed to ping the server GameSurge Wuppertal, Germany (195.8.250.180): TimedOut.
15.02. 19:34:37.212    Failed to ping the server GameSurge Santa Ana, CA (209.11.244.82): TimedOut.
15.02. 19:34:37.221    Failed to ping the server GameSurge IP 108.174.48.100 (108.174.48.100): TimedOut.
15.02. 19:34:37.226    Failed to ping the server GameSurge Stockholm, Sweden (91.217.189.76): TimedOut.
15.02. 19:34:37.227    Failed to ping the server GameSurge London, UK (195.68.206.250): TimedOut.
15.02. 19:34:37.235    Failed to ping the server GameSurge IP 208.146.35.105 (208.146.35.105): TimedOut.
15.02. 19:34:37.235    The number of available Lobby servers is 0.
15.02. 19:34:37.241    Connecting to CnCNet failed!

- The hostnames all resolve to IP addresses, but it appears that they all time out.

- If I manually ping these IPs, some of them respond. I am not sure why the Client is unable to ping these addresses.

 

Here's what gets printed to stdout

002c:err:ole:CoGetContextToken apartment not initialised
0035:err:ole:CoGetClassObject class {94297043-bd82-4dfd-b0de-8177739c6d20} not registered
0035:err:ole:CoGetClassObject no class object {94297043-bd82-4dfd-b0de-8177739c6d20} could be created for context 0x1
0009:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733
0009:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733
0009:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733
0009:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733

More information:

- I don't think there's a connection issue / firewall problem on my end because on the exact same computer running Windows I can connect to the servers just fine

 

My guess:

- I think there's maybe some bug in Wine that makes Ping not work properly, but I can't imagine what that would be, it seems like a pretty basic feature. I've played multiplayer games before successfully in Wine, including vanilla RA2 CnCNet at one point (but that was a while ago).

 

Other things I've tried:

- Specifying native for wsock32.dll, that just caused the program to not start at all.

- As a last ditch kitchen sink attempt, I literally copied random sets of dlls from my real Windows PC into the wineprefix's System32, though I wasn't really expecting to make anything from that other than a mess. That Wineprefix lives in the trash now.

 

I also tried Compiling my own version of the client in MonoDevelop, it actually compiled (!)

- It seems like Mono has issues translating backslash '\' to forward slash '/'

- I recently found out about MONO_IOMAP https://www.mono-pro...on-portability/, maybe that would work too.

- I might revisit this course of action next, but I am concerned that the client would not be capable of invoking Wine to run the actual gamemd.exe in the correct WINEPREFIX without source code edits.

 

MONO_IOMAP seemed to have no effect, it still fails almost immediately upon startup when looking or the Resources directory, if I change the line to Resources/ instead of Resources\\, it works.

- It's not a big surprise because MONO_IOMAP was removed in Mono 6, and I'm running Mono 6.12.0.107. https://github.com/m...no/issues/15845 , Microsoft says "edit the code", there's a LOT of \\ in here, dang.

- Continuing the rabbit hole: https://github.com/d...me/issues/35299 "Devs should just update their projects and remove all the \\" is the response from MSFT, pretty much.

- and here https://github.com/r...naify/issues/39

- I saw a ton of "someDirectory\\" + someFileName in my projects too when I first started at new jobs but I always replaced that with Path.Combine. I think this is kind of a silly decision on Microsoft's part, concat with slashes is still popular even though everybody says not to do it.

 

Let me know if you have any advice on this, thanks in advance.

Attached Files


Edited by jwaffe, 16 February 2021 - 02:41 AM.


#2 KWAGGA

KWAGGA
  • New Members
  • 3 posts

Posted 27 July 2022 - 10:21 AM

Hi,

 

I know this might be an older one, but I want to leave some help for the Linux CNC community out there and how to get CNC Lobby Support for Online Matchmaking working:

 

1) Extract Base Game/Mod Files.
 
2) Setup Wine Profile manually or using Lutris. (I recommend Lutris using latest Lutris Wine Runtime or Proton GE builds)
 
3) Replace and override cnc-ddraw dll files using ddraw.ddl from https://github.com/C...-ddraw/releases. This fixes Alt+Tabbing and Drawing issues. The files to be replaces are located under ./Resources/Binaries/Windows/.
Make sure to remove any ddraw.dll files from the main game folder. Also copy the cnc-ddraw config.exe and shader folder to the same location. You can run cnc-ddraw config.exe in your wine prefix to set the renderer and apply some additional fixes.
 
4) Run WineCfg on profile and override ddraw to native under Libraries.
 
6) Override "*mscorsvw.exe" to disabled and "*mscoree" to native under Libraries. Make sure to add en asterisk * before the entry names.
 
unknown.png
 
7) Run Winetricks and install .net 2.0 SP2 and .net 4.5 runtimes.
 
8) Run WineCFG again and change default OS back from 2003 to Windows 7.
 
9) Set Lutris/Wine to Run Virtual Desktop mode at your desktop resolution.
 
10) If Default game client fails to launch use the clientolg.exe file under ./Resources/ folder
 
 
To get full reshade support working ( If the mod/game makes use of it)
 
1) Get latest Linux Reshade setup script form here: https://github.com/k...de-linux.sh#L21
 
2) Run the script and select OpenGL mode on Linux for the setup. Select your Warzone/TibSUN directory where the game files where extracted.
 
3) Run WineCfg on profile and override opengl32 to native,builtin under Libraries.
 
4) Remove the reshade opengl32.ddl symlink and restore the original renamed opengl32.dll file in the main game folder.
 
3) Copy the Warzone reshade.ini file from Resources/ReShade Files/ to your main directory.
 
4) Test reshade after launching game and open menu by pressing "HOME" key
 
 
This guide also works for other Great Mod Such as the excellent Tiberian War: WarZone mod by MirceaOfRivia:
 
Happy Conquering!





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users