public void StartGame()
    {
        //first player
        StartGameMessage startGameMessage = new StartGameMessage()
        {
            playerData   = NetworkUtilities.GetNetPlayerData(players[0]),
            opponentData = NetworkUtilities.GetNetPlayerData(players[1])
        };

        SendNetMessage(ref m_Driver, players[0].m_connenction, startGameMessage);


        //second player
        startGameMessage = new StartGameMessage()
        {
            playerData   = NetworkUtilities.GetNetPlayerData(players[1]),
            opponentData = NetworkUtilities.GetNetPlayerData(players[0])
        };

        SendNetMessage(ref m_Driver, players[1].m_connenction, startGameMessage);

        currentPlayer = players.IndexOf(players.Find(x => x.guid == 0));

        gameStarted = true;
    }
    internal void EndCurrentTurn()
    {
        //send end turn message to the current player
        SendNetMessage(ref m_Driver, players[currentPlayer].m_connenction, new EndTurnMessage()
        {
            recepientGUID = players[currentPlayer].guid,

            playerData = NetworkUtilities.GetNetPlayerData(players[currentPlayer]),

            opponentData = NetworkUtilities.GetNetPlayerData(players[inactivePlayer])
        });
        //send start turn to the other player
        SendNetMessage(ref m_Driver, players[inactivePlayer].m_connenction, new StartTurnMessage()
        {
            recepientGUID = players[inactivePlayer].guid,

            playerData = NetworkUtilities.GetNetPlayerData(players[inactivePlayer]),

            opponentData = NetworkUtilities.GetNetPlayerData(players[currentPlayer])
        });

        madeMoves     = 0;
        currentPlayer = inactivePlayer;
    }