Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public static void Initialize()
 {
     ConfigFileManager.CreateConfigFile(RequesterApplication.Launcher);
     ConfigFileManager.LoadConfigFile(RequesterApplication.Launcher);
     GameClientSettingsInformation = ConfigFileManager.ReadClientInformation();
 }
Ejemplo n.º 7
0
        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();
        }