Squad Wiki
Register
m (→‎Linux: name deleted)
Tag: Visual edit
Tag: Source edit
(35 intermediate revisions by 12 users not shown)
Line 1: Line 1:
== Requirements ==
+
== 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 Versions|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]]).
===Windows===
 
[https://www.microsoft.com/en-us/download/details.aspx?id=40784 Visual C++ Redistributable for Visual Studio 2013 vc_redist.x64.exe]<br />
 
[https://www.microsoft.com/en-us/download/details.aspx?id=48145 Visual C++ Redistributable for Visual Studio 2015 vc_redist.x64.exe]<br />
 
[https://www.microsoft.com/en-us/download/details.aspx?id=8109 DirectX End-User Runtimes (June 2010)]<br />
 
===Linux===
 
GLIBC 2.17 or higher<br/>
 
   
  +
* What we call a '''map''', for example [[Al Basrah]], consists of static elements such as the landscape, buildings, foliage and more.
== Installation ==
 
  +
* OWI is now using the term '''level''' for exactly the same meaning, therefore the term "level" has exactly the same meaning as "map".
===Windows===
 
  +
* 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".
1. Download SteamCmd and extract to your preferred directory.
 
  +
* 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 ==
2. Open SteamCmd or create a file called "update server.bat" with the following contents.<pre>
 
  +
All of the following parameters can be added to your starting command line for additional configuration. Be careful to avoid typos when adding these!
SET STEAMCMD="C:\steamcmd\steamcmd.exe"
 
%STEAMCMD% +login anonymous +force_install_dir "C:\servers\squad_server" +app_update 403240 validate
 
</pre>3. Run the .bat file to install the server files. When the installation is complete, you can close the window.
 
   
  +
'''MULTIHOME''' = The IP Address you want to bind the server to. '''(Use only if you have multiple IPs on your server)''' ''(Optional)''
4. Go to the server folder ("C:\servers\squad_server"), and create a new file called "start.bat" with the following contents. This is the file you will use to start the server.
 
start SquadGameServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log
 
Your server is now installed, however you must still configure your network to allow players to connect to your server from the internet. You can find Squad's connection ports in the "Ports to Open" section below. Directions for port forwarding will be dependent on your model router / network setup.
 
   
  +
'''Port = Game port'''
Further info on server setup and configuration can be found in their respective sections on this page.
 
----
 
   
  +
'''QueryPort''' = Steam query port
===Linux===
 
First of all this guide assumes you've got a Linux Distribution installed with 64 bit architecture. Most hosting companies will run 64bit so not to worry.<br />
 
Other than that, this guide needs no Linux experience whatsoever and will be in completely "for dummies" mode. <br />
 
Anything in this guide that comes after the symbol $ is a command that you're supposed to run in the Linux terminal.<br />
 
'''PROTIP: The Linux terminal autocompletes with TAB. So if you have a file or folder called "testfolder" you can write "test" and press tab and it will autofill to testfolder!'''<br />
 
A suggested software to use to connect to your Linux server terminal is PUTTY. https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe
 
   
  +
'''RANDOM''' = Randomize map rotation (ALWAYS, FIRST, NONE) ''(Optional)''
<br />
 
'''Any questions? Contact server owners on Discord, you can find them in the [https://discord.io/squadhosting Squad Hosting discord]''' <br />
 
All right, let's get started: <br />
 
INSTALLING SERVER:<br />
 
1. Log in as root and install the software screen and a library needed for SteamCMD
 
<pre>
 
Debian/Ubuntu: $ apt-get install screen lib32gcc1
 
CentOS: $ yum -y install screen glibc libstdc++ glibc.i686 libstdc++.i686
 
</pre>
 
 
2. Create a user you want to use for the squadgameservers.
 
<pre>
 
$ adduser username
 
</pre>
 
Enter a password for the user of your own choosing. You may have to change the password with ''"sudo passwd'' ''username''"
 
When prompted for full name, room number, work phone, home phone, and other just press enter.
 
When asked if information is correct write Y and press enter
 
   
  +
'''FIXEDMAXPLAYERS''' = Player count cannot go higher than this ''(Optional)''
   
  +
'''FIXEDMAXTICKRATE''' = MAX server tickrate ''(Optional)''
3. Log on to the new user account: ssh username@localhost and then the password you selected.
 
   
  +
'''PREFERPREPROCESSOR''' = CPU Affinity ''(Optional)'' UNTESTED
4. Make a directory named SquadGameServer
 
   
  +
'''-log''' = Display a log window on the server ''(Optional)''
<pre>
 
$ mkdir SquadGameServer
 
</pre>
 
5. Enter the folder
 
<pre>
 
$ cd SquadGameServer
 
</pre>
 
6. Download and extract SteamCMD using one of these commands
 
<pre>
 
$ wget -q -O - https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar xzv
 
$ curl -so - https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar xzv
 
</pre>
 
 
NOTE: Some have complained about getting an untrusted/license error of some sort. If that is the case, try this:
 
 
<pre>
 
$ wget -q -O - http://media.steampowered.com/installer/steamcmd_linux.tar.gz | tar xzv
 
$ curl -so - http://media.steampowered.com/installer/steamcmd_linux.tar.gz | tar xzv
 
</pre>
 
 
7. Create a script for installing (And later updating) the first server instance
 
<pre>
 
$ echo "./steamcmd.sh +login anonymous +force_install_dir server1 +app_update 403240 validate" > updateserver1.sh
 
</pre>
 
8. Make the script executable
 
<pre>
 
$ chmod +x updateserver1.sh
 
</pre>
 
 
9. Install the server instance (this same command is used later to update the server when a new version is released.)
 
<pre>
 
$ ./updateserver1.sh
 
</pre>
 
 
10. When it's finished it will say "Success! App '403240' fully installed." Quit SteamCMD by writing
 
<pre>
 
$ exit
 
</pre>
 
and hitting enter.
 
 
11. Create a script for starting the server instance
 
<pre>
 
$ echo "cd server1; ./SquadGameServer.sh Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=NONE" > startserver1.sh
 
</pre>
 
12. Make the script executable
 
<pre>
 
$ chmod +x startserver1.sh
 
</pre>
 
13. Open a screen window to run the server in then enter that screen
 
<pre>
 
$ screen -dmS server1
 
$ screen -r server1
 
</pre>
 
 
14. Start your server
 
<pre>
 
$ ./startserver1.sh
 
</pre>
 
 
Screen allows the server to run even if you've shut down your SSH session (putty).
 
   
  +
'''-fullcrashdump''' = Save a full dump file on crash (can become quite large sometimes) ''(Optional)''
EDITING CONFIG FILES:
 
   
1. Log on as your the user account running the server and go into the Serverconfig folder located in SquadGameServer/server1/SquadGame/ServerConfig in our example.
 
<pre>
 
$ cd SquadGameServer/server1/SquadGame/ServerConfig
 
</pre>
 
 
2. Open the file you wish to edit with a text editor (in this case nano).
 
<pre>
 
$ $EDITOR Server.cfg
 
</pre>
 
 
Edit file. When you're done, save the file. If you are using nano save the file with ctrl+o and then enter. Exit nano with ctrl+x.
 
 
STOPPING SERVER:
 
 
1. SSH to your linux server as the user running the squadgameserver. (Not root) Once in the terminal, open up the screen for said server instance, in above example called server1
 
<pre>
 
$ screen -r server1
 
</pre>
 
2. You will now see the SquadGameServer log window, press CTRL+C and it will shut the server down. After that you can start it again with your startcommand.
 
 
----
 
 
===Docker===
 
If your server is running [https://www.docker.com/ Docker], you can skip the above steps and simply use:
 
<pre>
 
docker run -d --net=host --name=squad-dedicated cm2network/squad
 
</pre>
 
The container will automatically update the game on startup, so if there is a game update just restart the container.
 
 
The config is located here: ''/home/steam/squad-dedicated/SquadGame/ServerConfig/''
 
 
* Docker Volumes
 
When a Docker container is destroyed, it’s entire file system is destroyed too. Instead of editing files on the container, its a good idea to use [https://docs.docker.com/storage/volumes/ Docker Volumes], the benefit of this is that the data is persistent, if you remove the container and create a new one from the image you wont need to amend any config files.
 
<pre>
 
docker run -d --net=host --volume=/<Your local directory>:/home/steam/squad-dedicated --name=squad-dedicated cm2network/squad
 
</pre>
 
 
* Multiple Instances
 
If you want to launch another instance you can increment the environment variables, using -e (--env):
 
<pre>
 
docker run -d --net=host -e PORT=7788 -e QUERYPORT=27166 -e RCONPORT=21115 --name=squad-dedicated2 cm2network/squad
 
</pre>
 
Make sure you dont forget to update Rcon.cfg with the new port (the config defaults to 21114).
 
 
You can find the associated Docker Hub page here:
 
[https://hub.docker.com/r/cm2network/squad/ https://hub.docker.com/r/cm2network/squad/]
 
 
== MULTI INSTANCE ==
 
 
=== Linux ===
 
The important things to create different instance inside your server are these: 
 
 
- Duplicate the directory and rename it.
 
 
- After that, edits the config files and set on the Rcon.cfg a port 10 numbers later the one of the previous instance.
 
 
EXAMPLE:
 
 
Server1 Rcon Port: 21114
 
 
Server2 Rcon Port: 21124
 
 
- Keep on your mind to change the port of connection in the start.sh script to avoid other problems.
 
 
== BETA PARAMETERS ==
 
 
=== Linux ===
 
<pre>
 
./steamcmd.sh +login anonymous +force_install_dir server1 +app_update 403240 -beta NAMEOFTHEBETA -betapassword PASSWORD validate +quit
 
</pre>
 
----
 
 
=== Windows ===
 
<pre>
 
SET STEAMCMD="C:\steamcmd\steamcmd.exe"
 
%STEAMCMD% +login anonymous +force_install_dir "C:\servers\squad_server" +app_update 403240 -beta NAMEOFTHEBETA -betapassword PASSWORD validate +quit
 
</pre>
 
 
== Tips ==
 
Make sure Steam Client is closed. If its open Squad Server will not run. For support issues related to server hosting please visit our Discord Server '''http://discord.me/squadhosting'''
 
 
'''(Windows)''' Allowing the SquadGameServer.exe files through the firewall will save you headaches.
 
 
When hosting a Squad server and playing Squad on the same PC, the server must be started before logging on to Steam and launching Squad. Otherwise it won't work.
 
 
=== AppID - 403240 ===
 
 
== Ports to Open ==
 
Need to be open on Windows firewall and router.
 
 
'''Port''' = Game port = UDP (Default 7787, 7788 UDP) <br />
 
'''QueryPort''' = Steam query port = UDP (Default 27165 UDP)<br />
 
'''QueryPort+1''' = Second Steam query port = UDP and TCP (Default 27165, 27166 UDP and TCP) <br />
 
'''RCON Port''' = UDP and TCP (Default 21114) must be open.<br />
 
 
== 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)'''<br />'''
 
'''Port = Game port'''''<br />
 
'''QueryPort''' = Steam query port<br />
 
'''RANDOM''' = Randomize map rotation (ALWAYS, FIRST, NONE) ''(Optional)''<br />
 
'''FIXEDMAXPLAYERS''' = Player count cannot go higher than this ''(Optional)''<br />
 
'''FIXEDMAXTICKRATE''' = MAX server tickrate ''(Optional)''<br />
 
'''PREFERPREPROCESSOR''' = CPU Affinity ''(Optional)'' UNTESTED <br />
 
'''-log''' = Display a log window on the server ''(Optional)''<br />
 
'''-fullcrashdump''' = Save a full dump file on crash (can become quite large sometimes) ''(Optional)''<br />
 
 
The following line implements additional start parameters as an example.<pre>
 
The following line implements additional start parameters as an example.<pre>
start SquadGameServer.exe MULTIHOME=1.2.3.4 Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 FIXEDMAXTICKRATE=50 RANDOM=ALWAYS -log</pre>
+
start SquadGame\Binaries\Win64\SquadGameServer.exe MULTIHOME=1.2.3.4 Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=100 FIXEDMAXTICKRATE=40 RANDOM=NONE -log</pre>
  +
=== Set processor Affinity===
 
=== Set processor Affinity ===
+
=== Windows===
 
=== 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):<pre>
 
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):<pre>
start /AFFINITY C /WAIT SquadGameServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log</pre>
+
start /AFFINITY C /WAIT SquadGame\Binaries\Win64\SquadGameServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log</pre>
=== Calculating AFFINITY ===
+
===Calculating AFFINITY===
[[File:Squad Affinity Calculator.png|frameless|1000x1000px]]
+
[[File:Squad Affinity Calculator.png|frameless|1000x1000px|link=https://squad.gamepedia.com/File:Squad_Affinity_Calculator.png]]
   
 
Open your Windows calculator.
 
Open your Windows calculator.
Line 249: Line 52:
   
 
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".
 
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.
=== 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
 
cd server1; taskset -c 0-3 ./SquadGameServer.sh Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=NONE
  +
== Files ==
 
== Files (Instanced hosts start here) ==
 
 
Configuration files are located in <code>C:\servers\squad_server\SquadGame\ServerConfig\</code>
 
Configuration files are located in <code>C:\servers\squad_server\SquadGame\ServerConfig\</code>
 
Configuration files located in this directory are
 
Configuration files located in this directory are
Line 260: Line 61:
 
Admins.cfg
 
Admins.cfg
 
Bans.cfg
 
Bans.cfg
  +
CustomOptions.cfg
  +
ExcludedFactions.cfg
  +
ExcludedFactionSetups.cfg
  +
ExcludedLayers.cfg
  +
ExcludedLevels.cfg
  +
LayerRotation.cfg
  +
LevelRotation.cfg
 
License.cfg
 
License.cfg
MapRotation.cfg
 
 
Motd.cfg (optional)
 
Motd.cfg (optional)
 
Rcon.cfg
 
Rcon.cfg
Line 268: Line 75:
 
Server.cfg
 
Server.cfg
 
ServerMessages.cfg
 
ServerMessages.cfg
  +
VoteConfig.cfg -- Note Needed
 
</pre>
 
</pre>
 
== Adding Admins in Admins.cfg ==
 
== Adding Admins in Admins.cfg ==
Line 294: Line 102:
 
Admin=7984591565523:Whitelist // Player 156
 
Admin=7984591565523:Whitelist // Player 156
 
</pre>A list of group permission are as follows:
 
</pre>A list of group permission are as follows:
//// Valid access levels are as follows
+
//// Valid access levels are as follows
//// startvote - not used
+
//// startvote - not used
//// changemap
+
//// changemap
//// pause - Pause server gameplay
+
//// pause - Pause server gameplay
//// cheat - Use server cheat commands
+
//// cheat - Use server cheat commands
//// private - Password protect server
+
//// private - Password protect server
//// balance - Group Ignores server team balance
+
//// balance - Group Ignores server team balance
//// chat - Admin chat and Server broadcast
+
//// chat - Admin chat and Server broadcast
//// kick
+
//// kick
//// ban
+
//// ban
//// config - Change server config
+
//// config - Change server config
//// cameraman - Admin spectate mode
+
//// cameraman - Admin spectate mode
//// immunity - Cannot be kicked / banned
+
//// immune - Cannot be kicked / banned
//// manageserver - Shutdown server
+
//// manageserver - Shutdown server
//// featuretest - Any features added for testing by dev team
+
//// featuretest - Any features added for testing by dev team
//// reserve - Reserve slot
+
//// reserve - Reserve slot
//// demos - Record Demos (not working)
+
//// demos - Record Demos (not working)
//// debug - show admin stats command and other debugging info
+
//// debug - show admin stats command and other debugging info
//// teamchange - No timer limits on team change
+
//// teamchange - No timer limits on team change
 
//// forceteamchange - Can issue the ForceTeamChange command
 
//// forceteamchange - Can issue the ForceTeamChange command
 
//// canseeadminchat - This group can see the admin chat and teamkill/admin-join notifications
 
//// canseeadminchat - This group can see the admin chat and teamkill/admin-join notifications
Line 318: Line 126:
 
== Bans in Bans.cfg ==
 
== Bans in Bans.cfg ==
 
This is where your bans will go. They need to be in the format of
 
This is where your bans will go. They need to be in the format of
  +
<code><banned player steamid>:<unix timestamp of ban expiration></code>. Optionally info about admin that issued the ban and comment about the ban can be included <code><admin nickname> [SteamID <admin steamid>] Banned:<banned player steamid>:<unix timestamp of ban expiration> //<ban comment></code> (this will be included by default when using ingame or RCON ban commands).
<code>steamid:unix timestamp of unban //comment</code>
 
  +
So an example file will look like this
 
  +
An example of Bans.cfg contents with valid bans:
<pre>76561198039509812:0 //Permanent ban for cheating
 
  +
<pre>
7862895148978485:1454455855 //team killing</pre>
 
  +
John [SteamID 76561198000000000] Banned:76561198000000001:0 //Permanent ban for cheating
  +
John [SteamID 76561198000000000] Banned:76561198000000002:1623366856 //Team killing
  +
76561198000000003:0 //Manually added ban
  +
76561198000000004:0
  +
</pre>
 
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.
 
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:
== Map Rotation in MapRotation.cfg ==
 
   
  +
- https://www.epochconverter.com
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.
 
  +
  +
== Custom Options ==
  +
Modders are able to place custom options for their mods here.
  +
  +
If you are wanting to use the new seed game mode settings you will have to use the template below.
  +
  +
The content of CustomOptions.cfg is sent to clients as other settings.
   
 
<pre>
 
<pre>
  +
# Here you can control mod-specific server settings. Mods can use blueprint node "GetCustomServerSetting" to gather the contents of this file.
# B19 MAP ROTATION
 
  +
# This section used to exist in server.cfg
   
  +
// Amount of players needed to start Pre-Live countdown, integer. Default=50.
Al Basrah AAS v1
 
  +
#SeedPlayersThreshold=50
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 TC v1
 
Al Basrah TC v2
 
   
  +
// After reaching the SeedPlayersThreshold, if some players disconnect but the current player count stays at or above this value, don’t stop the
Belaya AAS v1
 
  +
// Pre-Live countdown, integer. Should be greater than zero and less than SeedPlayersThreshold to be considered enabled. default=45.
Belaya Invasion v1
 
  +
#SeedMinimumPlayersToLive=45
Belaya Invasion v2
 
Belaya Invasion v3
 
Belaya RAAS v1
 
Belaya RAAS v2
 
Belaya RAAS v3
 
Belaya Skirmish v1
 
Belaya TC v1
 
   
  +
// Match length in seconds, integer. Default=21600 (6 hours)
Chora AAS v1
 
  +
#SeedMatchLengthSeconds=21600
Chora AAS v2
 
Chora Insurgency v1
 
Chora Invasion v1
 
Chora Invasion v2
 
Chora RAAS v1
 
Chora RAAS v2
 
Chora Skirmish v1
 
Chora TC v1
 
   
  +
// Enable or Disable availability of all kits during seeding phase, boolean (valid values are 0 and 1), default=1
Fool's Road AAS v1
 
  +
#SeedAllKitsAvailable=1
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
 
   
  +
// Initial number of tickets for both teams, integer. Default=100
Gorodok AAS v1
 
  +
#SeedInitialTickets=100
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
 
   
  +
// Length of the pre-live countdown, float. Default=60.0
Jensen's Range v1
 
  +
#SeedSecondsBeforeLive=60.0
Jensen's Range v2
 
Jensen's Range v3
 
   
  +
// All default values listed above will be used if the corresponding setting is not present on config file or commented out.
Kamdesh AAS v1
 
  +
</pre>
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
 
   
  +
== Excluded Factions ==
Kohat AAS v1
 
  +
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.
Kohat Insurgency v1
 
  +
<pre>
Kohat Invasion v1
 
  +
# v2.0 EXCLUDED FACTION LIST : This must be Faction Id : those are different from display names !
Kohat Invasion v2
 
Kohat RAAS v1
 
Kohat RAAS v2
 
Kohat RAAS v3
 
Kohat RAAS v4
 
Kohat Skirmish v1
 
Kohat TC v1
 
   
  +
//CAF
Kokan Valley AAS v1
 
  +
//GB
Kokan Insurgency v1
 
  +
//INS
Kokan Invasion v1
 
  +
//MEA
Kokan RAAS v1
 
  +
//MIL
Kokan RAAS v2
 
  +
//RUS
Kokan Skirmish v1
 
  +
//US
Kokan TC v1
 
  +
</pre>
   
Logar Valley AAS v1
 
Logar Valley AAS v2
 
Logar Valley Insurgency v1
 
Logar Valley RAAS v1
 
Logar Valley Skirmish v1
 
Logar Valley TC v1
 
   
  +
== Excluded Faction Setups ==
Mestia AAS v1
 
  +
Excluding setups from the game can be done here. If a setup is excluded it will not be loaded on maps without specific factions.
Mestia Invasion v1
 
  +
<pre>
Mestia Invasion v2
 
  +
//CAF_LightInfantry_1PPCLI
Mestia RAAS v1
 
  +
//CAF_LightInfantry_3PPCLI
Mestia Skirmish v1
 
  +
//GB_AirAssault_2Para
Mestia TC v1
 
  +
//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
  +
</pre>
   
  +
== Excluded Layers ==
Mutaha AAS v1
 
  +
Preventing any layer from being loaded by the server can be done here. The excluded layers will not show up in AdminListLayer.
Mutaha Invasion v1
 
  +
<pre>
Mutaha RAAS v1
 
  +
# v2.0 EXCLUDED LAYER LIST : This must be Layer Id : those are different from display names !
Mutaha Skirmish v1
 
  +
// 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).
Mutaha TC v1
 
  +
// Specifying a layer here will hide it from the list when you use "adminchangelayer" or "adminsetnextlayer"
Mutaha TC v2
 
  +
// NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
   
  +
AlBasrah_TA_v1
Narva AAS v1
 
  +
Tallil_TA_v1
Narva AAS v2
 
  +
Narva_TA_v1
Narva AAS v3
 
  +
Yehorivka_TA_v1
Narva Destruction v1
 
Narva Invasion v1
 
Narva Invasion v2
 
Narva RAAS v1
 
Narva Skirmish v1
 
Narva TC v1
 
Narva TC v2
 
   
  +
Mutaha_AAS_v2
Skorpo AAS v1
 
  +
LashkarValley_TC_v3
Skorpo RAAS v1
 
Skorpo RAAS v2
 
Skorpo RAAS v3
 
Skorpo RAAS v4
 
Skorpo Invasion v1
 
Skorpo Invasion v2
 
Skorpo Skirmish v1
 
Skorpo TC v1
 
Skorpo TC v2
 
Skorpo TC v3
 
   
  +
JensensRange_GB-MIL
Sumari AAS v1
 
  +
JensensRange_US-RUS
Sumari Insurgency v1
 
  +
JensensRange_MEA-INS
Sumari Invasion v1
 
  +
CAF_JensensRange_CAF-RUS
Sumari RAAS v1
 
Sumari RAAS v2
 
Sumari Skirmish v1
 
Sumari TC v1
 
   
  +
Tutorial_Helicopter
Tallil Outskirts AAS v1
 
  +
Tutorial_Infantry
Tallil Outskirts Invasion v1
 
Tallil Outskirts Invasion v2
 
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 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
 
   
  +
//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
# B19 CANADIAN ARMED FORCES
 
  +
//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
CAF_Al_Basrah_Invasion_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
  +
  +
  +
  +
#_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
  +
</pre>
  +
  +
== Excluded Levels ==
  +
Preventing any level from being loaded by the server can be done here. The excluded levels will not show up in AdminListLevels.<pre>
  +
# v2.0 EXCLUDED LEVEL LIST : This must be Level Id : those are different from display names !
  +
// 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
  +
  +
// AlBasrah
  +
// Belaya
  +
// Chora
  +
// Fallujah
  +
// FoolsRoad
  +
// GooseBay
  +
// Gorodok
  +
// Kamdesh
  +
// Kohat
  +
// Kokan
  +
// Lashkar
  +
// Logar
  +
// Manic-5
  +
// Mestia
  +
// Mutaha
  +
// Narva
  +
// Skorpo
  +
// Sumari
  +
// Tallil
  +
// Yehorivka
  +
</pre>
  +
  +
== 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.
  +
<pre>
  +
# v2.0 LEVEL ROTATION : This must be Level Id : those are different from display names !
  +
// 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.
  +
  +
AlBasrah
  +
Belaya
  +
Chora
  +
Fallujah
  +
FoolsRoad
  +
Gorodok
  +
Kamdesh
  +
Kohat
  +
Kokan
  +
Lashkar
  +
Logar
  +
Mestia
  +
Mutaha
  +
Narva
  +
Skorpo
  +
Sumari
  +
Tallil
  +
Yehorivka
  +
  +
# v2.0 CANADIAN ARMED FORCES
  +
  +
GooseBay
  +
Manic-5
  +
</pre>
  +
===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.
  +
<pre>
  +
// 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
  +
  +
  +
  +
  +
#_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_Invasion_v1
 
CAF_Gorodok_RAAS_v1
 
CAF_Gorodok_RAAS_v1
 
CAF_Gorodok_RAAS_v2
 
CAF_Gorodok_RAAS_v2
 
CAF_Gorodok_TC_v1
 
CAF_Gorodok_TC_v1
  +
// Jensen's range layers have no gamemode and are not intended for regular servers.
CAF_Jensens_Range_v4
 
  +
// CAF_JensensRange_CAF-RUS
  +
 
CAF_Kamdesh_Invasion_v1
 
CAF_Kamdesh_Invasion_v1
 
CAF_Kamdesh_RAAS_v1
 
CAF_Kamdesh_RAAS_v1
 
CAF_Kamdesh_TC_v1
 
CAF_Kamdesh_TC_v1
  +
  +
 
CAF_Kohat_Invasion_v1
 
CAF_Kohat_Invasion_v1
  +
CAF_Kokan_Valley_RAAS_v1
CAF_Manic-5_AAS_v1
 
  +
CAF_Manic-5_Invasion_v1
 
  +
CAF_Lashkar_Valley_Invasion_v1
CAF_Manic-5_Invasion_v2
 
  +
CAF_Lashkar_Valley_RAAS_v1
CAF_Manic-5_RAAS_v1
 
  +
CAF_Lashkar_Valley_TC_v1
CAF_Manic-5_RAAS_v2
 
  +
CAF_Manic-5_RAAS_v3
 
  +
CAF_Logar_Valley_RAAS_v1
CAF_Manic-5_RAAS_v4
 
  +
CAF_Manic-5_Skirmish_v1
 
  +
CAF_Manic_AAS_v1
CAF_Manic-5_Skirmish_v2
 
  +
CAF_Manic_AAS_v2
CAF_Manic-5_TC_v1
 
  +
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_Mestia_RAAS_v1
  +
  +
CAF_Mutaha_AAS_v1
 
CAF_Mutaha_RAAS_v1
 
CAF_Mutaha_RAAS_v1
  +
CAF_Mutaha_RAAS_v2
CAF_Nanisivik_Invasion_v1
 
  +
CAF_Nanisivik_RAAS_v1
 
  +
// Nanisivik layers are being removed and discontinued.
  +
 
CAF_Narva_RAAS_v1
 
CAF_Narva_RAAS_v1
  +
  +
CAF_Skorpo_RAAS_v1
  +
  +
CAF_Sumari_AAS_v1
  +
 
CAF_Tallil_Outskirts_RAAS_v1
 
CAF_Tallil_Outskirts_RAAS_v1
  +
CAF_Tallil_Outskirts_RAAS_v2
  +
 
CAF_Yehorivka_Invasion_v1
 
CAF_Yehorivka_Invasion_v1
 
CAF_Yehorivka_RAAS_v1
 
CAF_Yehorivka_RAAS_v1
  +
CAF_Yehorivka_TC_v2
CAF_Yehorivka_TC_V1
 
 
</pre>
 
</pre>
   
 
== Map Rotation: Add Steam-Workshop Maps ==
 
== Map Rotation: Add Steam-Workshop Maps ==
 
 
See this article: [https://squad.gamepedia.com/Uploading_a_mod_to_a_dedicated_server How to add one or more Steam Workshop Maps to the Squad Server]
 
See this article: [https://squad.gamepedia.com/Uploading_a_mod_to_a_dedicated_server How to add one or more Steam Workshop Maps to the Squad Server]
   
 
== Message of the day in Motd.cfg ==
 
== 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.
+
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:<syntaxhighlight lang="html" line="1">
  +
<a> Yellow Text</a>
  +
<a href="link.com"> YELLOW LINK</a>
  +
</syntaxhighlight>
   
 
== Remote Admin Lists in RemoteAdminListHosts.cfg ==
 
== 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.
 
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 ==
 
== 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 admin file for all of them.
+
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 ==
 
== 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.
 
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 <code>ServerName="Test Server Λ"</code>.
 
* '''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 <code>ServerName="Test Server Λ"</code>.
  +
*'''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.
   
 
<pre>
 
<pre>
 
ServerName="Squad Dedicated Server"
 
ServerName="Squad Dedicated Server"
  +
IsLANMatch=false
 
  +
// Control visibility in the server browser
 
ShouldAdvertise=true
 
ShouldAdvertise=true
  +
MaxPlayers=40
 
  +
// 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
 
NumReservedSlots=0
  +
NumPlayersDiffForTeamChanges=3
 
  +
// 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
 
AllowTeamChanges=true
  +
  +
// If set to false, players can change teams regardless of team balance. Otherwise, the NumPlayersDiffForTeamChanges Value is used
 
PreventTeamChangeIfUnbalanced=true
 
PreventTeamChangeIfUnbalanced=true
  +
EnforceTeamBalance=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
 
RejoinSquadDelayAfterKick=180
ServerMessageInterval=300
 
ServerPassword=Password
 
AutoTkBanTime=1209600
 
TKAutoKickEnabled=true //set to false to disable autokick system, required true for licensed servers.
 
 
RecordDemos=false
 
RecordDemos=false
  +
ServerMessageInterval=300
VehicleClaimingDisabled=false
 
  +
  +
// 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
  +
AutoTKBanNumberTKs=7
  +
AutoTKBanTime=300
 
VehicleKitRequirementDisabled=false
 
VehicleKitRequirementDisabled=false
  +
AllowCommunityAdminAccess=true
AllowQA=false
 
  +
// Forced on for Licensed servers (Only OWI staff & qa are admins)
 
  +
// Only Offworld Industries developers are admins
AllowCommunityAdminAccess=false
 
  +
AllowDevProfiling=true
// Forced on for Licensed servers (Only OWI devs)
 
  +
AllowDevProfiling=false
 
  +
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
 
</pre>
 
</pre>
   
 
== Server Messages in ServerMessages.cfg ==
 
== 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.
 
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 ==
 
== Rcon control in Rcon.cfg ==
 
If you do not want to use RCON, leave the '''password=''' empty.
 
If you do not want to use RCON, leave the '''password=''' empty.
Line 591: Line 1,017:
 
// RCONIP=0.0.0.0
 
// RCONIP=0.0.0.0
 
IP=0.0.0.0
 
IP=0.0.0.0
  +
 
// Edit this IP to bind the RCON socket to an alternate port.
 
// Edit this IP to bind the RCON socket to an alternate port.
 
// Alternatively, set this from the command line with the argument:
 
// Alternatively, set this from the command line with the argument:
 
// RCONPORT=21114
 
// RCONPORT=21114
 
Port=21114
 
Port=21114
  +
 
// Set this to enable the usage of RCON with the given password for login.
 
// Set this to enable the usage of RCON with the given password for login.
 
// Leaving this empty will keep RCON turned off.
 
// Leaving this empty will keep RCON turned off.
Line 600: Line 1,028:
 
// RCONPASSWORD=MyPassword
 
// RCONPASSWORD=MyPassword
 
Password=
 
Password=
  +
 
// Set this to set the maximum number of allowable concurrent RCON
 
// Set this to set the maximum number of allowable concurrent RCON
 
// connections to the server.
 
// connections to the server.
Line 605: Line 1,034:
 
// RCONMAXCONNECTIONS=5
 
// RCONMAXCONNECTIONS=5
 
MaxConnections=5
 
MaxConnections=5
  +
 
// Edit this to customize the number of seconds without contact from a connected
 
// 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
 
// console before the server checks with that computer to see if the session is
Line 690: Line 1,120:
   
 
[[Category:Server]]
 
[[Category:Server]]
  +
  +
== Voting ==
  +
Voting is currently extremely buggy, use at your own risk!<pre>
  +
// 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
  +
</pre>

Revision as of 21:28, 18 May 2022

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 SquadGame\Binaries\Win64\SquadGameServer.exe MULTIHOME=1.2.3.4 Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=100 FIXEDMAXTICKRATE=40 RANDOM=NONE -log

Set processor Affinity

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 SquadGame\Binaries\Win64\SquadGameServer.exe Port=7787 QueryPort=27165 FIXEDMAXPLAYERS=80 RANDOM=ALWAYS -log

Calculating AFFINITY

Squad Affinity Calculator

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 C:\servers\squad_server\SquadGame\ServerConfig\ 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 <banned player steamid>:<unix timestamp of ban expiration>. Optionally info about admin that issued the ban and comment about the ban can be included <admin nickname> [SteamID <admin steamid>] Banned:<banned player steamid>:<unix timestamp of ban expiration> //<ban comment> (this will be included by default when using ingame or RCON ban commands).

An example of Bans.cfg contents with valid bans:

John [SteamID 76561198000000000] Banned:76561198000000001:0 //Permanent ban for cheating
John [SteamID 76561198000000000] Banned:76561198000000002:1623366856 //Team killing
76561198000000003:0 //Manually added ban
76561198000000004:0

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.

If you are wanting to use the new seed game mode settings you will have to use the template below.

The content of CustomOptions.cfg is sent to clients as other settings.

# Here you can control mod-specific server settings. Mods can use blueprint node "GetCustomServerSetting" to gather the contents of this file. 
# This section used to exist in server.cfg

// Amount of players needed to start Pre-Live countdown, integer. Default=50.
#SeedPlayersThreshold=50

// After reaching the SeedPlayersThreshold, if some players disconnect but the current player count stays at or above this value, don’t stop the
// Pre-Live countdown, integer. Should be greater than zero and less than SeedPlayersThreshold to be considered enabled. default=45. 
#SeedMinimumPlayersToLive=45

// Match length in seconds, integer. Default=21600 (6 hours)
#SeedMatchLengthSeconds=21600

// Enable or Disable availability of all kits during seeding phase, boolean (valid values are 0 and 1), default=1
#SeedAllKitsAvailable=1

// Initial number of tickets for both teams, integer. Default=100
#SeedInitialTickets=100

// Length of the pre-live countdown, float. Default=60.0
#SeedSecondsBeforeLive=60.0

// All default values listed above will be used if the corresponding setting is not present on config file or commented out.

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.

# 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.

# v2.0 EXCLUDED LAYER LIST : This must be Layer Id : those are different from display names !
// 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.

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



#_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.

# v2.0 EXCLUDED LEVEL LIST : This must be Level Id : those are different from display names !
// 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

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

# v2.0 LEVEL ROTATION : This must be Level Id : those are different from display names !
// 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.

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

# 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




#_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:

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

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 ServerName="Test Server Λ".
  • 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
AutoTKBanNumberTKs=7
AutoTKBanTime=300
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