private static bool StartSteamServer(Action <ulong, ulong, ServerAuth.Status> OnAuthChange) { if (Server != null) { return(false); } var serverInit = new ServerInit(Config.ModDir, Config.GameDescription); serverInit.Secure = Config.Secure; serverInit.VersionString = Config.Version; Server = new Server(_instance._appId, serverInit); Server.ServerName = Config.Name; Server.MaxPlayers = Config.MaxPlayers; Server.LogOnAnonymous(); if (!Server.IsValid) { Server = null; Debug.LogError("Couldn't initialize steam server."); return(false); } Server.Auth.OnAuthChange = OnAuthChange; Debug.Log("Steam server initialized."); return(true); }
public static bool CreateServer(Networking.GameServer server, bool isPublic) { Instance.isInitialized = true; ServerInit options = new ServerInit("Barotrauma", "Barotrauma") { GamePort = (ushort)server.Port, QueryPort = (ushort)server.QueryPort }; //options.QueryShareGamePort(); instance.server = new Server(AppID, options, isPublic); if (!instance.server.IsValid) { instance.server.Dispose(); instance.server = null; DebugConsole.ThrowError("Initializing Steam server failed."); return(false); } RefreshServerDetails(server); server.ServerPeer.InitializeSteamServerCallbacks(instance.server); Instance.server.LogOnAnonymous(); return(true); }
public void SteamServerStart() { // init the SteamServer needed for authentication of players // Config.ForUnity(Application.platform.ToString()); string path = Path.GetFullPath("."); string folderName = Path.GetFileName(Path.GetDirectoryName(path)); ServerInit options = new ServerInit(folderName, "Unitystation"); server = new Server(801140, options); if (server != null) { if (GameData.IsHeadlessServer || GameData.Instance.testServer || SystemInfo.graphicsDeviceType == GraphicsDeviceType.Null) { server.DedicatedServer = true; } server.LogOnAnonymous(); server.ServerName = "Unitystation Official"; // Set required settings for dedicated server Logger.Log("Setting up Auth hook", Category.Steam); //Process callback data for authentication server.Auth.OnAuthChange = AuthChange; } // confirm in log if server is actually registered or not if (server.IsValid) { Logger.Log("Server registered", Category.Steam); } else { Logger.Log("Server NOT registered", Category.Steam); } }
public void InitTest() { int SERVER_CACHED_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_BUFFER_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_MANAGE_THREAD_POOL_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_SEND_THREAD_POOL_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_RECEIVE_THREAD_POOL_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_PROCESS_THREAD_POOL_SIZE = 0; // TODO: 初始化为适当的值 int SERVER_MAX_CLIENTS = 0; // TODO: 初始化为适当的值 int SERVER_OUT_TIME_INTERVAL = 0; // TODO: 初始化为适当的值 ServerInit.Init(SERVER_CACHED_SIZE, SERVER_BUFFER_SIZE, SERVER_MANAGE_THREAD_POOL_SIZE, SERVER_SEND_THREAD_POOL_SIZE, SERVER_RECEIVE_THREAD_POOL_SIZE, SERVER_PROCESS_THREAD_POOL_SIZE, SERVER_MAX_CLIENTS, SERVER_OUT_TIME_INTERVAL); Assert.Inconclusive("无法验证不返回值的方法。"); }
public void Run() { Console.CursorVisible = false; menu[0] = "Новая игра"; menu[1] = "Загрузить существующую игру"; menu2[0] = "Стандартная"; menu2[1] = "Альтернативная"; menu2[2] = "Смешанная"; menu2[3] = "С травоядными животными"; boolMenu[0] = true; options = jSON.GetJson(); serverInit = new ServerInit(options); MainMenu(); }
private void StartSteamServer() { if (Global.get_SteamServer() != null) { return; } IPAddress ipAddress = (IPAddress)null; if (!string.IsNullOrEmpty(ConVar.Server.ip)) { ipAddress = IPAddress.Parse(ConVar.Server.ip); } Config.ForUnity(Application.get_platform().ToString()); ServerInit serverInit = new ServerInit("rust", "Rust"); serverInit.IpAddress = (__Null)ipAddress; serverInit.GamePort = (__Null)(int)(ushort)((Network.Server)Network.Net.sv).port; serverInit.Secure = (__Null)(ConVar.Server.secure ? 1 : 0); serverInit.VersionString = (__Null)2161.ToString(); if (this.useQueryPort) { serverInit.QueryPort = (__Null)(int)(ushort)ConVar.Server.queryport; } else { serverInit.QueryShareGamePort(); } Global.set_SteamServer(new Facepunch.Steamworks.Server(Defines.appID, serverInit)); if (!((BaseSteamworks)Global.get_SteamServer()).get_IsValid()) { Debug.LogWarning((object)("Couldn't initialize Steam Server (" + (object)ipAddress + ")")); ((BaseSteamworks)Global.get_SteamServer()).Dispose(); Global.set_SteamServer((Facepunch.Steamworks.Server)null); Application.Quit(); } else { if (CommandLine.HasSwitch("-debugsteamcallbacks")) { Facepunch.Steamworks.Server steamServer = Global.get_SteamServer(); ((BaseSteamworks)steamServer).OnAnyCallback = (__Null)Delegate.Combine((Delegate)((BaseSteamworks)steamServer).OnAnyCallback, (Delegate) new Action <object>(ServerMgr.DebugPrintSteamCallback)); } Global.get_SteamServer().get_Auth().OnAuthChange = (__Null) new Action <ulong, ulong, ServerAuth.Status>(this.OnValidateAuthTicketResponse); ((BaseSteamworks)Global.get_SteamServer()).get_Inventory().add_OnDefinitionsUpdated(new Action(this.OnInventoryDefinitionsUpdated)); Global.get_SteamServer().LogOnAnonymous(); ((MonoBehaviour)this).InvokeRepeating("UpdateServerInformation", 1f, 10f); DebugEx.Log((object)"Connected to Steam", (StackTraceLogType)0); } }
public void Init() { var serverInit = new ServerInit("rust", "Rust"); serverInit.GamePort = 28015; serverInit.Secure = true; serverInit.QueryPort = 28016; using (var server = new Facepunch.Steamworks.Server(252490, serverInit)) { server.ServerName = "My Test Server"; server.LogOnAnonymous(); Assert.IsTrue(server.IsValid); } }
// -------------------------------------------------------------------------------- // Callbacks // -------------------------------------------------------------------------------- // Server successfully initialized void uLink_OnServerInitialized() { LogManager.General.Log("Server successfully started!"); // Set private key ServerInit.InitPrivateKey(); // Enable game mode gameMode.enabled = true; // Lower CPU consumption LogManager.General.Log("Setting frame rate to " + serverFrameRate); QualitySettings.vSyncCount = 0; Application.targetFrameRate = serverFrameRate; //(int)uLink.Network.sendRate * 2; // Max score needed if (GameManager.isArena && !isTestServer) { int playerCount = accountToParty.Count; gameMode.scoreNeededToWin = playerCount / 2 * 500; LogManager.General.Log("A team score of " + gameMode.scoreNeededToWin + " is needed to win the game."); } else { gameMode.scoreNeededToWin = 999999999; } // Start conditions if (!GameManager.isArena || isTestServer) { this.SendGameStart(); } // Disable network emulation on server LogManager.General.Log("Disabling network emulation"); NetworkHelper.DisableNetworkEmulation(); // Fastest quality level on server LogManager.General.Log("Enabling lowest quality level"); QualitySettings.SetQualityLevel(0); }
public void Start() { server.Start(); if (!PrivateServer) { MasterServer.Start(this); } if (ServerConfig.LoadConfig(ConfigDirectory, out var config)) { Config = config; Logger.LogDebug($"Loaded {Config.Bans.Count} bans."); } if (RequireSteamAuth) { Logger.LogDebug("Enabling steam authentication..."); var serverInit = new ServerInit("Getting Over It", "Getting Over It with Bennett Foddy") { GamePort = (ushort)Port, Secure = false }; SteamServer = new Server(SharedConstants.SteamAppId, serverInit); SteamServer.Auth.OnAuthChange += OnSteamAuthChange; SteamServer.ServerName = Name; SteamServer.AutomaticHeartbeats = false; SteamServer.DedicatedServer = !ListenServer; SteamServer.MaxPlayers = MaxPlayers; SteamServer.LogOnAnonymous(); Logger.LogDebug("Steam authentication enabled."); } Running = true; }
public static void Init() { if (ticket != null) { ticket.Cancel(); } if (Server.Instance != null) { return; } Debug.Log("SNet_Auth initiliazed"); ServerInit initer = new ServerInit("", ""); initer.GamePort = 27020; var server = new Server(Client.Instance.AppId, initer); if (server == null) { Debug.LogError("Steam Server init failed. Please restart the application/Unity"); Application.Quit(); return; } server.LogOnAnonymous(); server.Auth.OnAuthChange = (steamid, ownerid, status) => { Debug.Log(status + " " + ownerid); server.Auth.EndSession(steamid); Transform member = SNet_Manager.instance.lobbyMemberHolder.Find(steamid.ToString()); if (status == ServerAuth.Status.OK) { if (SNet_Network.instance.isHost()) { // client validated, send validate message to all of the clients current.validatedIds.Add(steamid); Validate(steamid); // Send all validateds to the new validated user. SNet_Network.instance.Send_Message(new Auth_All(), steamid); // Send the others the new one. ulong[] members = Client.Instance.Lobby.GetMemberIDs(); foreach (ulong u in members) { if (u != steamid) { SNet_Network.instance.Send_Message(new Auth_V(steamid), u); } } } else if (SNet_Network.instance.isHost(steamid)) { // host validated. send your auth ticket to the host. if (ticket != null) { ticket.Cancel(); } ticket = Client.Instance.Auth.GetAuthSessionTicket(); SNet_Network.instance.Send_Message(new Auth_H(ticket.Data), SNet_Network.currentHost); } /* * USER VALIDATED * */ Debug.Log("User validated: " + steamid); Validate(steamid); } else { if (member != null) { member.Find("VACError").gameObject.SetActive(true); } } }; }
// Awake void Awake() { // TODO: Checks... instance = this; // This will be reset later if -batchmode was specified #if UNITY_STANDALONE_WIN isTestServer = true; #else isTestServer = false; #endif // Default values serverPort = defaultServerPort; partyCount = 1; // -party0 account1 -party1 account2 // -batchmode -port7100 // taskkill /IM LogManager.General.Log("Parsing command line arguments"); string[] args = System.Environment.GetCommandLineArgs(); int partyId = GameServerParty.Undefined; foreach (string arg in args) { LogManager.General.Log("Command line argument: '" + arg + "'"); // Overwrite port if (arg.StartsWith("-port") && arg.Length > "-port".Length) { serverPort = int.Parse(arg.Substring(5)); // Batchmode } else if (arg == "-batchmode") { batchMode = true; isTestServer = false; // Party count } else if (arg.StartsWith("-partycount") && arg.Length > "-partycount".Length) { partyCount = int.Parse(arg.Substring("-partycount".Length)); LogManager.General.Log(string.Format("Creating parties: {0}", partyCount)); GameServerParty.partyList.Clear(); GameServerParty.CreateParties(partyCount); // Teams } else if (arg.StartsWith("-party") && arg.Length > "-party".Length) { partyId = int.Parse(arg.Substring("-party".Length)); restrictedAccounts = true; // Map } else if (arg.StartsWith("-map") && arg.Length > "-map".Length) { mapName = arg.Substring("-map".Length); // Lobby IP } else if (arg.StartsWith("-lobbyIP") && arg.Length > "-lobbyIP".Length) { lobbyIP = arg.Substring("-lobbyIP".Length); // Lobby Port } else if (arg.StartsWith("-lobbyPort") && arg.Length > "-lobbyPort".Length) { lobbyPort = int.Parse(arg.Substring("-lobbyPort".Length)); // Server type } else if (arg.StartsWith("-type") && arg.Length > "-type".Length) { string serverTypeString = arg.Substring("-type".Length); switch (serverTypeString) { case "Arena": GameManager.serverType = ServerType.Arena; break; case "Town": GameManager.serverType = ServerType.Town; break; case "FFA": GameManager.serverType = ServerType.FFA; break; case "World": GameManager.serverType = ServerType.World; break; } // Database IP } else if (arg.StartsWith("-databaseIP") && arg.Length > "-databaseIP".Length) { databaseIP = arg.Substring("-databaseIP".Length); // Database Port } else if (arg.StartsWith("-databasePort") && arg.Length > "-databasePort".Length) { databasePort = int.Parse(arg.Substring("-databasePort".Length)); // Account ID } else { if (partyId >= 0 && partyId < GameServerParty.partyList.Count) { var currentParty = GameServerParty.partyList[partyId]; accountToParty[arg] = currentParty; currentParty.expectedMemberCount += 1; } } } // For testing if (isTestServer) { GameManager.serverType = testServerType; } else { if (!string.IsNullOrEmpty(databaseIP)) { Database.AddNode("riak", databaseIP, databasePort, 10, Defaults.WriteTimeout, Defaults.ReadTimeout); Database.Connect(); } else { LogManager.DB.LogError("No database address specified, can't connect to the database"); } } // Create at least 1 party if no party count has been specified if (GameServerParty.partyList.Count != partyCount) { switch (GameManager.serverType) { case ServerType.Arena: partyCount = 2; break; case ServerType.FFA: partyCount = 10; break; } LogManager.General.Log(string.Format("Creating parties: {0}", partyCount)); GameServerParty.partyList.Clear(); GameServerParty.CreateParties(partyCount); } // Server type LogManager.General.Log("Server type: " + GameManager.serverType); MapManager.InitPhysics(GameManager.serverType); if (restrictedAccounts) { LogManager.General.Log("Server is restricted to the following accounts: " + accountToParty.Keys); } if (GameManager.isArena) { QueueSettings.queueIndex = accountToParty.Count / 2 - 1; LogManager.General.Log("Queue type is: " + (QueueSettings.queueIndex + 1) + "v" + (QueueSettings.queueIndex + 1)); } else if (GameManager.isFFA) { QueueSettings.queueIndex = 0; LogManager.General.Log("Queue type is: " + (QueueSettings.queueIndex + 1) + "v" + (QueueSettings.queueIndex + 1)); } // Server batchmode //if(batchMode) { LogManager.General.Log("Batchmode is being used: Destroy the camera and disable renderers"); // Destroy the camera Destroy(Camera.main); // Disable renderers in batchmode DisableRenderers(creatorPrefab); // No statistics GUI #if UNITY_EDITOR GetComponent <uLinkStatisticsGUI>().enabled = true; #endif // No audio AudioListener.pause = true; // Disable all game modes just to be safe var gameModes = GetComponents <GameMode>(); foreach (var mode in gameModes) { mode.enabled = false; } // Pick correct game mode int maxPlayerCount = 0; switch (GameManager.serverType) { case ServerType.Arena: gameMode = GetComponent <ArenaGameMode>(); int maxSpectators = 10; maxPlayerCount = 10 + maxSpectators; break; case ServerType.Town: gameMode = GetComponent <TownGameMode>(); maxPlayerCount = 1024; break; case ServerType.FFA: gameMode = GetComponent <FFAGameMode>(); maxPlayerCount = 10; break; case ServerType.World: gameMode = GetComponent <WorldGameMode>(); maxPlayerCount = 1024; break; } // FFA if (GameManager.isFFA) { GameServerParty.partyList.Clear(); GameServerParty.CreateParties(10, 1); } // Public key NetworkHelper.InitPublicLobbyKey(); // Started by uZone? if (uZone.Instance.wasStartedByuZone) { // Listen to lobby events and RPCs Lobby.AddListener(this); IPAndPortCallBack connectToServices = (host, port) => { // Connect to lobby LogManager.General.Log(string.Format("Connecting to lobby as server {0}:{1}", host, port)); Lobby.ConnectAsServer(host, port); // Update members in case we downloaded the info lobbyIP = host; lobbyPort = port; // Set up callback uZone.Instance.GlobalEvents events = new uZone.Instance.GlobalEvents(); events.onInitialized = uZone_OnInitialized; // This will tell uZone that the instance is ready // and we can let other players connect to it LogManager.General.Log("Initializing the uZone instance"); uZone.Instance.Initialize(events); }; // uLobby and uZone #if UNITY_STANDALONE_WIN lobbyIP = "127.0.0.1"; lobbyPort = 1310; connectToServices(lobbyIP, lobbyPort); #else if (string.IsNullOrEmpty(lobbyIP)) { StartCoroutine(NetworkHelper.DownloadIPAndPort("https://battleofmages.com/scripts/login-server-ip.php", connectToServices)); } else { connectToServices(lobbyIP, lobbyPort); } #endif } // Load map StartCoroutine(MapManager.LoadMapAsync( mapName, // Map is loaded asynchronously... // When it's finished, we use the callback: () => { // Register codecs for serialization GameDB.InitCodecs(); // Server port if (!isTestServer) { try { serverPort = uZone.Instance.port; LogManager.General.Log("Using port assigned from uZone: " + serverPort); } catch { LogManager.General.Log("Failed to retrieve port info from uZone! Using port " + serverPort); } } else { LogManager.General.Log("Using test server port: " + serverPort); } // Init server LogManager.General.Log("Initializing the server on port " + serverPort); uLink.Network.InitializeServer(maxPlayerCount, serverPort); // Encryption LogManager.General.Log("Initializing security"); uLink.Network.InitializeSecurity(true); #if !UNITY_EDITOR // Clean up DestroyServerAssets(); #endif // Send ready message if we didn't do it yet SendReadyMessage(); } )); }
// OnEnable protected virtual void OnEnable() { lastActivity = uLink.Network.time; server = GameObject.Find("Server").GetComponent <ServerInit>(); }
public void ServerInitConstructorTest() { ServerInit target = new ServerInit(); Assert.Inconclusive("TODO: 实现用来验证目标的代码"); }
public void FiniTest() { ServerInit.Fini(); Assert.Inconclusive("无法验证不返回值的方法。"); }
// Awake void Awake() { // TODO: Checks... instance = this; // This will be reset later if -batchmode was specified #if UNITY_STANDALONE_WIN isTestServer = true; #else isTestServer = false; #endif // Default values serverPort = defaultServerPort; partyCount = 1; // -party0 account1 -party1 account2 // -batchmode -port7100 // taskkill /IM LogManager.General.Log("Parsing command line arguments"); string[] args = System.Environment.GetCommandLineArgs(); int partyId = GameServerParty.Undefined; foreach(string arg in args) { LogManager.General.Log("Command line argument: '" + arg + "'"); // Overwrite port if(arg.StartsWith("-port") && arg.Length > 5) { serverPort = int.Parse(arg.Substring(5)); // Batchmode } else if(arg == "-batchmode") { batchMode = true; isTestServer = false; // Party count } else if(arg.StartsWith("-partycount") && arg.Length > 6) { partyCount = int.Parse(arg.Substring("-partycount".Length)); LogManager.General.Log(string.Format("Creating parties: {0}", partyCount)); GameServerParty.partyList.Clear(); GameServerParty.CreateParties(partyCount); // Teams } else if(arg.StartsWith("-party") && arg.Length > 6) { partyId = int.Parse(arg.Substring("-party".Length)); restrictedAccounts = true; // Map } else if(arg.StartsWith("-map") && arg.Length > 4) { mapName = arg.Substring("-map".Length); // Server type } else if(arg.StartsWith("-type") && arg.Length > 5) { string serverTypeString = arg.Substring("-type".Length); switch(serverTypeString) { case "Arena": GameManager.serverType = ServerType.Arena; break; case "Town": GameManager.serverType = ServerType.Town; break; case "FFA": GameManager.serverType = ServerType.FFA; break; case "World": GameManager.serverType = ServerType.World; break; } // Account ID } else { if(partyId >= 0 && partyId < GameServerParty.partyList.Count) { var currentParty = GameServerParty.partyList[partyId]; accountToParty[arg] = currentParty; currentParty.expectedMemberCount += 1; } } } // For testing if(isTestServer) GameManager.serverType = testServerType; // Create at least 1 party if no party count has been specified if(GameServerParty.partyList.Count != partyCount) { switch(GameManager.serverType) { case ServerType.Arena: partyCount = 2; break; case ServerType.FFA: partyCount = 10; break; } LogManager.General.Log(string.Format("Creating parties: {0}", partyCount)); GameServerParty.partyList.Clear(); GameServerParty.CreateParties(partyCount); } // Server type LogManager.General.Log("Server type: " + GameManager.serverType); MapManager.InitPhysics(GameManager.serverType); if(restrictedAccounts) { LogManager.General.Log("Server is restricted to the following accounts: " + accountToParty.Keys); } if(GameManager.isArena) { QueueSettings.queueIndex = accountToParty.Count / 2 - 1; LogManager.General.Log("Queue type is: " + (QueueSettings.queueIndex + 1) + "v" + (QueueSettings.queueIndex + 1)); } else if(GameManager.isFFA) { QueueSettings.queueIndex = 0; LogManager.General.Log("Queue type is: " + (QueueSettings.queueIndex + 1) + "v" + (QueueSettings.queueIndex + 1)); } // Server batchmode //if(batchMode) { LogManager.General.Log("Batchmode is being used: Destroy the camera and disable renderers"); // Destroy the camera Destroy(Camera.main); // Disable renderers in batchmode DisableRenderers(creatorPrefab); // No statistics GUI #if UNITY_EDITOR GetComponent<uLinkStatisticsGUI>().enabled = true; #endif // No audio AudioListener.pause = true; // Disable all game modes just to be safe var gameModes = GetComponents<GameMode>(); foreach(var mode in gameModes) { mode.enabled = false; } // Pick correct game mode int maxPlayerCount = 0; switch(GameManager.serverType) { case ServerType.Arena: gameMode = GetComponent<ArenaGameMode>(); int maxSpectators = 10; maxPlayerCount = 10 + maxSpectators; break; case ServerType.Town: gameMode = GetComponent<TownGameMode>(); maxPlayerCount = 1024; break; case ServerType.FFA: gameMode = GetComponent<FFAGameMode>(); maxPlayerCount = 10; break; case ServerType.World: gameMode = GetComponent<WorldGameMode>(); maxPlayerCount = 1024; break; } // FFA if(GameManager.isFFA) { GameServerParty.partyList.Clear(); GameServerParty.CreateParties(10, 1); } // Load map StartCoroutine(MapManager.LoadMapAsync( mapName, // Map is loaded asynchronously... // When it's finished, we use the callback: () => { // Register codecs for serialization GameDB.InitCodecs(); // Init uZone if(uZone.Instance.wasStartedByuZone) { uZone.Instance.GlobalEvents events = new uZone.Instance.GlobalEvents(); events.onInitialized = uZone_OnInitialized; // This will tell uZone that the instance is ready // and we can let other players connect to it LogManager.General.Log("Initializing the uZone instance"); uZone.Instance.Initialize(events); } // Server port if(!isTestServer) { try { serverPort = uZone.Instance.port; LogManager.General.Log("Using port assigned from uZone: " + serverPort); } catch { LogManager.General.Log("Failed to retrieve port info from uZone! Using port " + serverPort); } } else { LogManager.General.Log("Using test server port: " + serverPort); } // Init server LogManager.General.Log("Initializing the server on port " + serverPort); uLink.Network.InitializeServer(maxPlayerCount, serverPort); // Encryption LogManager.General.Log("Initializing security"); uLink.Network.InitializeSecurity(true); #if !UNITY_EDITOR // Clean up DestroyServerAssets(); #endif } )); }
public void InitDefaultTest() { ServerInit.InitDefault(); Assert.Inconclusive("无法验证不返回值的方法。"); }
public void ServerInitConstructorTest() { ServerInit target = new ServerInit(); Assert.Inconclusive( "TODO: 实现用来验证目标的代码" ); }