Denis Yuriev

Записки бездельника

Главная » Linux » Игровые сервера » Counter-Strike 1.6 » Counter-Strike 1.6 - Создаем свой сервер в Linux Debian

Counter-Strike 1.6 — Создаем свой сервер в Linux Debian

Захотелось мне немного поэкспериментировать с игровыми серверами.
В новом цикле статей будем рассматривать установку, настройку и прочие аспекты по разворачиванию своего сервера Counter-Strike 1.6 в операционной системе Linux Debian.

Тестовый Стенд

Для разворачивания сервера я пожертвовал своим домашним сервером со следующей конфигурацией:

  • Процессор: AMD E-350 — Dual Core 1.6GHz
  • Память: DDR3 4096Mb
  • Жесткий диск: WD Caviar Green WD5000AZRX — 500Gb, 5400 rpm

Как вы видите, железо по современным оценкам достаточно скромное, однако соответствует большинству VPS-серверам, предоставляемыми хостингами.
Так же имеется интернет канал 16мбит/с с белым статичным IP адресом.
Таким образом данный сервер после запуска и настройки маршрутизатора будет виден из сети Интернет.

В качестве операционной системы я выбрал Linux Debian 7.6 Wheeze со стандартными пакетами.
В ходе установки на последнем этапе был выбран лишь пакет SSH Server, для удаленного управления, что позволило оставить сервер в дальнем углу, подключив лишь питание и сетевой кабель.

Первые шаги

Забегу вперед и сообщу, что сервер Counter-Strike 1.6 не дает себя запустить с правами суперпользователь. А так же нет возможности запустить в качестве службы и после запуска при закрытии терминала SSH будет завершаться работа и сервера.
Чтобы избежать данные неприятности — первым делом были доустановлены пакеты

  • sudo — дает возможность обычному пользователю совершать действия с правами суперпользователя
  • screen — для запуска приложений в виртуальном терминале
# apt-get update
# apt-get install sudo screen

Так же добавим своего пользователя (созданного в процессе установки, в моем случае — пользователь denis) в группу sudo, чтобы могли использовать одноименную команду по мере необходимости.

# usermod -a -G sudo denis

Теперь имеем возможность подключиться с другого компьютера в домашней сети от имени пользователя denis:

$ ssh [email protected]
[email protected]'s password:
Linux Denis-Server 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct 15 00:12:52 2014 from denis-pc.lan
[email protected]:~$

Всё, с этой минуты мы управляем сервером лишь удалено.

Установка SteamCMD

SteamCMD — официальный скрипт, для установки игровых серверов на системы под управлением Linux
Создадим каталог для скрипта и скачаем его:

$ mkdir ~/SteamCMD
$ cd ~/SteamCMD
$ wget http://media.steampowered.com/client/steamcmd_linux.tar.gz

Мы получили архив со скриптом.
Теперь распакуем, удалим архив, так как он больше нам не понадобится, и присвоим скрипту права на выполнение:

$ tar xfz steamcmd_linux.tar.gz
$ rm steamcmd_linux.tar.gz
$ chmod +x steamcmd.sh

Так же нам понадобится набор библиотек для запуска 32-битных приложений:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install lib32gcc1

Пробуем запустить:

$ ./steamcmd.sh

Если вы сделали всё верно, то пойдет процесс загрузки обновлений и в конце терминал выдаст приветствие SteamCMD

Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...OK.

Steam>

Установка и запуск сервера CS 1.6

Итак, пакет для загрузки серверов у нас запустился, приступим к дальнейшим шагам:

Установка HLDS

HLDS — сервер для игр на движке Half-Life 1, в том числе и Counter-Strike 1.6.
Авторизуемся анонимно в консоли для получения файлов сервера:

Steam>login anonymous

Connecting anonymously to Steam Public...Logged in OK
Waiting for license info...OK

Steam>

Теперь укажем, куда скачивать файлы сервера:

Steam>force_install_dir ../hlds

Ну и теперь приступаем непосредственно к скачиванию файлов:

Steam>app_update 90 validate

Здесь 90 — код сервера Counter-Strike 1.6. Если Вам нужно что-то иное, то гугл вам поможет. Это вне рамках статьи.
Скорее всего команда Вам вернет ошибку — повторяйте вновь и вновь, пока всё не скачается. Если ошибка не пропадает — то лучше на пару часов затею отложить. Такое бывает, когда сервера Steam перегружены.

Как правило, в большинстве случаев со второй попытки всё скачивается.
Об удачном скачивании Вам сообщит программа следующим образом:

Success! App '90' fully installed.

Steam>

Всё, можно выходить из SteamCMD

Steam>quit

Пробный запуск сервера

Мы уже с Вами располагаем чистым сервером Counter-Strike 1.6 со стандартными картами и настройками.
Конечно, он во многом отличается от большинства серверов в интернете, но обвешивать функциональностью мы будем в следующих статьях, а пока просто запустим:

$ cd ../hlds
$ ./hlds_run -game cstrike +ip 0.0.0.0 +maxplayers 20 +map de_dust2
Auto-restarting the server on crash

Console initialized.
Using breakpad crash handler
Setting breakpad minidump AppID = 10
Forcing breakpad minidump interfaces to load
dlopen failed trying to load:
/home/denis/.steam/sdk32/steamclient.so
with error:
/home/denis/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
Exe build: 13:12:29 Aug 29 2013 (6153)
STEAM Auth Server
Server IP address 0.0.0.0:27015
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
FATAL ERROR (shutting down): Unable to initialize Steam.

Опачки, неудача.
В логах видим ошибку

/home/denis/.steam/steamclient.so: cannot open shared object file: No such file or directory

Проблема популярная, решение тоже не сложное. Необходимо создать каталог .steam в домашней папке пользователя, от чьего имени запускаем сервер:

$ mkdir ~/.steam

и создать символьную ссылку sdk32 на каталог linux32 в папке со скаченным ранее SteamCMD

$ ln -s ~/SteamCMD/linux32 ~/.steam/sdk32

Всё, теперь Ваш сервер запустится.

$ ./hlds_run -game cstrike +ip 0.0.0.0 +maxplayers 20 +map de_dust2
Auto-restarting the server on crash

Console initialized.
Using breakpad crash handler
Setting breakpad minidump AppID = 10
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
Exe build: 13:12:29 Aug 29 2013 (6153)
STEAM Auth Server
Server IP address 0.0.0.0:27015
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit

couldn't exec listip.cfg
couldn't exec banned.cfg
Connection to Steam servers successful.
   VAC secure mode is activated.

В следующих статьях начнем его превращать в полноценный Public-сервер

PS для перфекционистов

В принципе данный раздел можете не читать. Сейчас легким движением руки уберем ошибки

couldn't exec listip.cfg
couldn't exec banned.cfg

которые на самом деле не влияют на работу сервера.
Достаточно создать два пустых файла:

$ touch ~/hlds/cstrike/listip.cfg
$ touch ~/hlds/cstrike/banned.cfg

А вот с ошибкой

[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

я так и не справился.
Если кто знает, как избавиться от этой нелепости — отпишитесь в комментариях.

Сделай приятное автору - поделись статьей в социальной сети.

18 Комментариев

  1. На эту ошибку [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

  2. Денис Юрьев

    Несколько не понятно, что вы пытались спросить или донести)

  3. Ruslan A.

    > «[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.»
    Тоже наткнулся на данную ошибку, хотя в некоторых статьях она не наблюдается. Решение в интернете не нашел, но попробовал установить и запустить Steam, и… Ошибка пропала. То есть, данная ошибка отсутствует при запущенном приложении Steam.

  4. Ruslan A.

    Забыл добавить, что сервер я запускал под Ubuntu 14.04 Desktop.

  5. Денис Юрьев

    Тоже была мысль, что пытается проверить наличие клиента стима в системе. но какие преимущества он дает — не ясно.

  6. devilwalker

    Это не влияет на работу сервера. Не обращайте внимания.

  7. Спасибо за такую отличную, подробную статью!
    Хотя вы в начале статьи вы посоветовали установить screen, а как пользоваться не написали =)

  8. Steam дополнение требует, а если запустить Steam, то дополнения загружаются!

  9. Скажите, что за сборка и как производительность?

  10. Кчал сервер под линукс. кс 1.6! Ругается на специфическое название игры! Что делать??? Пытаюсь запускать коммандой: ./hlds_run -game cstrike +ip 0.0.0.0 +maxplayers 20 +map de_dust2

  11. Все проходит нормально до момента запуска сервера. При запуске выдает вот это:
    «Invalid game type ‘cstrike’ sepecified.»
    Запускаю командой — ./hlds_run -game cstrike +ip 0.0.0.0 +maxplayers 20 +map de_dust2
    Кто нибудь сталкивался с таким?

Оставьте комментарий

Войти с помощью: 
Denis Yuriev DMOZ Индекс цитирования

© 2017