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.