Esse texto é sequencial, então basta ir descendo para abrir o seu servidor por completo.
Recomendações
Internet: Nesse artigo desatualizado da Valve é sugerido 53.4Kbits (ou 6.675KBps) por pessoa no SRCDS, mas isso não tem nada a ver com a nossa realidade. Uma tabela antiga que eu recomendava, que bate com essa aqui, sugeria 40KBps por jogador, mas isso também não é o suficiente segundo minha experiência. Agora, em 2021, eu recomendo algo entre 60~80 KBps por player, então basta multiplicar o número de jogadores por essa taxa e você vai ter a velocidade de upload necessária. Por exemplo, um servidor de 32 pessoas vai puxar (60~80) * 32 = (1.920~2.560) KBps, que é uma conexão de aproximadamente (15~20) Mbits no upload. Cheque as suas taxas em um site como o https://www.speedtest.net/.
Armazenamento: 5GB comportaria cerca de 2GB do GMod puro e 3GB de addons, o que já é considerado algo pesado;
RAM: 2GB já garante um sistema operacional e 1 host tranquilamente. Com 4GB nós abríamos 4 servers e ainda sobrava bastante RAM. Para ser mais exato, tem um sandbox só com tools no meu PC e ele está pesando apenas 164.1MB (04/06/2020);
CPU: Um Mobile Core 2 duo T6600 2.2GHz estava aguentando 4 servidores dedicados de GMod sem problemas;
GPU: A placa gráfica não é usada pelo SRCDS, portanto é dispensável.
Portas do Roteador
Para que seu servidor apareça na lista você precisa estar visível na internet, ou seja, você deve ter um IP público real e portas de roteador devidamente configuradas.
Além disso, firewalls e antivírus podem te atrapalhar nesse estágio. Se mesmo com tudo configurado você não ficar acessível, lembre-se de checar essas coisas! Por exemplo, no passado o McAfee já bloqueou a execução do SRCDS e o Norton já bloqueou as portas do GMod com um firewall interno.
Como essa parte é muito variada e única para cada pessoa, vamor recomendar o site PORT FORWARD para cumpri-la.
Pesquise por Garrys Mod nessa lista para ter as informações básicas:
https://portforward.com/ports.htm
Faça o port forwarding no seu roteador:
https://portforward.com/router.htm
Baixe, instale e execute o Network Utilities no modo trial:
https://portforward.com/software/download-instructions/network-utilities/
Esse programa disponibiliza gratuitamente uma ferramenta chamada Port Checker, que é o melhor modo que eu conheço para testar se as portas estão abertas. Vamos usá-la. Abra-a, coloque a porta utilizada, marque TCP e teste a conexão. Your port is OPEN on this computer!, em verde, indica sucesso.
Baixando e Hosteando um Servidor Dedicado
Vamos então ao passo a passo (no Windows):
GMBR DS
(Opcional - Sugestão)
Eu criei esse programa para gerir a instalação de servidores dedicados de GMod pelo SteamCMD e SRCDS, incluindo os contents. Se for testar ele, só não esqueça de configurar o GSLT (leia a seção SRCDS) antes de abrir o server. GMBR DS: https://gmbrblog.blogspot.com/2012/07/garrys-mod-brasil-dedicated-server-gmbr.html
SteamCMD
Isso é o Steam propriamente dito, oficial, mas controlado por texto e com menos funcionalidades.
Baixe ele nesse link aqui: https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
Obs: o link de download veio daqui: https://developer.valvesoftware.com/wiki/SteamCMD
Extraia-o em uma pasta como C:\Servidor\steamcmd
Dê dois cliques no arquivo steamcmd.exe e deixe ele atualizar. Vai aparecer steam> no final, essa janela é como o prompt de comando.
Vamos logar no Steam digitando esse comando:
login anonymous
Opcionalmente, configure um local para a instalação do server. O tutorial inteiro seguirá usando isso:
force_install_dir C:\Servidor\gmodds
Instale os arquivos do GMod:
app_update 4020
Para garantir que correu tudo bem, valide a instalação:
app_update 4020 -validate
A essa altura, o básico já está no lugar. Abra o bloco de notas e cole esse comando nele:
steamcmd.exe +login anonymous +force_install_dir C:\Servidor\gmodds +app_update 4020 validate +quit
Salve-o como atualizar_servidor.bat em C:\Servidor\steamcmd.
Toda vez que sair uma atualização no GMod você terá que clicar nesse arquivo para atualizar o seu servidor.
Você também pode fazer um atalho para o atualizar_servidor.bat na área de trabalho para facilitar a sua vida.
SRCDS
Vamos criar o arquivo para abrir o seu servidor.
Você vai precisar gerar um número chamado GSLT (Steam Game Server Login Token). Ele serve para verificar se você comprou o jogo e fazer com que o GMod não penalize a sua posição na lista de servers por não poder checar isso, portanto, não pule este passo! Ele é muito importante! Confira que essa é uma questão real nesse link: https://wiki.facepunch.com/gmod/Steam_Game_Server_Accounts
Entre aqui: https://steamcommunity.com/dev/managegameservers
Coloque 4000 no ID, escreva Garry's Mod (ou algo semelhante, ao seu gosto) no campo de texto e mande criar.
O código da sessão vai aparecer, que é algo como esse antigo meu: 9B1F398DCF9321839DB0331E7F43D42B
Copie o número que você gerou e nunca o mostre para ninguém, pois ele é um mecanismo de segurança associado a sua conta!
No bloco de notas, cole o seu código e depois esse comando:
srcds.exe +maxplayers 20 -console +gamemode sandbox +map gm_construct +sv_setsteamaccount your_token
Recorte o seu código e onde tem your_token substitua por ele.
Salve o arquivo como abrir_server.bat em C:\Servidor\gmodds.
Pronto!
Você pode fazer um atalho para o abrir_server.bat na área de trabalho para facilitar a sua vida.
Contents
Os jogos suportados pelo GMod estão listados no menu principal, portanto não tente instalar qualquer coisa aqui!
Se você estiver com o dedicado no seu computador pessoal e já tiver instalado no Steam o jogo que pretende usar como content, pule para "Montagem", e apenas troque o identificador e pasta informados pelo que você já tem.
Para começar, dê dois cliques no arquivo steamcmd.exe em C:\Servidor\steamcmd e deixe ele atualizar. Vai aparecer steam> no final, essa janela é como o prompt de comando.
Para jogos como TF2, CSS e mais, podemos fazer o login anônimo com esse comando:
login anonymous
Para outros, como HL:2 EP2 e HL:2 EP1 (jogos singleplayer da Valve, em geral), use seu login do Steam (substitua-o em username):
login username
A fim de exemplificar, nós vamos focar no CSS a partir desse ponto.
É uma boa ideia ter uma pasta para os contents, que nesse caso pode ser C:\Servidor\contents\CSS. Rode o comando:
force_install_dir c:\Servidor\contents\CSS
Faça o download usando o ID do jogo:
app_update 232330
Aqui tem a lista completa de IDs, procure o que você quer para usar mais tarde: https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
Montagem: agora você deve informar o GMod sobre a presença do content. Abra o arquivo C:\Servidor\gmodds\garrysmod\cfg\mount.cfg e o edite. Você colocará um identificador (que pode ser qualquer nome) e a pasta do seu jogo (onde tem o arquivo gameinfo.txt). No nosso caso, ficará assim:
"mountcfg"
{
"Counter-Strike: Source" "C:\Servidor\contents\CSS\cstrike"
}
Para terminar, abra o bloco de notas e cole esse comando:
steamcmd.exe +login anonymous +force_install_dir C:\Servidor\contents\CSS +app_update 232330 validate +quit
Salve-o como atualizar_content_css.bat em C:\Servidor\steamcmd.
Toda vez que sair uma atualização no CSS com novidades além do código do jogo, você terá que clicar nisso para ter os novos arquivos. Não tem problema deixar o content esquecido, isso pouco afeta a experiência do jogador. Basta ver que nesse caso do CSS, por exemplo, os updates não adicionam nada de novo em termos de modelos, sons, mapas etc. há anos.
Você pode fazer um atalho para o atualizar_content_css.bat na área de trabalho para facilitar a sua vida.
Gestão do Servidor
Comandos de console importantes
Listar todos os mapas:
map *
Mudar de mapa:
changelevel nomedomapa
Mudar a senha:
sv_password novasenha
Fechar o servidor adequadamente:
exit
Dentro do jogo, mostrar informações do server:
net_graph 4
Sistema simples de reabertura em caso de crash
Crie o arquivo abrir_anticrash.bat em C:\Servidor\gmodds contendo:
@echo off
cls
echo Protecting srcds from crashes...
echo To shut down srcds, close this window first.
title Garry's Mod dedicated server
:srcds
echo (%time%) srcds started.
start /wait C:\Servidor\gmodds\srcds.exe +maxplayers 20 -console +gamemode sandbox +map gm_construct +host_workshop_collection xxxxxxxx +sv_setsteamaccount xxxxxxx
echo (%time%) WARNING: srcds closed or crashed, restarting.
goto srcds
Modifique o comando de abertura para o do seu servidor e também crie um atalho para esse arquivo na área de trabalho.
Otimização contra Lag
Ao abrir o servidor, passe o processo do SRCDS para Alta prioridade no gerenciador de tarefas.
(Fonte - Optimizing Server Priority)
Parâmetros
Alterar o comportamento do servidor com parâmetros no atalho do executável.
Mapa
Descubra o nome do mapa com o comando "maps *" e insira ele nesse parâmetro.
+map gm_flatgrass
Gamemode
O nome do gamemode pode ser meio chato de pegar... Geralmente ele é informado na própria descrição do addon, mas se não for o caso, abra as pastas desse gamemode (já extraído do .gma) e navegue até "C:\Servidor\gmodds\garrysmod\gamemodes\algum_modo". Nessa pasta você vai ver um arquivo .txt e ele será o nome procurado. Por exemplo, em "C:\Servidor\gmodds\garrysmod\gamemodes\terrortown" temos o "terrortown.txt", portanto o TTT deve ser carregado como terrortown. Já o DarkRP seria assim:
+gamemode darkrp
Número máximo de jogadores
O GMod atualmente permite 128, enquanto o SRCDS diz ser possível 255 (apesar de nem um pouco recomendável). Note também que existe o comando de console "maxplayers", mas ele não pode ser usado durante a partida e não surtiu efeito no meu teste o pondo no server.cfg. Portanto, use esse parâmetro:
+maxplayers 24
Porta do servidor
O SRCDS pode utilizar diversas portas, mas a faixa 27006 - 27019 é uma boa escolha e nela a porta 27015 é a padrão. Veja aqui alguns detalhes.
-port 27016
Usando uma coleção do Workshop
Assumindo que você já configurou o seu Server Login Token (como foi requisitado na seção SRCDS), basta pegar o ID da sua coleção e colocá-lo no parâmetro. Por exemplo, eu tenho a "Xalaserver": https://steamcommunity.com/sharedfiles/filedetails/?id=163399147. Pelo próprio link dela nos tiramos que o ID é 163399147, então o comando fica assim:
+host_workshop_collection 163399147
Você também pode carregar múltiplas coleções indo nelas e as colocando como requisito da sua.
Configurações do server.cfg
Edite o seu arquivo C:\Servidor\gmodds\cfgs\server.cfg. Caso ele não exista, basta criá-lo. Note que nele cada linha equivale a um comando, linhas vazias não fazem nada e todo texto que vem depois de // é um comentário e também não faz nada. Espaços e tabs tem função meramente de organizar o visual do arquivo, então use à vontade (mas sabiamente).
Nome do servidor
O nome do seu servidor na lista.
hostname "[GMBR] Sandbox do Fulano"
Senhas de acesso
A senha para se conectar no servidor e a senha para você rodar comandos admin diretamente pelo console dentro do jogo (para utilizar esse mecanismo, digite rcon_password "minha_senha_admin_do_rcon" no console do jogo e depois rode seu comando com rcon meu_comando)
sv_password "senha_do_servidor"
rcon_password "minha_senha_admin_do_rcon"
Disponibilidade na internet
Isso também depende do port forward feito corretamente.
sv_lan 0 // 0 é modo lan desligado = aberto para a internet
Região
Útil para encontrar seu server por região no server browser clássico.
sv_region 2 // América do Sul
Arquivos de ban
Carregar os arquivos de usuários banidos.
exec banned_user.cfg
exec banned_ip.cfg
Rates
Essa parte é extremamente importante! Se você colocar valores ruins aqui, seu servidor pode sofrer de choke (recusa de enviar pacotes), loss (perda de pacotes) e lag (ping alto)!
Ao que tudo indica, mesmo com bons valores de referência esse é um trabalho manual que só será otimizado se você testar bastante e observar o comportamento do seu servidor com as informações fornecidas pelo comando net_graph 4.
Veja alguns detalhes sobre rates e snapshots, algumas recomendações desatualizadas da Valve (Determining Optimal Maxplayers e Testing Server Rates) e essa explicação de como funciona o net_graph 4. Gaste algum tempo aqui aprendendo e praticando se você deseja ter um servidor de qualidade.
O sv_min/maxrate é responsável por limitar a banda máxima de upload e download por segundo para cada cliente, tendo sua taxa definida nos clientes pelo comando rate, enquanto o sv_min/maxupdaterate é responsável por controlar o upload e download de deltas de snapshots por segundo, que são pacotes contendo teclas executadas, comandos e ações no mapa (dois ou mais itens por envio) (Nota: deltas são a diferença entre o estado anterior e atual. O server só manda todas as informações de snapshot quando o jogador entra na partida ou quando acontecem perdas pesadas de pacotes. Isso pode ser forçado com o comando cl_fullupdate).
Segundo recomendações que recebi dos donos dos servidores Construct17 e Smile RP, bons valores para o sv_minrate são entre 32000 e 64000 enquanto o sv_maxrate pode ficar em 0 (ilimitado). A fim de entender melhor esses números, 64000 bits/s é o mesmo que 8KBps, e jogos como CSGO já foram vistos exigindo rates mínimos de 512000 bits/s, ou 64KBps por jogador. Nos dois casos não foi dada muita atenção para o sv_min/maxupdaterate, mas eu pessoalmente me preocupo com esses comandos devido aos seguintes comentários no artigo da Valve: "// 60 for updaterate is LAN ONLY use 13 for internet // 20 is default but will cut the maxplayers you can handle in 1/2 // for SRCDS Servers use 30 - you might be able to use 20". Provavelmente no futuro vou mexer nessa seção aqui de novo. (Acesse esse link para mais informações: https://steamcommunity.com/sharedfiles/filedetails/?id=709568929)
Portanto, minha recomendação fica assim:
// bytes/second
sv_minrate 35000
sv_maxrate 0
// snapshots/second
sv_minupdaterate 33
sv_maxupdaterate 66
FastDL
Esse comando liga ao servidor uma máquina remota contendo uma pasta de addons no formato legacy. Isso costuma trazer velocidades de download superiores às do ServerDL e também é usado para evitar sobrecarga no host principal. Caso você tenha interesse em fazer isso, leia o seguinte tutorial (em Inglês), que é bem detalhado: https://dykam.nl/archive/svenskunganka.com/tutorials/other/setup-a-fastdl-for-garrys-mod.html. Decidi não expandir esse assunto aqui porque iria inflar demais o tutorial.
//sv_downloadurl "http://domain.com/fastdl"
Download e upload
Pode parecer boba, mas essa parte é importante. Decida se seu servidor vai ter upload e download de arquivos:
sv_allowupload 0 // Medida de segurança: impedir o upload de arquivos para o server
//sv_allowdownload 0 // Desativa o ServerDL. Você vai usar só o FastDL ou o workshop
Tela de loading personalizada
Essa é tela que aparece enquanto o player está entrando no servidor. Apesar de não ter nada de errado com a padrão do GMod, é bom personalizar as coisas para dar uma experiência diferente às pessoas.
Para fazer isso, crie ou pegue uma tela de loading personalizada:
Opção A) Faca uma você mesmo usando seus conhecimentos de HTML, CSS e Javascript e depois coloque-a em um host de sites como o http://infinityfree.net/. Veja: https://wiki.facepunch.com/gmod/Loading_URL;
Opção B) Baixe uma tela pronta como a https://github.com/glua/load-seed, configure-a e coloque-a em um host de sites como o http://infinityfree.net/;
Opção C) Use esse serviço que fornece telas de loading: https://www.gmod-lsm.com/.
Depois de ter a tela pronta, basta adicioná-la no servidor da mesma forma que eu fiz com a minha:
sv_loadingurl "https://xalalau.com/modulos/sv_loadingurl/index.php"
Otimização contra alto uso de CPU
Se o seu uso de CPU estiver alto, você pode tentar reduzi-lo limitando quantidade de quadros por segundo que o seu servidor renderiza (como, por exemplo, para 60 frames):
fps_max 60
Adicionando addons manualmente
Você pode adicionar addons manualmente posicionando-os em C:\Servidor\gmodds\garrysmod\addons. Para que eles funcionem, basta que o servidor seja iniciado ou reiniciado logo após inserção das pastas e arquivos.
Nesse caso, se o addon possuir modelos, mapas, sons etc. você precisará gerar listas de recursos para enviar esses arquivos para os jogadores. O Fox-Warrior's Resource Generator irá te auxiliar nesse processo: https://f0x.me/RAG/index.php
Outra possibilidade aqui é ter que fazer listas de spawn personalizadas para poder usar os conteúdos facilmente, e agora você poderia usar o GMBR Spawnlist Generator.
Administradores & Administração
Adicionando administradores manualmente
Você pode configurar um administrador manualmente adicionando nomes e Steam IDs (pegue em um desses sites: https://steamid.xyz/ ou https://steamidfinder.com/) no arquivo C:\Servidor\gmodds\garrysmod\settings\users.txt. Usar os mods de administração listados abaixo torna esse passo pulável, mas, por exemplo, esse é o meu:
"Users"
{
//
// This is your users file
//
// You can use this file to add people as admins on your server
// Add them to the relevant section
//
// If you're a Lua coder you can add your own sections and use them
// in your script by doing pl:IsUserGroup( "admin" ) etc
//
"superadmin"
{
// "garry" "STEAM_0:1:7099"
"Xalalau" "STEAM_0:1:31620486"
}
"admin"
{
//"garry" "STEAM_0:1:7099"
}
}
ULX
Esse é um sistema de gestão robusto e completo, que dispensa a edição do users.txt. Ele tem tudo que você precisa para gerenciar o seu server.
Baixe as partes:
A base, ULIB: https://steamcommunity.com/sharedfiles/filedetails/?id=557962238
O admin mod, ULX: https://steamcommunity.com/sharedfiles/filedetails/?id=557962280
Um sistema de restrições, URS: https://steamcommunity.com/sharedfiles/filedetails/?id=112423325
Sugestão: Assmod
Essa é uma alternativa fácil, simples e interessante para gerir o seu servidor rapidamente, que também dispensa a edição do users.txt. Ela não tem todos os recursos esperados mas dá conta do recado.
Faça o download nesse site e instale manualmente no seu servidor: https://github.com/slayer3032/assmod
Informações Complementares
Ranking
O ranking é a sua posição na lista de servidores do GMod, por gamemode, e também é o modo padrão de listagem. São aquelas barras coloridas de 1 a 5 pontos que ficam na parte direita de cada item. Ao contrário do que muitos pensam, ele não tem absolutamente nada a ver com o histórico do seu servidor, se o gameplay é instável, se tem muitos bugs ou se as pessoas gostam ou não do que tem nele. Na verdade não existe nenhum registro do passado, e a posição é calculada no momento que você começa a buscar e encher os resultados. Assim, é possível melhorá-la instantaneamente com pequenas modificações, basta entender como o processo é feito, e a explicação está logo a seguir.
Cálculo dos pontos (checado em 15/02/2021)
data.recommended = 40;
if(data.ping >= 60) data.recommended = data.ping;
if ( data.players == 0 ) data.recommended += 75; // Server is empty
if ( data.players >= data.maxplayers ) data.recommended += 100; // Server is full, can t join it
if ( data.pass ) data.recommended += 300; // Password protected, can t join it
if ( data.isAnon ) data.recommended += 1000; // Anonymous server
// The first few bunches of players reduce the impact of the server s ping on the ranking a little
if ( data.players >= 4 ) data.recommended -= 10;
if ( data.players >= 8 ) data.recommended -= 15;
if ( data.players >= 16 ) data.recommended -= 15;
if ( data.players >= 32 ) data.recommended -= 10;
if ( data.players >= 64 ) data.recommended -= 10;
A "recomendação" (ranking) funciona te colocando mais embaixo quanto maior for a soma. Então, o server:
1) Começa com 40 pontos;
2) Soma o ping nos pontos se ele passar de 60;
3) Soma 75 pontos se estiver vazio;
4) Soma 100 pontos se estiver cheio;
5) Soma 300 pontos se estiver com senha;
6) Soma 1000 pontos se for anônimo (sem +sv_setsteamaccount);
7) Subtrai pontos de acordo com quantidade de players. Ex: de 4 a 7 jogadores, menos 10 pontos.
Faixas de classificação - de 1 a 5 (checado em 04/06/2020)
if ( sv.recommended < 50 ) return "rank5";
if ( sv.recommended < 100 ) return "rank4";
if ( sv.recommended < 200 ) return "rank3";
if ( sv.recommended < 300 ) return "rank2";
return "rank1";
Essa é a tabela do ranking:
Pontos Rank
até 50 [∎][∎][∎][∎][∎]
de 51 a 100 [∎][∎][∎][∎][ ]
de 101 a 200 [∎][∎][∎][ ][ ]
de 201 a 300 [∎][∎][ ][ ][ ]
além de 300 [∎][ ][ ][ ][ ]
Como ter sucesso nesse sistema
Dadas essas informações, se você quer ser bem classificado tenha:
- ping abaixo de 60 (Levando em conta o país do público alvo);
- sv_setsteamaccount configurado
- pelo menos 8 jogadores online constantemente. Dicas para isso:
- junte tanto um time técnico (manutenção) quanto um vip (movimento);
- ofereça uma experiência de jogo refinada e livre de bugs;
- ouça o feedback dos players e responda sim ou não para cada caso;
- não peque pelo exagero nem pela falta, molde-se a cada momento e demanda;
- crie uma marca e abra um espaço comunitário (ex: Discord, grupo no Steam);
- publique o seu servidor onde e como puder (são as suas portas de entrada);
- respeite os outros servidores, não faça comentários negativos sobre eles;
- fique longe de polêmicas e não deixe seu time e grupo ficarem tóxicos.
"Meu servidor está aberto mas não aparece na lista a não ser que eu pesquise pelo nome dele"
A lista de servidores padrão exibe um número limitado de entradas nela sem adicionar paginação para podermos explorar os servidores de recomendação baixa. Infelizmente nada pode ser feito quanto a isso... Mas, de qualquer forma, você não deveria estar tão ruim nos resultados! Confira a explicação sobre ranks logo acima e veja o que pode estar dando errado. Há uma boa chance de você ter configurado o +sv_setsteamaccount incorretamente, do código dele ter expirado ou de você nem ter lembrado dessa configuração. Procure pelo problema, não deixe isso de lado!
Addons interessantes
Para sandbox e até outros gamemodes, cheque essas coleções:
Xalaserver: https://steamcommunity.com/sharedfiles/filedetails/?id=163399147
Sandbox Server: https://steamcommunity.com/sharedfiles/filedetails/?id=1513560264
Construção: https://steamcommunity.com/sharedfiles/filedetails/?id=2082785321
Proteção contra hackers: https://steamcommunity.com/sharedfiles/filedetails/?id=1308262997
Integração com o Discord
Não chegamos a testar isso a fundo, mas dê uma olhada nessas opções:
https://www.guilded.gg/GarrysMod/discord_bot
https://discordbotlist.com/bots/server-bot
https://steamcommunity.com/sharedfiles/filedetails/?id=1362411502&searchtext=discord
https://www.gmodstore.com/market/view/4594
https://github.com/Metastruct/gmod-metaconcord
Lista de gamemodes
Qual é a graça desse jogo se todo dia tudo que tem é só algum RP e algum Murder?
Me façam um favor e explorem essa lista, além de irem mais longe e acharem pérolas por aí:
Respect and I have a neat provide: What To Expect When Renovating A House dream house renovation
ResponderExcluir