// Initialize SteamGameServer client and interface objects, and set server properties which may not be changed. // // After calling this function, you should set any additional server parameters, and then // call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() // // - unIP will usually be zero. If you are on a machine with multiple IP addresses, you can pass a non-zero // value here and the relevant sockets will be bound to that IP. This can be used to ensure that // the IP you desire is the one used in the server browser. // - usGamePort is the port that clients will connect to for gameplay. You will usually open up your // own socket bound to this port. // - usQueryPort is the port that will manage server browser related duties and info // pings from clients. If you pass STEAMGAMESERVER_QUERY_PORT_SHARED for usQueryPort, then it // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving // UDP packets for the master server updater. (See ISteamGameServer::HandleIncomingPacket and // ISteamGameServer::GetNextOutgoingPacket.) // - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) public static bool Init(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { InteropHelp.TestIfPlatformSupported(); bool ret; using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { ret = NativeMethods.SteamInternal_GameServer_Init(unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString2); } // Steamworks.NET specific: We initialize the SteamAPI Context like this for now, but we need to do it // every time that Unity reloads binaries, so we also check if the pointers are available and initialized // before each call to any interface functions. That is in InteropHelp.cs if (ret) { ret = CSteamGameServerAPIContext.Init(); } if (ret) { CallbackDispatcher.Initialize(); } return(ret); }
public static void TestIfAvailableGameServer() { TestIfPlatformSupported(); if (CSteamGameServerAPIContext.GetSteamClient() == IntPtr.Zero && !CSteamGameServerAPIContext.Init()) { throw new InvalidOperationException("Steamworks GameServer is not initialized."); } }