• Borealis Server Manager (BSM) Development Discussion Thread
    103 replies, posted
Is real-time console output implemented yet, and if not, could it be?
[QUOTE=James xX;51921048]Is real-time console output implemented yet, and if not, could it be?[/QUOTE] It is, yes. The server control portion of Borealis is VERY early in development, as the project is still in alpha. I am currently focusing on the deployment and management functions right now, if you (or anyone for that matter) would like to help speed things up, you can feel free to gather metadata about each server to conform to the example below: [code] { "SERVER_name": "Garry's Mod", "SERVER_launch_arguments": "-console -game garrysmod +map gm_construct +maxplayers 16", "DIR_executable": "\\steamapps\\common\\GarrysModDS\\srcds.exe", "DIR_config": "\\steamapps\\common\\GarrysModDS\\garrysmod\\cfg", "DIR_config_file": "\\server.cfg", "STEAM_authrequired": false, "STEAM_steamcmd_required": true, "STEAM_workshop_enabled": true, "ENGINE_type": "SOURCE", "bsm_integration": "none" } [/code] You can find the rest of the 95 server configurations here: [url]https://github.com/Mezarith/bsmapi/tree/master/storage/configs[/url]
[QUOTE=WhiteWhiskers;51921438]It is, yes. The server control portion of Borealis is VERY early in development, as the project is still in alpha. I am currently focusing on the deployment and management functions right now, if you (or anyone for that matter) would like to help speed things up, you can feel free to gather metadata about each server to conform to the example below: [code] { "SERVER_name": "Garry's Mod", "SERVER_launch_arguments": "-console -game garrysmod +map gm_construct +maxplayers 16", "DIR_executable": "\\steamapps\\common\\GarrysModDS\\srcds.exe", "DIR_config": "\\steamapps\\common\\GarrysModDS\\garrysmod\\cfg", "DIR_config_file": "\\server.cfg", "STEAM_authrequired": false, "STEAM_steamcmd_required": true, "STEAM_workshop_enabled": true, "ENGINE_type": "SOURCE", "bsm_integration": "none" } [/code] You can find the rest of the 95 server configurations here: [url]https://github.com/Mezarith/bsmapi/tree/master/storage/configs[/url][/QUOTE] Would it be possible to implement a means by which the server manager can start an AWS instance upon which the server will run, and administrate it remotely through SSH?
[QUOTE=James xX;51921566]Would it be possible to implement a means by which the server manager can start an AWS instance upon which the server will run, and administrate it remotely through SSH?[/QUOTE] 2 things, first, AWS is way beyond my skillsets and not to mention, access to such infrastructure. Secondly, unless the machine is running in linux, which is against the point of Borealis in the first place, I would have to attach a third-party SSH library to Borealis in order to issue commands to it. Thats two very large barrels of worms to handle.
[QUOTE=James xX;51921566]Would it be possible to implement a means by which the server manager can start an AWS instance upon which the server will run, and administrate it remotely through SSH?[/QUOTE] I would never use AWS for an srcds server
[QUOTE=Banana Lord.;51921827]I would never use AWS for an srcds server[/QUOTE] The suggestion was for the specific scenario such as in gmod tower where there were child servers you could say. AWS would allow those child servers only to spawn when they are needed.
[QUOTE=James xX;51921843]The suggestion was for the specific scenario such as in gmod tower where there were child servers you could say. AWS would allow those child servers only to spawn when they are needed.[/QUOTE] Regardless, it's way over my head, so if anyone specializes in that sort of thing, just reach out to me, I might create a module or something for Borealis to handle very specific things like that.
[QUOTE=WhiteWhiskers;51921875]Regardless, it's way over my head, so if anyone specializes in that sort of thing, just reach out to me, I might create a module or something for Borealis to handle very specific things like that.[/QUOTE] It could also be a neat idea if the B(D?)SM application could host a HTTP server with which a garrysmod server could host a loading screen. The server manager could automatically configure the servers it spawns to use this loading screen, and as it is hosted from an application directly responsible for the server, you could have realtime information listed on the loading webpage, as well as possible allow lua integration into the server for controlling the webpage itself.
[QUOTE=James xX;51931125]It could also be a neat idea if the B(D?)SM application could host a HTTP server with which a garrysmod server could host a loading screen. The server manager could automatically configure the servers it spawns to use this loading screen, and as it is hosted from an application directly responsible for the server, you could have realtime information listed on the loading webpage, as well as possible allow lua integration into the server for controlling the webpage itself.[/QUOTE] That's actually part of the ASP.NET web-interface implementation plans. Again, it will be probably until Borealis itself reaches beta, with full features, before the web-interface / live-motd webpages will be implemented unless I add another developer on-board.
[B]Status Update:[/B] -Minor UI tweaks and a very gentle backdrop image to liven things up a little. (VMWare-esquely) ((It only adds about 50kb to the overall filesize, and performance does not seem to be impacted by it.)) [IMG]https://i.imgur.com/htqmTOA.png[/IMG] [IMG]https://i.imgur.com/QXhJDey.png[/IMG] [IMG]https://i.imgur.com/kgmVbko.png[/IMG] [IMG]https://i.imgur.com/lo4xLil.png[/IMG] [IMG]https://i.imgur.com/ccxg1dJ.png[/IMG]
Keep up the good work. It looks great!
[B]Status Update:[/B] - Removed redundant [B]SERVER_name[/B] property, simply using [B]SERVER_name_friendly[/B] in it's place. [B]SERVER_type[/B] is determined by data pulled from the API Server now.[B] (e.g. "Garry's Mod")[/B] - Added basic control layout for Scheduled Tasks area. It has basic UI interaction and logic in place, but no underlying code. I plan on using something such as [B]"NCrontab: Crontab for .NET"[/B] seen here: [url]https://github.com/atifaziz/NCrontab[/url] to handle the underlying scheduling logic. [video=youtube;F436Di0MgLI]https://www.youtube.com/watch?v=F436Di0MgLI[/video] I'm sorry for the lack of 'real' progress recently. I've been toying around with Windows IoT Core on a Raspberry Pi 3, developing Universal Windows Apps using C# to test out what Windows IoT Core can do for me. It's been a heavy distraction. Other than that, I have a job interview scheduled with the school district this Friday, so my mind is kind of scattered at the moment. Sorry about that. :(
I think it would look cleaner to just label the heading as "Description". "Friendly description" is a little redundant and it kinda looks like it messes up the layout since it spans 2 lines.
[QUOTE=Banana Lord.;51958508]I think it would look cleaner to just label the heading as "Description". "Friendly description" is a little redundant and it kinda looks like it messes up the layout since it spans 2 lines.[/QUOTE] Yeah, the layout was more just to cram some controls into the panel to get an idea and initially flesh it out. I will just name it "Description". I will also move the buttons to the bottom of the screen to be more in-line with the layout of the rest of Borealis. [B]EDIT:[/B] I have a better mockup of the Scheduled Tasks panel, it definitely needs some more refinement. If you can, come up with ideas of basic scheduled tasks that users might perform. [IMG]https://cdn.discordapp.com/attachments/276981822343086081/291449413044404224/ScheduledTasksMockup.PNG[/IMG]
[B]Status Update:[/B] -Nothing much to report on. I was busy with a job interview for working for the school district, and hope to hear back from them in a week or so. The job would basically mean I would drive between 22 different schools doing networking, hardware setup, troubleshooting, basically an onsite technician. Wish me luck in getting the job! - The Server API is finally formatted with proper indentation, as Mezarith's code-formatting-habits are a little messy. I've also spiced up the backend console, so things look more organized. [IMG]https://cdn.discordapp.com/attachments/276981822343086081/292736421792317441/unknown.png[/IMG] - I will probably continue working on UI design and tweaking over the next couple days, or we might make some landmark updates, we will have to find out.
[B]Status Update:[/B] - Added duplicate friendly_Server_NAME checker, so if someone has already deployed a server named "Chaos Builders", and attempts to deploy another server with that exact same name, due to an unbelievable number of issues that would arise from doing this, Borealis will slap you on the wrist and tell you to not do that, requiring that you give unique names to all of your servers, even if it is something like "Chaos Builders 01, Chaos Builders 02, etc, or Chaos Builders WEST, Chaos Builders EAST", you get the idea. - Added messagebox to notify the user if there is SUPPOSED to be a config file, but nothing loads, either due to a missing file, or due to the file being completely empty. - I'm on the end of a lot of stuff going on, legally, and financially, so if everything goes well, I will be able to put a lot more time into Borealis. I am also waiting on a call-back to see if I got the job that I applied for about two weeks ago, as they are still interviewing people. I have no plans of discontinuing my development on Borealis, as I find it is a great exercise in optimization and learning new concepts and data management techniques, and I genuinely find it relaxing to do. - I've been migrating a lot of my servers, such as the Borealis API Server, to new hardware/environments, and that is consuming a lot of my time right now, as I am planning on rebuilding my 42U server rack.
[B]Small Update:[/B] - In two days I am going to court to finally settle some stuff that I've needed to get taken care of for a long time, so I'm extremely looking forward to that, and I will have more free-time to continue work on Borealis. - I have a new friend who is working out of Colorado, who is willing to help me with small parts of Borealis on a more consistent basis, so we may be able to tackle some of the harder stuff sooner rather than later. - I believe that once we can figure out the best way to store live server data in JSON in memory, and dump it at the appropriate times, will catalyst a lot of the functionality. Currently, Borealis will store server details, but not every tiny detail, and I need to come up with a way that is dynamically scalable no matter how large the server is, or how many configurations the server has. For example, assume one of your gameservers has multiple configuration files associated with it, that one is simple, store the different configuration files within a json array, and prompt the user asking which file they want to edit. What gets complicated is storing changes, such as configuration file changes as a delta, and only updating the information that was changed, but leaving the rest of the file alone; or storing the entire file in memory, formatting it into a friendly table, having the user commit changes to it, and saving the entire file. Or lastly, simply open an external program to edit and save the configuration file. The problem with the last option, is that I want Borealis to be more involved with the process rather than just handing it off to an external program. For example, I want there to be documentational context behind the different configuration settings, so if a user hovers over a specific configuration, such as "sv_gravity", it will give you a tooltip that lists what the default value is, and an explanation as to what it does. Storing this documentation would take place on the API server, and when someone would deploy a gameserver, it would also download a local copy of the specific documentation for that server's commands and references. Yeah, I have big ideas for Borealis. That is just the tip of the iceberg though, once I get past some major hurdles, I strongly believe updates are going to start pouring out faster than ever. Thank you to everyone who has been patient thus far, especially those who have been testing it themselves.
[B]Status Update:[/B] I consolidated the independent gameserver methods into [B]GameServer_Management[/B] and [B]GameServer_Object[/B] structs, to separate the functionality of managing the collection of GameServer_Object instances, and controlling the instances themselves. For example, I can create an instance of the [B]GameServer_Object [/B]struct, assign a bunch of values, such as the game engine type, configuration parameters, and such, and execute a method within that specific struct, such as [B]GameServer_Object.RetrieveDataAsJSON()[/B], which will retrieve the stored properties, format them as a JSON object, and return that object to the method that called it. This way, the functionality of each [B]GameServer_Object [/B]is contained, and I do not need to needlessly keep defining new variables, or passing large quantities of data around more than once. This streamlines the data storage, as well as gives me some unique flexibility. The general scheme is as follows: [B]- Create the struct list to store all of the GameServer_Object structs:[/B] [CODE]public static List<GameServer_Object> server_collection = new List<GameServer_Object>(); //Master collection of deployed gameservers[/CODE] [B]- Create a new instance of the GameServer_Object struct, and assign some data to it either manually or automatically:[/B] [CODE]GameServer_Object FacepunchServerDemo = new GameServer_Object() FacepunchServerDemo.ENGINE_Type = "Source" FacepunchServerDemo.SERVER_Type = "Garry's Mod" [/CODE] [B]- Execute the internal method to deploy that specific GameServer_Object, without needing to pass all of the properties manually beforehand[/B] [CODE]FacepunchServerDemo.Deploy()[/CODE] [B]- Lastly, if I needed to iterate through a bunch of them, I could reference the server collection itself, and pull the property data from each GameServer_Object instead of having to export JSON data every time an object is referenced, and export JSON data when requested:[/B] [CODE] //=====================================================================================// // Method to deploy gameserver data into gameservers.json // //=====================================================================================// public void AddToConfig(GameServer_Object objectData, bool borealis_closing) { if (borealis_closing == false) //Only add data to active GameServer_Object list if it isn't being triggered by the closing event triggering it { GameServer_Management.server_collection.Add(objectData); //Send the server to the gameserver list. } //Pre-crash data protection. using (StreamWriter file = File.AppendText(Environment.CurrentDirectory + @"\gameservers.json")) using (JsonTextWriter writer = new JsonTextWriter(file)) { writer.WriteRaw(JsonConvert.SerializeObject(objectData.RetrieveDataAsJSON(), Formatting.Indented)); } } [/CODE] [B]You can see that according to the struct method above, when borealis is closing, it will iterate through the GameServer_Object.AddToConfig() method, using the struct method GameServer_Object.RetrieveDataAsJSON() to write the JSON data to disk. Originally, you had to pass every single property by hand, but now, the internal method GameServer_Object.RetrieveDataAsJSON() handles all of it without using additional memory. You can see below, how simple the code has become. (Over 30 lines of code were removed in this one section alone) [/B] [CODE] private void BorealisServerManager_FormClosed(object sender, FormClosedEventArgs e) { //Write data in memory to disk into gameservers.json if (GameServer_Management.server_collection != null) { //Delete existing gameservers.json if (System.IO.File.Exists(Environment.CurrentDirectory + @"\gameservers.json")) { System.IO.File.Delete(Environment.CurrentDirectory + @"\gameservers.json"); } foreach (GameServer_Object gameserver in GameServer_Management.server_collection) { gameserver.AddToConfig(gameserver, true); } } } [/CODE] I am still working on finishing up the addition of the struct system, and will probably push a commit sometime tonight when everything is functional and tested. EDIT: [B]This is what the GameServer_Object struct looks like so far in its entirety:[/B] [code] public struct GameServer_Object { //Server-based Properties public string SERVER_name_friendly { get; set; } //User-designated name public string SERVER_type { get; set; } //Type of gameserver (e.g. "Garry's Mod", "Synergy", etc) public string SERVER_launch_arguments { get; set; } //Default launch arguments and current launch arguments public bool SERVER_running_status { get; set; } //Determine whether the server is running or stopped //Directory-based Properties public string DIR_install_location { get; set; } //Location of where gameserver was deployed public string DIR_executable { get; set; } //The relative location of where the server executable is located relative to install location public string DIR_config { get; set; } //Relative config directory public string DIR_config_file { get; set; } //Name of configuration file if there is only one that controls the server //Steam-based Properties public bool STEAM_authrequired { get; set; } //Determine whether the server requires Steam Guard or allows anonymous login public bool STEAM_steamcmd_required { get; set; } //Determines if the gameserver is deployed using steamcmd or not public bool STEAM_workshop_enabled { get; set; } //Determines if the gameserver supports Steam Workshop //Miscellanious Properties public string ENGINE_type { get; set; } //Determines the game engine, and by proxy, how to hook onto it public string bsm_integration { get; set; } //Determines the support level of the gameserver in Borealis //=====================================================================================// // Method to retrieve all internal properties of JSON data // //=====================================================================================// public JObject RetrieveDataAsJSON() { dynamic serverData = new JObject(); //Server-based Properties serverData.SERVER_name_friendly = SERVER_name_friendly; //User-designated name serverData.SERVER_type = SERVER_type; //Type of gameserver (e.g. "Garry's Mod", "Synergy", etc) serverData.SERVER_launch_arguments = SERVER_launch_arguments; //Default launch arguments and current launch arguments //serverData.SERVER_running_status = SERVER_running_status; //Determine whether the server is running or stopped //Directory-based Properties serverData.DIR_install_location = DIR_install_location; //Location of where gameserver was deployed serverData.DIR_executable = DIR_executable; //The relative location of where the server executable is located relative to install location serverData.DIR_config = DIR_config; //Relative config directory serverData.DIR_config_file = DIR_config_file; //Name of configuration file if there is only one that controls the server //Steam-based Properties serverData.STEAM_authrequired = STEAM_authrequired; //Determine whether the server requires Steam Guard or allows anonymous login serverData.STEAM_steamcmd_required = STEAM_steamcmd_required; //Determines if the gameserver is deployed using steamcmd or not serverData.STEAM_workshop_enabled = STEAM_workshop_enabled; //Determines if the gameserver supports Steam Workshop //Miscellanious Properties serverData.ENGINE_type = ENGINE_type; //Determines the game engine, and by proxy, how to hook onto it serverData.bsm_integration = bsm_integration; //Determines the support level of the gameserver in Borealis return serverData(); //Returns all of the internal data as a JSON Object, usable by other internal methods. } //=====================================================================================// // Method to import gameserver data from gameservers.json // //=====================================================================================// public void ImportJSON(JObject jsondata) { SERVER_name_friendly = (string)jsondata["SERVER_name_friendly"]; SERVER_type = (string)jsondata["SERVER_type"]; SERVER_launch_arguments = (string)jsondata["SERVER_launch_arguments"]; DIR_install_location = (string)jsondata["DIR_install_location"]; DIR_executable = (string)jsondata["DIR_executable"]; DIR_config = (string)jsondata["DIR_config"]; DIR_config_file = (string)jsondata["DIR_config_file"]; STEAM_authrequired = (bool)jsondata["STEAM_authrequired"]; STEAM_steamcmd_required = (bool)jsondata["STEAM_steamcmd_required"]; STEAM_workshop_enabled = (bool)jsondata["STEAM_workshop_enabled"]; ENGINE_type = (string)jsondata["ENGINE_type"]; bsm_integration = (string)jsondata["bsm_integration"]; } //=====================================================================================// // Method to deploy gameserver data into gameservers.json // //=====================================================================================// public void AddToConfig(GameServer_Object objectData, bool borealis_closing) { if (borealis_closing == false) //Only add data to active JObject list if it isn't being triggered by the closing event triggering it { GameServer_Management.server_collection.Add(objectData); //Send the server to the gameserver list. } //Pre-crash data protection. using (StreamWriter file = File.AppendText(Environment.CurrentDirectory + @"\gameservers.json")) using (JsonTextWriter writer = new JsonTextWriter(file)) { writer.WriteRaw(JsonConvert.SerializeObject(objectData.RetrieveDataAsJSON(), Formatting.Indented)); } } } [/code] [B]EDIT:[/B] Ran into an issue where Borealis is throwing an error when closing, trying to save the json data to disk. Been trying to figure it out for the last half hour with no luck. I will see what I can possibly do tomorrow/later today. I don't want to push a GitHub commit until I know it works properly.
[quote]I consolidated the independent gameserver methods into GameServer_Management and GameServer_Object structs,[/quote] This worries me a bit as a struct might not be the appropriate type for that. I'll do some more review of the code as-is later today.
[B]Status Update:[/B] - While the dashboard is loading data in the background, each of the performance meters states "Gathering Data...", and promptly changes once data has been pulled. - The deployment progress text now states "GameServer Deployed / Updated Successfully!" at the end of a successful deployment or update of existing gameserver. This is a light side-step to the original green popup notifying the user of the same information. If the user cancels a deployment, or starts another one, the text will revert back to "Download / Installation Progress:". - The user is now able to change and update settings related to their gameserver within Borealis itself. The user is also warned that if Borealis closes unexpectedly, the changes will be reverted and must be performed again. [B]1629a43 [/B]Upgrade to Bunifu UI v1.5.3 - cyberstrawberry101 [B]b699758 [/B]Cleaned up Using Statements - cyberstrawberry101 [B]1b793b6 [/B]Delete legacy Nuget packages.config - johnduhart [B]13aa048 [/B]Removed WEB_UI project for now. - cyberstrawberry101 [B]b9681b7 [/B]Adding ruleset for code analysis - johnduhart [B]7cd68ec [/B]Removed Syncfusion UI from Project - cyberstrawberry101 [B]5c34dfe [/B]Cleaned up InvalidCastException handler - cyberstrawberry101 [B]a3ca3ca [/B]Added ability to include local copy of bunifu - johnduhart [B]8231cf2 [/B]Removed redundant export code - cyberstrawberry101 [B]a9017b9 [/B]Remove unused deployment_server - johnduhart [B]fc260a3 [/B]Adding logging using Serilog - johnduhart [B]84d3573 [/B]Adding global exception handler - johnduhart [B]ef39362 [/B]Fetch the game server list in the background - johnduhart [B]c6cb1ce [/B]Cleanup dashboard. No longer blocks startup whi.. - johnduhart [B]39eec73 [/B]Instantiate the ComputerInfo class once - johnduhart [B]b86fe72[/B] Minor Changes - cyberstrawberry101 [B]e0b1b86 [/B]Format/Cleanup Deployment tab code - johnduhart [B]fb63c7f [/B]Store game server types in the list as an object - johnduhart [B]e1cd92c [/B]Rework GameServer serialization - johnduhart [B]1c2fc2f [/B]Cleanup confirmation before deployment slightly - johnduhart [B]eebf27a [/B]Solved issue with UI freezing during deployment. - johnduhart [B]8ea7456 [/B]Added more visual feedback from UI - cyberstrawberry101
[B]Detailed Breakdown of Updates:[/B] [B]So, you may have noticed that things have sped up [I]significantly [/I]with the addition of a new team member on the project. Some notable changes are listed below for your convenience.[/B] [code] • Borealis loads up about 90% faster now • You can now edit & save gameserver configuration data • You can now destroy a gameserver entirely. (Currently only the configuration will be destroyed, game data will need to be manually deleted.) • We added the ability for Borealis to keep a logfile, saving internal errors or warnings to disk • Internal code has been extensively optimized and re-written to fall under better coding practices • Parts of dashboard, deployment, and management panels have more user-feedback, making the experience more fluid and understandable [/code] [B]You can download the newest pre-release of Borealis here: [URL="https://github.com/cyberstrawberry101/Borealis-Server-Manager/releases/tag/v0.3.7.0-alpha"]Release 0.3.7.0[/URL][/B] We expect to hopefully start making some more progress towards gameserver management, and possibly starting to delve into gameserver control. [IMG]https://cdn.discordapp.com/attachments/276981822343086081/305254323129155584/breakthrough.PNG[/IMG] [IMG]https://cdn.discordapp.com/attachments/276981822343086081/305264260781703169/destroy.PNG[/IMG] [IMG]http://i.imgur.com/BSF4oVS.png[/IMG] [IMG]http://i.imgur.com/NB2GQno.png[/IMG] [IMG]http://i.imgur.com/4ZVJalX.png[/IMG] [IMG]http://i.imgur.com/bZQhkyg.png[/IMG] [IMG]http://i.imgur.com/eERf39L.png[/IMG]
[B]Status Update:[/B] - We have expanded upon the management panel to prepare for Steam Workshop management, in the current situation, the workshop management panel is a standalone instance that allows you to multitask with the rest of Borealis while managing workshop content subscriptions. Not a terribly elegant solution, but we hope to refine it as it's only in drafting phases right now. - More underlying code that handles the UI has been updated and optimized, the hope is to add more data to the API server so it can better help the user configure their gameservers, as the current set of configurations are rather minimal. We may implement a system that runs a configuration algorithm based on the game engine, thus freeing up the API server's responsibilities a little bit. For example, SOURCE servers have a similar/identical folder structure, so the API server only needs to tell it what the root folder is called, such as "GarrysModDS". This would allow Borealis to be more intelligent, such as pulling lists of installed maps, mods, sounds, configurations, etc. [IMG]http://i.imgur.com/flDPW1D.png[/IMG] [IMG]http://i.imgur.com/w7AUevX.png[/IMG]
[B]Status Update:[/B] - [B][GENERAL][/B] Minor UP behavior updates and appearance changes. - [B][MANAGEMENT][/B] We added the ability to control maxplayers, the startup map, and to control a few other internal persistent values. - [B][MANAGEMENT][/B] We added the listing of "Server Specs:" that lists off some small information to the user regarding their server's values. - [B][MANAGEMENT][SOURCE ENGINE][/B] We added the ability for Borealis to understand how to find your maps folder regardless of if it was deployed to a standard location or a custom location. We look to start adding more parameters to control the servers, then will start some major work on the Control portion of Borealis. I have the next three days off, so I'm putting quite a bit of time into Borealis. [img]https://cdn.discordapp.com/attachments/276981822343086081/305804135083540480/unknown.png[/img] [B]April 25th Update:[/B] - Added IP and PORT configurations to management options. - Categorized management options into SERVER and GAME properties. - Renamed internal properties for SERVER_map and SERVER_maxplayers to GAME_map and GAME_maxplayers respectively. [IMG]https://cdn.discordapp.com/attachments/276981822343086081/306319642828210179/unknown.png[/IMG]
[B]I decided to show off Borealis in action! [/B] Below is a video that I just recorded that shows the 0.4 Alpha deployment and management processes in their current state of existence. For the case of brevity, I already had Garry's Mod's files downloaded prior to recording the video. [video=youtube;eRmeZrXhwAc]https://www.youtube.com/watch?v=eRmeZrXhwAc[/video]
[QUOTE=WhiteWhiskers;52147652][B]I decided to show off Borealis in action! [/B] Below is a video that I just recorded that shows the 0.4 Alpha deployment and management processes in their current state of existence. For the case of brevity, I already had Garry's Mod's files downloaded prior to recording the video. [video=youtube;eRmeZrXhwAc]https://www.youtube.com/watch?v=eRmeZrXhwAc[/video][/QUOTE] I'm not sure if it's just a video-recording bug, but the cursor vanishes when you hover over a text-field or button. Is this intentional? If so, IMO it would be better to show the normal hand-cursor.
[QUOTE=johnnyaka;52148462]I'm not sure if it's just a video-recording bug, but the cursor vanishes when you hover over a text-field or button. Is this intentional? If so, IMO it would be better to show the normal hand-cursor.[/QUOTE] Just a recording bug. The cursor behaves as it generally should otherwise. :) The recording tool is my personal favorite, FFSplit.
[QUOTE=WhiteWhiskers;52148870]Just a recording bug. The cursor behaves as it generally should otherwise. :) The recording tool is my personal favorite, FFSplit.[/QUOTE] Should try OBS, Free, and it's also a widely support program on all OS's. Also is it possible to add other game servers like for example, Factorio or NS2 main game and etc?
[QUOTE=Azalia;52165321]Also is it possible to add other game servers like for example, Factorio or NS2 main game and etc?[/QUOTE] Yes! :) The preliminary underlying code already exists to handle non-SteamCMD gameservers, and if you want, you can make a pull request on the bsmapi GitHub page once we setup a template for the non-SteamCMD configuration files once the non-SteamCMD-handler is finished and tested. In the end, it will point to a URI to download the server from.
[B]Status Update:[/B] - I've been super busy with a lot of other stuff, but in the newest commit to the GitHub repo, I've added the useful function of being able to launch SRCDS servers in "Standalone mode", which will mostly act as an intermediary between full control within Borealis and launching servers like you normally would. - We need to push more config updates to the API repo, since at this moment, you can deploy any non-steamguard-protected servers, and can launch and config those servers, but right now, the only server that has a fully filled-out configuration is "Garry's Mod". I will see if sometime tonight I can start coding in more SRCDS config datas, to get ALL SRCDS servers ready-to-deploy and ready-to-config and ready-to-launch. Then I will move onto the UNREAL engine, for servers such as Killing Floor 2. - More UI updates have taken place, and bring more consistency to Borealis as a whole. - The "IP" configuration of servers has been removed as it was redundant at this point. [B]When the rest of the SRCDS configs are updated and ready for production, I will push a new release to the public.[/B] [IMG]https://cdn.discordapp.com/attachments/276981822343086081/315586260708360193/3.JPG[/IMG] [IMG]https://cdn.discordapp.com/attachments/276981822343086081/315586268744515586/4.JPG[/IMG] [IMG]https://cdn.discordapp.com/attachments/276981822343086081/315584177506615298/unknown.png[/IMG]
[B]Status Update:[/B] - Added new [B]DIR_config, DIR_maps, DIR_maps_file_extension[/B], and [B]DIR_mods[/B] properties to gameservers. - [B]DIR_config[/B] doesn't do anything right now, but will in the future. - [B]DIR_maps[/B] is the given directory that Borealis searches in to find a list of the available maps to choose from to start the server on. - [B]DIR_maps_file_extension[/B] is specified to tell Borealis what file extensions to be looking for when populating the maplisting in the management panel. (e.g. [B]"*.bsp"[/B], [B]"*.kfm"[/B]) - [B]DIR_mods [/B]is a general folder that will tell Borealis where to look for addons/mods/workshop files. - Added new code to load map folders for both [B]SRCDS [/B]and [B]UNREAL [/B]gameservers - Added new config data to [B]Garrys Mod[/B], [B]Team Fortress 2[/B], and [B]Killing Floor 2[/B] - Updated and refined new [B]"Standalone Mode"[/B] for launching gameservers - Disabled the console panel in the control panel if the server is executed from within "Standalone Mode" - Updated UI behavior throughout Borealis to accommodate the newest changes - Added red Steam Guard Authentication notification text below servers that cannot be currently deployed - Made [B]"Firewall Rule"[/B] an easily-toggle-able setting. (Still not coded to modify Windows Firewall values, but will soon...) - All-in-all, this update brings a lot of long-needed control-functionality. It allows you to now freely start servers from Borealis, even though it cannot properly pipe console data directly at this time and the listing of supported servers is quite small, it will get better over time. I am looking at probably adding more SRCDS servers to the mix much sooner rather than later, so the listing of fully supported servers gets larger quicker. [code] { "SERVER_name_friendly": "Nicole's Builder Paradise", "SERVER_type": "Garry's Mod", "SERVER_launch_arguments": "-console -game garrysmod", "SERVER_running_status": false, "SERVER_executable": "srcds.exe", "SERVER_port": "27015", "GAME_maxplayers": 6, "GAME_map": "gm_construct", "DIR_install_location": "D:\\Borealis-Server-Manager\\BSM\\bin\\Debug", "DIR_root": "\\GarrysModDS", "DIR_maps": "\\garrysmod\\maps", "DIR_maps_file_extension": "*.bsp", "DIR_mods": "\\garrysmod\\addons", "DIR_config": "\\garrysmod\\cfg", "STEAM_authrequired": false, "STEAM_steamcmd_required": true, "STEAM_workshop_enabled": true, "ENGINE_type": "SOURCE", "bsm_integration": "partial", "bsm_custominstallfolder": false }, [/code] [code] { "SERVER_name_friendly": "Phantom Death Emporium", "SERVER_type": "Killing Floor 2", "SERVER_launch_arguments": "adminpassword=FacepunchPassword101?Difficulty=1?GameLength=2?QueryPort=27015?Mutator=KFMutator.KFMutator_MaxPlayersV2", "SERVER_running_status": false, "SERVER_executable": "\\Binaries\\Win64\\KFServer.exe", "SERVER_port": "7777", "GAME_maxplayers": 16, "GAME_map": "KF-TheDescent", "DIR_install_location": "D:\\Borealis-Server-Manager\\BSM\\bin\\Debug", "DIR_root": "\\killingfloor2", "DIR_maps": "\\KFGame\\BrewedPC\\maps", "DIR_maps_file_extension": "*.kfm", "DIR_mods": "\\KFGame\\BrewedPC", "DIR_config": "\\KFGame\\Config", "STEAM_authrequired": false, "STEAM_steamcmd_required": true, "STEAM_workshop_enabled": true, "ENGINE_type": "UNREAL", "bsm_integration": "partial", "bsm_custominstallfolder": false }, [/code] [IMG]http://i.imgur.com/FeIpOwN.jpg[/IMG]
Sorry, you need to Log In to post a reply to this thread.