private void Start() { QualitySettings.vSyncCount = 0; Application.targetFrameRate = 30; Server.Start(50, 27017); ServerConsoleWriter.WriteLine($"Animal Wars Server Started ON : {DateTime.UtcNow} PORT : {Server.Port}"); }
private static void InitializeServerData() { for (var i = 1; i <= MaxPlayers; i++) { Clients.Add(i, new Client(i)); } PacketHandlers = new Dictionary <int, PacketHandler>() { { (int)ClientPackets.welcomereceived, ServerHandle.WelcomeReceived }, { (int)ClientPackets.playerMovement, ServerHandle.PlayerMovement }, { (int)ClientPackets.sendLoginInfo, ServerHandle.LoginInformation }, { (int)ClientPackets.sendInviteClient, ServerHandle.SendInvitationServer }, { (int)ClientPackets.inviteAnswer, ServerHandle.SendInviteAnswer }, { (int)ClientPackets.startMatchMaking, ServerHandle.AddToMatchMaking }, { (int)ClientPackets.stopMatchMaking, ServerHandle.RemoveFromMatchMaking }, { (int)ClientPackets.mmPopUpAnswer, ServerHandle.MatchAnswer }, { (int)ClientPackets.notifyPickUpdate, ServerHandle.HandleLobbyPlayer }, { (int)ClientPackets.sceneLoaded, ServerHandle.HandleSceneUpdate }, { (int)ClientPackets.sceneCompleted, ServerHandle.HandleSceneCompleted }, { (int)ClientPackets.enteredConflictZone, ServerHandle.HandleGamePlayConflictZone }, { (int)ClientPackets.enteredNeutralZone, ServerHandle.HandleGamePlayConflictZone }, { (int)ClientPackets.enteredBeneficialZone, ServerHandle.HandleGamePlayConflictZone }, }; ServerConsoleWriter.WriteLine("Initialized packets."); }
/// <summary>Reads incoming data from the stream.</summary> private void ReceiveCallback(IAsyncResult result) { try { var byteLength = stream.EndRead(result); if (byteLength <= 0) { if (Server.Clients.ContainsKey(id)) { Server.Clients[id].Disconnect(); } return; } var data = new byte[byteLength]; Array.Copy(receiveBuffer, data, byteLength); receivedData.Reset(HandleData(data)); // Reset receivedData if all data was handled stream.BeginRead(receiveBuffer, 0, DataBufferSize, ReceiveCallback, null); } catch (Exception ex) { // ServerConsoleWriter.WriteLine($"Error receiving TCP data: {ex}"); Server.Clients[id].Disconnect(); } }
/// <summary>Disconnects the client and stops all network traffic.</summary> private void Disconnect() { TcpInstance.Disconnect(); UdpInstance.Disconnect(); ServerSend.PlayerDisconnected(id); ServerConsoleWriter.WriteLine($"Player {id} has successfully disconnected from the server"); }
public static void RemoveFromQueue(PlayerDataHolder playerDataHolder) { ServerConsoleWriter.WriteLine($"{playerDataHolder.Username} has left the match Queue"); if (MatchQueue.Contains(playerDataHolder)) { MatchQueue.Remove(playerDataHolder); } }
public static void MatchFound(int _playerId, int _matchId) { using (Packet _packet = new Packet((int)ServerPackets.matchFound)) { _packet.Write(_matchId); try { SendTcpData(_playerId, _packet); } catch { ServerConsoleWriter.WriteLine($"Error sending {_packet} to {_playerId}"); } } }
private static List <PlayerDataHolder> MatchQueue = new List <PlayerDataHolder>(); //This list stores the PlayerDataHolder's of Clients looking for match //public List<Maps> availableMaps = new List<Maps>(); public static void AddToQueue(PlayerDataHolder playerDataHolder) { ServerConsoleWriter.WriteLine($"{playerDataHolder.Username} has joined the match Queue"); if (playerDataHolder.GetMatchId() != 0) { //This user was on a match so he should rejoin it :) } else { MatchQueue.Add(playerDataHolder); } }
private static void TcpConnectCallback(IAsyncResult result) { TcpClient client = _tcpListener.EndAcceptTcpClient(result); _tcpListener.BeginAcceptTcpClient(TcpConnectCallback, null); ServerConsoleWriter.WriteLine($"Incoming connection from {client.Client.RemoteEndPoint}..."); for (int i = 1; i <= MaxPlayers; i++) { if (Clients[i].TcpInstance.Socket == null) { Clients[i].TcpInstance.Connect(client); return; } } ServerConsoleWriter.WriteLine($"{client.Client.RemoteEndPoint} failed to connect: Server full!"); }
public static void SendInvitationServer(int fromClient, Packet packet) { var id = packet.ReadInt(); var username = packet.ReadString(); //Who SENT THE INVITATION var toUserName = packet.ReadString(); // Who is THE INVITE FOR if (Dictionaries.dictionaries.PlayersByName.ContainsKey(toUserName)) { var sendToID = Dictionaries.dictionaries.PlayersByName[toUserName]; ServerSend.SendInvite(fromClient, username, toUserName, sendToID); } else { //The given user was not online ServerConsoleWriter.WriteUserLog(Dictionaries.dictionaries.PlayersById[fromClient], $"Tried to invite {toUserName} but this user was not online"); } }
private IEnumerator LoginStart(string user, string pass) { var form = new WWWForm(); form.AddField("user", user); form.AddField("pass", pass); var www = new WWW(Constants.SqlNameServer + "login.php", form); yield return(www); if (www.text[0] == '0' && !Dictionaries.dictionaries.PlayersByName.ContainsKey(user)) //AVOID THE SAME USER FROM LOGIN IN TWICE { //Allow Login Dictionaries.dictionaries.PlayersByName.Add(user, id); Dictionaries.dictionaries.PlayersById.Add(id, user); ServerSend.LoginResult(id, true, "noError", int.Parse(www.text.Split('\t')[1])); ServerConsoleWriter.WriteUserLog(user, $"New log started {user}"); Dictionaries.dictionaries.PlayerDataHolders.Add(id, new PlayerDataHolder(id, user)); } else { ServerSend.LoginResult(id, false, www.text, -9); } }