Blade Symphony

Blade Symphony

View Stats:
Him Reev Sep 8, 2016 @ 10:58am
Blade Symphony Linux Dedicated Server Guide
There are a few core categories that are all important to running a well performing server, for the purposes of this guide I've broken it down into 5 stages: Hardware, Installation, Configuration, Upkeep, and Personalization.

Hardware:

Ideally a Blade Symphony game server should be run on a dedicated server you have full ownership of in a high performance datacentre in a strategically chosen city. There are alternatives to doing this but they all come with drawbacks. I'll go through the list of pros and cons to each choice.

Dedicated Server: Maximum performance, ability to isolate the server to its own core, if in a proper datacentre little to no network disruption. However, this is the most expensive option unless you already own a dedicated server and can just plop your game server on to that and isolate it to its own core. This is my preferred method.

VPS (Virtual Private Server): A VPS is essentially a dedicated server that has been split into many virtual servers that are then re-sold to a larger amount of people. The benefit to this is if you're only running 1 game server, it's much cheaper than a dedicated server, however the drawbacks are many. All forms of VPS will have you sharing hard drive i/o and almost all VPS companies (including vultr, digitalocean, etc) will have you sharing CPU and network resources with other users. If the server is on a 1gbps connection, and there's 16 users on it, and 10 of those users are using their maximum of 100mbps then the entire server will lag for the other 6 and this is a nightmare if you're running a real time app like a game server. CPU is also shared which means if a few users are running scripts or processes that utilize 50%+ of the dedicated's CPU, your server can start to have lag spikes. If it approaches 80-100% it will be constantly spiking and occasionally crashing.

Rented Game Server (ex. jestservers): Sort of a middle ground option. This will generally be more expensive but higher performance than a VPS, and less expensive but less well performing than a dedicated server. Some GSPs (game server providers) will offer the ability to isolate your game server to its own CPU core (ex. jestservers). However, this option is usually quite expensive, I've seen some companies charge 25$ a server for this, and you will still be sharing networking and disk i/o resources with the other users. For example, if you're on a dedicated with 32 game servers total, and even 1 of those 32 servers gets hit with a DoS, or some process malfunctions and chews up all the disk i/o, then you can get lag spikes, crashes, service interruptions etc, very similar to the VPS situation.

Home Server: These are very hit and miss. Some people can host a decent or even a well performing game server from home because they live in a good location, have good hardware, a stable connection with high bandwidth, and some technical skill. These can even match or exceed the performance of a rented game server or a VPS if all the proper conditions are met, however the vast majority of the time there are multiple gaping flaws and as a result the server performs worse than any other option.

Beyond the choice of server, there's also physical hardware and other considerations:

Processor: This is a critical component, arguably even more so than the networking. To be able to run a server of 32 players online with stability, I recommend an i7, xeon e3 or xeon e5 made within the last 5 years. This is because Blade Symphony is a single core process, you could have 1000 cores and it wouldn't make any difference, you are looking for a processor with the highest performance in a single core. VPS companies generally use lower end xeon processors which are unable to properly handle anything beyond around 16-20 users, so when the server gets more active you will see significant packet loss, lag spikes and possibly full server crashes. GSPs generally use an i7, e3 or e5, but they overcharge and you're paying a lot for this service. Dedicated servers can run quite expensive, however I usually am able to find ones around 25-30$ a month that has a processor capable of running a 32 player server with the CPU bouncing between 50-60%. That might sound low but you don't want it to get to 75-80% since that's when you start seeing lag spikes from player activity.

Memory: The least important thing, a Blade Symphony base server uses about 60MB of RAM. With a custom map and tons of plugins it can get to 200-300MB, but not really any further.

Hard Drive: Space isn't very important you only need a few GB unless you're planning on saving backups or hosting other files on it at the same time. The thing to watch here is disk i/o speeds, if you're sharing with other users this can get eaten up and cause lag or crashes on map changes or other large disk operations your game server is trying to perform at the time.

Networking: This is the other critical component to watch for. A single game server doesn't use a huge amount of bandwidth (30kb/s * 32 players = 960kb/s or around 8mbps tops) but if you're hosting a fastdl on the same server take that into consideration. What's far more important is the stability of the network connection and how optimized the routing from server to clients is. Most VPS and GSP and even some dedicated server companies will use a single connection with the absolute lowest tier of ISP available for cost reasons, and it shows. The routing to clients is poor so pings are often higher than they should be for their distance, the stability is poor since the network they use is often oversold, and on shared systems the bandwidth or even the packets-per-second on the network adapter can get used up by other users. Another important aspect is network redundancy, what this means is having your dedicated server hooked in to 2 or 3 different ISPs at once instead of just one, that way if for whatever reason the primary ISP conks out, your server will stay online and if properly setup the switch can be so short that there won't even be a lag spike.

Location: Your choice of location should be based on several things: Where is the most central location based on the average location of the players on your server, What cities or countries are there within this central area, and Which cities or countries have the best network infrastructure and datacentres.

Operating System: You can use either Windows or Linux though I definitely recommend Linux for performance and compatability reasons. You can use either 32 bit or 64 bit and any distribution. For absolute beginners to linux admin I would perhaps recommend a 32 bit Ubuntu 12.04 LTS, since with this flavor you won't need to install any additional libraries for the server to properly start.

Installation:

Once you've chosen your physical server and operating system it's time to install the OS to it. Some companies automate this for you, but once it's done you'll need to learn how to use SSH to work with the server. For the purposes of this guide I'm going to assume a 32 bit version of Ubuntu 12.04 was used.

You download an SSH client like putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/), launch it, enter in your server's IP, connect, enter in username root (or another username the provider gave you) and your password after that.

For beginners the easiest way to install and run Blade Symphony Server from here would be the automated server manager found here: https://gameservermanagers.com/lgsm/bsserver/#gettingstarted

You may need to restart once or twice before it will let you connect if it's complaining about being a local server.

Configuration:

Once the dedicated server is up and running you'll still need to customize it.

The main server configuration file is called server.cfg and is found in /berimbau/cfg/server.cfg wherever you installed the server.

In this file there are many settings you might want to consider adding or tweaking:

// Time Limits
mp_timelimit 180
mp_timelimit_free 180

// Duel Rounds
vs_duel_rounds 3

//Duel Timelimits
vs_duel_timelimit 0
vs_free_duel_timelimit 0

//Related to voting
bb_vote_cooldown : 3 : , "sv", "cheat", "nf" :
bb_vote_delay : 15 : , "sv", "cheat", "nf" :
bb_vote_duration : 20 : , "sv", "cheat", "nf" :
bb_vote_gamemode_enable : 1 : , "rep", "cl" : Enable/disable voting
bb_vote_kick_bantime : 5 : , "sv", "nf" :
bb_vote_kick_enable : 1 : , "rep", "cl" : Enable/disable voting
bb_vote_kick_required_percentage : 0 : , "sv", "cheat", "nf" : Minimum amount of positive votes required
bb_vote_required_percentage : 0 : , "sv", "cheat", "nf" : Minimum amount of positive votes required

//Ranked On/Off
sv_ranked 0

//Fastdl
sv_downloadurl "http://fastdl.yourdomain.com"

//Respawn times
vs_free_corpsetime "1"
vs_free_respawntime "1"

Some more advanced performance settings found below:

//The minimum and maximum data rate a player may have, you should use this to minimize player latency. 30000 is the highest rate possible in this version of source engine (which is a major limitation).
sv_minrate 30000
sv_maxrate 30000

//FPS of your server, if it can handle it you want to set it at 0 which will make it run at maximum, in this case 1000.
fps_max "0"

//The minimum and maximum update and cmd rate a player may have in the server, use with caution.
sv_mincmdrate "30"
sv_minupdaterate "30"
sv_maxupdaterate "60"
sv_maxcmdrate "60"

//How long the server should wait before dropping a player when they are connecting, downloading map, or have lagged out.
sv_timeout "600"

Upkeep:

To use rcon first log in using rcon_password yourpassword which is set in the server.cfg file and then you'll be able to run commands by entering rcon command in console.
ex: rcon_password weakpassword
rcon status

Rcon Commands:
status - Shows player list, IDs, IPs and server info
stats - Shows server info including FPS
users - Shows full player list with less detail
banid - Bans a user by their steamID
banip - Bans a user by their IP
listid - Lists all banned SteamIDs
listip - Lists all banned IPs
removeid - Removes SteamID from banlist
removeip - Removes IP from banlist
changelevel - Changes server to the specified map. Note: Never use rcon map to change level it restarts the server, always use rcon changelevel

Changing the Command Line:

You'll need to edit srcds_run.sh in the root folder unless bsserver or you specified a different startup script file. The only thing you want to modify is the string in quotations after COMMANDLINE=

The default is:
+maxplayers 32 +sv_hibernate_ms 2 +hostname BladeSymphony +map duel_winter

Options you can change include:
To set the amount of player slots the server has 1-32:
+maxplayers

To set whether the server is ranked 0-1:
+sv_ranked

To change a file the server uses to get its settings from instead of server.cfg:
+servercfgfile

This is how to change the tickrate but I recommend never changing it as it can be very buggy with some of the animations, leave it on default.
-tickrate

You may need to set the ip address and port of your server in order for rcon to run properly especially if you're on a machine that uses multiple source engine game servers.
-ip
-port

You may need to set the game to berimbau for some sourcemod functions to work properly:
+game berimbau

More information on console commands and rcon:
https://developer.valvesoftware.com/wiki/Console_Command_List
https://developer.valvesoftware.com/wiki/RCON

Personalization:

You can personalize your server using custom maps, metamod, sourcemod, fastdl, and other custom assets. I might expand on this later but for now I'll just link some of the resources you can use to go this direction if you want.

Metamod, required for running sourcemod:
https://www.metamodsource.net/

The documentation for installing and using metamod:
https://wiki.alliedmods.net/Category:Metamod:Source_Documentation

Sourcemod, the system for adding plugins to a source engine server, requires metamod:
https://www.sourcemod.net/

The main documentation for how to setup and use sourcemod:
https://wiki.alliedmods.net/index.php/Category:SourceMod_Documentation

Premade plugins that you can upload to your server, note that many will not work with Blade Symphony as they require functions from other games that this one doesn't have:
https://www.sourcemod.net/plugins.php

//Sourcemod documentation for creating your own scripts and plugins
https://wiki.alliedmods.net/index.php/Category:SourceMod_Scripting

The old API for programming in sourcemod:
https://sm.alliedmods.net/api/index.php
https://sm.alliedmods.net/doxygen/

The new API:
https://sm.alliedmods.net/new-api/

Good luck with your server and I hope you found something of use for you in this guide.
Last edited by Him Reev; Oct 3, 2017 @ 6:59pm
< >
Showing 1-10 of 10 comments
rat Sep 8, 2016 @ 12:40pm 
Last edited by rat; Sep 8, 2016 @ 12:41pm
jes Sep 8, 2016 @ 4:07pm 
Server guides are always nice.

ed : I really should look through the new Sourcemod API one of these days...
Last edited by jes; Sep 8, 2016 @ 4:07pm
Him Reev Sep 8, 2016 @ 9:08pm 
Originally posted by Jester:
Server guides are always nice.

ed : I really should look through the new Sourcemod API one of these days...

I don't think much of anything useful was added in terms of new features for developers, the new API only adds the new functions from sm 1.7 and the release notes are here:
https://wiki.alliedmods.net/SourceMod_1.7.0_Release_Notes

I also added a third API section to the guide, I don't know why they have so many:
https://sm.alliedmods.net/api/index.php
Him Reev Mar 29, 2017 @ 8:08pm 
Originally posted by Trash Goblin:
Or follow this.
https://developer.valvesoftware.com/wiki/SteamCMD

i... i think i'm starting to... love you?

hit me up on snapbook
Ichmag Mar 30, 2017 @ 8:52am 
Originally posted by SgtPepper:
Originally posted by Trash Goblin:
Or follow this.
https://developer.valvesoftware.com/wiki/SteamCMD

i... i think i'm starting to... love you?

hit me up on snapbook
nice necro
Gritzenizer Mar 30, 2017 @ 10:53am 
Originally posted by Ichmag:
Originally posted by SgtPepper:

i... i think i'm starting to... love you?

hit me up on snapbook
nice necro
It's a pinned thread so its ok
Ichmag Mar 30, 2017 @ 10:54am 
Originally posted by internet memestar:
Originally posted by Ichmag:
nice necro
It's a pinned thread so its ok
or is it?
Gritzenizer Mar 30, 2017 @ 10:54am 
Originally posted by Ichmag:
Originally posted by internet memestar:
It's a pinned thread so its ok
or is it?
It is.
Ichmag Mar 30, 2017 @ 11:02am 
Originally posted by internet memestar:
Originally posted by Ichmag:
or is it?
It is.
it is?
Best guide 10/10
< >
Showing 1-10 of 10 comments
Per page: 1530 50

Date Posted: Sep 8, 2016 @ 10:58am
Posts: 10