Quase todo guia de servidor CS2 na internet é na verdade um guia de MatchZy: um plugin completo de partida competitiva, rounds de faca e um monte de config. Aqui é o contrário. Você quer um servidor dedicado CS2 privado para você e seus amigos, puro vanilla, sem plugins. A configuração é bem mais curta do que a internet faz parecer, e tudo se resume a uma coisa que a maioria esquece: o login token agora é obrigatório.
Primeiro: o token GSLT (não é opcional)
O CS2 não aceita conexões em um IP público sem um Game Server Login Token (GSLT). Esse é o motivo mais comum de um servidor novo "subir bem, mas ninguém consegue entrar". Pegue um de graça:
- Vá até a página Steam Game Server Account Management (steamcommunity.com/dev/managegameservers).
- Crie um token para o app ID 730 (Counter-Strike 2). Você recebe uma string longa de volta.
- Ele fica vinculado à sua conta Steam. Um token por servidor. Não compartilhe; um token vazado pode fazer os servidores da sua conta serem banidos.
Instale o servidor
O servidor dedicado CS2 é o app 730 (o mesmo do jogo). Instale-o com o SteamCMD:
./steamcmd.sh +login anonymous \
+app_update 730 validate \
+quitLogin anônimo funciona; você não precisa ter o jogo na conta do servidor. A config fica em:
<install>/game/csgo/cfg/server.cfgUm server.cfg vanilla
Cole isto, mude os três valores marcados com CHANGE ME. Sem plugins, sem MatchZy.
// --- Identity ---
hostname "My Private CS2 Server" // CHANGE ME
sv_setsteamaccount "YOUR_GSLT_TOKEN" // CHANGE ME - the token from above
// --- Lock it down ---
sv_password "friends-only" // CHANGE ME - join password
rcon_password "pick-a-long-secret" // admin console over RCON
// --- Vanilla behaviour ---
sv_cheats 0
sv_pure 1
sv_lan 0
mp_autoteambalance 1
mp_limitteams 2
// --- A sane private match ---
mp_maxrounds 24
mp_roundtime 1.92
mp_freezetime 15
mp_warmuptime 30
sv_alltalk 0
sv_deadtalk 1Essa é uma config competitiva privada completa. O modo de jogo e o mapa inicial NÃO estão aqui: o CS2 define isso na linha de lançamento, porque game_type e game_mode precisam ser conhecidos antes de o mapa carregar.
A linha de lançamento
Inicie o servidor a partir da pasta de instalação. Note que agora é o binário cs2 com -dedicated, não mais o srcds_run:
./game/bin/linuxsteamrt64/cs2 -dedicated \
-ip 0.0.0.0 -port 27015 \
+game_type 0 +game_mode 1 \
+map de_dust2 \
-maxplayers 10 \
+exec server.cfg- game_type 0 + game_mode 1 é o Competitivo 5v5 padrão. Veja a tabela abaixo para os outros modos.
- map de_dust2 é o mapa inicial. Qualquer mapa oficial funciona (de_mirage, de_inferno, cs_office…).
- exec server.cfg roda suas cvars, incluindo sv_setsteamaccount, antes de os jogadores se conectarem.
- A porta 27015 é a porta do jogo e das consultas A2S. Abra-a no seu firewall (UDP + TCP).
Os pares game_type / game_mode
O CS2 não tem uma única cvar de "modo". Cada modo é um par de dois números:
game_type game_mode Mode
0 0 Casual
0 1 Competitive (5v5)
0 2 Wingman (2v2)
0 3 Hostage / Casual (cs_ maps)
1 0 Arms Race
1 1 Demolition
1 2 DeathmatchTrocar o game_type em um servidor ativo é instável no CS2, então escolha seu modo na linha de lançamento e reinicie o processo para mudar. Trocar só o mapa (changelevel de_mirage) dentro do mesmo modo é tranquilo.
Carregando um mapa da workshop
Mapas da workshop não são um argumento de lançamento. Você os carrega em tempo de execução com host_workshop_map e o workshop ID do mapa, e o servidor baixa e o hospeda. Adicione -disable_workshop_command_filtering à linha de lançamento primeiro, depois no console do servidor (ou via RCON):
host_workshop_map 3070315466O número é o ID da URL da página da workshop. O primeiro carregamento puxa o mapa da Steam, então dê um tempo. Essa é a pegadinha do CS2 em que todo mundo tropeça: colocar o nome de um mapa da workshop depois de +map na linha de lançamento não faz nada; tem que ser host_workshop_map.
Mantendo privado
Com o sv_password definido, só quem digita a senha consegue se conectar. Compartilhe o IP do seu servidor e a senha com o seu grupo e peça para usarem o console: connect your.server.ip:27015; password friends-only. Uma senha também mantém o servidor fora do pool público de quick-play, que é o que você quer para uma partida privada.