コード例 #1
0
    internal static void GameServerCreated(Packet _packet)
    {
        string             messageJSON   = _packet.ReadString();
        GameserverInstance configuration = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON);

        Client.instance.ConnectToServer(configuration);
    }
コード例 #2
0
 public void ConnectToServer(GameserverInstance gameserverInstance)
 {
     tcp  = new TCP();
     udp  = new UDP(PacketHandlers.Client);
     ip   = gameserverInstance.IP;
     port = gameserverInstance.Port;
     tcp.Connect(ip, port, PacketHandlers.Client);
     GameManager.instance.SpawnPlayerUI(this);
 }
コード例 #3
0
 public static void RecieveConfigurationRequest(GameserverInstance configuration)
 {
     Console.WriteLine("Server configuration recieved");
     Console.WriteLine("Configuring server..");
     Instance = configuration;
     Console.WriteLine("Server configured");
     Console.WriteLine("\n");
     SendReadyState();
 }
コード例 #4
0
    void AddServerInstance(GameserverInstance gameserverInstance)
    {
        GameObject gameObject = GameObject.Instantiate(BrowseEntryPrefab, BrowseEntriesPanel);

        browseEntries.Add(gameObject);
        BrowseEntry entry = gameObject.GetComponent <BrowseEntry>();

        entry.ServerInstance = gameserverInstance;
        entry.GetComponent <BrowseEntry>().Button.onClick.AddListener(delegate { JoinServer(entry.ServerInstance); });
    }
コード例 #5
0
        public static void ReceiveServerInfo(GameserverInstance gameserverInstance)
        {
            Console.WriteLine($"Received server info");
            Console.WriteLine($"ServerID {gameserverInstance.GameserverID}");
            Console.WriteLine($"Game name {gameserverInstance.ServerName}");
            Console.WriteLine($"Server IP {gameserverInstance.IP}");
            Console.WriteLine($"Server Port {gameserverInstance.Port}");

            ConnectToServer(gameserverInstance);
        }
コード例 #6
0
    public static void CreateServerRequest(GameserverInstance gameserverInstance)
    {
        string JSON = JsonConvert.SerializeObject(gameserverInstance);

        using (Packet packet = new Packet((int)ServerManagerPackets.Create))
        {
            packet.Write(JSON);
            SendTCPDataServerManager(packet);
        }
    }
コード例 #7
0
 public void CreateGame()
 {
     if (!_creatingGame)
     {
         _creatingGame = true;
         Client.instance.ConnectToServerManager();
         GameserverInstance testInstance = new GameserverInstance()
         {
             ServerName = Client.instance.Username + "-server"
         };
         ClientPacketSender.CreateServerRequest(testInstance);
     }
 }
コード例 #8
0
    internal static void Configure(Packet _packet)
    {
        string             messageJSON   = _packet.ReadString();
        GameserverInstance configuration = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON);

        Server.GameserverInstance = configuration;
        Console.WriteLine("Server configuration recieved");
        Console.WriteLine("Configuring server..");
        Console.WriteLine("Server configured");
        Console.WriteLine("\n");

        //Send ready state
        ServerPacketSender.SendReadyState();
    }
コード例 #9
0
ファイル: Server.cs プロジェクト: Neebzan/Bachelor-project
    public static void RegisterServer()
    {
        TcpClient tcpClient = new TcpClient(_serverManagerIP, _serverManagerPort);

        ServerManagerTCP = new TCP();
        ServerManagerTCP.Connect(tcpClient, PacketHandlers.ServerManagerServer, false);

        Console.WriteLine("Getting game ID..");

        //string gameIdentifier = GetGameID();
        string gameIdentifier = "game -" + UnityEngine.Random.Range(0, 10000).ToString();

        Console.WriteLine("GameID: " + gameIdentifier);
        Console.WriteLine("\n");

        Console.WriteLine("Creating game instance..");
        GameserverInstance = new GameserverInstance()
        {
            GameserverID = "", // Read from kubernetes pod
            Port         = ((IPEndPoint)tcpListener.LocalEndpoint).Port,
            IP           = "212.10.51.254"
        };


        if (gameIdentifier.Contains("game-"))
        {
            GameserverInstance.GameserverID = gameIdentifier;
        }
        else
        {
            GameserverInstance.GameserverID = "Default";
        }

        Console.WriteLine("Instance created");
        Console.WriteLine($"ServerID {GameserverInstance.GameserverID}");
        Console.WriteLine($"Server IP {GameserverInstance.IP}");
        Console.WriteLine($"Server Port {GameserverInstance.Port}");
        Console.WriteLine("\n");

        ServerPacketSender.RegisterServer();

        //tcpClient.GetStream().BeginWrite(packet.ToArray(), 0, packet.Length(), null, null);
    }
コード例 #10
0
        public static void SendCreateServerRequest()
        {
            Console.WriteLine($"Sending request to create server");

            ServerManagerClient = new EmulatedPlayerClient(new TcpClient("212.10.51.254", 30006));
            //ServerManagerClient = new Client(new TcpClient("212.10.51.254", 27001));

            GameserverInstance gameserverInstance = new GameserverInstance();

            // Get the name generated for this pod
            gameserverInstance.ServerName = "Test name";

            // Serialize GameserverInstance
            string JSON = JsonConvert.SerializeObject(gameserverInstance);

            Packet packet = new Packet((int)MessageType.Create);

            packet.Write(JSON);
            packet.WriteLength();

            ServerManagerClient.TcpClient.GetStream().BeginWrite(packet.ToArray(), 0, packet.Length(), null, null);
            Console.WriteLine("Waiting for server response");
        }
コード例 #11
0
        private bool HandleIncomingData(byte[] data)
        {
            //Read the length of the next data packet
            int packetLength = 0;

            incomingPacket.SetBytes(data);

            //Check if there is 4 or more bytes in the packet (size of int is 4)
            if (incomingPacket.UnreadLength() >= 4)
            {
                //Read the length of the incoming packet
                packetLength = incomingPacket.ReadInt();
                if (packetLength <= 0)
                {
                    //If the length is 0, return
                    return(true);
                }
            }

            //Keep reading until there is no more data left to read for this specific packet
            //We keep this in a while loop here because one packet might be made up of several packets
            while (packetLength > 0 && packetLength <= incomingPacket.UnreadLength())
            {
                //Handle packet
                //Read the messagetype
                int         messageTypeInt = incomingPacket.ReadInt();
                MessageType messageType    = (MessageType)messageTypeInt;
                string      messageJSON    = "";

                switch (messageType)
                {
                case MessageType.Configure:
                    messageJSON = incomingPacket.ReadString();
                    GameserverInstance configuration = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON);
                    Gameserver.RecieveConfigurationRequest(configuration);
                    break;

                case MessageType.Ready:
                    break;

                default:
                    break;
                }

                packetLength = 0;

                //Check if there 4 or more bytes in the packet (size of int is 4)
                if (incomingPacket.UnreadLength() >= 4)
                {
                    //Read the length of the incoming packet
                    packetLength = incomingPacket.ReadInt();
                    if (packetLength <= 0)
                    {
                        //If the length is 0, return
                        return(true);
                    }
                }
            }

            if (packetLength <= 1)
            {
                return(true);
            }

            return(false);
        }
コード例 #12
0
        private bool HandleIncomingData(byte[] data)
        {
            //Read the length of the next data packet
            int packetLength = 0;

            incomingPacket.SetBytes(data);

            //Check if there is 4 or more bytes in the packet (size of int is 4)
            if (incomingPacket.UnreadLength() >= 4)
            {
                //Read the length of the incoming packet
                packetLength = incomingPacket.ReadInt();
                if (packetLength <= 0)
                {
                    //If the length is 0, return
                    return(true);
                }
            }

            //Keep reading until there is no more data left to read for this specific packet
            //We keep this in a while loop here because one packet might be made up of several packets
            while (packetLength > 0 && packetLength <= incomingPacket.UnreadLength())
            {
                //Handle packet
                //Read the messagetype
                int         messageTypeInt = incomingPacket.ReadInt();
                MessageType messageType    = (MessageType)messageTypeInt;
                string      messageJSON    = "";

                switch (messageType)
                {
                case MessageType.Ready:
                    messageJSON = incomingPacket.ReadString();
                    GameserverInstance gameserverReady = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON);
                    EmulatedUserConnection.ReceiveServerInfo(gameserverReady);
                    break;

                case MessageType.LiveServers:
                    messageJSON = incomingPacket.ReadString();
                    List <GameserverInstance> servers = JsonConvert.DeserializeObject <List <GameserverInstance> >(messageJSON);
                    foreach (var item in servers)
                    {
                        Console.WriteLine(item.ServerName);
                    }
                    break;

                default:
                    break;
                }

                packetLength = 0;

                //Check if there 4 or more bytes in the packet (size of int is 4)
                if (incomingPacket.UnreadLength() >= 4)
                {
                    //Read the length of the incoming packet
                    packetLength = incomingPacket.ReadInt();
                    if (packetLength <= 0)
                    {
                        //If the length is 0, return
                        return(true);
                    }
                }
            }

            if (packetLength <= 1)
            {
                return(true);
            }

            return(false);
        }
コード例 #13
0
 void JoinServer(GameserverInstance server)
 {
     Client.instance.ConnectToServer(server);
     this.gameObject.SetActive(false);
     MainPanelGO.SetActive(true);
 }
コード例 #14
0
 public static void ConnectToServer(GameserverInstance gameserverInstance)
 {
     Console.WriteLine("Connecting to game server");
     GameClient = new EmulatedPlayerClient(new TcpClient(gameserverInstance.IP, gameserverInstance.Port));
     Console.WriteLine("Connected!");
 }
コード例 #15
0
        public static void SendRegisterRequest()
        {
            TcpClient tcpClient = new TcpClient(_serverManagerIP, _serverManagerPort);

            ConnectedServerManager = new GameserverClient(tcpClient);

            Console.WriteLine("Getting game ID..");

            Process p = new Process();

            p.StartInfo = new ProcessStartInfo()
            {
                FileName               = "printenv",
                Arguments              = "SESSION_NAME",
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                CreateNoWindow         = true
            };

            string gameIdentifier = "";

            // Read result from process
            p.Start();
            while (!p.StandardOutput.EndOfStream)
            {
                gameIdentifier = p.StandardOutput.ReadLine();
            }

            p.WaitForExit();

            Console.WriteLine("GameID: " + gameIdentifier);
            Console.WriteLine("\n");

            Console.WriteLine("Creating game instance..");
            Instance = new GameserverInstance()
            {
                GameserverID = "", // Read from kubernetes pod
                Port         = ((IPEndPoint)clientListener.LocalEndpoint).Port,
                IP           = "212.10.51.254"
            };


            if (gameIdentifier.Contains("game-"))
            {
                Instance.GameserverID = gameIdentifier;
            }
            else
            {
                Instance.GameserverID = "Default";
            }

            Console.WriteLine("Instance created");
            Console.WriteLine($"ServerID {Instance.GameserverID}");
            Console.WriteLine($"Server IP {Instance.IP}");
            Console.WriteLine($"Server Port {Instance.Port}");
            Console.WriteLine("\n");

            string JSON = JsonConvert.SerializeObject(Instance);

            Packet packet = new Packet((int)MessageType.Register);

            packet.Write(JSON);
            packet.WriteLength();

            Console.WriteLine($"Sending game instance to server manager, to be configured..");
            tcpClient.GetStream().BeginWrite(packet.ToArray(), 0, packet.Length(), null, null);
        }