You are on page 1of 3

Configuring PvPGN for WarCraft III

This documentation supports version 1.7.0 of the PvPGN software and higher.

All WarCraft III play happens peer-to-peer so the game clients need to
directly connect to each other.
External clients connect to your server reporting their external IP and your
local clients get told by the server to connect to these external IP addresses.

You local clients connect to your server via the local IP address and this
local IP address is reported to the external clients to connect to. Too bad they
presume this local IP address is in their local network, not the servers local
network. This means that the external clients could never find the server again.

This challenge is addressed as follows:

1. On all your local PCs that want to play WAR3 (including the server PC if you
want to play WAR3 on that one) start up WAR3 and enter the Options menu and the
suboption gameplay. Now change the port to be used to a so far unused port (one
unique port for each PC in your LAN)
2. Configure port forewarding on your server PC so each port you just had
chosen on your LAN PCs WAR3 installation gets forewarded to the respective PC
(obvisiously not needed for the WAR3 client on the server PC)
3. Modify address_translation.conf so your LAN IPs appear as external IPs for
all clients not within you LAN
4. Finally modify bnetd.conf and configure w3route parameter.

Detailed scenario

Let's presume you have two WAR3 clients on your LAN, one at 192.168.0.10
(later on called LAN-IP-A) and the other at 192.168.0.11 (later on called LAN-IP-
B)

Now on the WAR3 client at LAN-IP-A you chose gameport 16801, for the WAR3
client at LAN-IP-B you choose gameport 16802.

Next thing for you to do is change some setting within the properties of your
internet connection sharing. Choose the settings button and add two new
"services". Call the first one "WAR3 at LAN-IP-A", set the IP address to LAN-IP-A
and as external and internal port choose 16801. (According to my sample for LAN-
IP-A also add a rule for LAN-IP-B and port 16802).

So far, with all those settings made you should be able to play fine on
battle.net with your LAN clients, even if battle.net falls back into peer-to-peer
mode (which can rarely happen)

Now add a few lines to your address_translation.conf. You should basically


need two blocks of translational rules. One for the w3route and one for your LAN
clients.

[Editors Note begins : While creating this documentation I became slightly


confused between the contents of the address_translation.conf file and the
remainder of the documentation. I think that the documentation is good but that
the comments at the beginning of the w3route section could be slightly miss
leading or confusing. Going by the documentation the first 2 lines in this w3route
section shoudl be uncommented and configured.]
address_translation.conf
##############################################################################
##########################
# w3route server ip (removed from w3trans.conf) (Port 6200) #
# #
# Set input address the same as the w3routeaddr setting in the bnetd.conf #
# Set output address to the address to be sent to war3 clients #
# Set exclude to the range of clients you want to recieve the input address #
# instead of the output address #
# Set include to the range of clients you want to recieve the output address #
# #
# input (ip:port) output (ip:port) exclude (ip/netmask) include (ip/netmask) #
#--------------------- ---------------------- ----------------------------
-------------------------

#0.0.0.0:6200 192.168.1.100:6200 NONE 192.168.1.0/24


#0.0.0.0:6200 internetip:6200 NONE ANY

[Editors Note begins : ends ]

The first ruleset is ment to let your LAN clients connect to w3route via LAN
but the external clients to connect via external IP:

0.0.0.0:6200 192.168.0.1:6200 NONE 192.168.0.0/24


0.0.0.0:6200 internetip:6200 NONE ANY

(substitute internetip with your internet IP)

The other ruleset we'll add is neeed to make external clients connect to your
local clients via your external IP address and the forewarding rules we added
earlier

LAN-IP-A:16801 internetip:16801 192.168.1.0/24 ANY


LAN-IP-B:16802 internetip:16802 192.168.1.0/24 ANY

(substitute LAN-IP-A, LAN-IP-B and internet IP with the correct IPs)

So in case you wonder what those rules mean, I'll try to give a quick
explaination:
LAN-IP-A:16801 internetip:16801 192.168.1.0/24 ANY
translates to something like:
If ANYone asks for LAN-IP-A:16801 translate it to internetip:16801 unless the
requestor is located within 192.xxx.xxx.xxx (which will then receive untranslated
IP)

Changes to the bnetd.conf file are as follows:

# W3 Play Game router address. Just put your server address in here
# or use 0.0.0.0:6200 for server to bind to all interfaces,
# but make sure you set up w3trans if you do.
#w3routeaddr = "internetip:6200"
w3routeaddr = "0.0.0.0:6200"

Where an internetip address of 0.0.0.0 means that w3routeaddr is not


configured. Replace 0.0.0.0. with your external ip address and restart the PvPGN
server software.

Tips
User Comment There are lots of uses of 0.0.0.0 in the configuration but my
server never worked right until I used an actual IP instead of 0.0.0.0. And at
times I could get some clients to connect
Developer Comment

For some time now (most likely since version 1.7.0) address 0.0.0.0 for
w3route is converted by the server before being sent to the client - the local end
point of that client bnet connection.

This means that in the usual case it works.

Where it does not work is for example when the sevver is inside the LAN and
the client is external. In that case it will send the LAN IP address because that
is what it sees as the local endpoint of the bnet connection of that client.

You might also like