protected void OnServerRegisterGameServer(NetworkMessage netMsg) { if (writeLog) { Debug.Log("[" + name + "] OnServerRegisterGameServer"); } var msg = netMsg.ReadMessage <MasterServerMessages.RegisterGameServerMessage>(); var response = new MasterServerMessages.RegisteredGameServerMessage(); var gameType = string.IsNullOrEmpty(msg.gameType) ? DefaultGameType : msg.gameType; var rooms = EnsureRoomsForGameType(gameType); var roomId = System.Guid.NewGuid().ToString(); var newRoom = new MasterServerRoom(); newRoom.roomId = roomId; newRoom.gameType = gameType; newRoom.title = msg.title; newRoom.password = msg.password; newRoom.scene = msg.scene; newRoom.networkAddress = netMsg.conn.address; newRoom.networkPort = msg.networkPort; newRoom.maxConnections = msg.maxConnections; newRoom.connectionId = netMsg.conn.connectionId; var registeredRoom = RegisteredMasterServerRoom.Empty; if (!msg.registerKey.Equals(registerKey)) { response.resultCode = (short)MasterServerMessages.ResultCodes.RegistrationFailedInvalidKey; } else if (!rooms.AddRoom(roomId, newRoom, out registeredRoom)) { response.resultCode = (short)MasterServerMessages.ResultCodes.RegistrationFailedCannotCreateRoom; } else { response.resultCode = (short)MasterServerMessages.ResultCodes.RegistrationSucceeded; NetworkConnection spawnerConnection; if (!string.IsNullOrEmpty(msg.spawnToken) && spawners.TryGetValue(msg.spawnToken, out spawnerConnection)) { spawners.Remove(msg.spawnToken); var spawnResponse = new MasterServerMessages.SpawnedGameServerMessage(); spawnResponse.resultCode = (short)MasterServerMessages.ResultCodes.SpawnSucceeded; spawnResponse.room = newRoom; spawnerConnection.Send(MasterServerMessages.SpawnedGameServerId, spawnResponse); } } response.registeredRoom = registeredRoom; netMsg.conn.Send(MasterServerMessages.RegisteredGameServerId, response); }
protected void OnServerSpawnGameServer(NetworkMessage netMsg) { if (writeLog) { Debug.Log("[" + name + "] OnServerSpawnGameServer"); } var msg = netMsg.ReadMessage <MasterServerMessages.SpawnGameServerMessage>(); if (!msg.registerKey.Equals(registerKey)) { var spawnResponse = new MasterServerMessages.SpawnedGameServerMessage(); spawnResponse.resultCode = (short)MasterServerMessages.ResultCodes.RegistrationFailedInvalidKey; spawnResponse.room = MasterServerRoom.Empty; netMsg.conn.Send(MasterServerMessages.SpawnedGameServerId, spawnResponse); return; } var spawnToken = System.Guid.NewGuid().ToString(); var arguments = ""; arguments += " -startGameServer"; arguments += " -registerKey " + registerKey; arguments += " -spawnToken " + spawnToken; arguments += " -gameServerGameType " + msg.gameType; arguments += " -gameServerTitle " + msg.title; arguments += " -gameServerPassword " + msg.title; arguments += " -gameServerScene " + msg.scene; arguments += " -gameServerNetworkPort " + msg.networkPort; arguments += " -gameServerMaxConnections " + msg.maxConnections; if (spawningAsBatch) { arguments += " -batchmode"; } var spawnPath = Application.isEditor ? spawningBuildPathForEditor : spawningBuildPath; var process = new System.Diagnostics.Process(); process.StartInfo.FileName = spawnPath; process.StartInfo.Arguments = arguments; process.Start(); spawners.Add(spawnToken, netMsg.conn); }