Hi all,
I really would like your help on this subject.
I am building a multiplayer game using the MasterServer tech. The server connects and disconnects flawlessly, and the client also connects without trouble.
However, when I run a new server, and try to connect as client, it blocks, and only releases when I change windows… Needless to say, this doesn’t happen on other machines
The code:
using UnityEngine;
using System.Collections;
using System.Net;
public class NetworkManagerCS : MonoBehaviour {
public int loadlevel;
public int connectPort = 25000;
public string hostname;
public string GameName = "Historical Grounds";
private bool isServerRegistered;
private bool refreshing;
private HostData[] hostData;
public void OnGUI() {
if (Network.peerType == NetworkPeerType.Disconnected) {
GUILayout.Label("Connection status: Disconnected");
//connectToIP2 = GUILayout.TextField("127.0.0.1", GUILayout.MinWidth(100));
//connectPort = int.Parse(GUILayout.TextField(connectPort.ToString()));
GUILayout.BeginVertical();
if (GUILayout.Button("Connect as client"))
{
ConnectToServer();
}
if (GUILayout.Button("Start Server"))
{
Network.InitializeServer(4, connectPort, true);
MasterServer.RegisterHost(GameName, "Tutorial Game", "This is a turn based shooter");
}
GUILayout.EndVertical();
}
else
{
if (Network.peerType == NetworkPeerType.Connecting)
{
GUILayout.Label("Connection status: Connecting");
}
else if (Network.peerType == NetworkPeerType.Client)
{
GUILayout.Label("Connection status: Client!");
GUILayout.Label("Ping to server: " + Network.GetAveragePing(Network.connections[0]));
if( GUILayout.Button("Attack Server")) {
networkView.RPC("AttackServer",RPCMode.All, null);
}
}
else if (Network.peerType == NetworkPeerType.Server)
{
GUILayout.Label("Connection status: Server!");
GUILayout.Label("Hostname is:" + System.Net.Dns.GetHostName() );
GUILayout.Label("Connections: " + Network.connections.Length);
}
if (GUILayout.Button("Disconnect"))
{
Network.Disconnect(200);
}
}
}
public void Update() {
if(refreshing) {
if (MasterServer.PollHostList().Length > 0) {
refreshing = false;
Debug.Log(MasterServer.PollHostList().Length);
hostData = MasterServer.PollHostList();
ConnectToServer();
}
}
}
public void ConnectToServer() {
if (hostData == null) {
MasterServer.RequestHostList(GameName);
refreshing = true;
} else {
Network.Connect(hostData[0]);
}
}
public void OnConnectedToServer()
{
Application.LoadLevel(loadlevel);
}
public void OnDisconnectedFromServer(NetworkDisconnection info)
{
}
public void OnFailedToConnect(NetworkConnectionError error)
{
Debug.LogError(error.ToString());
Debug.Log("FAIL!");
}
public void OnPlayerConnected(NetworkPlayer player)
{
Debug.Log("Player connected from: " + player.ipAddress + ":" + player.port);
}
public void OnServerInitialized()
{
Application.LoadLevel(loadlevel);
Debug.Log("Server Started");
}
public void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
}
void OnMasterServerEvent(MasterServerEvent msg) {
if (msg == MasterServerEvent.RegistrationSucceeded){
Debug.Log("Registered Server!");
}
isServerRegistered = true;
}
[RPC]
public void AttackServer() {
Debug.Log ("Server is under attack");
}
[RPC]
public void UpdateHostname() {
}
}
I’m sure this is a system thing, but maybe it has something to do with the code?
Thanks!