public void Update() { if (mode == NetworkManagerMode.ServerOnly) { PingManager.ServerPingUpdate(); } }
/// <summary> /// Call this when the server is stopped /// </summary> internal static void OnStopServer() { Logger.Info("Stopping server..."); PingManager.ServerShutdown(); //Stop advertising the server when the server stops netManager.gameDiscovery.StopDiscovery(); Logger.Info("Server stopped!"); //Close server online file stream try { serverOnlineFileStream.Close(); serverOnlineFileStream.Dispose(); serverOnlineFileStream = null; } catch (Exception ex) { Logger.Error(ex, "An error occurred while shutting down the server!"); } netManager = null; //Double check that the file is deleted if (File.Exists(serverOnlineFilePath)) { File.Delete(serverOnlineFilePath); } }
public void Update() { if (mode == NetworkManagerMode.ServerOnly) { PingManager.ServerPingUpdate(); LagCompensationManager.ServerUpdate(); } }
/// <summary> /// Called when the client starts /// </summary> /// <param name="workingNetManager"></param> internal static void OnClientStart(TCNetworkManager workingNetManager) { clientHasPlayer = false; netManager = workingNetManager; //We register for ServerConfigurationMessage, so we get server info NetworkClient.RegisterHandler <ServerConfig>(OnReceivedServerConfig); PingManager.ClientSetup(); Logger.Info("Started client."); }
/// <summary> /// Called when a client request for a player object /// </summary> /// <param name="conn"></param> /// <param name="playerPrefab"></param> internal static void ServerCreatePlayerObject(NetworkConnection conn, GameObject playerPrefab) { //Create the player object GameObject player = Object.Instantiate(playerPrefab); player.AddComponent<SimulationObject>(); //Add the connection for the player NetworkServer.AddPlayerForConnection(conn, player); //Make initial ping PingManager.PingClient(conn); Logger.Info("Created player object for {NetID}", conn.identity.netId); }
/// <summary> /// Called when a client request for a player object /// </summary> /// <param name="conn"></param> /// <param name="playerPrefab"></param> internal static void ServerCreatePlayerObject(NetworkConnection conn, GameObject playerPrefab) { Transform spawnPoint = netManager.GetStartPosition(); //Create the player object GameObject player = Object.Instantiate(playerPrefab, spawnPoint.position, spawnPoint.rotation); player.AddComponent <LagCompensatedObject>(); //Add the connection for the player NetworkServer.AddPlayerForConnection(conn, player); //Make initial ping PingManager.AddClient(conn); PingManager.PingClient(conn); Logger.Info("Created player object for {NetID}", conn.identity.netId); }
/// <summary> /// Call this when the server is started /// </summary> internal static void OnStartServer(TCNetworkManager workingNetManager) { serverOnlineFilePath = $"{Game.GetGameExecutePath()}/{ServerOnlineFile}"; if (File.Exists(serverOnlineFilePath)) { throw new Exception("Server is already online!"); } netManager = workingNetManager; Logger.Info("Starting server..."); //Set what network address to use and start to advertise the server on lan netManager.networkAddress = NetHelper.LocalIpAddress(); netManager.gameDiscovery.AdvertiseServer(); //Start ping service PingManager.ServerSetup(); //Run the server autoexec config ConsoleBackend.ExecuteFile("server-autoexec"); SetupServerConfig(); //Create server online file try { serverOnlineFileStream = File.Create(serverOnlineFilePath, 128, FileOptions.DeleteOnClose); serverOnlineFileStream.Write(ServerOnlineFileMessage, 0, ServerOnlineFileMessage.Length); serverOnlineFileStream.Flush(); File.SetAttributes(serverOnlineFilePath, FileAttributes.Hidden); } catch (IOException ex) { Logger.Error(ex, "An error occurred while setting up the server!"); netManager.StopHost(); return; } Logger.Info("Server has started and is running on '{Address}' with max connections of {MaxPlayers}!", netManager.networkAddress, netManager.maxConnections); }
/// <summary> /// Called when the client is stopped /// </summary> internal static void OnClientStop() { PingManager.ClientShutdown(); Logger.Info("Stopped client."); }
/// <summary> /// Called when the client is stopped /// </summary> internal static void OnClientStop() { Status = ClientStatus.Offline; PingManager.ClientShutdown(); Logger.Info("Stopped client."); }
/// <summary> /// Call this when the server is started /// </summary> internal static void OnStartServer(TCNetworkManager workingNetManager) { serverOnlineFilePath = $"{Game.GetGameExecutePath()}/{ServerOnlineFile}"; if (File.Exists(serverOnlineFilePath)) { throw new Exception("Server is already online!"); } netManager = workingNetManager; Logger.Info("Starting server..."); //Get the online scene TCScene onlineScene = TCScenesManager.FindSceneInfo(Scene); if (onlineScene == null) { Logger.Error($"Failed to find scene {Scene}!"); throw new FileNotFoundException($"Scene {Scene} not found!"); } //Setup the server's config SetupServerConfig(); Application.targetFrameRate = netManager.serverTickRate; //Make some adjustments to scenes config if we are running headless if (Game.IsHeadless) { netManager.offlineScene = null; netManager.onlineScene = onlineScene.scene; TCScenesManager.LoadScene(onlineScene); } //Set what network address to use and start to advertise the server on lan netManager.networkAddress = NetHelper.LocalIpAddress(); netManager.gameDiscovery.AdvertiseServer(); //Setup ping related stuff PingManager.ServerSetup(); LagCompensationManager.ServerSetup(); //Run the server autoexec config ConsoleBackend.ExecuteFile("server-autoexec"); //Server chat NetworkServer.RegisterHandler <ChatMessage>(ServerChat.ReceivedChatMessage); //Create server online file try { serverOnlineFileStream = File.Create(serverOnlineFilePath, 128, FileOptions.DeleteOnClose); serverOnlineFileStream.Write(ServerOnlineFileMessage, 0, ServerOnlineFileMessage.Length); serverOnlineFileStream.Flush(); File.SetAttributes(serverOnlineFilePath, FileAttributes.Hidden); } catch (IOException ex) { Logger.Error(ex, "An error occurred while setting up the server!"); netManager.StopHost(); return; } Logger.Info("Server has started and is running on '{Address}' with max connections of {MaxPlayers}!", netManager.networkAddress, netManager.maxConnections); }