MAATRIX GAMES / Блог / Как поднять сервер SA-MP: пошаговая инструкция

Как поднять сервер SA-MP: пошаговая инструкция

MAATRIX GAMES

Если гуглил «как поднять SA-MP сервер» и попадал на гайды десятилетней давности с битыми ссылками на файлы — это нормально, сам через это проходил. SA-MP (San Andreas Multiplayer) — старый мод для GTA San Andreas, который живёт своей отдельной жизнью уже больше пятнадцати лет, и часть материалов в сети просто устарела вместе с доменами, откуда раньше качали сервер. Разберём по шагам, где реально взять файлы, как их настроить и запустить так, чтобы сервер пережил перезагрузку VPS.

Системные требования: сколько ресурсов реально нужно

SA-MP — один из самых нетребовательных мультиплеерных модов, которые вообще встречаются в аренде серверов. Сам движок эмулирует только сетевой протокол и синхронизацию игроков, никакой честной физики или рендера на сервере не происходит — это не GTA-клиент, а отдельный демон.

Минимум, с которого можно стартовать — 1 ГБ RAM, этого достаточно для небольшого DM-режима или тестового гейммода на 10-20 слотов. Дальше нагрузка растёт в первую очередь не от числа игроков, а от сложности Pawn-скрипта гейммода:

СценарийRAMvCPUИгроков
DM/FFA, простой гейммод1 ГБ1до 30
RP-гейммод (LS-RPG-подобный) без БД2 ГБ1-2до 60
RP с MySQL-плагином и большой экономикой2-4 ГБ260-100+
Крупный проект с NPC-ботами4 ГБ+2-4100+

Это ориентир, а не результат замера — конкретный расход памяти сильно зависит от того, сколько таймеров, циклов и SQL-запросов крутит гейммод на каждом такте. RP-скрипты на базе SA-MP:MP или самописных фреймворков с активным использованием y_ini/MySQL могут заметно выйти за эти цифры при большом онлайне. Диск в SA-MP почти не нагружается — сервер занимает считаные сотни мегабайт вместе со скриптами, SSD тут не критичен, но лишним не будет для быстрого старта.

Важный нюанс: официальный бинарник сервера — 32-битный, даже на современных 64-битных дистрибутивах. Про это ниже отдельно, это частая причина, почему сервер вообще не запускается.

Скачивание сервера: почему не через Steam и не через SteamCMD

Первое, что нужно понять: SA-MP — это НЕ Steam-приложение и не DLC к GTA San Andreas в Steam. Это отдельный сторонний мод, который распространяется собственными архивами через официальный сайт и сообщество, поэтому steamcmd +app_update тут не сработает — такого app id просто не существует.

Официальный источник — sa-mp.com и его форум, но у проекта давняя история нестабильности: разработка ядра фактически остановилась на версии 0.3.7 ещё в середине 2010-х, а сам сайт периодически уходил в даунтайм и переезжал. Прежде чем качать что попало по первой ссылке из поиска, стоит свериться с актуальным адресом на официальном форуме или в известных community-репозиториях (например, архивы на GitHub, которые хранят оригинальные release-архивы 0.3.7-R1/R2 с контрольными суммами).

Для Linux нужен архив вида samp037svr (иногда встречается под именем samp03zsvr для более старых билдов) — внутри лежит:

  • samp03svr — бинарник сервера;
  • samp-npc — бинарник для ботов (NPC);
  • announce — утилита для регистрации в списке серверов;
  • server.cfg — конфиг;
  • папки gamemodes/, filterscripts/, scriptfiles/, plugins/, npcmodes/.

Скачиваем и распаковываем на VPS:

mkdir -p ~/sampserver && cd ~/sampserver
wget https://files.sa-mp.com/samp037svr.tar.gz
tar -xvzf samp037svr.tar.gz
chmod +x samp03svr samp-npc announce

Если конкретная ссылка на files.sa-mp.com не отвечает — это тот самый случай нестабильности официального хостинга, ищи актуальное зеркало на форуме или в проверенных community-архивах. Отдельно стоит упомянуть open.mp — активно развивающийся форк-преемник, совместимый с гейммодами SA-MP на уровне Pawn-скриптов, но с живой поддержкой и без 32-битных костылей. Если классический SA-MP кажется слишком архаичным для нового проекта — присмотрись к нему, но в этом гайде разбираем именно оригинальный SA-MP.

Поднять сервер SA-MP за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Структура файлов и базовая конфигурация server.cfg

Конфиг сервера — простой текстовый файл server.cfg в корне, без YAML и вложенности, читается построчно при старте. Открываем и правим:

nano ~/sampserver/server.cfg

Минимальный рабочий набор:

echo Executing Server Config...
lanmode 0
rcon_password смени_на_сложный_пароль
maxplayers 50
port 7777
hostname Мой первый SA-MP сервер
gamemode0 grandlarc 1
filterscripts 
announce 1
query 1
weburl sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]

Разберём то, что чаще всего путает новичков:

  • rcon_password — обязательно смени со значения по умолчанию, иначе сервер за пару дней найдут ботом-сканером и завалят rcon-командами (кик всех игроков, смена гейммода и так далее — rcon даёт полный доступ).
  • gamemode0 grandlarc 1 — основной гейммод и число повторов после завершения раунда (для большинства постоянных RP/FreeRoam-режимов ставят большое число, например 999999, чтобы не перезапускался). grandlarc — демо-гейммод, который идёт в комплекте с сервером, для реального проекта тут будет имя твоего .amx-файла без расширения.
  • filterscripts — список дополнительных скриптов через пробел (например filterscripts admin gates), они грузятся поверх основного гейммода и не сбрасываются при gmx (перезапуске гейммода).
  • announce 1 — регистрирует сервер в общем списке серверов SA-MP, чтобы его было видно через встроенный браузер серверов в игре.
  • query 1 — включает ответы на запросы статуса (для мониторинга и списка серверов); без него внешние трекеры не увидят онлайн.
  • stream_distance и stream_rate — дистанция и частота стриминга объектов/игроков клиентам, дефолтные значения обычно не трогают без явной причины (агрессивное занижение экономит трафик, но игроки видят объекты позже).

Запуск сервера через samp03svr

Прежде чем запускать, на свежем 64-битном Linux почти гарантированно словишь ошибку вида error while loading shared libraries: libstdc++.so.6: cannot open shared object file — потому что samp03svr собран как 32-битный бинарник. Ставим совместимость:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32stdc++6 lib32z1 lib32gcc-s1

На CentOS/RHEL-семействе это будет glibc.i686 и libstdc++.i686 через yum/dnf. Дальше запускаем из директории сервера:

cd ~/sampserver
./samp03svr

Если всё правильно настроено, в консоли появится баннер SA-MP и строка про успешную загрузку гейммода. Сервер занимает терминал переднего плана — для постоянной работы нужен screen или tmux, иначе процесс умрёт вместе с закрытием SSH-сессии:

screen -S samp
cd ~/sampserver && ./samp03svr

Отключиться от сессии без остановки сервера — Ctrl+A, потом D. Вернуться обратно — screen -r samp. Лог сервера пишется в server_log.txt в той же папке — туда стоит смотреть в первую очередь, если сервер падает или гейммод не грузится (например, при ошибке компиляции .amx).

Pawn-скрипты: компиляция и подключение гейммода

Логика сервера пишется на языке Pawn и компилируется в байт-код .amx, который и подключается через gamemode0 в конфиге. В архиве сервера уже есть компилятор pawncc (для Linux — бинарник без расширения, тоже 32-битный, права на исполнение та же история, что и с samp03svr):

chmod +x pawno/pawncc
cd gamemodes
../pawno/pawncc mygamemode.pwn

На выходе рядом с .pwn появится mygamemode.amx — именно его имя (без расширения) прописывается в gamemode0 mygamemode 1. Если компиляция падает с ошибками про неизвестные функции — почти всегда не хватает инклюда: базовый a_samp.inc идёт в комплекте, но популярные фреймворки (streamer, sscanf, ZCMD, MySQL) требуют отдельно скачанных .inc-файлов в папку pawno/include/.

Готовые гейммоды под SA-MP искать стоит по актуальным community-репозиториям (SA-MP форум, GitHub) — за годы жизни мода накопилось множество открытых RP- и DM-скриптов разного качества, от простых DM-заготовок до крупных RP-фреймворков вроде наследников старого Los Santos RPG. Перед использованием чужого гейммода в проде всегда стоит прочитать код хотя бы по диагонали — часть старых скриптов содержит уязвимости SQL-инъекций через необработанный пользовательский ввод, это давняя болячка экосистемы.

Filterscript-ы компилируются точно так же и кладутся в filterscripts/, а их имена (без .amx) перечисляются в строке filterscripts конфига через пробел.

Порты и firewall

Дефолтный порт SA-MP — 7777, и в отличие от многих движков на движке Source, здесь один и тот же UDP-порт используется и для игры, и для query-запросов (списки серверов, мониторинг), отдельный query-порт в современных версиях не нужен.

На VPS с белым IP (а это почти всегда так при прямой аренде, без NAT) проброс — это открытие порта на firewall самой машины:

sudo ufw allow 7777/udp
sudo ufw allow 7777/tcp
sudo ufw reload

TCP на 7777 в SA-MP используется реже (в основном сам движок работает поверх UDP), но некоторые панели мониторинга и веб-статусы дергают его через TCP-запрос, поэтому лучше открыть оба. Если поднимаешь несколько серверов на одном хосте, каждому нужен свой порт (7778, 7779 и так далее) — задаётся строкой port в server.cfg.

Проверить, что сервер реально слушает порт:

ss -tulnp | grep 7777

Если строки нет — сервер либо не стартовал (смотри server_log.txt), либо упал на этапе загрузки гейммода из-за ошибки в .amx.

Автозапуск через systemd

Ручной запуск в screen-сессии работает, но после ребута VPS или падения процесса сервер сам не поднимется. Заводим systemd-юнит:

sudo nano /etc/systemd/system/samp.service

Содержимое:

[Unit]
Description=SA-MP Dedicated Server
After=network.target

[Service]
User=samp
WorkingDirectory=/home/samp/sampserver
ExecStart=/home/samp/sampserver/samp03svr
Restart=on-failure
RestartSec=10
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Как и с большинством игровых серверов на VPS, лучше не гонять процесс под root — заведи отдельного пользователя samp и держи файлы сервера в его домашней директории. Регистрируем юнит:

sudo systemctl daemon-reload
sudo systemctl enable --now samp.service
sudo systemctl status samp.service

Логи после этого удобнее смотреть через journalctl -u samp -f — так видно и историю до текущей SSH-сессии, а не только вывод screen. Важный нюанс: samp03svr по умолчанию читает конфиг и стартует в интерактивном консольном режиме — под systemd это работает штатно (демон не требует TTY для чтения server.cfg), но rcon-команды из консоли сервера в таком режиме недоступны, администрировать нужно будет через игровой rcon (F8 в клиенте) или через фильтрскрипт с админ-командами.

Поднять сервер SA-MP за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Почему сервер не запускается с ошибкой про libstdc++.so.6?

Не хватает 32-битных библиотек совместимости — samp03svr собран как 32-битный бинарник даже на 64-битных системах. Ставь lib32stdc++6 и связанные пакеты, как описано в разделе про запуск.

Нужен ли клиент GTA San Andreas на самом сервере?

Нет, сервер — это отдельный демон, который эмулирует сетевой протокол. Игра нужна только клиентам, которые подключаются.

Что делать, если официальный сайт sa-mp.com недоступен?

Такое случается — у проекта давняя история нестабильного хостинга. Ищи актуальные зеркала архива 0.3.7 на форуме сообщества или в проверенных GitHub-репозиториях, сверяя контрольные суммы, если они указаны.

Чем open.mp отличается от классического SA-MP?

Это активно развивающийся форк-преемник с современным ядром и обратной совместимостью Pawn-гейммодов, но собственным, более стабильным дистрибутивом сервера. Если запускаешь новый проект с нуля, стоит присмотреться отдельно.

Почему после gmx (рестарт гейммода) сбрасываются переменные?

Это штатное поведение SA-MP — рестарт гейммода перезагружает весь скрипт с нуля. Данные, которые должны переживать рестарт (аккаунты, инвентарь), нужно хранить во внешнем хранилище — файлах через y_ini/dini или в MySQL через соответствующий плагин.