static void Main(string[] args) { ConfigFileManager.CreateConfigFile(RequesterApplication.GameServer); ConfigFileManager.LoadConfigFile(RequesterApplication.GameServer); Console.WriteLine("OpenBound Game Server"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine($"Game Server ({NetworkObjectParameters.GameServerInformation.ServerConsoleName}) has started and is listening for Clients."); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("This server is meant to handle all the current rooms and matches, it's max capacity defines how many players can access it."); Console.WriteLine("This server must register all matchs and results on the database"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Server Responsabilities:"); Console.WriteLine("Lobby Server - Register and update its current status to LobbyServer."); Console.WriteLine("Game Client - Synchronize its objects to all connected clients"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Operation Log:"); Console.WriteLine("----------------------\n"); GameServerObjects.serverServiceProvider = new ServerServiceProvider( NetworkObjectParameters.GameServerInformation.ServerPort, NetworkObjectParameters.GameServerBufferSize, GameServiceHUB, onDisconnect: OnDisconnect); GameServerObjects.serverServiceProvider.StartOperation(); GameServerObjects.lobbyServerCSP = new ClientServiceProvider( NetworkObjectParameters.LobbyServerInformation.ServerLocalAddress, NetworkObjectParameters.LobbyServerInformation.ServerPort, NetworkObjectParameters.LobbyServerBufferSize, LobbyServiceConsumerAction); GameServerObjects.lobbyServerCSP.StartOperation(); GameServerObjects.lobbyServerCSP.RequestQueue.Enqueue(NetworkObjectParameters.GameServerRegisterRequest, NetworkObjectParameters.GameServerInformation); }
public static void Initialize(string[] args) { ConfigFileManager.CreateConfigFile(RequesterApplication.Launcher); ConfigFileManager.LoadConfigFile(RequesterApplication.Launcher); GameClientSettingsInformation = ConfigFileManager.ReadClientInformation(); if (args.Length >= 2) { //Game has been patched string previousVersion = args[0]; string currentVersion = args[1]; GameClientSettingsInformation.ClientVersionHistory = ObjectWrapper.DeserializeFile <PatchHistory>( $@"{Directory.GetCurrentDirectory()}\{NetworkObjectParameters.LatestPatchHistoryFilename}"); GameClientSettingsInformation.ClientVersionHistory.PatchHistoryList.Clear(); } ConfigFileManager.OverwriteGameServerSettings(GameClientSettingsInformation); }
static void Main(string[] args) { ConfigFileManager.CreateConfigFile(RequesterApplication.LobbyServer); ConfigFileManager.LoadConfigFile(RequesterApplication.LobbyServer); LobbyServerObjects.ServerInformationList = ConfigFileManager.LoadServerlistPlaceholderFile(); Console.WriteLine("OpenBound Lobby Server"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine($"Lobby Server ({NetworkObjectParameters.LobbyServerInformation.ServerConsoleName}) has started and is listening open for Login Server's requests."); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine($"This server must be to connected to Login Server ({NetworkObjectParameters.LoginServerInformation.ServerConsoleName}) for exchanging UID for each login attempt."); Console.WriteLine("Server won't register new login attempts when the LoginServer is offline."); Console.WriteLine("This server can be closed and re-opened at any time, but it will drop all players that requests on this sever."); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Server Responsabilities:"); Console.WriteLine("Login Server - Handshake and grant UID to all players that requests login from Login Server"); Console.WriteLine("Game Server - Listen, register, and update all Game Server status"); Console.WriteLine("Game Client - Feed information about all registered Game Server"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Operation Log:"); Console.WriteLine("----------------------\n"); LobbyServerObjects.RequestedLoginPlayers = new List <Player>(); LobbyServerObjects.ClientServiceProviderList = new List <ClientServiceProvider>(); ServerServiceProvider serverServiceProvider = new ServerServiceProvider( NetworkObjectParameters.LobbyServerInformation.ServerPort, NetworkObjectParameters.LoginServerBufferSize, LobbyServiceHUB, onDisconnect: OnDisconnect); serverServiceProvider.StartOperation(); }
static void Main(string[] args) { ConfigFileManager.CreateConfigFile(RequesterApplication.LoginServer); ConfigFileManager.LoadConfigFile(RequesterApplication.LoginServer); Console.WriteLine("OpenBound Login Server"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine($"Login Server ({NetworkObjectParameters.LoginServerInformation.ServerConsoleName}) has started listening for players."); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine($"The server must be to connected to Lobby Server ({NetworkObjectParameters.LobbyServerInformation.ServerConsoleName}) for exchanging UID for each user that tries to login."); Console.WriteLine("The server won't work when the Lobby Server is offline."); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Server Responsabilities:"); Console.WriteLine("Lobby Server - Handshake and request UID to all players that requests login"); Console.WriteLine("Game Launcher - Create and retrive players from database, grants access to login requests"); Console.WriteLine("----------------------\n"); Console.WriteLine("----------------------"); Console.WriteLine("Operation Log:"); Console.WriteLine("----------------------\n"); ServerServiceProvider serverServiceProvider = new ServerServiceProvider( NetworkObjectParameters.LoginServerInformation.ServerPort, NetworkObjectParameters.LoginServerBufferSize, LoginServiceHUB); serverServiceProvider.StartOperation(); CreateDatabaseIfNecessary(); }
internal static void InitializeObjects() { ConfigFileManager.CreateConfigFile(RequesterApplication.Launcher); ConfigFileManager.LoadConfigFile(RequesterApplication.Launcher); Parameter.Initialize(new LauncherInformation( LauncherOperationStatus.AuthConfirmed, ConfigFileManager.ReadClientInformation(), GameInformation.Instance.PlayerInformation = new Player() { ID = 0, Gender = Gender.Female, Nickname = "Winged", //SelectedItemTypeList, })); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.PowerUp); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.PowerUp); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.BungeShot); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.BungeShot); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.Blood); GameInformation.Instance.PlayerInformation.SelectedItemTypeList.Add(ItemType.Blood); #region Sync Mobile List List <Player> pList = new List <Player>() { new Player() { Gender = Gender.Female, Email = "*****@*****.**", ID = 0, Nickname = "Wicked", Password = "******", PlayerRank = PlayerRank.Staff4, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Ice, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Red, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" }, Attribute = new int[] { 1, 1, 1, 1, 1, 1, 1, 1 }, }, new Player() { Gender = Gender.Male, Email = "*****@*****.**", ID = 1, Nickname = "Zicoman", Password = "******", PlayerRank = PlayerRank.Dragon1, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Lightning, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Blue, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Email = "*****@*****.**", ID = 2, Nickname = "Big String To Test The Box Size Calc", Password = "******", PlayerRank = PlayerRank.Axe1, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Knight, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Red, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Email = "*****@*****.**", ID = 3, Nickname = "Wicko", Password = "******", PlayerRank = PlayerRank.GM, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Dragon, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Blue, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Email = "*****@*****.**", ID = 4, Nickname = "WickoWicko", Password = "******", PlayerRank = PlayerRank.DGoldenAxe2, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Dragon, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Blue, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Email = "*****@*****.**", ID = 5, Nickname = "Ordinary World", Password = "******", PlayerRank = PlayerRank.Chick, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Turtle, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Blue, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Email = "*****@*****.**", ID = 6, Nickname = "KonoDioDa", Password = "******", PlayerRank = PlayerRank.Champion1, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.Dragon, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Red, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } }, new Player() { Gender = Gender.Female, Email = "*****@*****.**", ID = 7, Nickname = "JosephJoestar", Password = "******", PlayerRank = PlayerRank.Axe1, PlayerRoomStatus = PlayerRoomStatus.Ready, PrimaryMobile = MobileType.RaonLauncher, SecondaryMobile = MobileType.Knight, PlayerTeam = PlayerTeam.Red, Guild = new Guild() { GuildMembers = new List <Player>(), ID = 1, Name = "Zica", Tag = "zicamasters" }, PlayerStatus = PlayerStatus.Normal, SecurityToken = new SecurityToken() { DateTime = DateTime.Now, Token = "123123123", UnifiedSecurityToken = "123123123" } } }; sMobList = new List <SyncMobile>(); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[0], MobileType.Lightning), Owner = pList[0], Position = new int[] { 340, 100 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[1], MobileType.Knight), Owner = pList[1], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[2], MobileType.Knight), Owner = pList[2], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[3], MobileType.Knight), Owner = pList[3], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[4], MobileType.Knight), Owner = pList[4], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[5], MobileType.Knight), Owner = pList[5], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[6], MobileType.Knight), Owner = pList[6], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); sMobList.Add(new SyncMobile() { CrosshairAngle = 10, Delay = 500, //Facing = Facing.Left, MobileMetadata = MobileMetadata.BuildMobileMetadata(pList[7], MobileType.Knight), Owner = pList[7], Position = new int[] { 1, 0 }, SelectedShotType = ShotType.SS, SynchronizableActionList = new List <SynchronizableAction>() { SynchronizableAction.LeftMovement, SynchronizableAction.ChargingShot } }); #endregion //delayboard = new Delayboard(mobList, new Vector2(0, 0) /* Parameter.ScreenCenter */); GameInformation.Instance.RoomMetadata = new RoomMetadata(GameMode.Score, TurnsToSuddenDeath.Turn40, MatchSuddenDeathType.DoubleDeath, RoomSize.FourVsFour, sMobList[0].Owner, 1, "123", "123") { SpawnPositions = new Dictionary <int, int[]>() { { 0, new int[] { 1150, 700 } }, { 1, new int[] { 300, 700 } }, { 2, new int[] { 700, 700 } }, { 3, new int[] { 400, 700 } }, { 4, new int[] { 800, 700 } }, { 5, new int[] { 500, 700 } }, { 6, new int[] { 900, 700 } }, { 7, new int[] { 600, 700 } }, { 8, new int[] { 1000, 700 } }, }, TeamA = new List <Player>() { sMobList[0].Owner, sMobList[1].Owner, sMobList[2].Owner, sMobList[3].Owner }, TeamB = new List <Player>() { sMobList[4].Owner, sMobList[5].Owner, sMobList[6].Owner, sMobList[7].Owner }, }; GameInformation.Instance.RoomMetadata.Map = Map.GetMap(GameMapType.B, GameMap.Metamine); }
public static void Initialize() { ConfigFileManager.CreateConfigFile(RequesterApplication.Launcher); ConfigFileManager.LoadConfigFile(RequesterApplication.Launcher); GameClientSettingsInformation = ConfigFileManager.ReadClientInformation(); }
private void DockerInstallGameServerContainerButton_Click(object sender, EventArgs e) { Program.ShowConsole(); Console.Clear(); //Creating containers PrintHeader("Creating Game Server container"); int containerPort = Parameter.DEFAULT_GAME_SERVER_CONTAINER_PORT; int startingLocalPort = Parameter.DEFAULT_GAME_SERVER_STARTING_PORT; string containerName = Parameter.DEFAILT_GAME_SERVER_CONTAINER_NAME; string volumeName = Parameter.DEFAULT_GAME_SERVER_VOLUME_NAME; Console.WriteLine($"Enter the local ports you wish to use (default is {startingLocalPort}): "); int.TryParse(Console.ReadLine(), out startingLocalPort); Console.WriteLine("Enter the server ID (copy this id on ServerID txt): "); int containerID = 0; int.TryParse(Console.ReadLine(), out containerID); containerName += $"-{containerID}"; Dictionary <string, string> replacingTemplateFields = new Dictionary <string, string>() { { "__container_name__", containerName }, { "__volume_name__", volumeName }, { "__local_port__", startingLocalPort.ToString() }, { "__container_port__", containerPort.ToString() }, { "__context__", Parameter.DEFAULT_GAME_SERVER_CONTEXT }, { "__dockerfile_path__", Parameter.DEFAULT_GAME_SERVER_DOCKERFILE_PATH } }; Console.WriteLine("Select the base project folder. This folder contains the \".sln\" file."); string slnDir = PipelineHelper.SelectSLNFile(); slnDir = slnDir.Replace("\\" + slnDir.Split("\\").Last(), ""); string gspDir = $@"{slnDir}\OpenBound Game Server"; List <string> files = PipelineHelper.GenerateTemplateFiles(slnDir, slnDir, replacingTemplateFields, "*.Template.yml").ToList(); files.AddRange(PipelineHelper.GenerateTemplateFiles(gspDir, gspDir, replacingTemplateFields, "*.Template.Dockerfile").ToList()); //Building & Starting Container PrintHeader("Building Containers"); PipelineHelper.ExecuteShellCommand(@$ "docker-compose -f {slnDir}\OpenBoundServerCompose.yml build"); PipelineHelper.ExecuteShellCommand(@$ "docker-compose -f {slnDir}\OpenBoundServerCompose.yml up -d"); //Configuring Container ConfigFileManager.CreateConfigFile(RequesterApplication.GameServer, true); PrintHeader("Building Containers"); Console.WriteLine("Close the notepad in order to continue the server configuration. Reminder: host.docker.internal is your ip from container's perspective."); Thread.Sleep(5000); PipelineHelper.ExecuteShellCommand($@"notepad.exe {Directory.GetCurrentDirectory()}\Config\DatabaseConfig.json"); PipelineHelper.ExecuteShellCommand($@"notepad.exe {Directory.GetCurrentDirectory()}\Config\GameServerServerConfig.json"); PipelineHelper.ExecuteShellCommand($"docker cp \"{Directory.GetCurrentDirectory()}\\Config\\DatabaseConfig.json\" \"{containerName}:\\OpenBound Game Server\\Config\\DatabaseConfig.json\""); PipelineHelper.ExecuteShellCommand($"docker cp \"{Directory.GetCurrentDirectory()}\\Config\\GameServerServerConfig.json\" \"{containerName}:\\OpenBound Game Server\\Config\\GameServerServerConfig.json\""); foreach (string file in files) { try { File.Delete(file); } catch { } } PipelineHelper.ExecuteShellCommand(@$ "docker restart {containerName}"); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); Program.HideConsole(); }