SteamCMD
Vova (обсуждение | вклад) (Новая страница: «'''Консольный клиент Steam''' или '''SteamCMD''' - новая утилита для установки и обновления выделенн…») |
Vova (обсуждение | вклад) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 4: | Строка 4: | ||
1. Загрузите SteamCMD | 1. Загрузите SteamCMD | ||
− | :* Windows: [http://static. | + | :* Windows: [http://static.abcvg.com/uploads/files/2015-02/1424238271_steamcmd.zip http://static.abcvg.com/uploads/files/2015-02/1424238271_steamcmd.zip] |
− | :* Linux: введите <code>wget http://static. | + | :* Linux: введите <code>wget http://static.abcvg.com/uploads/files/2015-02/1424238288_steamcmd_linux.tar.gz</code> |
:: Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите [[#32-битные библиотеки на 64-битных дистрибутивах Linux|здесь]]. | :: Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите [[#32-битные библиотеки на 64-битных дистрибутивах Linux|здесь]]. | ||
2. Распакуйте архив в папку | 2. Распакуйте архив в папку | ||
Строка 326: | Строка 326: | ||
Переименуйте в корне рабочей директории каталог ./Steam/ в ./steam/ | Переименуйте в корне рабочей директории каталог ./Steam/ в ./steam/ | ||
+ | |||
+ | [[Категория:Игровые серверы]] |
Текущая версия на 11:01, 15 ноября 2015
Консольный клиент 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/