コード例 #1
0
 // Start is called before the first frame update
 void Start()
 {
     Debug.Log("MultiplayerSystem: starting mp sys!");
     instance = this;
 }
コード例 #2
0
    void Start()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
        bool isMultiplayer = Scenes.getParam("multiplayer") == "true";

        if (isMultiplayer)
        {
            playerMove             = player.GetComponent <PlayerMove>();
            buildingSystem         = blockManager.GetComponent <BuildingSystem>();
            multiplayerSystem      = GetComponent <MultiplayerSystem>();
            myClientName           = Scenes.getParam("userName");
            ipOfFirstPeerConnecton = Scenes.getParam("ip");

            if (ipOfFirstPeerConnecton.Equals("localhost"))
            {
                ipOfFirstPeerConnecton = GetLocalIPAddress();
            }

            string remotePortAsString = Scenes.getParam("remotePort");
            string localPortAsString  = Scenes.getParam("localPort");

            remotePort = Int32.Parse(remotePortAsString);
            localPort  = Int32.Parse(localPortAsString);

            Debug.Log("Manager of " + myClientName + ": Manager: IS Multiplayer! read ip and port from params = " + ipOfFirstPeerConnecton + ":" + remotePort + " / " + localPort);

            //players.Add(myClientName, player);

            //1 & 1b
            server = new PeerToPeerServer(this, localPort);
            server.Start();
            Debug.Log("Manager of " + myClientName + ": Manager: Server started");

            //1a)
            peers.Add(myClientName, GetLocalIPAddress() + ":" + localPort);


            //2
            if ((!ipOfFirstPeerConnecton.Equals("localhost")) && (!ipOfFirstPeerConnecton.Equals("127.0.0.1")) && (!ipOfFirstPeerConnecton.Equals(GetLocalIPAddress())))
            {
                Debug.Log("Manager of " + myClientName + ": connecting to peer of non local game");
                //then connect to peer
                ConnectToExistingPeers();
            }
            else if (remotePort != localPort)
            {
                Debug.Log("Manager of " + myClientName + ": connecting to ppeer of local game");
                ConnectToExistingPeers();
            }
            else
            {
                Debug.Log("Manager of " + myClientName + ": first peer - no connection needed");
            }


            /*
             * 1. eigenen Server starten (angabe des port)
             * a) speichern der eignen instanz in der liste der ip adressen um diese ggf an andere clients zu kommunizieren
             * b) Hören auf eingehende Verbindungen
             *
             */
        }
        pingThread = new Thread(new ThreadStart(SendPingMessages));
        pingThread.IsBackground = true;
        pingThread.Start();
    }