Создание сервера Surf для Counter-Strike 2 (CS2)
Создание сервера Surf для Counter-Strike 2 (CS2) — это отличный проект, но он требует внимательной настройки, так как экосистема плагинов для CS2 отличается от CS:GO. Основным каркасом для плагинов сейчас является CounterStrikeSharp (CSSharp), а SharpTimer — один из лучших таймеров, работающих на этой базе.
Гайд: Сервер Surf + SharpTimer для CS2
1. Требования и подготовка
Перед началом убедитесь, что у вас есть:
- VPS или Выделенный сервер: Рекомендуется Linux (Ubuntu 20.04/22.04 или Debian 10/11). Минимум 4 ГБ ОЗУ (лучше 8 ГБ), 2-4 ядра CPU.
- Steam аккаунт: Для создания токена (если сервер будет публичным в мастер-сервере), но для начала можно запустить анонимно.
- Доступ к терминалу: (SSH для Linux).
2. Установка сервера CS2 (SteamCMD)
Установите зависимости:
sudo apt update
sudo apt install -y wget screen unzip lib32gcc-s1
Создайте пользователя для сервера (рекомендуется для безопасности):
adduser cs2server
su - cs2server
Скачайте и установите SteamCMD:
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
Установите сервер CS2:
Запустите SteamCMD и введите команды:
./steamcmd.sh
Внутри консоли SteamCMD:
force_install_dir ~/cs2_server
login anonymous
app_update 730 validate
quit
Примечание: App ID 730 используется и для CS2.
3. Установка Metamod:Source и CounterStrikeSharp
SharpTimer не работает без фреймворка CounterStrikeSharp, который требует Metamod.
Установка Metamod:Source:
- Скачайте последнюю версию для CS2 с официального сайта: metamodsource.net
- Распакуйте архив.
Скопируйте папку metamod в директорию сервера:
cp -r addons/metamod ~/cs2_server/game/csgo/addons/
- Создайте файл
gameinfo.gi(если его нет) или отредактируйте существующий, чтобы добавить Metamod.
Путь:
~/cs2_server/game/csgo/gameinfo.gi
Добавьте строку GameBin csgo/addons/metamod/bin в секцию SearchPaths (обычно метамод делает это сам установщиком, но проверьте наличие файла metamod.vdf в csgo/addons/metamod/).
Установка CounterStrikeSharp (CSSharp):
- Скачайте релиз с GitHub: CounterStrikeSharp Releases - github.com/roflmuffin/CounterStrikeSharp/releases
- Выберите архив
counterstrikesharp-with-runtime.zip. - Распакуйте содержимое в
~/cs2_server/game/csgo/. - Убедитесь, что папки
addons/counterstrikesharpиdllsнаходятся на своих местах.
4. Установка плагина SharpTimer
Скачивание:
- Перейдите на репозиторий: SharpTimer GitHub - github.com/SharpTimer/SharpTimer
- Скачайте последний релиз (файл
.zip).
Установка:
- Распакуйте архив.
- Скопируйте содержимое папки
csgoиз архива в~/cs2_server/game/csgo/.
Структура должна выглядеть так:
csgo/
├── addons/
│ └── counterstrikesharp/
│ └── configs/
│ └── plugins/
│ └── SharpTimer/
├── maps/
Настройка прав доступа:
chmod -R 755 ~/cs2_server/game/csgo/addons/counterstrikesharp/configs/plugins/SharpTimer
5. Настройка конфигурации SharpTimer
Перейдите в папку конфигурации:
~/cs2_server/game/csgo/addons/counterstrikesharp/configs/plugins/SharpTimer/
Откройте файл sharptimer_config.json (или создайте его, если нет) и настройте основные параметры:
{
"EnableTimer": true,
"EnableRanking": true,
"EnableRecords": true,
"EnableStages": true,
"EnableCheckpoint": true,
"DatabaseType": "SQLite",
"DatabasePath": "addons/counterstrikesharp/configs/plugins/SharpTimer/data.db",
"WebUI": {
"EnableWebUI": false,
"WebUIPort": 8080
}
}
- DatabaseType: Для начала оставьте
SQLite. Для крупных проектов лучше настроитьMySQL. - EnableWebUI: Если включите, у вас будет веб-панель для просмотра рекордов.
6. Настройка сервера (server.cfg)
- Для корректной работы серфа нужно изменить физику игры.
- Откройте файл:
~/cs2_server/game/csgo/cfg/server.cfg
Добавьте или измените следующие строки:
// Автор Мониторинг игровых серверов Servermon.ru
// Общие настройки
hostname "Surf Server"
sv_password ""
sv_cheats 0
mp_freezetime 0
mp_roundtime 60
mp_roundtime_defuse 60
mp_maxrounds 0
mp_timelimit 0
mp_ct_default_melee "weapon_knife"
mp_ct_default_primary ""
mp_ct_default_secondary ""
mp_t_default_melee "weapon_knife"
mp_t_default_primary ""
mp_t_default_secondary ""
// Физика Серфа (Критически важно!)
sv_accelerate 5.5
sv_airaccelerate 100
sv_maxvelocity 3500
sv_staminajumpcost 0
sv_staminalandcost 0
sv_staminamax 0
sv_staminarecoveryrate 0
sv_enablebunnyhopping 1
// Настройки таймера и записи
sv_allow_voice_from_file 1
sv_deadtalk 1
7. Установка карт (Maps)
- Найдите карты в формате
.bspдля CS2 (например, на сайтах вроде surfworkshop или gamebanana). Убедитесь, что они портированы именно под CS2, карты от CS:GO не подойдут.
Загрузите файлы карт в папку:
~/cs2_server/game/csgo/maps/
Чтобы сервер автоматически запускал карту при старте, добавьте в server.cfg:
map surf_beginner_1
(Замените на имя вашей карты без расширения .bsp).
8. Запуск сервера
Для удобного управления используйте screen.
Создайте скрипт запуска start.sh в папке ~/cs2_server/:
nano ~/cs2_server/start.sh
Вставьте содержимое:
#!/bin/bash
cd ~/cs2_server/game/bin/linuxsteamrt64
./cs2 -usercon -strictportbind -ip 0.0.0.0 -port 27015 +tv_enable 0 -tickrate 128 +map surf_beginner_1 +exec server.cfg
Примечание: В CS2 параметр -tickrate формально устарел из-за sub-tick архитектуры, но многие плагины и серверы все еще его используют для совместимости. Если возникнут проблемы, попробуйте убрать его.
Дайте права на выполнение:
chmod +x ~/cs2_server/start.sh
Запустите сервер в сессии screen:
screen -S cs2_surf
./start.sh
- Чтобы выйти из сессии, не выключая сервер: нажмите
Ctrl + A, затемD. - Чтобы вернуться:
screen -r cs2_surf.
9. Настройка брандмауэра (Firewall)
Откройте необходимые порты для подключения игроков:
sudo ufw allow 27015/tcp
sudo ufw allow 27015/udp
sudo ufw allow 27020/tcp
sudo ufw allow 27020/udp
10. Дополнительные рекомендации
- Администрирование: Установите плагин администрирования для CSSharp, например, SimpleAdmin или CSSharp Admin, чтобы вы могли банить игроков и менять карты.
- База данных: Если планируете серьезный проект, настройте MySQL в конфиге SharpTimer. Это позволит хранить статистику надежнее и легче переносить её.
- Мониторинг: Установите веб-интерфейс SharpTimer (включив
EnableWebUI), чтобы игроки могли видеть свои рекорды в браузере. - Обновление: Регулярно проверяйте обновления SteamCMD (
app_update 730 validate) и плагинов, так как CS2 часто обновляется и может ломать совместимость.
Решение частых проблем
- Сервер не виден в списке: Проверьте порты (UFW) и убедитесь, что вы не используете параметр
-insecure. - Плагины не грузятся: Проверьте консоль сервера (
tail -f ~/cs2_server/game/csgo/logs/*.log). Часто проблема в версиях Metamod или CSSharp. Они должны быть актуальными. - Игроков кикает с ошибкой "Pure Server": Убедитесь, что у всех игроков и на сервере одинаковые файлы карт и нет сторонних модификаций, нарушающих целостность.