The Multiplayer code has been completely rewritten in this update.
The two primary methods of multiplayer communication are WebRTC and TCP/IP. The following table shows you what is supported on what platform:
Platform |
WebRTC |
TCP/IP |
Web Browser |
* |
|
Ape Apps Launcher |
* |
* |
Steam |
* |
* |
Win/Mac/Linux Desktop |
* |
* |
Android |
* |
* |
iOS |
* |
* |
Windows 10 (Store) |
|
* |
Kindle Fire |
* |
* |
Multiplayer games are done peer to peer, so there is no centralized server. In order for you to be able to join a game, the Host player must support one of your available communication protocols. The game takes care of matching protocols and connections for you, and generally a Host which you cannot join should not show up in the listing.
WebRTC is the easier protocol to deal with, and is the preferred method whenever available between two clients. The reason for this is that in order for a host to accept
TCP/IP connections, the user will have to forward TCP and UDP port
2733 to their device on their router or modem, and make sure port 2733 is clear on their firewall. For advanced users this is probably trivial, but a lot of players will not know what they are doing here. With WebRTC, none of the port forwarding steps are necessary.
This only becomes an issue because the Windows 10 store client, which will account for a good portion of the users, does not support the WebRTC protocol at this time, and will not until probably 2021 judging by documentation released by Microsoft.
Keep in mind though, that LAN games can generally use the TCP/IP protocol without the need for port forwarding.
Players only need to have protocol compatibility with the host of the game, not with each player. For example, if a player starts a game using the Steam client, and has properly forwarded port 2733 to their machine, they will be able to accept connections from both Windows 10 (Store) players over TCP/IP, and from Web Browser players over WebRTC. Even though a Windows 10 and Web Browser client do not support the same protocols and cannot connect to each other directly, the Host on Steam will be able to act as a link between the two so that everyone can play the game.
Getting this multiplayer code right is important, since I decoupled it from the main Colony Wars script, as I intend to use the same code in other games. So while the game is in testing, please try to get your friends onto the beta to test out Multiplayer and let me know if it works!!