SteamCMD: как и с чем его едят

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Сообщение
Автор
Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#1 Сообщение 12.03.2013, 19:12

Что такое SteamCMD?
Итак, что же такое SteamCMD? Это новая система распространения контента игровых серверов, которые перешли на новую систему хранения SteamPipe. Если игра не перешла на SteamPipe, она распространяется через HLDSUpdateTool.
Установка
1.Установка:


1. SteamCMD можно скачать по следующим ссылкам(официальные): Для Linux x64 нужно установить библиотеки x86:
  • 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.
    Пишем это:

    Код: Выделить всё

    sudo dpkg --add-architecture i386
    Потом:

    Код: Выделить всё

    sudo apt-get update
    перед запуском apt-get install ia32-libs
  • Arch Linux:
    Вначале включаем репозиторий multilib
    и пишем это

    Код: Выделить всё

    pacman -S lib32-gcc-libs
Установка почти закончена.


2. Далее нам надо распаковать SteamCMD:
  • Внимание, не распаковывайте SteamCMD в папку с клиентом Steam или HLDSUpdateTool
    Для Linux:

    Код: Выделить всё

    tar xvfz steamcmd_linux.tar.gz
SteamCMD распакован.


3. Теперь нужно запустить SteamCMD в первый раз(он скачает файлы своей платформы)
Открываем командную строку и пишем(Для Linux это SSH, для Windows я не знаю)
  • Windows: steamcmd
    Linux: ./steamcmd.sh
Внимание, в Linux, не забудьте выставить права(chmod) на файлы: 755.
После запуска, когда всё загрузится пишем quit чтобы выйти с steamcmd.
Установка завершена!
Загрузка игр
2.Загрузка игр

Для загрузки большинства серверов можно залогиниться(войти в систему) анонимно.

Код: Выделить всё

login anonymous
Но для загрузки некоторых игр нужно зайти под своим аккаунтом(при условии того, что игра, для которой нужен сервер, куплена).
Заметка: сначала выйдите из обычного steam клиента.

Код: Выделить всё

login <логин>
SteamCMD попросит пароль, вводим его. Если включен, SteamGuard на почту придет сообщение с кодом. Введите его в консоль SteamCMD.
При успешной авторизации вы увидите надпись successful.


Загрузка серверов:
1. Запускаете SteamCMD и указываете папку, в которую нужно загрузить сервер игры.

Код: Выделить всё

force_install_dir <путь>
Баг: В некоторых версиях Linux, путь не может содержать больших букв.

К примеру, указываем папку cs_go из текущей директории:

Код: Выделить всё

force_install_dir ./cs_go/
К примеру, SteamCMD в папке SteamCMDFolder, нужно скачать CS: GO в папку SteamCMDFolder/cs_go/


2. Для загрузки сервера или обновления используем app_update:

Код: Выделить всё

app_update <ID сервера>
К примеру нужно установить и проверить целостность скачки CS: GO

Код: Выделить всё

app_update 740 validate
Ну или скачать бету HLDS:

Код: Выделить всё

app_update 90 -beta beta
И еще трюки с бета версиями:

Код: Выделить всё

app_update 4940 -beta "имя беты" -betapassword "пароль от беты" validate
Баг: Чтобы мод на HLDS(игра, к примеру CS или HL) нормально работал, нужно скачать его пару раз.(не докачивает файлы)

После загрузки пишем quit, чтобы выйти из SteamCMD.
Список серверов, для возможной загрузки
3.Список серверов, для возможной загрузки

Вот список серверов, которые теперь распространяются только через SteamCMD:
Любые дополнительные опции командной строки должны быть указаны перед командой app_update!

Баг: Чтобы мод на HLDS(игра, к примеру CS или HL) нормально работал, нужно скачать его пару раз.(не докачивает файлы)

Примичания:
1: В скриптах для автоматизации, для дополнительных аргументов "+" не нужен.(к примеру +app_set_config будет app_set_config)
2: Бета сервера загружаются с аргументом -beta beta
3: Для некоторых серверов недбходимо заходить с anonymous.(К примеру для CS: S надо заходить из-под anonymous)(прим. перевод. мне кажется, это не фича, а баг.)

Код: Выделить всё

Сервер                                                                    ID         Дополнительные опции командной строки
HLDS for Half-Life and Counter-Strike 1.6	                              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
Natural Selection 2 dedicated server	                                   4940
Natural Selection 2 Beta dedicated server	                              4940	   -beta beta
Serious Sam 3 dedicated server	                                         41080
Nuclear Dawn dedicated server	                                          111710
Red Orchestra: Ostfront 41-45 Windows dedicated server	                 223240
Red Orchestra: Ostfront 41-45 Linux dedicated server	                   223250
Red Orchestra 2: Heroes of Stalingrad and Rising Storm Windows DS	      212542
Killing Floor Windows dedicated server	                                 215350
Killing Floor Linux dedicated server	                                   215360
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
Blade Symphony Beta dedicated server	                                   228780
Source SDK Base 2013 MP dedicated server	                               244310
Half-Life Deathmatch: Source dedicated server	                          255470
Автоматизируем SteamCMD
4.Автоматизируем SteamCMD

1. К примеру, можно вставить параметры загрузки как аргументы:

Код: Выделить всё

steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Можно залогиниться:

Код: Выделить всё

steamcmd +login <логин> <пароль> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
2. Сделать скрипт загрузки:

Код: Выделить всё

// csgo_ds.txt
//
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login <логин> <пароль>
//для серверов, которые не приватные
//используйте login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
Запускаем так:

Код: Выделить всё

steamcmd +runscript csgo_ds.txt
(файл должен называться csgo_ds.txt)
Кросс-платформенная загрузка
5.Кросс-платформенная загрузка

Теперь можно не париться и загружать сервер под Linux из Windows или наоборот!
Как же это сделать?
Для этого появился новый параметр SteamCMD!

Код: Выделить всё

@sSteamCmdForcePlatformType
(там две буквы s в начале)
К примеру загрузить Windows сервер CS: GO из под Linux:

Код: Выделить всё

./steamcmd.sh [email protected] windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Для загрузки CS: GO сервера под Linux из Windows пишем так:

Код: Выделить всё

steamcmd.sh [email protected] linux +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Ну или для загрузки сервера CS: GO для Mac OS X из Windows

Код: Выделить всё

steamcmd.sh [email protected] macos +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
Так можно делать из любой ОС.

Вот это пример для скриптов:

Код: Выделить всё

@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
Поддерживаемые ОС: linux, macos, windoows
Скрипты
6.Скрипты
Скрипты для Windows
Steam Guardian 1.2

Код: Выделить всё

::=======================::
:: 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
Скрипты для Linux
Steam Guardian 1.2
http://pastebin.com/nwNdT7CT
Редактируем скрипт под себа в текстовом редакторе, заливаем его на сервер, прописываем ему chmod

Код: Выделить всё

chmod u+x ./updateserver.sh
(updateserver.sh - название файла)
Запускаем!

Код: Выделить всё

./updateserver.sh
Скрипт сам загрузит SteamCMD и начнет загружать серверы
Ошибки
7.Ошибки
Windows
Ошибка связанная с загрузкой платформы

Код: Выделить всё

ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".

ILocalize::AddFile() failed to load file "public/steambootstrapper_russian.txt".

[  0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[  0%] Download Complete.
[----] Verifying installation...
[  0%] Downloading Update...
[  0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[  0%] Download Complete.
SteamUpdater: Error: Steam needs to be online to update.  Please confirm your ne
twork connection and try again.
[  0%] !!! Fatal Error: Steam needs to be online to update.  Please confirm your
 network connection and try again.
Решение
Запускаем Internet Explorer и идем в свойства браузера.
Идем на вкладку "подключения" и там нажимаем кнопку "настройки сети".
Ставим галочку на "Автоматическое определение параметров"
Linux
Ошибка ulimit
В 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.
Решение
Необходимо прописать например

Код: Выделить всё

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
Список портов может быть найден здесь
Ссылка для вопросов

P.S Эта статья является вольным переводом с официального сайта SteamCMD, на официальном сайте есть русская версия, возможно она лучше, но она не обновляется!(возможно мою списали)) )
Последний раз редактировалось DeadLife 20.10.2013, 20:03, всего редактировалось 30 раз.

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#2 Сообщение 12.03.2013, 19:23

Тему закрепил :)

Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#3 Сообщение 12.03.2013, 19:44

Dev писал(а):Тему закрепил :)
Спасибо)
Изображение


weinstreizeR
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2105
Зарегистрирован: 30.08.2011
Благодарил (а): 32 раза
Поблагодарили: 758 раз
Контактная информация:

#5 Сообщение 12.03.2013, 20:21

Если исправить недочёты и орфографические ошибки, то будет просто отлично.

Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#6 Сообщение 13.03.2013, 08:57

weinstreizeR писал(а):Если исправить недочёты и орфографические ошибки, то будет просто отлично.
Прошу указать недочеты, хочу чтобы тема выглядела великолепно.(Скоро поправлю оформление)

Добавлено спустя 29 минут 41 секунду:
UPD1: Поправил таблицу со списком серверов, закинул все шаги в спойлеры.
Последний раз редактировалось DeadLife 27.09.2013, 11:24, всего редактировалось 1 раз.
Изображение

weinstreizeR
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2105
Зарегистрирован: 30.08.2011
Благодарил (а): 32 раза
Поблагодарили: 758 раз
Контактная информация:

#7 Сообщение 13.03.2013, 12:18

DeadLife
Скинул в личку ;-)

Аватара пользователя
loKkdoKk
Капитан
Капитан
Сообщения: 450
Зарегистрирован: 04.04.2010
Благодарил (а): 20 раз
Поблагодарили: 70 раз
Контактная информация:

#8 Сообщение 13.03.2013, 13:00

Раз уш перевод статьи запилил, то и размеры шрифтов правь в некоторых моментах. Короче выделяй важное

Аватара пользователя
Alcone
Лейтенант
Лейтенант
Сообщения: 120
Зарегистрирован: 21.08.2008
Откуда: 127.0.0.1
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

#9 Сообщение 13.03.2013, 13:16

Но для загрузки частных игр(CS: GO и т. д.) нужно зайти под своим аккаунтом
у меня ксго от анонимуса обновляется нормально

Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#10 Сообщение 13.03.2013, 17:53

UPD2: Исправление грамматических ошибок, спасибо weinstreizeR
Изображение

Аватара пользователя
mihaput
Майор
Майор
Сообщения: 509
Зарегистрирован: 11.11.2009
Откуда: http://stat.kristal-lab.ru
Благодарил (а): 5 раз
Поблагодарили: 40 раз

#11 Сообщение 18.03.2013, 22:51

Полезно будет знать у кого выскочит такая ошибка при первом запуске steamcmd на Windows:

Код: Выделить всё

C:\Windows\system32>F:\SERVER\steamcmd.exe
Redirecting stderr to 'F:\SERVER\logs\stderr.txt'
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".

ILocalize::AddFile() failed to load file "public/steambootstrapper_russian.txt".

[  0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[  0%] Download Complete.
[----] Verifying installation...
[  0%] Downloading Update...
[  0%] Checking for available update...
SteamUpdater: Error: Download failed: http error 0
[  0%] Download Complete.
SteamUpdater: Error: Steam needs to be online to update.  Please confirm your ne
twork connection and try again.
[  0%] !!! Fatal Error: Steam needs to be online to update.  Please confirm your
 network connection and try again.
Нужно открыть Enternet Explorer, Свойства браузера, вкладка "Подключения", в "Настройках" поставить галочку на "Автоматическое определение параметров"
ИзображениеИзображение
Изображение

-----------
Gigabyte Z77P-D3/i7-3770 3.4MHz (4.1MHz)/Geforce GTX 760 2Gb 256Bit/6Gb Ram/OS Windows 8.1

Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#12 Сообщение 23.03.2013, 11:01

Модераторы, пожалуйста поправьте спойлеры в разделе "ошибки".
Изображение

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#13 Сообщение 23.03.2013, 11:40

DeadLife
Исправлено

Аватара пользователя
loKkdoKk
Капитан
Капитан
Сообщения: 450
Зарегистрирован: 04.04.2010
Благодарил (а): 20 раз
Поблагодарили: 70 раз
Контактная информация:

#14 Сообщение 24.03.2013, 08:41

для загрузки уже доступны все сервера кроме TF2

Аватара пользователя
DeadLife
Капитан
Капитан
Сообщения: 325
Зарегистрирован: 20.04.2010
Благодарил (а): 151 раз
Поблагодарили: 48 раз

#15 Сообщение 01.04.2013, 22:44

Скоро: Обновленная таблица.
Изображение

Ответить