Gatau
1
I want to start a host and a client on the same machine and I also want to create a match so the game room will be accessible in a list of matches:
public void CreateMatch()
{
networkMatch = gameObject.AddComponent<NetworkMatch>();
NetworkLobbyManager networkLobbyManager = networkManager.GetComponent<NetworkLobbyManager>();
networkLobbyManager.StartHost();
CreateMatchRequest create = new CreateMatchRequest();
create.name = "MS_" + Guid.NewGuid().ToString("N");
create.size = 2;
create.advertise = true;
create.password = "";
networkMatch.CreateMatch(create, OnMatchCreate);
}
public void OnMatchCreate(CreateMatchResponse matchResponse)
{
if (matchResponse.success)
{
Utility.SetAccessTokenForNetwork(matchResponse.networkId, new NetworkAccessToken(matchResponse.accessTokenString));
NetworkServer.Listen(new MatchInfo(matchResponse), 9000);
Debug.Log("Create match succeeded");
}
else {
Debug.LogError("Create match failed");
}
}
If I do this, the row NetworkServer.Listen() will cause three error:
- Cannot open socket on ip {*} and port {7705}; check please your network, most probably port has been already occupied
- host id out of bound id {-1} max id should be greater 0 and less than {1}
- Host doesn’t exist
And the room will not be joinable. It will be joinable by specifying my ip if I remove the networkMatch.CreateMatch().
Gatau
2
As described here, I had to StartHost() at OnMatchCreate passing a MatchInfo object.
public void OnMatchCreate(CreateMatchResponse matchResponse)
{
if (matchResponse.success)
{
matchInfo = new MatchInfo(matchResponse);
Utility.SetAccessTokenForNetwork(matchResponse.networkId, new NetworkAccessToken(matchResponse.accessTokenString));
networkLobbyManager.StartHost(matchInfo);
Debug.Log("Create match succeeded");
}
else {
Debug.LogError("Create match failed");
}
}
I also removed the NetworkServer.Listen(new MatchInfo(matchResponse), 9000); row