Server Configuration

Terminology
Before configuring your server, it is important to understand a few terms. Some of these terms have been newly introduced or changed their meaning in release 2.0. To prevent confusion and misunderstand, we are explaining these terms with their current meaning for server administration (beware, some of these terms have again different meanings for Modding).


 * What we call a map, for example Al Basrah, consists of static elements such as the landscape, buildings, foliage and more.
 * OWI is now using the term level for exactly the same meaning, therefore the term "level" has exactly the same meaning as "map".
 * Next, the term layer is a subdivision of a level. A layer defines gameplay elements such as which game mode is played, the number and locations of flags, time of day, etc. A level can consists of multiple layers, for example "Al Basrah AAS v1" or "Al Basrah Insurgency v1" are two different layers of the level "Al Basrah".
 * Finally, the new term "faction setup", also called divisions, refers to different vehicle asset configurations for different factions,. Previously, the vehicle assets and factions were fixed for a layer; now these can be set independently by server admins for some game modes.

Command Line
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

Windows
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


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
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
Configuration files are located in Configuration files located in this directory are Admins.cfg Bans.cfg CustomOptions.cfg ExcludedFactions.cfg ExcludedFactionSetups.cfg ExcludedLayers.cfg ExcludedLevels.cfg LayerRotation.cfg LevelRotation.cfg License.cfg Motd.cfg (optional) Rcon.cfg RemoteAdminListHosts.cfg RemoteBanListHosts.cfg Server.cfg ServerMessages.cfg VoteConfig.cfg -- Note Needed

Adding Admins in Admins.cfg
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 ////		immune - 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
This is where your bans will go. They need to be in the format of 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

Custom Options
Modders are able to place custom options for their mods here. The content of CustomOptions.cfg is sent to clients as other settings.

Excluded Factions
Excluding factions from the game can be done here. This can be done for mods and Vanilla. The Excluded factions must be listed as the Faction Id, the Vanilla ones are listed below. It is not possible to run a layer with any of excluded factions. For layers without specific factions any excluded factions will not be loaded.
 * 1) v2.0 EXCLUDED FACTION LIST : This must be Faction Id : those are different from display names !

//CAF //GB //INS //MEA //MIL //RUS //US

Excluded Faction Setups
Excluding setups from the game can be done here. If a setup is excluded it will not be loaded on maps without specific factions. //CAF_LightInfantry_1PPCLI //CAF_LightInfantry_3PPCLI //GB_AirAssault_2Para //GB_Armored_1Armoured //GB_Armored_QueensRoyalHussars //GB_CombinedArms_3rdDivision //GB_LightInfantry_GrenadierGuards //GB_Mechanized_1Yorks //GB_Motorized_3Rifles //GB_Support_4RLC //INS_CombinedArms_Default //INS_LightInfantry_OmarsFreedomFighters //MEA_AirAssault_91stAirAssault //MEA_Armored_60thPrinceAssur //MEA_CombinedArms_1stBattalion //MEA_CombinedArms_Default //MEA_LightInfantry_4thBorderGuards //MEA_Mechanized_3rdKingQadesh //MEA_Motorized_83rdPrinceZaid //MEA_Support_2ndVizirHussein //MIL_CombinedArms_Default //MIL_LightInfantry_PeoplesFront //RUS_AirAssault_598th //RUS_Armored_2nd //RUS_Armored_4th //RUS_CombinedArms_Default //RUS_LightInfantry_1398th //RUS_Mechanized_1stMech //USA_504th_Infantry //USA_AirAssault_101Airborne1IBCT //USA_Armored_1stArmoredDivision //USA_CombinedArms_1Infantry //USA_CombinedArms_3Corps //USA_CombinedArms_Default //USA_LightInfantry_10thMountain //USA_LightInfantry_149MEB //USA_Mechanized_7thInfantry //USA_Motorized_7thInfantry

Excluded Layers
Preventing any layer from being loaded by the server can be done here. The excluded layers will not show up in AdminListLayer. // NOTE: this file is used for servers running with Layer voting. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis). // Specifying a layer here will hide it from the list when you use "adminchangelayer" or "adminsetnextlayer" // NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
 * 1) v2.0 EXCLUDED LAYER LIST : This must be Layer Id : those are different from display names !

AlBasrah_TA_v1 Tallil_TA_v1 Narva_TA_v1 Yehorivka_TA_v1

Mutaha_AAS_v2 LashkarValley_TC_v3

JensensRange_GB-MIL JensensRange_US-RUS JensensRange_MEA-INS CAF_JensensRange_CAF-RUS

Tutorial_Helicopter Tutorial_Infantry

//Albasrah_AAS_v1 //Albasrah_AAS_v2 //Albasrah_Insurgency_v1 //Albasrah_invasion_v1 //Albasrah_invasion_v2 //Albasrah_RAAS_v1 //Albasrah_Skirmish_v1 //Albasrah_Skirmish_v2 //Albasrah_TC_v1 //Albasrah_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

//FoolsRoad_AAS_v1 //FoolsRoad_AAS_v2 //FoolsRoad_Destruction_v1 //FoolsRoad_Invasion_1 //FoolsRoad_RAAS_v1 //FoolsRoad_RAAS_v2 //FoolsRoad_RAAS_v3 //FoolsRoad_Skirmish_v1 //FoolsRoad_Skirmish_v2 //FoolsRoad_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

//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

//LashkarValley_AAS_v1 //LashkarValley_AAS_v2 //LashkarValley_Insurgency_v1 //LashkarValley_Invasion_v1 //LashkarValley_RAAS_v1 //LashkarValley_Skirmish_v1 //LashkarValley_TC_v1 //LashkarValley_TC_v2 //LashkarValley_TC_v3

//Logar_AAS_v1 //Logar_AAS_v2 //Logar_Insurgency_v1 //Logar_RAAS_v1 //Logar_Skirmish_v1 //Logar_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_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_AAS_v1 //Tallil_AAS_v2 //Tallil_Invasion_v1 //Tallil_Invasion_v2 //Tallil_Invasion_v3 //Tallil_RAAS_v1 //Tallil_RAAS_v2 //Tallil_RAAS_v3 //Tallil_RAAS_v4 //Tallil_Skirmish_v1 //Tallil_Skirmish_v2 //Tallil_Skirmish_v3 //Tallil_Tanks_v1 //Tallil_Tanks_v2 //Tallil_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_TC_v1 //Yehorivka_TC_V2


 * 1) _v2.0 CANADIAN_ARMED FORCES

//CAF_AlBasrah_Invasion_v1 //CAF_AlBasrah_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_GooseBay_AAS_v1 //CAF_GooseBay_Invasion_v1 //CAF_GooseBay_Invasion_v2 //CAF_GooseBay_RAAS_v1 //CAF_GooseBay_Skirmish_v1

//CAF_Gorodok_AAS_v1 //CAF_Gorodok_Invasion_v1 //CAF_Gorodok_RAAS_v1 //CAF_Gorodok_RAAS_v2 //CAF_Gorodok_TC_v1

//CAF_Kamdesh_Invasion_v1 //CAF_Kamdesh_RAAS_v1 //CAF_Kamdesh_TC_v1

//CAF_Kohat_Invasion_v1 //CAF_Kokan_Valley_RAAS_v1

//CAF_Lashkar_Valley_Invasion_v1 //CAF_Lashkar_Valley_RAAS_v1 //CAF_Lashkar_Valley_TC_v1

//CAF_Logar_Valley_RAAS_v1

//CAF_Manic_AAS_v1 //CAF_Manic_AAS_v2 //CAF_Manic_Invasion_v1 //CAF_Manic_Invasion_v2 //CAF_Manic_RAAS_v1 //CAF_Manic_RAAS_v2 //CAF_Manic_RAAS_v3 //CAF_Manic_RAAS_v4 //CAF_Manic_Skirmish_v1 //CAF_Manic_Skirmish_v2 //CAF_Manic_TC_v2

//CAF_Mestia_RAAS_v1

//CAF_Mutaha_AAS_v1 //CAF_Mutaha_RAAS_v1 //CAF_Mutaha_RAAS_v2

//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_v2

Excluded Levels
Preventing any level from being loaded by the server can be done here. The excluded levels will not show up in AdminListLevels. // NOTE: This file is used for servers running with Levels voting. // This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis). // NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used. TutorialInfantry TutorialHelicopter //Exclude Tutorials levels so it doesn't get loaded on the server JensensRange Nanisivik
 * 1) v2.0 EXCLUDED LEVEL LIST : This must be Level Id : those are different from display names !

//	AlBasrah //	Belaya //	Chora //	Fallujah //	FoolsRoad //	GooseBay //	Gorodok //	Kamdesh //	Kohat //	Kokan //	Lashkar //	Logar //	Manic-5 //	Mestia //	Mutaha //	Narva //	Skorpo //	Sumari //	Tallil //	Yehorivka

Map Rotation Modes
With the 2.0 update Map rotation was split into two modes, Layer, and Level. Layer Rotation works the same as the 1.0 MapRotation.cfg.

Level Rotation
In order to use Level Rotation the setting "MapRotationMode=" must be set to LevelList or LevelList_Randomized in Server.cfg. // NOTE: this file is used for servers running in MapRotationMode=LevelList, running in order, or for servers running in MapRotationMode=LevelList_Randomized, where the below layers are rotated randomly. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis). // NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
 * 1) v2.0 LEVEL ROTATION : This must be Level Id : those are different from display names !

AlBasrah Belaya Chora Fallujah FoolsRoad Gorodok Kamdesh Kohat Kokan Lashkar Logar Mestia Mutaha Narva Skorpo Sumari Tallil Yehorivka


 * 1) v2.0 CANADIAN ARMED FORCES

GooseBay Manic-5

Layer Rotation
A layer rotation is the order of specific layers that will be played. In order to use Layer Rotation the setting "MapRotationMode=" must be set to LayerList or LayerList_Randomized in Server.cfg. // v2.0 LAYER_ROTATION: These must be Layer_Id's; those_are_different from_display names! I.e. "Belaya_AAS_v1" is correct, "Belaya AAS v1" is not. // NOTE: this file is used for servers running in MapRotationMode=LayerList, running in order, or for servers running in MapRotationMode=LayerList_Randomized, where the below layers are rotated randomly. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis). // NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.

Albasrah_AAS_v1 Albasrah_AAS_v2 Albasrah_Insurgency_v1 Albasrah_invasion_v1 Albasrah_invasion_v2 Albasrah_RAAS_v1 Albasrah_Skirmish_v1 Albasrah_Skirmish_v2 //AlBasrah_TA_v1 // Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers. Albasrah_TC_v1 Albasrah_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

FoolsRoad_AAS_v1 FoolsRoad_AAS_v2 FoolsRoad_Destruction_v1 FoolsRoad_Invasion_1 FoolsRoad_RAAS_v1 FoolsRoad_RAAS_v2 FoolsRoad_RAAS_v3 FoolsRoad_Skirmish_v1 FoolsRoad_Skirmish_v2 FoolsRoad_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 layers have no gamemode and are not intended for regular servers. JensensRange_GB-MIL // Jensen's range layers have no gamemode and are not intended for regular servers. JensensRange_US-RUS // Jensen's range layers have no gamemode and are not intended for regular servers. JensensRange_MEA-INS 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

LashkarValley_AAS_v1 LashkarValley_AAS_v2 LashkarValley_Insurgency_v1 LashkarValley_Invasion_v1 LashkarValley_RAAS_v1 LashkarValley_Skirmish_v1 LashkarValley_TC_v1 LashkarValley_TC_v2 // LashkarValley_TC_v3 (WIP Layer please do not use)

Logar_AAS_v1 Logar_AAS_v2 Logar_Insurgency_v1 Logar_RAAS_v1 Logar_Skirmish_v1 Logar_TC_v1

Mestia_AAS_V1 Mestia_Invasion_V1 Mestia_Invasion_V2 Mestia_RAAS_v1 Mestia_Skirmish_v1 Mestia_TC_v1

Mutaha_AAS_v1 // Mutaha_AAS_v2 (WIP Layer please do not use) 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 // Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers. 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_AAS_v1 Tallil_AAS_v2 Tallil_Invasion_v1 Tallil_Invasion_v2 Tallil_Invasion_v3 Tallil_RAAS_v1 Tallil_RAAS_v2 Tallil_RAAS_v3 Tallil_RAAS_v4 Tallil_Skirmish_v1 Tallil_Skirmish_v2 Tallil_Skirmish_v3 Tallil_Tanks_v1 Tallil_Tanks_v2 //Tallil_TA_v1 //Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers. Tallil_TC_v1

//Tutorial_Helicopter //Tutorial_Infantry // Tutorial layers are not meant to be run on servers. 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 // Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers. Yehorivka_TC_v1 Yehorivka_TC_V2


 * 1) _v2.0 CANADIAN_ARMED FORCES

CAF_AlBasrah_Invasion_v1 CAF_AlBasrah_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_GooseBay_AAS_v1 CAF_GooseBay_Invasion_v1 CAF_GooseBay_Invasion_v2 CAF_GooseBay_RAAS_v1 CAF_GooseBay_Skirmish_v1

CAF_Gorodok_AAS_v1 CAF_Gorodok_Invasion_v1 CAF_Gorodok_RAAS_v1 CAF_Gorodok_RAAS_v2 CAF_Gorodok_TC_v1 // Jensen's range layers have no gamemode and are not intended for regular servers. // CAF_JensensRange_CAF-RUS

CAF_Kamdesh_Invasion_v1 CAF_Kamdesh_RAAS_v1 CAF_Kamdesh_TC_v1

CAF_Kohat_Invasion_v1 CAF_Kokan_Valley_RAAS_v1

CAF_Lashkar_Valley_Invasion_v1 CAF_Lashkar_Valley_RAAS_v1 CAF_Lashkar_Valley_TC_v1

CAF_Logar_Valley_RAAS_v1

CAF_Manic_AAS_v1 CAF_Manic_AAS_v2 CAF_Manic_Invasion_v1 CAF_Manic_Invasion_v2 CAF_Manic_RAAS_v1 CAF_Manic_RAAS_v2 CAF_Manic_RAAS_v3 CAF_Manic_RAAS_v4 CAF_Manic_Skirmish_v1 CAF_Manic_Skirmish_v2 CAF_Manic_TC_v2

CAF_Mestia_RAAS_v1

CAF_Mutaha_AAS_v1 CAF_Mutaha_RAAS_v1 CAF_Mutaha_RAAS_v2

// Nanisivik layers are being removed and discontinued.

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_v2

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

Message of the day in Motd.cfg
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:

Remote Admin Lists in RemoteAdminListHosts.cfg
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
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
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.
 * AutoTkBanTime: This option determines 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"

// Control visibility in the server browser ShouldAdvertise=true

// Set the server to LAN mode IsLANMatch=false

// Max player count on the server MaxPlayers=100

// Number of reserved slots for admins / members NumReservedSlots=0

// Size of the server queuing, for regular user PublicQueueLimit=25

// Map rotation mode: it can be // LevelList(use order in level rotation config file) // LayerList (use order in layer rotation config file) // or // LevelList_Randomized // LayerList_Randomized // which are randomized version of previous options MapRotationMode=LayerList

// Should the Map/Layer rotations list be randomized at start? RandomizeAtStart=true

// Should Faction be voted for on generic layers? Randomized if false. UseVoteFactions=true

// Should next Map be voted for at end of round? UseVoteLevel=true

// Should next Layer be voted for at end of round? UseVoteLayer=true

// Completly Allow or Disallow Team change to all players. Only user with Level_Balance access level can bypass this flag AllowTeamChanges=true

// If set to false, players can change teams regardless of team balance. Otherwise, the NumPlayersDiffForTeamChanges Value is used PreventTeamChangeIfUnbalanced=true

// Maximum Allowed difference in player count between teams. This takes into account the team the player leaves and the team the player joins NumPlayersDiffForTeamChanges=3

RejoinSquadDelayAfterKick=180 RecordDemos=false ServerMessageInterval=300

// Forces the server to do non-seamless travel (disconnect when changing maps) every X seconds // ForceNonSeamlessTravelIntervalSeconds=43200

// The following are required for Licensed servers, but can be changed for non-licensed servers TKAutoKickEnabled=true VehicleKitRequirementDisabled=false AllowCommunityAdminAccess=true

// Only Offworld Industries developers are admins AllowDevProfiling=true

AllowQA=true

// Optional, set the password for a server (works with "double quotes" as well, but are not needed) ServerPassword=your password

// The below commands are optional for all servers VehicleClaimingDisabled=false

Server Messages in ServerMessages.cfg
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
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
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)

Voting
Voting is currently extremely buggy, use at your own risk! // Votes have several configurable variables, these are: // Duration: The duration of the voting time. // ResultPresentationDuration: The duration where players can see the results displayed, but cannot vote. // AccessFilter: The minimum access level required in order to vote. // TeamFilter: The teams that you must be a member of in order to vote.

// When using Level Vote, this value lets you control how many levels will be picked from your rotation and offered for each level vote LevelCountPerVote=4 LevelVote_Duration=30 LevelVote_ResultPresentationDuration=5 LevelVote_AccessFilter=Public LevelVote_TeamFilter=Team_Neutral+Team_One+Team_Two

// When not using Level Vote, this value lets you control how many layers will be picked from your rotation and offered in each layer vote LayerCountPerVote=4 LayerVote_Duration=30 LayerVote_ResultPresentationDuration=5 LayerVote_AccessFilter=Public LayerVote_TeamFilter=Team_Neutral+Team_One+Team_Two

Team_Neutral_Duration=30 Team_Neutral_ResultPresentationDuration=5 Team_Neutral_AccessFilter=Public Team_Neutral_TeamFilter=Team_Neutral+Team_One+Team_Two

Team_One_Duration=30 Team_One_ResultPresentationDuration=5 Team_One_AccessFilter=Public Team_One_TeamFilter=Team_Neutral+Team_One+Team_Two

Team_Two_Duration=30 Team_Two_ResultPresentationDuration=5 Team_Two_AccessFilter=Public Team_Two_TeamFilter=Team_Neutral+Team_One+Team_Two