[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Установка выделенного сервера Half-Life

В этой статье описывается установка и конфигурирование выделенного сервера Half-Life (HLDS). Half-Life – это первая игра компании Valve Software's. Несмотря на то, что игра вышла в 1998 году, она до сих пор популярна среди онлайн игроков.

Запустив свой сервер, вы сможете играть сами или с друзьями. Half-Life нетребователен к ресурсам и достаточно быстро работает даже на старом оборудовании. На своём сервере вы вправе сами создавать список игровых карт, которые будут сменять друг друга, а также вы сможете вносить другие поправки в процесс игры (такие как, к примеру, установка пароля на сервер, что позволит контролировать, кто сможет заходить в игру). Half-Life Dedicated Server доступен для Linux со дня создания игры. Не смотря на то, что сама игра была портирована на Linux только сейчас. Half-Life стала доступна как первая коммерческая игра для нативного порта Steam клиента для Linux в начале 2013 года. Вместе с «free-to-play» Team Fortress 2 вы имеете две хорошие причины начать использовать игровую платформу Steam.

Steam updater как и сама игра являются 32-битными исполняемыми бинарниками, так что вы должны их запускать на 32-битной версии Slackware (для запуска на 64-битной версии, необходимо наличие multilib).

Выбор хост-машины для сервера

Программа Steam и игровой сервер являются 32-битными приложениями. По этой причине имеет смысл запускать их на 32-битном хосте Slackware. Если на вашем сервере установлена 64-битная версия дистрибутива Slackware, и вы не хотите устанавливать multilib, у вас есть два варианта решения этой задачи:

  1. Установить 32-битную Slackware в LXC контейнер. Slackware поддерживает LXC (система виртуализации на уровне операционной системы) «из коробки». Для примера посмотрите, как это делается в блоге Ponce.
  2. Установить 32-битную Slackware в виртуальную машину (используя, к примеру, QEMU или VirtualBox).

Для виртуальной 32-битной Slackware машины нет необходимости в полной установке. Вы можете установить минимальный вариант Slackware, который будет занимать менее 500Mb дискового пространства. Детальнее смотрите статью о минимальной установке Slackware «minimal Slackware».

Подготовка сервера

Сперва от имени пользователя «root» вы должны создать в системе аккаунт, под которым будет запускаться HLDS сервер. Запускать игровой сервер от пользователя «root» плохая идея. Всегда будьте начеку и ожидайте худшего, поэтому настраивайте ваши сервисы с наимболее низким уровнем привилегий, достаточным для функционирования.

# groupadd steam
# useradd -g steam -m -d /home/steam -c "Steam server account" -s /bin/bash steam

Устанавливаем пароль для нового пользователя «steam»:

# passwd steam
По состоянию на 14 февраля 2013 Steam обновление Half-Life Dedicated Server должно выполняться программой steamcmd вместо устаревшей утилиты hldsupdatetool, которая больше не запускается на новых дистрибутивах, таких как Slackware 14. Следующая операция потребует использования аккаунта Steam. Вы можете использовать свой личный игровой аккаунт (что не рекомендуется) (убедитесь, что вы полностью вышли («logout») из Steam клиента перед тем как запускать steamcmd). Лучше создать отдельный Steam аккаунт для вашего сервера, учётные записи Steam бесплатны.

В примере ниже я использую каталог «~/server» как «рабочую зону» HLDS, куда утилита SteamCMD скачает бинарники сервера, файлы игры, и где будет храниться сценарий запуска сервера. Идея в том что бы хранить скачанные файлы Steam раздельно что позволит избежать проблем в дальнейшем. Теперь продолжим под пользователем «steam»:

# su - steam
  • Создаём каталог для хранения журналов работы (лог файлы), которая будет потом использоваться:
$ mkdir ~/server/logs
  • Скачиваем и распаковываем архив, содержащий бинарник «steamcmd»
$ mkdir downloads
$ cd downloads
$ wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
  • Мы распакуем этот архив в раздельные подкаталоги в «рабочей зоне» на нашем сервере:
$ mkdir -p ~/server/steamcmd
$ tar -C ~/server/steamcmd -xvf steamcmd_linux.tar.gz

Не распаковывайте содержимое инструмента для обновления в обычный каталог клиента Steam!

  • Запускаем SteamCMD в первый раз:
$ cd ~/server/steamcmd
$ ./steamcmd.sh
  • Программа автоматически обновится и предоставит вам командную строку Steam>. Напишите команду «help» для справки по использованию консоли.
  • Для скачивания файлов сервера Half-Life вы должны войти в ваш аккаунт Steam:
'Steam> login <username>'
  • Введите ваш пароль. Затем проверьте ваш e-mail для получения кода доступа к Steam Guard, затем введите этот код (вам необходимо это проделать единожды для каждого компьютера где вы включаете Steam).
  • Укажите каталог для установки сервера. В этой статье мы будем использовать подкаталог «hlds_l» в серверном рабочем каталоге (не внутри каталога, в котором находится steamcmd) – нам нужно ввести полный путь:
'Steam> force_install_dir /home/steam/server/hlds_l/'
  • Устанавливаем или обновляем файлы HLDS сервера. Каждое приложение Steam имеет собственный «app_id» или «Steam Application ID», который будет одним из параметров. Вы можете найти AppId для необходимых игр тут: https://developer.valvesoftware.com/wiki/Steam_Application_IDs
'Steam> app_update <AppID>'

Для Half-Life Dedicated Server AppID «90». Мы хотим скачать, установить и проверить HLDS:

Steam> app_update 90 validate
  • После загрузки и завершения обновления, напишите «quit» для правильного выхода из серверов Steam.
Steam> quit

Каталог «~steam/server/hlds_l» (конечно же вы в праве выбрать любое имя, какое захотите) заполнен бинарниками Half-Life Dedicated Server (hlds*), а также весь контент игры Half-Life размещён в подкаталоге «valve». В результате суммарное занимаемое место составит примерно 410MB. как

Запуск игрового сервера

Утилита SteamCMD установила бинарники hlds linux в подкаталог, указанный параметром «force_install_dir». В нашем случае это каталог «~steam/server/hlds_l». Файлы игры Half-Life были скачаны в подкаталог ниже «valve» (другие игры, такие как Counter Strike, будут иметь свои отдельные подкаталоги).

Вы можете запустить игровой сервер Half-Life напрямую, используя следующие команды:

$ cd ~/server/hlds_l
$ ./hlds_run -game valve +maxplayers 4 +map crossfire +exec server.cfg

Если ваш сервер мульти-интерфейсный (имеет несколько сетевых подключений с разными IP адресами) или вы хотите запустить сервер не на стандартном порту, вы должны указать параметр запуска, к примеру, «+ip 192.168.1.1 +port 27015».

Проверьте файл «server.cfg» в каталоге «hlds_l/valve», этот файл определяет поведение HLDS сервера. Некоторые важные переменные «sv_» должны быть настроены следующим образом:

// Показывать мой контактный e-mail:
sv_contact "alien@slackware.com"

// Cообщаем что мы Европейский сервер:
sv_region 3

// Имя сервера по умолчанию. Меняем на "Bob's Server", и т.д.:
// hostname "Half-Life"
hostname "Alien BOB's server"

// Разрешаем клиентам качать от нас карты:
sv_allowdownload 1

// Разрешаем клиентам загружать на сервер свои "decals":
sv_allowupload 1

// Только для LAN (локальной сети):
//sv_lan 1

// Используйте если клиенту необходим пароль для доступа к серверу:
//sv_password "sesame"

Так как это игровой сервер, вам необязательно постоянно держать открытым терминал пока сервер запущен. Поэтому удобнее запустить сервер в сеансе «screen», используя стартовый сценарий, который будет записывать весь вывод в журнал:

$ cat <<EOT > /home/steam/server/start_hlds.sh
#!/bin/bash
cd server/hlds_l
screen -A -mdLS hlds_valve -c /home/steam/.screenrc \
 ./hlds_run -console -game valve -pingboost 2 -pidfile hlds.pid \
 +sys_ticrate 1000 +sv_maxupdaterate 100 +ip 192.168.1.1 +port 27015 +maxplayers 4 +map crossfire +cpu 1
EOT
$ chmod +x /home/steam/server/start_hlds.sh
$ cat << EOT > /home/steam/.screenrc
log on
logfile /home/steam/server/logs/hlds_screen.log
EOT

Теперь вы можете запустить сценарий, который запустит Half-Life Dedicated server в сеансе screen. Если вы хотите автоматически запускать сервер при загрузке Slackware, вы можете добавить строку в файл /etc/rc.d/rc.local:

# Start the Half-Life Dedicated Server:
if [ -x /home/steam/server/start_hlds.sh ]; then
  echo "Starting the Half-Life Dedicated Server:  ~steam/server/start_hlds.sh"
  su - steam -c "server/start_hlds.sh"
fi

Автоматическое обновление игровых файлов

Это хорошая практика предоставить клиенту Steam обновляться самому. Вы можете использовать cron для запуска обновления раз в день.

Создать обрабатывающий сценарий, который будет обновлять игру/игры автоматически. Создайте файл «~/server/steamwrapper.sh», как в примере:

$ cat <<EOT > ~/server/steamwrapper.sh
#!/bin/sh
/home/steam/server/steamcmd/steamcmd.sh +runscript /home/steam/server/hlds_steamcmd_update.txt
EOT
$ chmod 755 ~/server/steamwrapper.sh

Сценарий runscript, который здесь использован, содержит команды, которые передаются в SteamCMD. Этот файл выглядит так:

// Обновление hlds (каталог valve, app_id 90)
login my_user my_pass
force_install_dir /home/steam/server/hlds_l
app_update 90 validate
exit

Затем сконфигурируем cron пользователя steam для запуска сценария раз в день. Запустим эту команду для открытия редактора crontab:

crontab -e -u steam

затем добавляем строку, которая запланирует обновление на каждый день в 03:55:

55 3 * * *     /home/steam/server/steamwrapper.sh 2>&1 | tee -a /home/steam/server/logs/cron.log

Приятной игры!

Дополнительные карты для небольших серверов

Если вы играете в ближнем бою со своими друзьями на относительно малом сервере (менее 8 игроков), дополнительные хорошие карты можно найти здесь: http://alienbase.nl/half-life/. Убедитесь, что друзья, которые подключаются к вашему серверу, уже скачали дополнительные карты до того, как подключились к серверу. Это предотвратит долгую закачку карт с сервера. Время скачивания карты во время игры может занять целый цикл игры на этой карте! Дополнительные карты размещаются на сервер (и клиенте) в подкаталоге «maps» каталога «valve».

Источники

 ru:howtos:games:halflife_dedicated_server ()
Этот перевод старее, чем оригинальная страница, и может быть неактуальным. Смотрите, что было изменено.
Перевод этой страницы?: