First, let's get some basic terminology in place for using to talk about internet games:
- Host is the computer/device of the player who is starting the game. That player chooses the book deck, difficulty, and number of players in the game.
- Guests are the computers/devices of others who will be joining the game.
- Spectators are like Guests, only they don't control a character and only get a view of the board.
The most likely cause for this problem is the host running on a network that is using "Network Address Translation" (commonly called "NAT").
When a guest (or spectator) tries to join the game, the game will attempt to create a TCP/IP connection directly to the host. If the host is behind a firewall, the firewall might block that connection. If the host is on a network using NAT, the public address that a guest will be using to connect is actually the internet address of the router that provides the internet connection for the host. To work around that, the router has to be configured for what is called "port forwarding" to pass those specific requests to the host. portforward.com has a good guide with detailed instructions on how to set up port forwarding for a wide variety of router hardware.
Dresden Files Cooperative Card Game connections use the TCP protocol, and by default connect on port 5728.
There are some cases where you won't have the ability to enable port forwarding - using a mobile device on a cellular connection, for example. We're in the process of developing a system to support connections even when none of the players in the game are able to enable port forwarding.