public void RegisterRoomAndFinalize(NetworkManager networkManager, SpawnTaskController controller) { // Create room options var options = new RoomOptions() { IsPublic = true, Properties = new Dictionary <string, string>(), RoomPort = networkManager.networkPort, // or Msf.Args.AssignedPort RoomIp = Msf.Args.MachineIp // Spawner should have passed us his own IP }; var prop = controller.Properties; if (prop.ContainsKey(MsfDictKeys.RoomName)) { options.Name = prop[MsfDictKeys.RoomName]; } if (prop.ContainsKey(MsfDictKeys.MaxPlayers)) { options.MaxPlayers = int.Parse(prop[MsfDictKeys.MaxPlayers]); } options.Properties[MsfDictKeys.SceneName] = SceneManager.GetActiveScene().name; Msf.Server.Rooms.RegisterRoom(options, (roomController, error) => { controller.FinalizeTask(new Dictionary <string, string>() { { MsfDictKeys.RoomId, roomController.RoomId.ToString() } }); }); }
public void StartGameServer(SpawnTaskController controller) { // We can access data, which Client sent to spawner var data = controller.Properties; // You can start any kind of server here. // For example, we'll start Unet HLAPI server var networkManager = FindObjectOfType <NetworkManager>(); // If an arg was provided to use websockets if (Msf.Args.IsProvided(Msf.Args.Names.WebGl)) { networkManager.useWebSockets = true; } // Spawner added an argument with assigned port number that we can use networkManager.networkPort = Msf.Args.AssignedPort; // Start the server networkManager.StartServer(); // We could finalize it now, but we haven't registered the room yet RegisterRoomAndFinalize(networkManager, controller); }
public void RegisterRoomAndFinalize(NetworkManager networkManager, SpawnTaskController controller) { // Create room options var options = new RoomOptions() { IsPublic = true, Properties = new Dictionary <string, string>(), RoomPort = networkManager.networkPort, // or Msf.Args.AssignedPort RoomIp = Msf.Args.MachineIp // Spawner should have passed us his own IP }; // We can read some of the options from what player provided // when he sent a request var prop = controller.Properties; if (prop.ContainsKey(MsfDictKeys.RoomName)) { options.Name = prop[MsfDictKeys.RoomName]; } if (prop.ContainsKey(MsfDictKeys.MaxPlayers)) { options.MaxPlayers = int.Parse(prop[MsfDictKeys.MaxPlayers]); } if (prop.ContainsKey(MsfDictKeys.RoomPassword)) { options.Password = prop[MsfDictKeys.RoomPassword]; } if (prop.ContainsKey(MsfDictKeys.MapName)) { options.Properties[MsfDictKeys.MapName] = prop[MsfDictKeys.MapName]; } // Also, add the scene name options.Properties[MsfDictKeys.SceneName] = SceneManager.GetActiveScene().name; // Register the room to master server Msf.Server.Rooms.RegisterRoom(options, (roomController, error) => { if (roomController == null) { Debug.LogError(error); return; } // So the room was registered successfully, we can now finalize the // spawn request controller.FinalizeTask(new Dictionary <string, string>() { // Add our room id to finalization data { MsfDictKeys.RoomId, roomController.RoomId.ToString() } }); }); }
public void StartGameServer(SpawnTaskController controller) { var networkManager = FindObjectOfType <NetworkManager>(); if (Msf.Args.IsProvided(Msf.Args.Names.WebGl)) { networkManager.useWebSockets = true; } networkManager.networkPort = Msf.Args.AssignedPort; networkManager.StartServer(); RegisterRoomAndFinalize(networkManager, controller); }