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"); } }
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(); }
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; } }
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); } }
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; } }
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); }