User:Rain/Sandbox: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''TODO: Rename the page to "Dedicated server" because THIS IS NOT A GUIDE!''' | |||
== | == Hosting == | ||
=== | '''There are no Windows binaries''' | ||
=== Server requirements === | |||
'''OS''': Linux (Ubuntu 18.04 x86_64, Ubuntu 19/04 amd64, Ubuntu 20.04, and Rocky Linux 8 are confirmed working) | |||
'''Memory''': 2GB RAM + 1GB RAM per each additional server with 10 players. More RAM is recommended for larger maps, higher player counts, or complex game modes. | |||
'''CPU''': A ~2.5Ghz CPU will comfortably support a 10 player server. A ~4Ghz CPU will comfortably support 24 players. | |||
'''Note''': These are '''not''' hard limits for requirements, just suggestions for the best performance, based on experiences with many server providers on different grades of hardware. | |||
Pavlov servers are functionally single threaded. | |||
=== Software dependencies === | |||
* gdb (TODO: do you actually need gdb to run a server? wtf?) | |||
* curl (TODO: do you actually need curl to run a server? does pavlov download stuff using curl?) | |||
* lib32gcc1(-s1) | |||
* libc++-dev | |||
=== SteamCMD === | |||
The app ID for Pavlov VR dedicated servers is <code>622970</code>. | |||
[ | Instructions on how to use SteamCMD are available in the [https://developer.valvesoftware.com/wiki/SteamCMD Valve Developer Community Wiki]. | ||
To host '''Shack Live''' (Quest) use <code>-beta shack</code>, to host '''Shack RC''' (Quest) use <code>-beta shack_beta</code>. | |||
Update 29 of the PCVR version of Pavlov VR dedicated servers require you to completely break your system: | |||
<code>sudo rm /usr/lib/x86_64-linux-gnu/libc++.so</code> | |||
<code>sudo ln -s /usr/lib/x86_64-linux-gnu/libc++.so.1 /usr/lib/x86_64-linux-gnu/libc++.so</code> | |||
'''TODO: By all that is good and fair, modifying system files like this for one piece of software is unacceptable. This can be done in a different, less intrusive way.''' | |||
== Configuration == | |||
=== Moderators, Blacklist, Whitelist === | |||
The following three files allow you to specify moderators, banned players, and whitelist players. | |||
=== | They are required to be able to use <code>AddMod</code>, <code>Ban</code>, <code>Banlist</code>, <code>ModeratorList</code>, <code>RemoveMod</code> and <code>Unban</code> [[Rcon Overview and Commands|RCON commands]] but are otherwise optional. | ||
<pre> | |||
Pavlov/Saved/Config/mods.txt | |||
Pavlov/Saved/Config/blacklist.txt | |||
Pavlov/Saved/Config/whitelist.txt | |||
</pre>'''TODO: Describe the file contents, give examples.''' | |||
=== Game.ini === | |||
This file contains the majority of server configuration keys. | |||
It is automatically created when first starting a server, it can also be created manually. <pre> | |||
Pavlov/Saved/Config/LinuxServer/Game.ini | |||
</pre> | |||
==== Keys ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+Game.ini keys | ||
! | !Key | ||
! | !Allowed values | ||
!Default value | |||
!Description | !Description | ||
|- | |- | ||
| | |bEnabled | ||
| | |<code>True</code><code>False</code> | ||
| | |<code>True</code> | ||
|Enables or disables registering with the master server to show or hide the server from the server list | |||
'''TODO: confirm that this is true''', and why is this even a thing, you can't direct connect to servers anyways... | |||
|- | |- | ||
| | |ServerName | ||
| | |Any ASCII text value up to 35 characters | ||
|<code>DedicatedServer</code> | |||
| | |Sets the name with which the server will be listed as | ||
'''TODO: confirm exact maximum character limit and which characters are allowed (utf8? unicode?)''' | |||
| | |||
|- | |- | ||
| | |MaxPlayers | ||
| | |Integer | ||
Maximum 10 for Shack, 24 for PC. | |||
|<code>10</code> | |||
|Sets the amount of available player slots | |||
| | |||
|- | |- | ||
| | |ApiKey | ||
| | |Obsolete, leave empty. | ||
| | | | ||
| | | | ||
|- | |- | ||
| | |bSecured | ||
| | |<code>True</code><code>False</code> | ||
| | |<code>True</code> | ||
|Enables or disables Valve Anti-Cheat (VAC) | |||
| | |||
|- | |- | ||
| | |bCustomServer | ||
| | |<code>True</code><code>False</code> | ||
| | |<code>True</code> | ||
| | |Enables or disables "some new modding tools". Save and HTTP functions. | ||
Required to write to <code>blacklist.txt</code> for bans. | |||
'''TODO: specify exactly what those new modding tools are.''' | |||
|- | |- | ||
| | |bCompetitive | ||
| | |<code>True</code><code>False</code> | ||
|<code>False</code> | |||
|Enables or disables competitive mode for SND | |||
| | |||
|- | |- | ||
| | |bVerboseLogging | ||
| | |<code>True</code><code>False</code> | ||
|<code>False</code> | |||
|Enables or disables verbose logging. | |Enables or disables verbose logging. | ||
Verbose logging mostly consists of [[Setting up a dedicated server#Verbose Logging|detailed statistics]]. | |||
This will significantly increase logging. | |||
|- | |- | ||
| | |bWhitelist | ||
| | |<code>True</code><code>False</code> | ||
|<code>False</code> | |||
|Enables or disables usage of the whitelist, allowing only users in <code>whitelist.txt</code> to join | |||
|- | |- | ||
| | |RefreshListTime | ||
| | |Integer, seconds | ||
|<code>10</code> | |||
| | |Sets the interval at which the server reads changes from <code>mods.txt</code>, <code>blacklist.txt</code> and <code>whitelist.txt</code> | ||
|- | |- | ||
| | |LimitedAmmoType | ||
| | |Integer, Type ID | ||
|<code>1</code> | |||
| | |Sets the limited ammo type, see [[Setting up a dedicated server#Limited Ammo Types|Limited Ammo Types]] | ||
| | |||
| | |||
|- | |- | ||
| | |TimeLimit | ||
| | |Integer, minutes | ||
|<code>60</code> | |||
| | |Sets the time limit for each map | ||
|- | |- | ||
| | |TickRate | ||
| | |Integer, ticks per second | ||
Recommended between 50 and 120 | |||
| | |<code>90</code> | ||
|Sets the rate at which the server processes and updates game state information and network events. | |||
Changes weapon de-spawn time and breaks some game modes. Recommended to leave at default value. | |||
'''TODO: what game modes? breaks how? needs clarification.''' | |||
|- | |- | ||
| | |Password | ||
| | |Integer, 1 to 4 digit pin | ||
|<code>0000</code> | |||
| | |Sets the server PIN that is required to be entered before being able to join the server. | ||
Setting the pin to <code>0</code> or <code>0000</code> does not remove the pin but sets it to <code>0</code>. | |||
Commenting out or leaving the value empty will remove the pin. | |||
|- | |- | ||
| | |BalanceTableURL | ||
| | |Text formatted as <code>user/repository/branch</code> | ||
| | |<code>vankruptgames/BalancingTable/main</code> | ||
|Sets the balance table Git URL to be used by the server. | |||
See [https://github.com/vankruptgames/BalancingTable Balancing Table] for instructions. | |||
|- | |- | ||
| | |AFKTimeLimit | ||
| | |Integer, seconds | ||
| | |<code>60</code> | ||
|Sets the maximum amount of time a player can be idle before being automatically kicked. | |||
Setting this to <code>0</code> will disable AFK kicking. | |||
'''TODO: Pretty sure this is incorrect, while testing I've set it to 0 and got kicked nonetheless. Only being moderator prevents afk kicking. Requires further testing.''' | |||
|- | |- | ||
| | |bInitialized | ||
| | |<code>True</code><code>False</code> | ||
| | |<code>False</code> | ||
|'''TODO: What does this do?''' | |||
| | |||
|- | |- | ||
| | |DepotURL | ||
| | | | ||
| | | | ||
|'''TODO: What does this do?''' | |||
|- | |- | ||
| | |bBroadcast | ||
| | |<code>True</code><code>False</code> | ||
|<code>True</code> | |||
|Probably enables or disables broadcasting to pavtv? | |||
'''TODO: What does this do?''' | |||
|} | |||
'''TODO: Verify all default values, right now I'm just guessing''' | |||
'''TODO: Sort alphabetically''' | |||
For maps running a Custom gamemode (CodZ, BR, Duel, etc.) it doesn't matter which gamemode you choose, as the map will automatically override it with the custom mode. | |||
| | |||
| | |||
| | |||
==== Limited Ammo Types ==== | |||
| | {| class="wikitable" | ||
|+ | |||
!AmmoType | |||
!Name | |||
!Description | |||
|- | |- | ||
| | |0 | ||
| | |Unlimited | ||
| | |Players have unlimited ammo, carry no ammo boxes and do not display an ammo count on the wrist. | ||
|- | |- | ||
| | |1 | ||
| | |Limited Generic | ||
| | |Players carry ammo boxes with a limited amount of ammo. | ||
One box for each weapon class (Pistol, Submachine gun, Rifles/MGs, Shotgun, Sniper). | |||
Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. | |||
An ammo count is displayed on the wrist. | |||
|- | |- | ||
| | |2 | ||
| | |Limited Specific | ||
| | |Players carry ammo boxes with a limited amount of ammo. | ||
One box for each weapon. | |||
Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. | |||
An ammo count is displayed on the wrist. | |||
|- | |- | ||
| | |3 | ||
| | |Custom | ||
| | |Allows for full control over ammo by the map. | ||
|- | |- | ||
| | |4 | ||
| | | Limited Special | ||
| | |'''All weapons except "special" weapons are unlimited, more clarification is needed.''' | ||
|- | |- | ||
| | |5 | ||
| | |Boxless | ||
| | |'''Like limited generic but without boxes? Clarification is needed.''' | ||
|} | |||
The | ==== Map rotation ==== | ||
The map rotation is defined in the <code>Game.ini</code>. | |||
Upon server start, the first map in the rotation will be started. | |||
When a map has ended, the next map in the rotation will be started. | |||
When the end of the rotation has been reached, it will start from the beginning again. | |||
Mod.io maps will be downloaded and updated automatically, if required, when they are rotated to. | |||
Each entry requires a separate line of the following format:<pre> | |||
MapRotation=(MapId="Name or ID", GameMode="Game Mode") | |||
</pre><code>Name or ID</code>: See [[Default Maps|Default maps]] or find the Map ID on Mod.io and append it to "UGC" (Example: https://mod.io/g/pavlov/m/mcdonalds has Resource ID <code>2804322</code>, the MapID to use would be <code>UGC2804322</code>) | |||
<code>Game Mode</code>: See [[Gamemodes|Game Modes]]. | |||
| | {| class="wikitable" | ||
|+Game modes | |||
| | !GameMode | ||
!Name | |||
|- | |||
|DM | |||
|Death match | |||
|- | |- | ||
| | |KOTH | ||
| | |King of the hill | ||
|- | |- | ||
| | |GUN | ||
| | | Gun game | ||
|- | |- | ||
| | |OITC | ||
| | | One in the chamber | ||
|- | |- | ||
| | |SND | ||
| | |Search and destroy | ||
|- | |- | ||
| | |TANKTDM | ||
|WW2 Team Death Match | |||
| | |||
|- | |- | ||
| | | TDM | ||
| | |Team Death Match | ||
|- | |- | ||
| | |TTT | ||
| | |Trouble in Terrorist Town | ||
|- | |- | ||
| | |WW2GUN | ||
| | |WW2 gun game | ||
|- | |- | ||
| | |ZWV | ||
| | | Zombie wave survival | ||
|- | |- | ||
| | |HIDE | ||
|The Hidden | |||
| | |||
|- | |- | ||
| | |INFECTION | ||
|Hidden infection | |||
| | |||
|- | |- | ||
| | |PUSH | ||
|Push | |||
| | |||
|- | |- | ||
| | |PH | ||
|[ | |Prop hunt | ||
|} | |||
'''TODO: move this to game modes page.''' | |||
| | |||
==== Example ==== | |||
<pre> | |||
[/Script/Pavlov.DedicatedServer] | |||
# This is a comment | |||
bEnabled=True | |||
ServerName=Your server | |||
MaxPlayers=10 | |||
bSecured=True | |||
bCustomServer=True | |||
bWhitelist=False | |||
RefreshListTime=120 | |||
LimitedAmmoType=0 | |||
TickRate=90 | |||
TimeLimit=60 | |||
Password=1234 | |||
bInitialized=False | |||
DepotURL= | |||
ApiKey= | |||
bCompetitive=False | |||
bBroadcast=True | |||
BalanceTableURL=vankruptgames/BalancingTable/Beta_5.1 | |||
bVerboseLogging=True | |||
AFKTimeLimit=0 | |||
MapRotation=(MapId="datacenter", GameMode="SND") | |||
MapRotation=(MapId="UGC3094680", GameMode="SND") | |||
MapRotation=(MapId="UGC2996823", GameMode="SND") | |||
MapRotation=(MapId="sand", GameMode="SND") | |||
MapRotation=(MapId="UGC2841131", GameMode="SND") | |||
MapRotation=(MapId="UGC2829349", GameMode="SND") | |||
MapRotation=(MapId="container", GameMode="SND") | |||
MapRotation=(MapId="UGC2844898", GameMode="SND") | |||
MapRotation=(MapId="UGC2804502", GameMode="SND") | |||
</pre> | |||
=== RCON === | |||
The RCON password and port are configured in <code>RconSettings.txt</code>. If the file does not exist or if the values in it are empty, no RCON will be provided.<pre> | |||
Pavlov/Saved/Config/RconSettings.txt | |||
</pre> | |||
==== Keys ==== | |||
{| class="wikitable" | |||
!Key | |||
!Allowed values | |||
!Default value | |||
!Description | |||
|- | |- | ||
| | |Password | ||
| | |Text | ||
| | |<code>changeme</code> | ||
|Sets the password used to authenticate with RCON | |||
|- | |- | ||
| | |Port | ||
| | |Integer, 0-65535 | ||
|<code>9100</code> | |||
| | |Sets the port at which RCON will listen | ||
| | |} | ||
| | |||
==== Example ==== | |||
<pre> | |||
Password=very secure password | |||
Port=9100 | |||
</pre> | |||
== Running == | |||
==== Startup parameters ==== | |||
{| class="wikitable" | |||
|+ | |||
!Parameter | |||
!Description | |||
|- | |- | ||
| | | | ||
-PORT=7777 | |||
|Sets the server port to listen to. | |||
Secondary port is <code>port + 400</code>. | |||
For example: Base port <code>7777</code>, secondary port <code>8177</code>. | |||
|- | |- | ||
| | | | ||
-COMPETITIVE=1 | |||
| | |Enables competitive mode. | ||
This is the same as enabling competitive move in the <code>Game.ini</code>. | |||
|- | |- | ||
| | | | ||
|'''TODO: Ask dev for complete list of arguments or, much easier and faster, decompile the binary and find them.''' | |||
| | |||
|} | |} | ||
-- | ==== Server executable ==== | ||
With the server files, a startup script <code>PavlovServer.sh</code> is shipped. It adds global execution privileges to the server executable, and adds an argument <code>Pavlov</code> to the startup parameters. | |||
The server executable is located in <code>Pavlov/Binaries/Linux/PavlovServer-Linux-Shipping</code> and can be executed directly. It already has global execution privileges by default. | |||
Either of these can be used to start the server, the <code>PavlovServer.sh</code> script will forward all startup parameters to the server executable. | |||
== Shack == | |||
Shack servers and PCVR servers have a few differences which will be described in this section. | |||
'''TODO: Since there are also 2 shack versions, documenting all this is a huge chore, especially for someone who doesn't touch this sh..izzle.''' | |||
=== Game.ini keys === | |||
The following keys do not exist for Shack servers. | |||
* '''TODO''' | |||
=== | === Custom maps === | ||
Shack (both versions??) do not support Mod.io and require manual upload of any custom map. | |||
Also players download the custom maps directly from the server? | |||
'''TODO: Needs figuring out!''' | |||
To use custom maps, the maps folder first needs to be created manually. | |||
Pavlov/Saved/maps | |||
Custom map folders will need to be placed into this folder. | |||
For example:<pre>Pavlov/Saved/maps | |||
|- SVR_Arena | |||
|- metadata.json | |||
|- other mod files | |||
|- SRV_Industrial | |||
|- metadata.json | |||
|- ...</pre> | |||
==== Downloading Shack maps ==== | |||
There are multiple places where you can download shack maps. Some maps are provided by the map creator. | |||
* https://www.pavlovquest.com/maps | |||
* https://pavlovhorde.com/mapsList | |||
* #shack-map-showcase in the Pavlov VR Discord ('''TODO: link it!''') | |||
=== | === Server executable === | ||
PavlovServer.sh exists for shack? does it do the same useless additional stuff? | |||
Is the name of the executable the same? For both shack versions? | |||
'''TODO: Needs figuring out!''' | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
---- | |||
==== Shack Maps (Quest) ==== | |||
If you try to use the steps above to add maps for Shack, youll run into issues very quickly. This is because Shack has no affiliation to Steam, and therefore cannot use Steam Workshop maps like above. In the future, these steps will apply to PC servers as well, allowing a server to hold the map itself, instead of offloading to Steam. | |||
To get started, first create the directory to hold the maps | |||
<pre>mkdir -p /home/steam/pavlovserver/Pavlov/Saved/maps</pre> | |||
You can use any number of methods to move the map files onto the server, but ill go over the two simplest, starting with a GUI approach | |||
Download and install CyberDuck onto your "home" PC (Whatever PC you use for access to the server, but not the server itsself): https://cyberduck.io/ | |||
'' | Next, download and unzip your map of choice from https://www.pavlovquest.com/ , https://pavlovhorde.com/mapsList, or look in #shack-map-showcase channel in the discord server. I'm going to use Cheeto's WW2 Items test (http://www.mediafire.com/file/emyt9bs1z9u9ykw/SVR_Cheeto_Items.zip/file ) for this example, you do what you like | ||
In the top left corner, open a connection, set the connection type to SFTP, and fill in the rest of the information. User will be root, password is whatever you set the root pw as (toor in Ubuntu by default) | |||
In the directory dropdown (itll say /root) go back to / | |||
Follow the directories until we arrive back at our "maps" folder <pre>/home/steam/pavlovserver/Pavlov/Saved/maps</pre> | |||
Drag and drop the unzipped map folder into the main window, in this case itll be SVR_Cheeto_Items | |||
Hit Allow | |||
Youll now see a folder named SVR_Cheeto_Items, and within it should be nothing but 3 files. If there is another folder in it, move this folder to the maps directory, otherwise the server wont work. The 3 files (2 .PAK one .JSON) should be in home/steam/pavlovserver/Pavlov/Saved/maps/SVR_Cheeto_Items, no more, no less. | |||
Pavlov Shack servers load maps at pavlovserver start. '''YOU MUST RESTART THE GAME SERVER TO USE THE MAPS.''' | |||
''' | |||
To play the map, you can either use RCON switch map command, or to add the map to your servers automatic map rotation list, add the map's folder name to your Game.ini. This replaces the MapID section, so for our example it would be | |||
<pre>MapRotation=(MapId="SVR_Cheeto_Items", GameMode="TDM")</pre> | |||
And thats all! Disconnect CyberDuck from your server before playing, otherwise youll have difficulty joining. | |||
[[Category:RCON automation]] |
Latest revision as of 03:46, 6 July 2023
TODO: Rename the page to "Dedicated server" because THIS IS NOT A GUIDE!
Hosting
There are no Windows binaries
Server requirements
OS: Linux (Ubuntu 18.04 x86_64, Ubuntu 19/04 amd64, Ubuntu 20.04, and Rocky Linux 8 are confirmed working)
Memory: 2GB RAM + 1GB RAM per each additional server with 10 players. More RAM is recommended for larger maps, higher player counts, or complex game modes.
CPU: A ~2.5Ghz CPU will comfortably support a 10 player server. A ~4Ghz CPU will comfortably support 24 players.
Note: These are not hard limits for requirements, just suggestions for the best performance, based on experiences with many server providers on different grades of hardware.
Pavlov servers are functionally single threaded.
Software dependencies
- gdb (TODO: do you actually need gdb to run a server? wtf?)
- curl (TODO: do you actually need curl to run a server? does pavlov download stuff using curl?)
- lib32gcc1(-s1)
- libc++-dev
SteamCMD
The app ID for Pavlov VR dedicated servers is 622970
.
Instructions on how to use SteamCMD are available in the Valve Developer Community Wiki.
To host Shack Live (Quest) use -beta shack
, to host Shack RC (Quest) use -beta shack_beta
.
Update 29 of the PCVR version of Pavlov VR dedicated servers require you to completely break your system:
sudo rm /usr/lib/x86_64-linux-gnu/libc++.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libc++.so.1 /usr/lib/x86_64-linux-gnu/libc++.so
TODO: By all that is good and fair, modifying system files like this for one piece of software is unacceptable. This can be done in a different, less intrusive way.
Configuration
Moderators, Blacklist, Whitelist
The following three files allow you to specify moderators, banned players, and whitelist players.
They are required to be able to use AddMod
, Ban
, Banlist
, ModeratorList
, RemoveMod
and Unban
RCON commands but are otherwise optional.
Pavlov/Saved/Config/mods.txt Pavlov/Saved/Config/blacklist.txt Pavlov/Saved/Config/whitelist.txt
TODO: Describe the file contents, give examples.
Game.ini
This file contains the majority of server configuration keys.
It is automatically created when first starting a server, it can also be created manually.
Pavlov/Saved/Config/LinuxServer/Game.ini
Keys
Key | Allowed values | Default value | Description |
---|---|---|---|
bEnabled | True False
|
True
|
Enables or disables registering with the master server to show or hide the server from the server list
TODO: confirm that this is true, and why is this even a thing, you can't direct connect to servers anyways... |
ServerName | Any ASCII text value up to 35 characters | DedicatedServer
|
Sets the name with which the server will be listed as
TODO: confirm exact maximum character limit and which characters are allowed (utf8? unicode?) |
MaxPlayers | Integer
Maximum 10 for Shack, 24 for PC. |
10
|
Sets the amount of available player slots |
ApiKey | Obsolete, leave empty. | ||
bSecured | True False
|
True
|
Enables or disables Valve Anti-Cheat (VAC) |
bCustomServer | True False
|
True
|
Enables or disables "some new modding tools". Save and HTTP functions.
Required to write to |
bCompetitive | True False
|
False
|
Enables or disables competitive mode for SND |
bVerboseLogging | True False
|
False
|
Enables or disables verbose logging.
Verbose logging mostly consists of detailed statistics. This will significantly increase logging. |
bWhitelist | True False
|
False
|
Enables or disables usage of the whitelist, allowing only users in whitelist.txt to join
|
RefreshListTime | Integer, seconds | 10
|
Sets the interval at which the server reads changes from mods.txt , blacklist.txt and whitelist.txt
|
LimitedAmmoType | Integer, Type ID | 1
|
Sets the limited ammo type, see Limited Ammo Types |
TimeLimit | Integer, minutes | 60
|
Sets the time limit for each map |
TickRate | Integer, ticks per second
Recommended between 50 and 120 |
90
|
Sets the rate at which the server processes and updates game state information and network events.
Changes weapon de-spawn time and breaks some game modes. Recommended to leave at default value. TODO: what game modes? breaks how? needs clarification. |
Password | Integer, 1 to 4 digit pin | 0000
|
Sets the server PIN that is required to be entered before being able to join the server.
Setting the pin to |
BalanceTableURL | Text formatted as user/repository/branch
|
vankruptgames/BalancingTable/main
|
Sets the balance table Git URL to be used by the server.
See Balancing Table for instructions. |
AFKTimeLimit | Integer, seconds | 60
|
Sets the maximum amount of time a player can be idle before being automatically kicked.
Setting this to |
bInitialized | True False
|
False
|
TODO: What does this do? |
DepotURL | TODO: What does this do? | ||
bBroadcast | True False
|
True
|
Probably enables or disables broadcasting to pavtv?
TODO: What does this do? |
TODO: Verify all default values, right now I'm just guessing
TODO: Sort alphabetically
For maps running a Custom gamemode (CodZ, BR, Duel, etc.) it doesn't matter which gamemode you choose, as the map will automatically override it with the custom mode.
Limited Ammo Types
AmmoType | Name | Description |
---|---|---|
0 | Unlimited | Players have unlimited ammo, carry no ammo boxes and do not display an ammo count on the wrist. |
1 | Limited Generic | Players carry ammo boxes with a limited amount of ammo.
One box for each weapon class (Pistol, Submachine gun, Rifles/MGs, Shotgun, Sniper). Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. An ammo count is displayed on the wrist. |
2 | Limited Specific | Players carry ammo boxes with a limited amount of ammo.
One box for each weapon. Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. An ammo count is displayed on the wrist. |
3 | Custom | Allows for full control over ammo by the map. |
4 | Limited Special | All weapons except "special" weapons are unlimited, more clarification is needed. |
5 | Boxless | Like limited generic but without boxes? Clarification is needed. |
Map rotation
The map rotation is defined in the Game.ini
.
Upon server start, the first map in the rotation will be started.
When a map has ended, the next map in the rotation will be started.
When the end of the rotation has been reached, it will start from the beginning again.
Mod.io maps will be downloaded and updated automatically, if required, when they are rotated to.
Each entry requires a separate line of the following format:
MapRotation=(MapId="Name or ID", GameMode="Game Mode")
Name or ID
: See Default maps or find the Map ID on Mod.io and append it to "UGC" (Example: https://mod.io/g/pavlov/m/mcdonalds has Resource ID 2804322
, the MapID to use would be UGC2804322
)
Game Mode
: See Game Modes.
GameMode | Name |
---|---|
DM | Death match |
KOTH | King of the hill |
GUN | Gun game |
OITC | One in the chamber |
SND | Search and destroy |
TANKTDM | WW2 Team Death Match |
TDM | Team Death Match |
TTT | Trouble in Terrorist Town |
WW2GUN | WW2 gun game |
ZWV | Zombie wave survival |
HIDE | The Hidden |
INFECTION | Hidden infection |
PUSH | Push |
PH | Prop hunt |
TODO: move this to game modes page.
Example
[/Script/Pavlov.DedicatedServer] # This is a comment bEnabled=True ServerName=Your server MaxPlayers=10 bSecured=True bCustomServer=True bWhitelist=False RefreshListTime=120 LimitedAmmoType=0 TickRate=90 TimeLimit=60 Password=1234 bInitialized=False DepotURL= ApiKey= bCompetitive=False bBroadcast=True BalanceTableURL=vankruptgames/BalancingTable/Beta_5.1 bVerboseLogging=True AFKTimeLimit=0 MapRotation=(MapId="datacenter", GameMode="SND") MapRotation=(MapId="UGC3094680", GameMode="SND") MapRotation=(MapId="UGC2996823", GameMode="SND") MapRotation=(MapId="sand", GameMode="SND") MapRotation=(MapId="UGC2841131", GameMode="SND") MapRotation=(MapId="UGC2829349", GameMode="SND") MapRotation=(MapId="container", GameMode="SND") MapRotation=(MapId="UGC2844898", GameMode="SND") MapRotation=(MapId="UGC2804502", GameMode="SND")
RCON
The RCON password and port are configured in RconSettings.txt
. If the file does not exist or if the values in it are empty, no RCON will be provided.
Pavlov/Saved/Config/RconSettings.txt
Keys
Key | Allowed values | Default value | Description |
---|---|---|---|
Password | Text | changeme
|
Sets the password used to authenticate with RCON |
Port | Integer, 0-65535 | 9100
|
Sets the port at which RCON will listen |
Example
Password=very secure password Port=9100
Running
Startup parameters
Parameter | Description |
---|---|
-PORT=7777 |
Sets the server port to listen to.
Secondary port is |
-COMPETITIVE=1 |
Enables competitive mode.
This is the same as enabling competitive move in the |
TODO: Ask dev for complete list of arguments or, much easier and faster, decompile the binary and find them. |
Server executable
With the server files, a startup script PavlovServer.sh
is shipped. It adds global execution privileges to the server executable, and adds an argument Pavlov
to the startup parameters.
The server executable is located in Pavlov/Binaries/Linux/PavlovServer-Linux-Shipping
and can be executed directly. It already has global execution privileges by default.
Either of these can be used to start the server, the PavlovServer.sh
script will forward all startup parameters to the server executable.
Shack
Shack servers and PCVR servers have a few differences which will be described in this section.
TODO: Since there are also 2 shack versions, documenting all this is a huge chore, especially for someone who doesn't touch this sh..izzle.
Game.ini keys
The following keys do not exist for Shack servers.
- TODO
Custom maps
Shack (both versions??) do not support Mod.io and require manual upload of any custom map.
Also players download the custom maps directly from the server?
TODO: Needs figuring out!
To use custom maps, the maps folder first needs to be created manually.
Pavlov/Saved/maps
Custom map folders will need to be placed into this folder.
For example:
Pavlov/Saved/maps |- SVR_Arena |- metadata.json |- other mod files |- SRV_Industrial |- metadata.json |- ...
Downloading Shack maps
There are multiple places where you can download shack maps. Some maps are provided by the map creator.
- https://www.pavlovquest.com/maps
- https://pavlovhorde.com/mapsList
- #shack-map-showcase in the Pavlov VR Discord (TODO: link it!)
Server executable
PavlovServer.sh exists for shack? does it do the same useless additional stuff?
Is the name of the executable the same? For both shack versions?
TODO: Needs figuring out!
Shack Maps (Quest)
If you try to use the steps above to add maps for Shack, youll run into issues very quickly. This is because Shack has no affiliation to Steam, and therefore cannot use Steam Workshop maps like above. In the future, these steps will apply to PC servers as well, allowing a server to hold the map itself, instead of offloading to Steam.
To get started, first create the directory to hold the maps
mkdir -p /home/steam/pavlovserver/Pavlov/Saved/maps
You can use any number of methods to move the map files onto the server, but ill go over the two simplest, starting with a GUI approach
Download and install CyberDuck onto your "home" PC (Whatever PC you use for access to the server, but not the server itsself): https://cyberduck.io/
Next, download and unzip your map of choice from https://www.pavlovquest.com/ , https://pavlovhorde.com/mapsList, or look in #shack-map-showcase channel in the discord server. I'm going to use Cheeto's WW2 Items test (http://www.mediafire.com/file/emyt9bs1z9u9ykw/SVR_Cheeto_Items.zip/file ) for this example, you do what you like
In the top left corner, open a connection, set the connection type to SFTP, and fill in the rest of the information. User will be root, password is whatever you set the root pw as (toor in Ubuntu by default)
In the directory dropdown (itll say /root) go back to /
Follow the directories until we arrive back at our "maps" folder
/home/steam/pavlovserver/Pavlov/Saved/maps
Drag and drop the unzipped map folder into the main window, in this case itll be SVR_Cheeto_Items
Hit Allow
Youll now see a folder named SVR_Cheeto_Items, and within it should be nothing but 3 files. If there is another folder in it, move this folder to the maps directory, otherwise the server wont work. The 3 files (2 .PAK one .JSON) should be in home/steam/pavlovserver/Pavlov/Saved/maps/SVR_Cheeto_Items, no more, no less.
Pavlov Shack servers load maps at pavlovserver start. YOU MUST RESTART THE GAME SERVER TO USE THE MAPS.
To play the map, you can either use RCON switch map command, or to add the map to your servers automatic map rotation list, add the map's folder name to your Game.ini. This replaces the MapID section, so for our example it would be
MapRotation=(MapId="SVR_Cheeto_Items", GameMode="TDM")
And thats all! Disconnect CyberDuck from your server before playing, otherwise youll have difficulty joining.