I’ve been experiencing problems locating matches using the Matchmaker across different networks. It appears that matches created by a client are only visible to other clients on the same network. I’m using Unity 5.1.3p3 (I’ve also tried 5.2.1f1), and the stock NetworkManager and NetworkManagerHUD.
I’ve been testing by creating a match on PC then trying to connect using the same client installed to a Android phone on a different (WiFi) network. If I run two clients on PCs on the same network then I can see and connect to matches successfully. Likewise with two Android devices.
It’s almost as though the matches are being associated with two completely separate projects, but I’m using the same Unity project client with the same settings on both.
There are no errors reported in the logs and everything is correctly-configured for the project on multiplayer.unity3d.com as far as I can see. I’ve tried setting the ‘SetProgramAppID’ on the matchmaker and match after it’s created as suggested on some forum posts, but to no avail.
Are there any other network settings that might get in the way?
Hi TomzaiML,
Just to clarify, you’re saying that you can create a match on 1 network and list it from that network, but when you go to list it from another network you dont see that match in the list of results?
Yes, that’s correct. We have three networks, and a match created on a device on network A is consistently only listed on other devices on network A, and not networks B or C. Likewise if I create the match on network B or C. I’ve tried both using the NetworkManagerHUD and calling ‘matchMaker.ListMatches’ from script to get the list of matches.
There are no differences between the builds other than the network they are running on.
There’s only one thing that could be causing this, and it’s likely down to the routing differences between the two networks. This might be exaggerated if there’s a VPN involved on one.
We run 3 data centers currently, and when you connect with the default url (mm.unet.unity3d.com) it will auto route you to one of those 3 based on what would be the most optimal play experience. So for instance in North America you should generally hit the US data center, while the same request made against the same url in Denmark for instance would likely route you to the Europe data center and the same request in Japan would route you to the Asia Pacific one.
You can override this however buy using a specific datacenter as the url in the NetworkManager when talking to our backend. Here’s a list of data center urls:
US: us1-mm.unet.unity3d.com
EU: eu1-mm.unet.unity3d.com
AP: ap1-mm.unet.unity3d.com
Hope that solves your issue, let me know how it goes.
Thanks, that was totally it and it’s now working as desired. Thanks for the help!