Всем привет! Делюсь максимально развернутым гайдом по созданию сервера в ТФ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
Установка сервера
Установив все нужное, нужно создать пользователя и директорию нашего сервера, так как от рута сервер не работает:
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. Если остались какие-то вопросы, то пишите в комментариях.
Полезные ссылки:
Комментарии