Gameplay Config Setup
The config_gamepaly.txt file (often simply referred to as the Gameplay Config file) is used to set up many of the core functions of an SCP:SL server.
Misc
Change warhead and intercom timers, friendly fire, etc.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| server_forced_class | int | -1 | |
| map_seed | Set the server map seed | int | -1 |
| display_preauth_logs | default | ||
| rejection_suppression_threshold | default | ||
| challenge_issuance_suppression_threshold | default | ||
| heavily_modded_server | bool | default | |
| custom_whitelist | bool | false | |
| server_access_restriction | bool | false | |
| custom_gamemode_server | if your server is a Custom Gamemode Server according to the definition that can be found in the Verified Server Rules. | bool | false |
Server main settings
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| server_name | Server name | string | My Server Name |
| player_list_title | Title of the playerlist | string | default |
| player_list_title_rate | how often title of the playerlist is updated | int | default |
| serverinfo_pastebin_id | Pastebin ID for the server description |
string | 7wV681fT |
| server_ip | Server IP that gets sent to the serverlist |
string | 0.0.0.0 |
| max_players | Server player limit | int | 20 |
| server_tickrate | int | 60 | |
| use_reserved_slots | Enable or disable reserved slots | bool | true |
| lobby_waiting_time | Time on the waiting for players screen | int | default |
| use_native_sockets |
bool true ipv4_bind_ip IPv4 address for the server to listen on
string 0.0.0.0 ipv6_bind_ip IPv6 address for the server to listen on string :: contact_email Contact email for the verification team to contact you by string default
Spawn settings
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| minimum_MTF_time_to_spawn | int | 280 | |
| maximum_MTF_time_to_spawn | int | 350 | |
| maximum_MTF_respawn_amount | int | 15 | |
| maximum_CI_respawn_amount | int | 15 | |
| priority_mtf_respawn | bool | true | |
| use_crypto_rng | bool | false | |
| team_respawn_queue | default | ||
| late_join_time | How long after the round starts can someone join and get spawned | int | 0 |
Player Info Range
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| player_info_range | This controls the default range that the player information text appears on clients. | int | 10 |
Respawn ticket system settings
Each NTF or CI player spawned in consumes one ticket.
# We recommend keeping this on for game balance!
#
# Warning: Even if you disable the system, the tickets ratio for MTF/CI will still determine their spawn chance.
# Ticket counts (initial)
# The ratio of MTF-to-CI tickets directly determines which team has a higher chance of spawning.
# The initial settings (24:18) give around 42.8% chance for the CI to spawn instead of the MTF.
# The CI spawn chance can be calculated by this formula: CI_TICKETS / (MTF_TICKETS + CI_TICKETS) * 100%
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| respawn_tickets_enable | Enable or disable the ticket system | bool | true |
| respawn_tickets_mtf_initial_count | default | ||
| respawn_tickets_ci_initial_count | default | ||
| respawn_tickets_mtf_classd_cuffed_escape_count | default | ||
| respawn_tickets_mtf_scientist_escape_count | default | ||
| respawn_tickets_mtf_scp_hurt_escape_count | default | ||
| respawn_tickets_ci_classd_escape_count | default | ||
| respawn_tickets_ci_scientist_cuffed_escape_count | default | ||
| respawn_tickets_ci_scientist_died_count | default | ||
| respawn_tickets_ci_scp_item_count | default | ||
| respawn_tickets_mtf_scp_hurt_interval | default |
Stamina
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| stamina_balance_use | The percentage of stamina used per second while sprinting. Stamina is currently only utilized on humans. 0 to disable, but this *will* cause weirdness with status effects and other mechanics, so we recommend keeping it on! |
double | 0.05 |
| stamina_balance_immunity | The time (in seconds) that newly-spawned players can sprint without consuming stamina. Used to reduce visual artifacts. We recommend to put it at least 2 seconds |
int | 3 |
| stamina_balance_regen_cd | The seconds that must pass before stamina starts regenerating after the player stops sprinting. Lower values are more liekly to be exploited by players Higher higher can be annoying to players. |
int | 1 |
| stamina_balance_regen_speed | How fast the stamina regenerates. This is a multiplier for the default setting, which is based on a curve - not a specific value. |
int | 1 |
| stamina_balance_walk_speed | Multiplier for human walk speed. Default speed before multiplier is 4.5 m/s. |
double | 1.2 |
| stamina_balance_sprint_speed | Multiplier for human sprint speed. Default speed before multiplier is 7 m/s. |
double | 1.05 |
Misc gameplay settings
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| intercom_cooldown | time before intercom becomes available again | int | 120 |
| intercom_max_speech_time | int | 20 | |
| auto_round_restart_time | int | 10 | |
| friendly_fire | bool | false | |
| friendly_fire_multiplier | double | 0.4 | |
| warhead_tminus_start_duration | int | 90 | |
| lock_gates_on_countdown | bool | true | |
| isolate_zones_on_countdown | bool | false | |
| open_doors_on_countdown | bool | true | |
| keep_items_after_escaping | bool | true | |
| allow_playing_as_tutorial | bool | true | |
| disable_decontamination | bool | false | |
| 096_destroy_locked_doors | bool | true | |
| no_holidays | bool | false | |
| allow_disarmed_interaction | bool | false | |
| 914_mode |
DroppedAndHeld/Inventory/DroppedAndInventory/Held/DroppedAndHeld/Dropped |
String | default |
| sinkhole_slow_amount | int | 30 | |
| sinkhole_spawn_chance | int | 0 | |
| disconnect_drop | bool | true | |
| end_round_on_one_player | bool | false | |
| cuffed_escapee_change_team | bool | true | |
| pd_exit_count | how many exits in pd | int | 2 |
AFK Settings
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| afk_time | time for someone to be detected as afk (079 gets extra 13 seconds) | int | 90 |
| constantly_check_afk | bool | false | |
| afk_kick_message | string | AFK |
Spawn Protection
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| spawn_protect_disable | Disable spawn protection. | bool | true |
| spawn_protect_time | Spawn protection length in seconds. | int | 30 |
| spawn_protect_team | Spawn protection enabled for selected team(s). | 1, 2 (MTF, Chaos Insurgents) | |
| spawn_protect_allow_dmg | Allow spawn protected players to deal damage. | bool | true |
Auto Event Broadcast Settiings
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| auto_warhead_broadcast_enabled | Enable broadcast for auto warhead | bool | false |
| auto_warhead_broadcast_message | Message for auto broadcast | string | The Alpha Warhead is being detonated |
| auto_warhead_broadcast_time | Broadcast time | int | 10 |
| auto_warhead_detonate_broadcast | End of detonation broadcast | string | The Alpha Warhead has been detonated now |
| auto_warhead_detonate_broadcast_time | Broadcast time | int | 10 |
| auto_decon_broadcast_enabled | enable broadcast | bool | false |
| auto_decon_broadcast_message | Decontamination broadcast | string | Light Containment Zone is now decontaminated |
| auto_decon_broadcast_time | Broadcast time | int | 10 |
Metrics
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| save_metrics | etrics are used to anonymously track players' in-game activities and can be used to improve gameplay balance. If set to 'true', the game will generate a JSON file containing collected metrics at the end of the round, which will be stored locally. |
bool | true |
Security & Anticheat
Recommended to not be changed from what it is by default.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| online_mode | Enables connection to central servers | bool | true |
| ip_banning | Enables IP banning. | bool | true |
| enable_whitelist | Allows only whitelisted users to join. | bool | false |
| forward_ports | Enables automatic port forwarding.Note: router must have enabled UPnP support to make this work. | bool | true |
| enable_query | Enables query protocol (TCP port). | bool | false |
| query_port_shift | Determines shift between game port and query port. | int | 0 |
bool
bool false query_bind_ip2 IPv6 address to listen to string :: query_socket_ip2_dualmode
bool false query_socket_ip2_linger
bool false query_rx_buffer_size
int 4096 query_administrator_password Sets administrator password for query procol. string none query_permissions
long 18446744073709551615 query_kick_power
int 255 query_clients_limit
int 10 query_timeout_time
int 10000 query_maximum_time_difference
int 120 connections_delay_time Time to send to clients for how long they should wait on the round restart screen before attempting to connect to the server again int 5 enable_sync_command_binding
bool false ratelimit_kick Kicks user after exceeding commands rate limits (otherwise just disallows command execution). bool true same_account_joining Allow the same account to join more than once?
bool false anticheat_console_output output anticheat stuff to console bool false enable_fast_round_restart restart the round fast (can be buggy) bool false fast_round_restart_delay
double 3.2 display_preauth_logs
rejection_suppression_threshold
challenge_issuance_suppression_threshold
preauth_challenge
bool true preauth_challenge_mode Reply - prevents from flooding server with preauth requests from spoofed IP addresses
MD5 or SHA1 - prevents from flooding with preauth requests from legitimate IP addresses as well. Requires additional time to join the server. string reply preauth_challenge_base_length
int 10 preauth_challenge_time_window
int 12 preauth_challenge_clean_period
int 4 preauth_challenge_secret_length Only for MD5 and SHA1 challenges (higher value = longer time required to join the server) int 2 enforce_same_ip This enforces the player to be using same IP address to connect to the game and authenticate. Enabling this blocks proxies. Not enforced if player joined from IPv4 and authenticated from IPv6 or viceversa.
bool true no_enforcement_for_local_ip_addresses
bool true enforce_same_asn This enforces that the IP address used to connect to the game and authenticate must be assigned to the same Internet Service Provider (ISP).
Works only on servers on the public list. This is less restrictive that "enforce_same_ip" and blocks most of the proxies. bool true
Connections ratelimiting
Ratelimit time windows define how often user with the same IP/UserID can initialize new connection (once per X seconds).
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| enable_ip_ratelimit | bool | true | |
| enable_userid_ratelimit | bool | true | |
| ip_ratelimit_window | Time between connections per ip | int | 3 |
| userid_ratelimit_window | Time between connections per userid |
int | 5 |
Item & Ammo limits
Item category limits -
Values of 0 are NOT unlimited and will prevent item pickups of that type entirely!
The inventory can hold a max of 8 items, so a limit of 8 is effectively unlimited.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| limit_category_grenade | int | default | |
| limit_category_keycard | int | default | |
| limit_category_medical | int | default | |
| limit_category_scpitem | int | default | |
| limit_category_firearm | int | default |
Ammo type limits
Values from 1 to 65k.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| limit_ammo12ga | int | default | |
| limit_ammo556x45 | int | default | |
| limit_ammo44cal | int | default | |
| limit_ammo762x39 | int | default | |
| limit_ammo9x19 | int | default |
Friendly Fire
#Action is performed if someone either kills enough teammates OR deals enough damage to teammates.
#Set kills or damage to 0 to disable that threshold.
#Detectors priority: Respawn (kill), Window (kill), Life (kill), Round (kill), Respawn (damage), Window (damage), Life (damage), Round (damage)
#Actions: kill, kick, ban, noop (no operation - do nothing, eg. to enable logging)
#Damage dealt AFTER round end is ignored.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| ff_detector_global_broadcast_seconds | Specifies the broadcast time length in seconds in which the broadcast is visible. | int | 5 |
| ff_detector_global_adminchat_seconds | |||
| ff_detector_classD_can_damage_classD | |||
| ff_detector_webhook_url |
ff_detector_round_enabled
bool false ff_detector_round_kills
int 6 ff_detector_round_damage
int 500 ff_detector_round_action
string ban ff_detector_round_ban_time
string You have been automatically banned for teamkilling. ff_detector_round_kill_reason
string You have been automatically killed for teamkilling. ff_detector_round_adminchat_enable
bool false ff_detector_round_adminchat_message
string %nick has been banned for teamkilling (round detector).
ff_detector_round_broadcast_enable
bool true ff_detector_round_broadcast_message
string %nick has been automatically banned for teamkilling. ff_detector_round_webhook_report
bool true #Per life (resets on respawn)
ff_detector_life_enabled
bool false ff_detector_life_kills
int 4 ff_detector_life_damage
int 300 ff_detector_life_action
string ban ff_detector_life_ban_time
string You have been automatically banned for teamkilling. ff_detector_life_kill_reason
string You have been automatically killed for teamkilling. ff_detector_life_adminchat_enable
bool false ff_detector_life_adminchat_message
string %nick has been banned for teamkilling (life detector). ff_detector_life_broadcast_enable
bool true ff_detector_life_broadcast_message
string %nick has been automatically banned for teamkilling. ff_detector_life_webhook_report
bool true
ff_detector_window_enabled
bool false ff_detector_window_seconds
int 180 ff_detector_window_kills
int 3 ff_detector_window_damage
int 250 ff_detector_window_action
string ban ff_detector_window_ban_time
string You have been automatically banned for teamkilling. ff_detector_window_kill_reason
string You have been automatically killed for teamkilling. ff_detector_window_adminchat_enable
bool false ff_detector_window_adminchat_message
string %nick has been banned for teamkilling (window detector). ff_detector_window_broadcast_enable
bool true ff_detector_window_broadcast_message
string %nick has been automatically banned for teamkilling. ff_detector_window_webhook_report
bool true
ff_detector_spawn_enabled
bool true ff_detector_spawn_window_seconds
int 120 ff_detector_spawn_kills
int 2 ff_detector_spawn_damage
int 180 ff_detector_spawn_action
string ban ff_detector_spawn_ban_time
string 48h ff_detector_spawn_bankick_reason
string You have been automatically banned for teamkilling. ff_detector_spawn_kill_reason
string You have been automatically killed for teamkilling. ff_detector_spawn_adminchat_enable
bool false ff_detector_spawn_adminchat_message
string %nick has been banned for teamkilling (spawn detector).
ff_detector_spawn_broadcast_enable
bool true ff_detector_spawn_broadcast_message
string %nick has been automatically banned for teamkilling. ff_detector_spawn_webhook_report
ff_detector_explosion_after_disconnecting_enabled
bool true ff_detector_explosion_after_disconnecting_action
string ban ff_detector_explosion_after_disconnecting_ban_time
string 48h ff_detector_explosion_after_disconnecting_bankick_reason
string You have been automatically banned for teamkilling. ff_detector_explosion_after_disconnecting_adminchat_enable
bool false ff_detector_explosion_after_disconnecting_adminchat_message
string %nick has been banned for teamkilling (explosion after disconnecting detector). ff_detector_explosion_after_disconnecting_broadcast_enable
bool true ff_detector_explosion_after_disconnecting_broadcast_message
string %nick has been automatically banned for teamkilling.
ff_detector_explosion_after_disconnecting_webhook_report
bool true
Port queue
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| port_queue | port_queue is for NONDEDICATED SERVERS ONLY | - 7777 - 7778 - 7779 - 7780 - 7781 - 7782 - 7783 - 7784 |
Few ban settings
default ban_nickname_trimunicode
default
Nickname Filtering with Regex
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| nickname_filter | list | default | |
| nickname_filter_replacement | list | default |
Administration Broadcast
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| broadcast_kicks | Enable broadcasts for player kicks. | bool | false |
| broadcast_kick_text | Text that is displayed when a player gets kicked. | string | %nick% has been kicked from this server. |
| broadcast_kick_duration | Broadcast message duration in seconds. | int | 5 |
| broadcast_bans | Enable broadcasts for player bans. | bool | true |
| broadcast_ban_text | Text that is displayed when a player gets banned. | string | %nick% has been banned from this server. |
| broadcast_ban_duration | Broadcast message duration in seconds. | int | 5 |
Idle mode options
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| idle_mode_enabled | Enable or disable idle mode | bool | false |
| idle_mode_time | Time in milliseconds until idle mode enables | int | 5000 |
| idle_mode_preauth_time | int | 30000 | |
| idle_mode_tickrate | int | 1 |
Player Report
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| report_send_using_discord_webhook | Send report using webhooks | bool | false |
| report_discord_webhook_url | Enter the discord channel webhook URL here | string | PleaseSetWebhookUrlHere |
| report_username | Webhook username | string | Cheater Report |
| report_avatar_url | Webhook avatar | string | default |
| report_color | Webhook embed message color | int | 14423100 |
| report_server_name | Webhook embed servername field content |
string | My SCP:SL Server |
| report_header | Webhook embed message header | string | Player Report |
| report_content | Webhook embed messsage content | string | Player has just been reported. |
Restart options
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| full_restart_rejoin_time | Amount of time after client should rejoin after a full server restart | int | 25 |
| restart_after_rounds | Set autorestart of the server after a specified amount of rounds (0 - disabled | int | 0 |
Geoblocking
Block players from certain regions from playing on your server.
| Config Field | Description | Type | Default Value |
|---|---|---|---|
| geoblocking_mode | Changes the mode for geoblocking. | string | none |
| geoblocking_ignore_whitelisted | list of players who bypass geoblocking. | bool | true |
| geoblocking_whitelist | country codes to whitelist. | - AA - AB - AC |
|
| geoblocking_blacklist | country codes to blacklist. | - AA - AB - AC |