It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
I found it extremely difficult to get multiplayer working, but a lot of the advice online has become old and sketchy and I thought these pointers may help others even if I'm not skilled enough to boil it down into a series of step-by-step commands that will work universally on anyone's and everyone's PCs. Hopefully this might reduce some of the dead-ends and trial-and-error for you to also get LAN games working on this classic RTS game.

I haven't tested if this has any strange side-effects on single-player or internet play (including via hamachi). In case it does I'd recommend to try this in a separate, fresh wineprefix. And please do back up any save files or treasured mods on your main WC2 install before attempting this.

==

1. Warcraft II is actually very compatible with Wine. I have done this on a pair of similar PCs which are on Xubuntu 22.04 and Ubuntu 22.04. I used PlayOnLinux to set up the wine prefixes, Wine version set to 6.10-Staging and Windows version set to either Windows 7 or Windows XP (it didn't seem to matter). The first step is to create a 32-bit wineprefix - it's not going to be an especially complicated wineprefix but in this guide I'm going to have to assume you know how to install and use wine, or are happy to find out.

2. A Windows PC is also essential as we will need to patch the .exe file using an old, third-party tool that won't run in Wine

3. I used the current version of the GOG Installer but actually I think this method will probably work on a wide range of versions. Install Warcraft 2 on all the linux PCs plus the windows PC. (I haven't yet tested if Windows and Linux PCs can join the same games but I'd expect that to work). I'd suggest to make a USB key or shared folder on the network for the files that will need to be copied between machines.

4. The GOG version ships with a tool called ipxwrapper but I did not have any luck with this. IPX isn't supported anymore, it's an absolutely ancient networking protocol and Warcraft II needs to see it installed on all the PCs, but under the surface the workround is to change dll files so that the communication is really over TCP/IP (which became the established standard after about 1999). Warcraft II was never patched to support TCP/IP and people were already starting to struggle with its IPX multiplayer by ~2005.

Rather than ipxwrapper, we want a tool called ipxemu. The current version is 1.04 and it was last updated in 2014. This is very old but since it basically works by telling older versions of windows that they can read TCP/IP packets as valid IPX packets, it's small and perfect and unlikely to ever need to be updated any more. ipxemu comes with a particular tool that was made for Warcraft 2 back in the day, and which still works on wine. I won't post a direct link on the forum but it's on sourceforge and easy to find.

5. On the windows PC, go into the game directory. GOG has already patched the .exe to be the appropriate version (iirc 2.02) and to not require a CD - so it's already ready for this additional patch. Copy warcraft_2_bne_bugfix.exe from the ipxemu package's 'tools' folder into the game directory and run it there. Warcraft 2 used to have a peculiar and non-compliant implementation of IPX that involved tacking the PC's IP address onto each data packet. This little bugfix exe automates this before the data reaches the actual game engine. Now copy this patched Warcraft II BNE.exe from the windows PC into the game directories on the Linux PCs. (you might want to rename the original file to a .bak)

6. On the Linux PCs, the dll file from the ipxemu package needs to be copied and pasted into the game directory inside the wineprefix. iirc one of them wsock32.dll will overwrite the original file (so you might want to change the original to a .bak first). The other .dll in the ipxemu package is thipx32.dll which the readme says is only needed for Win95 machines, but I copied it over too just for good measure.

IPXWRAPPER
Also for good measure I lifted 2 dlls from ipxwrapper:- mswsock.dll; ipxwrapper.dll but I don't think these were needed. And I used the regedit tool in playonlinux to import ipxwrapper's two .reg files into the wineprefix, but I don't think that was probably needed either. I thought it was best to leave the other two ipxwrapper dlls behind:- wsock32.dll we want the version from ipxemu, and dpwsockx should be handled by Winetricks+DirectPlay

Apologies: I've forgotten if GOG included this one or another tool called ipxconfig.exe. If I got them the wrong way round, ipxwrapper is also easily and safely available from github.

7. Using winetricks, install DirectPlay

8. The following dll overrides should now be set in wine:- dplayx ; dpnet ; dpnhpast ; dpwsockx (and I believe these are set automatically when Winetricks installs Directplay)

9. The following dll override should be added manually:- wsock32.dll (it will give an error message saying this isn't recommended, but do it anyway because this lets the game use the special version of wsock32.dll from the ipxemu package). I also added overrides for ipxwrapper and mswsock but don't think they were needed.

10. After steps 1-9, Warcraft II should be able to detect an IPX interface and players can create games and see each other. However it will say "Waiting to Connect". Join Game will not work unless an Environment Variable is set for Wine. The readme for the ipxemu package mentions this might be necessary but it's easily missed - and at least on recent Ubuntu PCs it seems to be 100% necessary.

PlayOnLinux I don't think can set environment variables (at least, not easily) so I stopped using it here and instead made a launcher script. These would be (roughly) the terminal commands to set the environment variable and run Warcraft 2 with working multiplayer.

=====

#!/bin/bash
cd [YOUR WINEPREFIX]/drive_c/[YOUR WARCRAFT2 GAME DIRECTORY]
export WINEDLLOVERRIDES=wsock32=n
printenv WINEDLLOVERRIDES
WINEARCH=win32 WINEPREFIX=[YOUR WINEPREFIX] wine [YOUR WINEPREFIX]/[YOUR WARCRAFT2 GAME DIRECTORY]/'Warcraft II BNE.exe'

This is the bash header bit and 4 lines of code.

=====

So on my setup which has used PlayOnLinux for the earlier steps, and my wineprefix is named 'warcraft2gognew' this looks like:-

#!/bin/bash
cd /home/dave/.PlayOnLinux/wineprefix/warcraft2gognew/drive_c/'GOG Games'/'Warcraft II BNE'/
export WINEDLLOVERRIDES=wsock32=n
printenv WINEDLLOVERRIDES
WINEARCH=win32 WINEPREFIX=/home/dave/.PlayOnLinux/wineprefix/warcraft2gognew/ wine /home/dave/.PlayOnLinux/wineprefix/warcraft2gognew/drive_c/'GOG Games'/'Warcraft II BNE'/'Warcraft II BNE.exe'

=====

This is somewhat Ubuntu-specific - e.g. different Linux distos have to use a different first line for bash scripts. Long, clunky directory paths I think are always a characteristic of wine. And where windows sometimes has spaces in directory names we have to put those parts in speechmarks '

On the last line, the word wine between warcraftgognew and home is separate and has spaces around it - because it's the command.

There also exists the Wargus/Stratagus project. I think Wargus will be good in the not-too-distant future but I found that on my setup it always drops connections / desyncs as a side effect of other probably quite minor bugs.

As I mentioned, I'm not a programmer and there are sure to be mistakes as well as things that other linux users find obvious without a guide. E.g. I wonder if ipxwrapper might have worked with just that 1 environment variable change and most of my other steps weren't needed. If anyone has improvements to make below I'll very much welcome them, I'm just happy to have this game working on my LAN at home. I'm passionate about this because I believe WC2 over LAN is a great introduction to multiplayer gaming for my kids.
Post edited January 06, 2023 by evild4ve
SUMMARY OF THE FILES YOU NEED:-

Warcraft 2.ISO (this may need to be a Battle.Net version - the one I used is WAR2BNECD)
or the original cd works fine too.

GOG Installer
[ipxemu-1.0.4 folder]
|- wsock32.dll (patched version)
|- (warcraft_2_bne_bugfix folder)
|- - warcraft_2_bne_bugfix.exe

[ipxwrapper-0.6.1 folder] < possibly not needed but I used it
|- ipxwrapper.dll
|- mswsock.dll
|- directplay-win32.reg
|- directplay-win64.reg

Warcraft II BNE.exe (patched version created by the bugfix.exe)
Post edited January 05, 2023 by evild4ve
I was able to make this work with a few steps - posting in the chances that this helps someone else:

Configure IPXWrapper
1. Launch the IPXWrapper config tool by running (in your Warcraft II BNE directory): wine ipxconfig.exe
2. Optional: Select your network adapter under "Primary interface". (If you don't, IPXWrapper should broadcast on all devices.)
3. Check Automatically create Windows Firewall Exceptions. (I'm uncertain if this is required.)
4. Click OK to save and close the config tool.

Configure your firewall
1. Configure any firewall you might have (necessary for all players) to allow incoming traffic. The UDP ports chosen seem to be random, 40000-60000.

Run the game
1. Launch War2Launcher.exe with the appropriate DLL overrides by running (in your Warcraft II BNE directory): WINEDLLOVERRIDES=wsock32=n,b wine War2Launcher.exe
2. Choose "WarCraft II" (not Classic)
3. Multi Player Game > Enhanced > Select IPX Network > Connect > Enter your name > Click OK
4. If you get to the next screen (with the Current games list), your IPX configuration should be working. If you're still having issues, check your firewall. Consider turning on debugging/logging in ipxconfig.exe, which will log to ipxwrapper.log.

References:
- Lutris Installer warcraft-ii-tides-of-darkness-gog: lutris.net/games/install/12552/view
- IPXWrapper README: github.com/solemnwarning/ipxwrapper
just by the way reminder: there is crossplatform tool InnoExtractor with --gog argument (two minuses). Installer can be unpacked without installation under Wine and its 3rd party "shell" tools by uptodate InnoExtractor.
Sometimes there is _Temp, _App or similar temp folders with some files need to be configured before place to the respective folders. cfg files.
Older InnoExtractor/UniExtract that dont have --gog argument cannot unpack v3 GOG setup (setup_#_v.2.1_(12345), but can work for2.x.x.x setup builds). They do only extract temp files, and v3 have additional temp archives inside - thousands of them Temp01-110##.

There is GOG DX Wrapper and GOG DX CFG tool inside. It is ddraw.dll, xdraw.dll, dxcfg ini, dxcfg exe (plus for some games dixi.dll dixi.ini). They and ipxwrapper are placed in such _Add/_App folders after InnoExtract.

There is also game.wdb file in same temp folder. It is compatibility configure file. Should be in same folders. By InnoExtract it wont be installed/pre-configured (as no need to under Linux).
Also regular installer/installscript(Galaxy) make many compatibility presets during regular installations. Installing through GOG/GOG-Galaxy +Wine... mmm... do or at least try to install them? I suppose extracting would be better. Reduce unneeded presets from GOG.

Only still needed is IPXwrapper. As i understand from posts above its still required for Linux. Isnt that exact this one wrapper by this author have also native Linux builds? (im from phone lazy to recheck info).