SteamCMD
Консольный клиент Steam или SteamCMD - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему SteamPipe. Постепенно все серверы, использующие HLDSUpdateTool, перейдут на нее.
Загрузка и запуск SteamCMD
1. Загрузите SteamCMD
- Windows: http://static.abcvg.com/uploads/files/2015-02/1424238271_steamcmd.zip
- Linux: введите
wget http://static.abcvg.com/uploads/files/2015-02/1424238288_steamcmd_linux.tar.gz
- Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите здесь.
2. Распакуйте архив в папку Примечание: Не распаковывайте содержимое архива в папку обычного клиента Steam или в папку с HLDSUpdateTool!
- Linux: введите
tar xvfz steamcmd_linux.tar.gz
- Linux: введите
3. Запуск SteamCMD в первый раз
- Откройте командную строку в этой папке и запустите SteamCMD
- Windows: наберите
steamcmd
- Linux: наберите
./steamcmd.sh
- Windows: наберите
Утилита автоматически обновится и отобразит приглашение Steam>
Наберите help
для более подробной информации.
Для загрузки большинства серверов можно войти анонимно:
login anonymous
Если анонимный вход не работает для конкретной игры, вам нужно войти в аккаунт Steam Примечание: Вам нужно выйти из обычного клиента Steam чтобы корректно войти в аккаунт через SteamCMD.
login <имя_пользователя>
Введите ваш пароль. После этого вам на почту должен прийти ключ SteamGuard, который необходимо будет ввести далее. (Это надо делать один раз для каждого компьютера/пользователя в Linux)
Вы должны увидеть сообщение о том, что вход выполнен.
Загрузка сервера
1. Запустите SteamCMD и укажите директорию для загрузки. (Внимание: используйте прямые слеши в Linux и обратные в Windows)
force_install_dir <путь>
Баг: На некоторых дистрибутивах Linux путь не может содержать только прописные буквы.
- Пример: папка cs_go в текущей папке
force_install_dir ./cs_go/
2. Установите или обновите сервер. <app_id> это ID приложения Steam. Чтобы проверить установку, добавьте validate
Для участия в бета-тесте добавьте -beta "Beta"
.
app_update <app_id>
- Пример: установка и проверка CS:GO
app_update 740 validate
- Пример: установка и проверка бета-версии HLDS:
app_update "90 -beta beta" validate
3. После завершения, введите quit
для корректного отключения от серверов Steam.
Поддерживаемые серверы
Это список серверов, которые используют SteamCMD. Любые дополнительные опции командной строки должны быть указаны перед командой app_update!
Сервер | ID | Дополнительные опции командной строки |
---|---|---|
HLDS для Half-Life и Counter-Strike | 90 | |
Counter-Strike: Condition Zero **Beta** dedicated server | 90 | +app_set_config "90 mod czero" |
Deathmatch Classic **Beta** dedicated server | 90 | +app_set_config "90 mod dmc" |
Day of Defeat dedicated server | 90 | +app_set_config "90 mod dod" |
Half-Life: Opposing Force **Beta** dedicated server | 90 | +app_set_config "90 mod gearbox" |
Ricochet **Beta** dedicated server | 90 | +app_set_config "90 mod ricochet" |
Team Fortress Classic **Beta** dedicated server | 90 | +app_set_config "90 mod tfc" |
Counter-Strike: Global Offensive dedicated server | 740 | |
The Ship dedicated server | 2403 | |
Garry's Mod dedicated server | 4020 | |
Serious Sam 3 dedicated server | 41080 | |
Nuclear Dawn dedicated server | 111710 | |
Red Orchestra: Ostfront 41-45 dedicated server | 223240 | |
Red Orchestra 2: Heroes of Stalingrad and Rising Storm dedicated server | 212542 | |
Killing Floor Windows dedicated server | 215350 | |
Killing Floor Linux dedicated server | 215360 | |
Insurgency dedicated server | 17705 | |
Left 4 Dead 2 dedicated server | 222860 | |
Team Fortress 2 dedicated server | 232250 | |
Day of Defeat: Source dedicated server | 232290 | |
Counter-Strike: Source dedicated server | 232330 | |
Half-Life 2: Deathmatch dedicated server | 232370 |
Для установки нескольких модов, укажите их через запятую, например +app_set_config 90 mod czero,dod
.
Автоматизация SteamCMD
Есть два варианта автоматизации SteamCMD. (замените steamcmd
на ./steamcmd.sh
для Linux)
1. Добавление команд в строку запуска. Примеры:
steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 +quit
steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
2. Создание скрипта
- a. Создайте текстовый файл с последовательностью команд для SteamCMD
<syntaxhighlight> // update_csgo_ds.txt // @ShutdownOnFailedCommand 1 //Установите 0 для обновления нескольких серверов за раз @NoPromptForPassword 1 login <username> <password> //для загрузки серверов, не требующих авторизации //login anonymous force_install_dir ../csgo_ds app_update 740 validate quit </syntaxhighlight>
- b. Запустите SteamCMD с параметром
+runscript
Пример:
steamcmd +runscript csgo_ds.txt
Пример bat-файла для Windows
<syntaxhighlight>
- =======================::
- SteamCMD Guardian 1.2 ::
- ckynick254 ::
- =======================::
set programname=SteamCMD Guardian 1.1
- =======================::
- SET YOUR VARIABLES! ::
- =======================::
set servername= set username= set password=
- =======================::
- Your folder ::
- Replace after = ::
- =======================::
set runcmd=E:\Games\
- =======================::
- End of variables ::
- =======================::
- This will keep the window clean and easy to read
@ECHO off
- Sets the title of the window
title %programname% - %servername%
- Clears the window incase there is anything there
cls COLOR 1f CD %runcmd%
- Prints to the window what we are doing
ECHO %programname% has been started!
- start
ECHO. ECHO. ECHO ############################################################## ECHO # Dedicated Server # ECHO # 1 - Half-Life: Deathmatch and Counter-Strike # ECHO # 2 - Counter-Strike: Global Offensive # ECHO # 3 - Nuclear Dawn Dedicated Server # ECHO # 4 - Red Orchestra Dedicated Server # ECHO # 5 - Red Orchestra 2: Heroes of Stalingrad Dedicated Server # ECHO # 6 - Killing Floor Dedicated Server # ECHO # 7 - Team Fortress 2 Dedicated Server Beta # ECHO # 8 - HELP! # ECHO # 9 - Exit # ECHO ############################################################## ECHO. ECHO.
- Delete variable %A%
SET "A=" SET /P A=Set Your Choice And Press Enter: ECHO Loading ......... IF "%A%"=="1" set app=90 IF "%A%"=="2" set app=740 IF "%A%"=="3" set app=111710 IF "%A%"=="4" set app=223240 IF "%A%"=="5" set app=212542 IF "%A%"=="6" set app=215350 IF "%A%"=="7" set app=229830 IF "%A%"=="8" ECHO. IF "%A%"=="8" ECHO https://developer.valvesoftware.com/wiki/SteamCMD IF "%A%"=="8" ECHO. IF "%A%"=="8" PAUSE IF "%A%"=="8" goto start IF "%A%"=="9" EXIT
- This is a return point in case the server crashes or is closed
- restart
ECHO. ECHO (%date%)(%time%) %servername% is now ONLINE ECHO Watching %servername% for crashes... >> "%servername%.log" ECHO. >> "%servername%.log" ECHO (%date%)(%time%) %servername% is now ONLINE >> "%servername%.log" ECHO (%date%)(%time%) Watching %servername% for crashes...
- Start the actual update window
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate ECHO (%time%) WARNING: srcds closed or crashed, restarting. ECHO. ECHO (%date%)(%time%) Crash or Close detected! ECHO %servername% is now restarting... >> "%servername%.log" ECHO. >> "%servername%.log" ECHO (%date%)(%time%) Crash or Close detected! >> "%servername%.log" ECHO (%date%)(%time%) %servername% is now restarting...
- Server crashed or closed, so we point it to the return point to start the server again
GOTO restart </syntaxhighlight>
Известные проблемы
Я могу загрузить или обновить сервер через SteamCMD, но сервер не запускается
Известные причины:
- Linux: Некоторые игры имеют проблемы с регистром в названиях папок/файлов.
Ошибка отсутствия библиотек SteamCMD в директории steam
В консоле сервера такая ошибка выглядит так:
steamclient.so: cannot open shared object file: No such file or directory
Для начал проверяем существует ли директория steam.
cd /home/alliance/.steam
Если директория отсутствует, то создаем ее.
mkdir /home/alliance/.steam
Теперь создаем «символьную» ссылку к библиотекам SteamCMD.
ln -s /home/alliance/srcds/steamcmd/linux32 /home/alliance/.steam/sdk32
Примечание: В вашем случае, пути к директориям будут различаться!
32-битные библиотеки на 64-битных дистрибутивах Linux
Так как SteamCMD это 32-битная программа, для запуска требуются некоторые 32-битные библиотеки, даже если у вас уже установлены 64-битные версии.
Обычно такая ошибка выглядит так:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Решения специфичны для различных дистрибутивов:
Debian и подобные (Ubuntu, Mint)
apt-get install ia32-libs
Если вы получаете ошибку
The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable
E: Unable to correct problems, you have held broken packages.
Сделайте следующее:
dpkg --add-architecture i386 apt-get update apt-get install ia32-libs
(Если нужно, добавьте sudo
)
Red Hat и подобные (RHEL, Fedora, CentOS)
yum install glibc.i686 libstdc++.i686
Arch Linux
Не забудьте вначале включить репозиторий Multilib.
pacman -S lib32-gcc-libs
Ошибки загрузки
В Windows первичная загрузка может закончиться ошибкой, если в стандартных настройках прокси-сервера не указана автоматическая настройка
В Linux пользователь может получить ошибку при старте, связанную с ulimit (no permission/can not open file). Для корректной работы steamcmd требуется установка параметра следующим образом: ulimit -n 2048
. Хотя в shell-скрипте имеется строка, отвечающая за изменение ulimit, в некоторых системах администратором может быть запрещено изменение параметра пользователем, не имеющим root-привилегий. Перед запуском проверьте параметры ulimit следующим образом: ulimit -a. В ответе терминала нужно найти следующую строку:
open files (-n) 1024
Здесь значение 1024 — значение uname -n.
Login Failure: No Connection
На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо прописать например <syntaxhighlight> iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT </syntaxhighlight> Список портов может быть найден здесь: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=russian
Failed to open logfile или Failed to create directory
Переименуйте в корне рабочей директории каталог ./Steam/ в ./steam/