Гайд по поднятию выделенного сервера в Team Fortress 2

2 комментария
Гайд по поднятию выделенного сервера в Team Fortress 2

Всем привет! Делюсь максимально развернутым гайдом по созданию сервера в ТФ2 на Ubuntu/Debian-подобных системах.

Подготовка системы

Итак, для начала нужно установить нужные для сервера библиотеки. Добавляем архитектуру:

sudo dpkg --add-architecture i386

Обновляем пакеты:

sudo apt update

Устанавливаем обновления:

sudo apt upgrade

Ну и, собственно, устанавливаем сами lib-ы:

sudo apt install lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386

Если вам нужен режим отладки, то устанавливаем gdb:

sudo apt install gdb
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Установка сервера

Установив все нужное, нужно создать пользователя и директорию нашего сервера, так как от рута сервер не работает:

adduser <имя_пользователя>

Создаем директорию. В этой папке будет находиться сам сервер.

mkdir <ваше_название>

Входим в директорию:

cd <ваше_название>

Теперь нужно скачать сам сервер. Чтобы его скачать, нужно загрузить SteamCMD – это консольная версия Стима.

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

Распаковываем скачанный архив:

tar zxf steamcmd_linux.tar.gz

Ну и устанавливаем сам сервер:

./steamcmd.sh +force_install_dir ./tf2 +login anonymous +app_update 232250 +quit

Тут объясню поподробнее:

  • ./steamcmd.sh – файл запуска SteamCMD. Если ввести просто ./steamcmd.sh, то перед вами откроется консоль SteamCMD.
  • +force_install_dir – директория для установки файлов сервера. В данном случае /tf2 – означает, что сервер ТФки будет находиться по пути ~/<ваше_название>/tf2.
  • +login anonymous – войти в Стим без пароля, используя анонимный аккаунт.
  • +app_update 232250 – обновить приложение с номером 232250, то есть сервер Team Fortress 2. Код клиента ТФ2 – 440, HL2 – 220. Этот код есть в ссылке на страничку игры в магазине Стима. Например, вот ссылка HL2: https://store.steampowered.com/app/220.
  • +quit – выйти из SteamCMD.

Все эти команды можно выполнить поочередно в SteamCMD после выполнения ./steamcmd.sh.

Теперь ждем установки... После окончания установки SteamCMD выведет что-то типа:

Success! App '232250' is up to date.

Настройка сервера TF2

Сервер установлен, теперь можно начать настройку. Структура директорий сервера не сильно отличается от клиента ТФки. Создаем server.cfg:

nano ~/<ваше_название>/tf2/tf/cfg/server.cfg

В этом конфиге хранятся все настройки вашего сервера, такие как название серверов в игровом браузере, порт, настройки rcon (управление сервером из клиента TF2) и многое другое. Вот основные команды server.cfg:

hostname "<название_вашего_сервера>" // По стандарту "Team Fortress".
hostport "<порт>" // По стандарту "27050". Этот параметр нужно указать в строке запуска
sv_region <число>   // По стандарту "*ничего*". Значения: -1 — мир, 0 — США восток, 1 — США запад, 2 — Южная Америка, 3 — Европа, 4 — Азия, 5 — Австралия, 6 — Ближний Восток, 7 — Африка
mp_timelimit "<время_отведенное_на_карту_в_минутах>" // По стандарту "0". 0 - бесконечное кол-во. После истечения карта принудительно сменится, без доигрывания раунда до конца.

В server.cfg можно вписать что угодно, кроме команд с припиской  "cl_:". 

Чтобы не было путаницы, я рекомендую разные настройки выводить в разные файлы. Пример: 

server.cfg

hostname "RomaRomaMolodetz"
hostport "27015"
sv_pure 1
exec map.cfg
exec network.cfg

network.cfg

sv_allowupload 1    // Разрешает клиенту загружать файлы на сервер (например, спреи)
sv_allowdownload 1   // Разрешает клиенту скачивать файлы с сервера (например, карты или звуки)
net_maxfilesize 100   // Максимально разрешенный размер файла в мегабайтах
sv_downloadurl "https://gooooooogle.xyz/fastdl/"   //Откуда клиентам качать файлы с сервера

map.cfg

mp_enableroundwaittime 1  // Включает таймер ожидания между раундами
mp_bonusroundtime 8  // Время после победы в раунде до нового раунда
mp_restartround 0  // Если не 0, то новый раунд будет перезагружен через данное кол-во секунд
mp_stalemate_enable 1  // Включает внезапную смерть
mp_stalemate_timelimit 300  // Время внезапной смерти (в секундах)
mp_timelimit 0  // Время отведенное на карту в минутах

Это помогает, если у вас огромный server.cfg.

Еще нужно создать файл mapcycle.txt. Он необязателен, но желателен. В нем описывается порядок карт, которые будут на сервере:

nano ~/<ваше_название>/tf2/tf/cfg/mapcycle.txt

Туда пишем полные названия карт. Пример:

cp_degrootkeep
ctf_2fort
cp_granary
ctf_dublecross

Одна строчка – одна карта.

Запуск сервера

Все поставили – можно и проверить. Выходим в домашнюю папку пользователя:

cd

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

./hlserver/tf2/srcds_run -console -game tf +map ctf_2fort +maxplayers 16 +sv_setsteamaccount <токен> -port 27015 -debug

Объясняю:

  • ./hlserver/tf2/srcds_run – файл запуска сервера Team Fortress 2.
  • -console и -game tf – эти параметры нельзя убирать.
  • +map <название карты> – карта, которая будет на сервере. Ее можно будет поменять командой map (дропает игроков с сервера) или changelevel (не дропает).
  • +maxplayers <число> – максимальное количество игроков на сервере (до 32).
  • +sv_setsteamaccount [токен] - необязателен, но очень желателен. Эта переменная позволяет официально сделать сервер вашим, токен можно получить тут. Это нужно для того, чтобы сервер не пропал из избранных при переезде на другой ip.
  • -port <число> – порт, на котором сервер будет ждать подключений.
  • -debug – режим отладки. Для этого и нужен gdb. Почти бесполезная вещь, но я ее прописываю.

Если никаких ошибок нет, то сервер запустится и будет доступен.

Установка SOURCEMOD/METAMOD

Сервер работает, теперь можно установить плагин для установки плагинов. Звучит странно, но да.

Качаем архивы sourcemod и metamod. Там нужно выбрать систему, на которой работает ваш сервер. Также нужно сделать metamod.vdf, для этого переходим сюда, выбираем игру и жмем «Generate metamod.vdf». Выбирать Game Folder не надо.

Теперь распаковываем все в одно место, чтобы совместить папки addons из архивов metamod и sourcemod. Metamod.vdf нужно перетащить в addons с заменой. После всего этого через SSH, SCP или FTP перетаскиваем получившиеся файлы на сервер в директорию:

~/<ваше_название>/tf2/tf/

Теперь нужно прописать себя админом. Это делается в файле andmins_simple.ini. Это можно сделать тремя способами: по IP, SteamID и нику. Открываем файл:

sudo nano ~/<ваше_название>/tf2/tf/addons/sourcemod/configs/admins_simple.ini

Пролистываем до конца и вписываем строчку по примеру:

"STEAM_0:0:000000000" "99:z"  //По STEAMID  
"192.168.1.1" "99:z" //По IP
"Nickname" "99:z" //По нику

Это работает так: "НИК, IP или STEAMID" "право".

Если с первым все предельно понятно, то со вторым – не очень. В файле admin_levels.cfg есть определения, но они на английском. Я объясню все тут:

b - Все остальное, не перечисленное ниже
c - Кикать
d - Банить
e - Разбанивать
f - Шлепать людей
g - Менять карту
h - Изменять значения консольных переменных сервера
i - Изменять конфиги
j - Некоторые привелегии к чату
k - Запускать голосования
l - Ставить пароль на сервер
m - Удаленная консоль (rcon)
n - Менять состояние sv_cheats 
z - Полный доступ
z:<число> - Приоритет (10 не может кикнуть 20) (только у админов с опцией z)

Перезагружаем сервер, и можно играть!

Дополнительно

Можно еще создать firewall. Давайте сетапним ufw!

Качаем:

sudo apt install ufw

Добавляем правила:

sudo ufw allow <порт_вашего_сервера>
sudo ufw allow <rcon_порт_(если_есть)>
sudo ufw allow <ssh_порт_(по_стандарту_22)>

Запускаем!

sudo ufw enable

Заключение

Я максимально подробно рассказал, как поднять свой сервер Team Fortress 2 на Linux. Если остались какие-то вопросы, то пишите в комментариях.

Полезные ссылки:

Мы тут не в игры играем, а публикуем новости, обзоры и инструкции.

Комментарии

Артём +1
03 авг в 22:05
Спасибо!
Свернуть ответы
Комментарий автора
Осинский Роман +19
04 авг в 19:15
Всё работает?
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Войти в Комьюнити
Регистрация в Комьюнити
Восстановление пароля