コード例 #1
0
    public void SendPosition()
    {
        GameStateMsg msg = new GameStateMsg();

        msg.m_netId    = netId;
        msg.m_position = transform.position;
        bool sendResult = false;

        if (isServer)
        {
            sendResult = NetworkServer.SendToAll(GameStateMsg.msgId, msg);
        }
        else
        {
            sendResult = NetworkManager.singleton.client.Send(GameStateMsg.msgId, msg);
        }

        if (sendResult)
        {
            Debug.Log("Sending msg");
        }
        else
        {
            Debug.Log("Failed Sending msg");
        }
    }
コード例 #2
0
    void GameLoop()
    {
        //Debug.Log("Running Game Loop...");
        Color randomColor = RandomColor();

        Color RandomColor()
        {
            return(new Color(UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value));
        }

        //Debug.Log("Amount In Server: " + m_Connections.Length);
        if (m_Connections.Length > 0)
        {
            for (int i = 0; i < m_Connections.Length; i++)
            {
                // Fill Game Loop Data
                GameLoopData.GameState.Insert(i, ConnectedList.GameState[i]);
            }
            for (int i = 0; i < m_Connections.Length; i++)
            {
                // Send Game Loop Data
                SendToClient(JsonUtility.ToJson(GameLoopData), m_Connections[i]);
            }
        }
        GameLoopData = new GameStateMsg();
    }
コード例 #3
0
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.PLAYER_CONNECTED:
            ConnectionApprovedMsg cpMsg = JsonUtility.FromJson <ConnectionApprovedMsg>(recMsg);
            Debug.Log("Handshake message received!");

            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            //Debug.Log("Player update message received!");
            playerData = puMsg;
            Debug.Log("Player ID: " + playerData.player.id + " Player Position: " + playerData.player.cubPos);
            //Debug.Log("Time As of Now: " + DateTime.Now);
            playerData.player.pulse = DateTime.Now;
            for (i = 0; i < ConnectedList.GameState.Count; i++)
            {
                if (playerData.player.id == ConnectedList.GameState[i].id)
                {
                    ConnectedList.GameState.Insert(i, playerData.player);
                    ConnectedList.GameState.RemoveAt(i + 1);
                }
                Debug.Log("Transfered ID: " + ConnectedList.GameState[i].id + "Transfered Pos: " + ConnectedList.GameState[i].cubPos);
            }


            break;

        case Commands.PLAYER_DISCONNECTED:
            PlayerDisconnectMsg pdMsg = JsonUtility.FromJson <PlayerDisconnectMsg>(recMsg);
            Debug.Log("Player Disconnect update message received!, Got This: " + i);
            OnDisconnect(i);
            break;

        case Commands.GAMESTATE:
            GameStateMsg gsMsg = JsonUtility.FromJson <GameStateMsg>(recMsg);
            Debug.Log("GameState update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
コード例 #4
0
    protected void OnGameStateMsg(NetworkMessage netMsg)
    {
        GameStateMsg msg = netMsg.ReadMessage <GameStateMsg>();

        Debug.Log("OnGameStateMsg msg.m_netId: " + msg.m_netId);
        Debug.Log("OnGameStateMsg netId: " + netId);
        //sent from other machine
        //net ids match, update this replica
        if (msg.m_netId == netId)
        {
            this.transform.position = msg.m_position;
            Debug.Log("OnGameStateMsg Position: " + msg.m_position);
        }
    }
コード例 #5
0
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.CONNECTION_APPROVED:     // SELF
            ConnectionApprovedMsg cpMsg = JsonUtility.FromJson <ConnectionApprovedMsg>(recMsg);
            Debug.Log("Connection Approved message received!");

            foreach (NetworkObjects.NetworkPlayer player in cpMsg.player)
            {
                Debug.Log("Our Internal ID: " + player.id);
                Debug.Log("Color R: " + player.cubeColor.r + " Color G: " + player.cubeColor.g + " Color B: " + player.cubeColor.b);
                Debug.Log("Pos X: " + player.cubPos.x + " Pos Y: " + player.cubPos.y + " Pos Z: " + player.cubPos.z);

                newPlayers.Add(player.id);
                myAddress = player.id;
            }
            break;

        case Commands.PLAYER_CONNECTED:     // Everyone else
            PlayerConnectedMsg pcMsg = JsonUtility.FromJson <PlayerConnectedMsg>(recMsg);
            Debug.Log("Player Connected message received!");

            foreach (NetworkObjects.NetworkPlayer player in pcMsg.player)
            {
                //Debug.Log("Our Internal ID: " + player.id);
                //Debug.Log("Color R: " + player.cubeColor.r + " Color G: " + player.cubeColor.g + " Color B: " + player.cubeColor.b);
                //Debug.Log("Pos X: " + player.cubPos.x + " Pos Y: " + player.cubPos.y + " Pos Z: " + player.cubPos.z);

                newPlayers.Add(player.id);
            }
            break;

        case Commands.PLAYER_DISCONNECTED:
            PlayerDisconnectMsg pdMsg = JsonUtility.FromJson <PlayerDisconnectMsg>(recMsg);
            Debug.Log("Player disconnect message received! User ID: " + pdMsg.player.id);
            droppedPlayers.Add(pdMsg.player.id);
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.GAMESTATE:
            GameStateMsg gsMsg = JsonUtility.FromJson <GameStateMsg>(recMsg);
            Debug.Log("Game State update message received!");
            lastestGameState = gsMsg;
            for (int i = 0; i < lastestGameState.GameState.Count; i++)
            {
                Debug.Log("Game State ID: " + lastestGameState.GameState[i].id + " RGB: " + lastestGameState.GameState[i].cubeColor + "Pos: " + lastestGameState.GameState[i].cubPos);
            }


            break;

        case Commands.SERVER_UPDATE:     // Gives The Player List Already In Server
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            for (int i = 0; i < suMsg.players.Count; i++)
            {
                Debug.Log("PlayerList: " + suMsg.players[i].id);
            }

            initialSetofPlayers = suMsg;

            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
コード例 #6
0
	void SendGameState()
	{
		GameStateMsg stateMsg = new GameStateMsg();
		stateMsg.playerCount = players.Count;
		stateMsg.yellowAttacking = attackingTeam == PlayerTeam.TeamYellow;
		stateMsg.score = score;
		stateMsg.sceneName = networkSceneName;
		stateMsg.playerIds = new short[players.Count];
		stateMsg.playerNames = new string[players.Count];
		stateMsg.playerLives = new byte[players.Count];
		stateMsg.playerTeams = new byte[players.Count];
		stateMsg.playerChars = new byte[players.Count];
		for(int i=0; i< players.Count; i++)
		{
			stateMsg.playerIds[i] = players[i].controller.id;
			stateMsg.playerNames[i] = players[i].name;
			stateMsg.playerLives[i] = players[i].lives;
			stateMsg.playerTeams[i] = (byte)players[i].team;
			stateMsg.playerChars [i] = players [i].character;
		}
		NetworkServer.SendToAll(GameStateMsg.type, stateMsg);
	}