Server Configuration

From Squad Wiki
Jump to: navigation, search

After installing or hosting a server you need to configurate the server before you can use nicely.

Command Line[edit | edit source]

All of the following parameters can be added to your starting command line for additional configuration. Be careful to avoid typos when adding these!

MULTIHOME = The IP Address you want to bind the server to. (Use only if you have multiple IPs on your server) (Optional)

Port = Game port

QueryPort = Steam query port

RANDOM = Randomize map rotation (ALWAYS, FIRST, NONE) (Optional)

FIXEDMAXPLAYERS = Player count cannot go higher than this (Optional)

FIXEDMAXTICKRATE = MAX server tickrate (Optional)

PREFERPREPROCESSOR = CPU Affinity (Optional) UNTESTED

-log = Display a log window on the server (Optional)

-fullcrashdump = Save a full dump file on crash (can become quite large sometimes) (Optional)

The following line implements additional start parameters as an example.

start SquadGameServer.exe MULTIHOME=1.2.3.4 Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 FIXEDMAXTICKRATE=50 RANDOM=ALWAYS -log

Set processor Affinity[edit | edit source]

Windows[edit | edit source]

You can use the start-command allows you to set the core thread affinity for each server (if you run several servers on one machine):

start /AFFINITY C /WAIT SquadGameServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log

Calculating AFFINITY[edit | edit source]

Squad Affinity Calculator.png

Open your Windows calculator.

Step 1 - Click menu icon

Step 2 - Enable "programmer" mode

Step 3 - Toggle bit keypad

Step 4 - Click until you see BYTE which corresponds to 4 core 8 threads CPU (You can select other values to correspond your CPU).

Step 5 - Click on HEX

Core thread count starts from 0, you can see which number is responsible for which core thread on the third image. 1 means core thread is selected, 0 means core thread is ignored.

Result you need is shown in "HEX", if you have all core thread selected 0-7 you will see "FF" as your result. For our /AFFINITY parameter we need then "FF" to set the core affinity to all core threads. If you want to select only core threads 4-7 (0000 1111) your result should be "F".

Linux[edit | edit source]

Linux users can also set their core affinity by using the "taskset" command in their start line. Keep in mind that core threads are zero-indexed. This means if you have 8 processor threads, you can assign cores 0-7.

cd server1; taskset -c 0-3 ./SquadGameServer.sh Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=NONE

Files[edit | edit source]

Configuration files are located in C:\servers\squad_server\SquadGame\ServerConfig\ Configuration files located in this directory are

Admins.cfg
Bans.cfg
License.cfg
MapRotation.cfg
Motd.cfg (optional)
Rcon.cfg
RemoteAdminListHosts.cfg
RemoteBanListHosts.cfg
Server.cfg
ServerMessages.cfg

Adding Admins in Admins.cfg[edit | edit source]

Admins are now created by groups and groups are assigned to admins. You can create as many groups as you want with any types of permissions. All the permissions will be in the config file commented out. These files will not be over writeable so when we add new permissions you will need to check here or the wiki for updates. The below are just examples. Please note that it needs to be SteamId64. You can convert your ID at steamid.io/lookup/

Group=SuperAdmin:changemap,cheat,private,balance,chat,kick,ban,config,cameraman,debug,pause
Group=Admin:changemap,balance,chat,kick,ban,cameraman,pause
Group=Moderator:changemap,chat,kick,ban
Group=Whitelist:reserve

//Moderator
Admin=76561115695178:Moderator //Player 5
Admin=8915618948911:Moderator //Player 4

//Admins
Admin=7894591951519:Admin //Player 3
Admin=7895365435431:Admin //Player 8792

//SuperAdmins
Admin=7984591565611:SuperAdmin //Player 2
Admin=7917236241624:SuperAdmin //Player 1 

//WhitelistSlots
Admin=7984591565611:Whitelist // Player 123
Admin=7984591565523:Whitelist // Player 156

A list of group permission are as follows:

//// Valid access levels are as follows
////		startvote - not used
////		changemap
////		pause - Pause server gameplay
////		cheat - Use server cheat commands
////		private	- Password protect server
////		balance	- Group Ignores server team balance
////		chat - Admin chat and Server broadcast
////		kick
////		ban
////		config - Change server config
////		cameraman - Admin spectate mode
////		immunity - Cannot be kicked / banned
////		manageserver - Shutdown server
////		featuretest - Any features added for testing by dev team
////		reserve - Reserve slot
////		demos - Record Demos (not working)
////		debug - show admin stats command and other debugging info
////		teamchange - No timer limits on team change
////		forceteamchange - Can issue the ForceTeamChange command
////		canseeadminchat - This group can see the admin chat and teamkill/admin-join notifications

Bans in Bans.cfg[edit | edit source]

This is where your bans will go. They need to be in the format of steamid:unix timestamp of unban //comment So an example file will look like this

76561198039509812:0 //Permanent ban for cheating
7862895148978485:1623366856 //team killing

Make sure if you manually add / remove a ban that the file ends with a new line character. Each ban goes on its own line.

If you want to check how long a user is still banned or create a time ban you can use converter tools like this:

- https://www.epochconverter.com

Map Rotation in MapRotation.cfg[edit | edit source]

This is where you add map rotation for the server, the list below details all the current layers, you can adjust accordingly till you get a rotation that works for you.

# v1.0 MAP ROTATION

Al Basrah AAS v1
Al Basrah AAS v2
Al Basrah Insurgency v1
Al Basrah Invasion v1
Al Basrah Invasion v2
Al Basrah RAAS v1
Al Basrah Skirmish v1
Al Basrah Skirmish v2
Al Basrah TA v1
Al Basrah TC v1
Al Basrah TC v2

Belaya AAS v1
Belaya AAS v2
Belaya Invasion v1
Belaya Invasion v2
Belaya Invasion v3
Belaya RAAS v1
Belaya RAAS v2
Belaya RAAS v3
Belaya Skirmish v1
Belaya TC v1

Chora AAS v1
Chora AAS v2
Chora Insurgency v1
Chora Invasion v1
Chora Invasion v2
Chora RAAS v1
Chora RAAS v2
Chora Skirmish v1
Chora TC v1

Fallujah AAS v1
Fallujah AAS v2
Fallujah Insurgency v1
Fallujah Invasion v1
Fallujah Invasion v2
Fallujah Invasion v3
Fallujah RAAS v1
Fallujah RAAS v2
Fallujah RAAS v3
Fallujah Skirmish v1
Fallujah Skirmish v2
Fallujah TC v1
Fallujah TC v2

Fool's Road AAS v1
Fool's Road AAS v2
Fool's Road Destruction v1
Fool's Road Invasion v1
Fool's Road RAAS v1
Fool's Road RAAS v2
Fool's Road RAAS v3
Fool's Road Skirmish v1
Fool's Road Skirmish v2
Fool's Road TC v1

Gorodok AAS v1
Gorodok AAS v2
Gorodok Destruction v1
Gorodok Insurgency v1
Gorodok Invasion v1
Gorodok Invasion v2
Gorodok RAAS v1
Gorodok RAAS v2
Gorodok RAAS v3
Gorodok RAAS v4
Gorodok RAAS v5
Gorodok Skirmish v1
Gorodok TC v1

Jensen's Range v1
Jensen's Range v2
Jensen's Range v3

Kamdesh AAS v1
Kamdesh Insurgency v1
Kamdesh Insurgency v2
Kamdesh Invasion v1
Kamdesh Invasion v2
Kamdesh Invasion v3
Kamdesh RAAS v1
Kamdesh RAAS v2
Kamdesh RAAS v3
Kamdesh RAAS v4
Kamdesh Skirmish v1
Kamdesh TC v1
Kamdesh TC v2

Kohat AAS v1
Kohat AAS v2
Kohat Insurgency v1
Kohat Invasion v1
Kohat Invasion v2
Kohat RAAS v1
Kohat RAAS v2
Kohat RAAS v3
Kohat RAAS v4
Kohat Skirmish v1
Kohat TC v1

Kokan AAS v1
Kokan Insurgency v1
Kokan Invasion v1
Kokan RAAS v1
Kokan RAAS v2
Kokan Skirmish v1
Kokan TC v1

Lashkar Valley AAS v1
Lashkar Valley AAS v2
Lashkar Valley Insurgency v1
Lashkar Valley Invasion v1
Lashkar Valley RAAS v1
Lashkar Valley Skirmish v1
Lashkar Valley TC v1
Lashkar Valley TC v2

Logar Valley AAS v1
Logar Valley AAS v2
Logar Valley Insurgency v1
Logar Valley RAAS v1
Logar Valley Skirmish v1
Logar Valley TC v1

Mestia AAS v1
Mestia Invasion v1
Mestia Invasion v2
Mestia RAAS v1
Mestia Skirmish v1
Mestia TC v1

Mutaha AAS v1
Mutaha Invasion v1
Mutaha RAAS v1
Mutaha Skirmish v1
Mutaha TC v1
Mutaha TC v2

Narva AAS v1
Narva AAS v2
Narva AAS v3
Narva Destruction v1
Narva Invasion v1
Narva Invasion v2
Narva RAAS v1
Narva Skirmish v1
Narva TA v1
Narva TC v1
Narva TC v2

Skorpo AAS v1
Skorpo Invasion v1
Skorpo Invasion v2
Skorpo RAAS v1
Skorpo RAAS v2
Skorpo RAAS v3
Skorpo RAAS v4
Skorpo Skirmish v1
Skorpo TC v1
Skorpo TC v2
Skorpo TC v3

Sumari AAS v1
Sumari Insurgency v1
Sumari Invasion v1
Sumari RAAS v1
Sumari RAAS v2
Sumari Skirmish v1
Sumari TC v1

Tallil Outskirts AAS v1
Tallil Outskirts AAS v2
Tallil Outskirts Invasion v1
Tallil Outskirts Invasion v2
Tallil Outskirts Invasion v3
Tallil Outskirts RAAS v1
Tallil Outskirts RAAS v2
Tallil Outskirts RAAS v3
Tallil Outskirts RAAS v4
Tallil Outskirts Skirmish v1
Tallil Outskirts Skirmish v2
Tallil Outskirts Skirmish v3
Tallil Outskirts Tanks v1
Tallil Outskirts Tanks v2
Tallil Outskirts TA v1
Tallil Outskirts TC v1

Yehorivka AAS v1
Yehorivka AAS v2
Yehorivka Destruction v1
Yehorivka Invasion v1
Yehorivka Invasion v2
Yehorivka RAAS v1
Yehorivka RAAS v2
Yehorivka RAAS v3
Yehorivka RAAS v4
Yehorivka RAAS v5
Yehorivka Skirmish v1
Yehorivka Skirmish v2
Yehorivka Skirmish v3
Yehorivka TA v1
Yehorivka TC v1
Yehorivka TC v2




# v1.0 CANADIAN ARMED FORCES

CAF_Al_Basrah_Invasion_v1
CAF_Al_Basrah_Invasion_v2
CAF_Belaya_AAS_v1
CAF_Belaya_RAAS_v1
CAF_Belaya_RAAS_v2
CAF_Chora_AAS_v1
CAF_Chora_RAAS_v1
CAF_Fallujah_Invasion_v1
CAF_Fallujah_RAAS_v1
CAF_Fools_Road_RAAS_v1
CAF_Gorodok_AAS_v1
CAF_Gorodok_Invasion_v1
CAF_Gorodok_RAAS_v1
CAF_Gorodok_RAAS_v2
CAF_Gorodok_TC_v1
CAF_Jensens_Range_v4
CAF_Kamdesh_Invasion_v1
CAF_Kamdesh_RAAS_v1
CAF_Kamdesh_TC_v1
CAF_Kohat_Invasion_v1
CAF_Kokan_RAAS_v1
CAF_Lashkar_Valley_Invasion_v1
CAF_Lashkar_Valley_RAAS_v1
CAF_Lashkar_Valley_TC_v1
CAF_Logar_Valley_RAAS_v1
CAF_Manic-5_AAS_v1
CAF_Manic-5_AAS_v2
CAF_Manic-5_Invasion_v1
CAF_Manic-5_Invasion_v2
CAF_Manic-5_RAAS_v1
CAF_Manic-5_RAAS_v2
CAF_Manic-5_RAAS_v3
CAF_Manic-5_RAAS_v4
CAF_Manic-5_Skirmish_v1
CAF_Manic-5_Skirmish_v2
CAF_Manic-5_TC_v1
CAF_Mestia_RAAS_v1
CAF_Mutaha_AAS_v1
CAF_Mutaha_RAAS_v1
CAF_Mutaha_RAAS_v2
CAF_Nanisivik_AAS_v1
CAF_Nanisivik_Invasion_v1
CAF_Nanisivik_RAAS_v1
CAF_Narva_RAAS_v1
CAF_Skorpo_RAAS_v1
CAF_Sumari_AAS_v1
CAF_Tallil_Outskirts_RAAS_v1
CAF_Tallil_Outskirts_RAAS_v2
CAF_Yehorivka_Invasion_v1
CAF_Yehorivka_RAAS_v1
CAF_Yehorivka_TC_V1

Map Rotation: Add Steam-Workshop Maps[edit | edit source]

See this article: How to add one or more Steam Workshop Maps to the Squad Server

Message of the day in Motd.cfg[edit | edit source]

MOTD.cfg is an optional file that can be created the ServerConfig folder that will display a small text box to each player on entering the server. This is ideal for displaying server information, simple rules, or other messages. Be mindful though that text entered into this file will not wrap in game, and will overflow out of view.

  • Note: the file name must be uppercase, this is important for UNIX systems.

Two HTML tags are supported in motd.cfg. These are:

1 <a> Yellow Text</a>
2 <a href="link.com"> YELLOW LINK</a>

Remote Admin Lists in RemoteAdminListHosts.cfg[edit | edit source]

Each line should contain a URL to the admin file. The admin file will follow the exact same format as above. This should be used if you run multiple servers and would like to have a single admin file for all of them. If a player is listed in multiple files, their permissions will be combined.

Remote Ban Lists in RemoteBanListHosts.cfg[edit | edit source]

Each line should contain a URL to the ban file. The ban file will follow the exact same format as above. This should be used if you run multiple servers and would like to have a single ban file for all of them.

Server Configuration Settings in Server.cfg[edit | edit source]

This is the general server config file. Each variable should be on its own line. New additions will be added to this wiki. Since we do not overwrite config files you will need to manually add them to your existing server config if you wish to alter the default value.

  • Special characters in ServerName: If special characters in the server name show up as "????" in the Server browser, a possible solution is to use a word processor like Microsoft Word, open a new document and insert the character you want to use, then select and copy the character into the ServerName line in your Server.cfg file, e.g ServerName="Test Server Λ".
  • AutoTkBanTime: This option can be used how long in seconds a players will be banned after 7 teamkills on the server. Example: AutoTkBanTime=1209600 will ban the player for 14 days.
  • PublicQueueLimit: Cap public queue. Standard is PublicQueueLimit=25 and this cap the public queue to 25. =0 means that there wont be public queue. =-1 is unlimited queue.
ServerName="Squad Dedicated Server"
IsLANMatch=false
ShouldAdvertise=true
MaxPlayers=40
NumReservedSlots=0
PublicQueueLimit=25
NumPlayersDiffForTeamChanges=3
AllowTeamChanges=true
PreventTeamChangeIfUnbalanced=true
EnforceTeamBalance=true
RejoinSquadDelayAfterKick=180
ServerMessageInterval=300
ServerPassword=Password
AutoTkBanTime=1209600
TKAutoKickEnabled=true //set to false to disable autokick system, required true for licensed servers.
RecordDemos=false
VehicleClaimingDisabled=false
VehicleKitRequirementDisabled=false
AllowQA=false
// Forced on for Licensed servers (Only OWI staff & qa are admins)
AllowCommunityAdminAccess=false
// Forced on for Licensed servers (Only OWI devs)
AllowDevProfiling=false

Server Messages in ServerMessages.cfg[edit | edit source]

This will rotate server messages every x seconds (based on Server.cfg setting). Each message should have its own line. This should be used to display server rules and contact information.

Rcon control in Rcon.cfg[edit | edit source]

If you do not want to use RCON, leave the password= empty. NOTE: Leaving the RCONIP=0.0.0.0 will bind it to the public default IP. If your server has multiple IP's please specify the address here.

// Edit this IP to bind the RCON socket to an alternate IP address.
// Alternatively, set this from the command line with the argument:
//   RCONIP=0.0.0.0
IP=0.0.0.0
// Edit this IP to bind the RCON socket to an alternate port.
// Alternatively, set this from the command line with the argument:
//   RCONPORT=21114
Port=21114
// Set this to enable the usage of RCON with the given password for login.
// Leaving this empty will keep RCON turned off.
// Alternatively, set this from the command line with the argument:
//   RCONPASSWORD=MyPassword
Password=
// Set this to set the maximum number of allowable concurrent RCON
// connections to the server.
// Alternatively, set this from the command line with the argument:
//   RCONMAXCONNECTIONS=5
MaxConnections=5
// Edit this to customize the number of seconds without contact from a connected
// console before the server checks with that computer to see if the session is
// still active, or if it got disconnected. Supports values between 30 and 3600.
// Alternatively, set this from the command line with the argument:
//   RCONSECONDSBEFORETIMEOUTCHECK=120
SecondsBeforeTimeoutCheck=120

Tournament Mode[edit | edit source]

1. To enable tournament mode, you must run the server instance at least once to generate the necessary file.

2. Go to your server folder, and locate the Game.ini file under \Saved\Config\WindowsServer, (or Saved\Config\LinuxServer), and add the below contents as needed.

3. A server restart is necessary to apply any changes to the tournament mode configuration.

For more information, see this forum post. This mode was added with Alpha 5.2.

V15 compatible version:

[/Script/Squad.SQGameMode]
bTournamentMode=true

[/Script/Squad.SQTournamentModeRuleset]
Restrictions=(Setting="r.ShadowQuality", Min=1, Max=5)
Restrictions=(Setting="r.ViewDistanceQuality", Min=3, Max=4)
Restrictions=(Setting="r.ViewDistanceScale", Min=1, Max=4)
Restrictions=(Setting="grass.MaxUpdateFrequency", Min=10, Max=40)

Old version:

[/Script/Squad.SQGameMode]
bTournamentMode=true

[/Script/Squad.SQTournamentModeRuleset]
Restrictions=(Setting="r.LightFunctionQuality", Min=1, Max=1)
Restrictions=(Setting="r.ShadowQuality", Min=3, Max=5)
Restrictions=(Setting="r.Shadow.CSM.MaxCascades", Min=1, Max=10)
Restrictions=(Setting="r.Shadow.MaxResolution", Min=1024, Max=4096)
Restrictions=(Setting="r.Shadow.RadiusThreshold", Min=0.03, Max=0.05)
Restrictions=(Setting="r.Shadow.DistanceScale", Min=0.5, Max=1.0)
Restrictions=(Setting="r.Shadow.CSM.TransitionScale", Min=0.4, Max=1.0)
Restrictions=(Setting="r.DistanceFieldShadowing", Min=0, Max=1)
Restrictions=(Setting="r.DistanceFieldAO", Min=0, Max=1)
Restrictions=(Setting="r.AllowLandscapeShadows", Min=0, Max=1)
Restrictions=(Setting="r.MotionBlurQuality", Min=0, Max=4)
Restrictions=(Setting="r.AmbientOcclusionMipLevelFactor", Min=0.4, Max=1.0)
Restrictions=(Setting="r.AmbientOcclusionMaxQuality", Min=0, Max=100)
Restrictions=(Setting="r.DepthOfFieldQuality", Min=0, Max=4)
Restrictions=(Setting="r.RenderTargetPoolMin", Min=300, Max=1000)
Restrictions=(Setting="r.LensFlareQuality", Min=0, Max=3)
Restrictions=(Setting="r.SceneColorFringeQuality", Min=0, Max=1)
Restrictions=(Setting="r.EyeAdaptationQuality", Min=0, Max=2)
Restrictions=(Setting="r.FastBlurThreshold", Min=0, Max=100)
Restrictions=(Setting="r.Upscale.Quality", Min=1, Max=3)
Restrictions=(Setting="r.Tonemapper.GrainQuantization", Min=0, Max=1)
Restrictions=(Setting="r.LightShaftQuality", Min=0, Max=1)
Restrictions=(Setting="r.Filter.SizeScale", Min=0.6, Max=1)
Restrictions=(Setting="r.Tonemapper.Quality", Min=0, Max=5)
Restrictions=(Setting="r.SkeletalMeshLODBias", Min=-1, Max=0)
Restrictions=(Setting="r.ViewDistanceScale", Min=1.0, Max=10.0)
Restrictions=(Setting="r.MipMapLODBias", Min=-1, Max=0)
Restrictions=(Setting="r.Streaming.MipBias", Min=0, Max=1.5)
Restrictions=(Setting="r.MaxAnisotropy", Min=0, Max=16)
Restrictions=(Setting="r.TranslucencyLightingVolumeDim", Min=24, Max=64)
Restrictions=(Setting="r.RefractionQuality", Min=0, Max=2)
Restrictions=(Setting="r.SSR.Quality", Min=0, Max=4)
Restrictions=(Setting="r.SceneColorFormat", Min=3, Max=4)
Restrictions=(Setting="r.DetailMode", Min=0, Max=2)
Restrictions=(Setting="r.TranslucencyVolumeBlur", Min=0, Max=1)
Restrictions=(Setting="r.MaterialQualityLevel", Min=0, Max=2)
Restrictions=(Setting="r.SSS.Scale", Min=0, Max=1)
Restrictions=(Setting="r.SSS.SampleSet", Min=0, Max=2)
Restrictions=(Setting="r.EmitterSpawnRateScale", Min=0.125, Max=1.0)
Restrictions=(Setting="r.ParticleMinTimeBetweenTicks", Min=8, Max=33)
Restrictions=(Setting="foliage.DensityScale", Min=0, Max=1.0)
Restrictions=(Setting="grass.DensityScale", Min=0, Max=1.0)
Restrictions=(Setting="grass.MaxUpdateFrequency", Min=10, Max=30)
Restrictions=(Setting="r.PostProcessAAQuality", Min=0, Max=6)
Restrictions=(Setting="r.Shadow.MaxCSMResolution", Min=512, Max=4096)
Restrictions=(Setting="r.VolumetricFog", Min=0, Max=1)
Restrictions=(Setting="r.Streaming.LimitPoolSizeToVRAM", Min=0, Max=1)
Restrictions=(Setting="r.Streaming.MaxEffectiveScreenSize", Min=0, Max=0)
Restrictions=(Setting="r.SSS.HalfRes", Min=0, Max=1)
Restrictions=(Setting="r.ParticleLightQuality", Min=0, Max=2)