The age-old problem of "I cannot make a room...HELP" has plagued Heroes almost since the beginning. And the solution to the problem is almost always the same. The purpose of this article is to explain why the problem occurs and how to fix it.
You should be reading this if you have a local area network with router/gateway, and you are having trouble joining and hosting HF rooms. This article does not cover software firewalls such as ZoneAlarm, but may still be useful to read if you have one.
|Why does it happen?|
|How is my network set up?|
|Configuring my gateway|
|If it still doesn't work|
It is easiest to explain this graphically, with the animated image below.
The three computers on the left are behind a local area network, and connect to the Internet via the gateway. This gateway can be a piece of hardware such as the "routers" found at computer stores, or it can be another computer set up with multiple network cards and configured to act as a gateway. With either kind, the concept is exactly the same.
The Room Server obtains the computer IP on the LAN (Local IP) and the gateway IP on the WAN (Public IP). Then it sends its public address to the server list in case the room is open to public. So far, so good. Here is where the trouble occurs: when the Hero Fighter client tries to join the room (or when the server list tests if the room is accessible in case it is open to public), all requests to the room server are blocked because the gateway doesn't know what do do with them. When the data packets hit the gateway, all they specify is the address of the gateway. There is no way for the gateway to know which computer on the network the request should go to. So it blocks it.
Before actually solving the problem, there are several details you must find out. First you need to know what kind of gateway you have - specifically whether it is a hardware "router" or an actual computer. The easiest way to do this is by asking someone who knows. Try asking parents or the people who set up your network.
If you can't ask someone or they don't know, you'll need to find out yourself. Locate your cable or DSL modem. These all look different, so it is impossible to describe exactly what it looks like. But it will have a coaxial (cable) or telephone (DSL) cable connected to the back. It will also have a network cable connected. Follow the network cable until you get to the other end. If it connects to a small box with other network cables coming out if it, you have a hardware gateway (a "router"). If it connects to a computer, that computer is probably acting as a gateway, especially if the computer has other network cables connected as well. NOTE: Wireless networks almost always use a hardware gateway (combined with the wireless access point so it will have antennae on it).
If you have a computer acting as the gateway, you need to find the documentation for the gateway software. This guide can only tell you what to do, not how to do it. The author is able to give general instructions for hardware gateways, but not for software.
There are two things you need to find out from the computer that you want to host the Room Server on: the internal address of the computer, and the internal address of the gateway. The process is slightly different depending on what operating system you use.
Room Server uses two consecutive network ports (8888 and 8889 by default). A port can be thought of as a numbered extension in an office telephone system. You would call the office with a single number, but you would have to tell the switchboard the specific extension number for the person you are trying to reach. Ports work in the same way: the client connects to the server with a certain address, but also tells the server what port it wants to connect to. Different services could be running on different ports.
With a computer directly connected to the internet, the computer itself acts as the switchboard. Requests are made on certain ports, and the networking driver directs those requests to specific programs based on what port number it was. However, when a gateway recieves a request the request still only includes the address and the port number. The gateway doesn't know which computer to send the request to.
This is where forwarding comes in. Most gateways and gateway software are able to forward requests to specific computers based on the port number. For example, you are able to forward all requests on port 8888 to the computer that the Room Server is running on. This is the general solution for solving gateway problems.
|8888 TCP||Room Server Port|
|8889 TCP||Authorization Port|
The above table summarizes the ports that the Room Server uses for network play, although they can be changed (but need to be consecutive anyway). Gateways are usually able to handle outgoing TCP connections, as they remember the computer who sent them, so that is why none of this matters on the client side, just on the server side.
If you use a computer as a gateway, this is as far as this guide can help. You need to consult your specific documentation to determine how to forward the ports mentioned in the previous paragraph. You will usually need to set an IP address to forward to - use the IP Address determined in the previous section. From here on the focus will be on "routers".
Most routers have a web configuration interface, accessible through a web browser within the local network. The address is almost always the same as the "Default Gateway" recorded in the previous section. For example, if your default gateway was 192.168.1.1, the configuration URL would be http://192.168.1.1. Try to access this address from a browser within your network. If it doesn't work, you will need to consult your router documentation to find out how to configure it. Some may use a software configuration tool on a networked computer, or some may have a telnet-accessible interface.
The configuration interface is usually protected by a password. The default password is usually "admin", but may also be blank or some variation on the name or model of the router. If the default password doesn't work (consult the router documentation to find out exactly what it is, or google it using the router brand as keyword), someone has changed it. You will need to ask them what it is, or ask them to enter it. If they refuse, tell them you need to change some settings to get a game to work, and show them this guide.
After getting into the configuration tool, you will need to find the configuration section where ports can be forwarded. This is usually in an "Advanced" section, and may be simply called "Port Forwarding", but could also be called "Virtual Server" or something else. Whatever it is called, you should be able to enter port numbers, IP addresses, and whether that entry is UDP, TCP, or both. If you are unable to find a section like this, consult the router documentation. It may also be possible that your router doesn't have this feature.
Once you have found the correct section, add entries for the Room Server. You will need to forward ports 8888 and 8889 (assuming you use these), TCP, to the IPv4 Address determined in the previous section (not the Default Gateway address). If there is no option distinguishing between TCP and UDP, it is likely that both will be forwarded. After entering the correct information, click the "Submit" or "Save" button. Note that routers will often temporarily sever the internet connection when you save, so ensure that nothing is running on the computers that would be affected by this.
Example video by NirvanaNexus
After configuring your gateway, Room Server should work perfectly. However, there is always a possibility that it doesn't. If this is the case, there are several things you can do.
- Ensure all settings are correct. Make sure you entered everything in the right place, and entered the correct information. Double-check that you entered the IPv4 address of the computer you are playing on, and not the address of the gateway. It is also possible you just made a typo and entered the wrong IP address or port number.
- Ensure no firewalls are blocking. Sometimes a firewall will be blocking the connections. To check if this is the case, simply disable any firewalls temporarily. Remember that Windows has a built-in firewall that may be enabled. If this solves the problem, consult your firewall documentation to find out how to allow the Room Server specifically to initiate and recieve connections.
- Search for others with the same problem. If you've done everything right and it still doesn't work, it is likely that other people have had the same problem and have posted about it. Search for the name/model of your gateway software or hardware on the internet. To narrow down the search, also include a keyword like "forwarding".
- Send a support request. Go to the manufacturer's site and find the support section. There will usually be a way to send an online request, through a form. Remember to describe the problem accurately. If you are unsure of whether you can word the problem correctly, include a link to this page, specifically the configuration section:
Remember that most companies take weeks to reply to online requests. If you are impatient you could try telephone support.
If you are having a problem after getting this far, it is not recommended to post in the forum at HFE. The people there can only tell you as much as has been told in this guide. Here you need specific help that can only be given by people who have experience with your hardware/software, and you are not likely to find it at HFE. There are probably people in the community who would be willing to help you on a personal basis, so you could ask around privately or at our IRC chat.