internal static void GameServerCreated(Packet _packet) { string messageJSON = _packet.ReadString(); GameserverInstance configuration = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON); Client.instance.ConnectToServer(configuration); }
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); }
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(); }
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); }); }
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); }
public static void CreateServerRequest(GameserverInstance gameserverInstance) { string JSON = JsonConvert.SerializeObject(gameserverInstance); using (Packet packet = new Packet((int)ServerManagerPackets.Create)) { packet.Write(JSON); SendTCPDataServerManager(packet); } }
public void CreateGame() { if (!_creatingGame) { _creatingGame = true; Client.instance.ConnectToServerManager(); GameserverInstance testInstance = new GameserverInstance() { ServerName = Client.instance.Username + "-server" }; ClientPacketSender.CreateServerRequest(testInstance); } }
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(); }
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); }
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"); }
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); }
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); }
void JoinServer(GameserverInstance server) { Client.instance.ConnectToServer(server); this.gameObject.SetActive(false); MainPanelGO.SetActive(true); }
public static void ConnectToServer(GameserverInstance gameserverInstance) { Console.WriteLine("Connecting to game server"); GameClient = new EmulatedPlayerClient(new TcpClient(gameserverInstance.IP, gameserverInstance.Port)); Console.WriteLine("Connected!"); }
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); }