Connecting for co-op: LAN or VPN
On this page
Co-op runs directly between the players' machines. Each machine listens on UDP port 7777, and nothing gets through a home router from the internet, so every machine must be able to reach the others directly:
- Same home network (LAN)? You are done; check the firewall.
- Friends elsewhere? Put everyone on one free virtual network with ZeroTier or Tailscale. It takes a few minutes, once.
When you are connected, the co-op guide takes over.
ZeroTier
One player creates the network (once):
- Sign in at my.zerotier.com (a free account).
- Press Create A Network. Copy its Network ID, 16 characters like
8056c2e21c000001, and send it to your friends.
Every player joins it, the creator too:
Install ZeroTier:
sudo pacman -S zerotier-one # Arch curl -s https://install.zerotier.com | sudo bash # other Linux sudo systemctl enable --now zerotier-one # Linux: start itOn macOS, run the installer from zerotier.com/download.
Join the network:
sudo zerotier-cli join <network-id>On macOS you can also use the ZeroTier menu-bar icon: Join New Network.
The creator lets everyone in. On my.zerotier.com, open the network and scroll to Members. Each machine that joined is listed; tick its Auth box. A new network is private, so nobody gets an address until this is done.
Every player checks it works:
sudo zerotier-cli listnetworks # your network should say OK, with an address
ping <a friend's ZeroTier address>Which address is the ZeroTier one? ermod-engine coop id lists every address this machine has, each with its interface in brackets, so it lists your home network's address as well. Pick the ZeroTier one in either of two ways:
- Match it. The last column of
sudo zerotier-cli listnetworksis your ZeroTier address, for example10.147.20.5/24. Drop the/24: thecoop idline with10.147.20.5is the one to send. The network page on my.zerotier.com shows the same address under Members, as Managed IPs. - Read the interface name. On Linux, ZeroTier's interface starts with
zt(for exampleztabcd1234). On macOS it starts withfeth(for examplefeth956).
Do not go by the number. A ZeroTier network may hand out 10.…, 172.… or 192.168.… addresses, so its address can look just like a home network's. Trust the interface name, or the match with listnetworks.
Linux:
Address 192.168.1.10 (enp5s0) ← your home network: not this one
10.147.20.5 (ztabcd1234) ← ZeroTier: send this join line
macOS:
Address 192.168.1.23 (en0) ← your home network: not this one
192.168.194.177 (feth956) ← ZeroTier: send this join line
With three or more players, every address a joiner names (the host's and the earlier joiners') is a ZeroTier address: a friend elsewhere cannot reach your home network's address.
Tailscale
- Every player installs Tailscale and runs
sudo tailscale up. - Everyone signs in to the same tailnet, or the owner shares their machine with friends.
tailscale ip -4prints your Tailscale address (100.…). Incoop idit is the one on thetailscale0interface (on macOS, autuninterface); send the join line with that address. Ping a friend's to check.
The firewall
If a machine runs a firewall, let in UDP on port 7777 (on the VPN interface too, if you use one):
sudo ufw allow 7777/udp # Linux, ufw
sudo firewall-cmd --add-port=7777/udp --permanent && sudo firewall-cmd --reload # Linux, firewalldOn macOS, if the system asks whether Wine may accept incoming connections, allow it.
A friend still not getting through? See The friend never shows up.