# Как запустить сервер SL:MP

> Как поднять сервер SL:MP на Windows или Linux: требования к клиенту и серверу, поля server.cfg, открытие UDP-порта 7777 в файрволе и на роутере, подключение через лаунчер.

- URL: https://pakulichev.com/wiki/slmp-server
- Author: Pakulichev (https://pakulichev.com/)
- Language: ru
- Updated: 2026-10-16
- Whole site for LLMs: https://pakulichev.com/llms.txt (index), https://pakulichev.com/llms-full.txt (full text)

[SL:MP](https://pakulichev.com/projects/sl-mp) – мультиплеер для GTA: San Andreas, который мы с SEVEN писали на Lua в 2020–2021 годах. Последняя сборка – 1.0.0-alpha.1 от 18 января 2021 года, дальше проект не развивался. Это альфа: многое работает, но рассчитывать на стабильность уровня SA:MP не стоит. Поднять сервер для себя и пары друзей при этом несложно.

## Что понадобится

Клиент и сервер – две разные вещи с разными требованиями.

| Сторона | Что нужно |
| --- | --- |
| Клиент (игрок) | Чистая GTA: San Andreas 1.0 US, ASI Loader и [MoonLoader](https://pakulichev.com/wiki/moonloader-lua-gta-sa), клиент SL:MP |
| Сервер | LuaJIT на Windows или Linux, сборка сервера SL:MP |
| Сеть | Открытый UDP-порт (по умолчанию 7777) |

SA:MP для клиента не нужен. Первые прототипы работали поверх него, но зависимость мы убрали ещё в 2020 году. Версия игры важна: MoonLoader и сам клиент рассчитаны на 1.0 US, на других версиях адреса в памяти не совпадут.

Сборки клиента и сервера (для Windows и Linux) выкладывались в [теме проекта на BLAST.HK](https://www.blast.hk/threads/62833/).

## Настройка server.cfg

Все параметры сервера лежат в `server.cfg`:

```ini
serverName = My SL:MP Server
version    = 1.0.0
gamemode   = freeroam
maxSlots   = 10
stream     = 200
address    = 0.0.0.0
port       = 7777
```

Что значит каждое поле:

- `serverName` – название, которое игроки увидят в лаунчере;
- `version` – строка версии сервера;
- `gamemode` – игровой режим, который сервер загрузит при старте;
- `maxSlots` – максимум игроков; в альфе рекомендую не больше 10;
- `stream` – размер зоны стрима: игроки дальше этой границы не синхронизируются, что экономит трафик;
- `address` – адрес, на котором сервер слушает; `0.0.0.0` значит «на всех сетевых интерфейсах»;
- `port` – UDP-порт, по умолчанию 7777, как у SA:MP.

Значения `serverName`, `gamemode` и `stream` в примере условные, подставьте свои. Если на той же машине уже работает SA:MP-сервер на 7777, одному из них придётся сменить порт.

Зону стрима не стоит раздувать. Чем она больше, тем больше игроков попадает в синхронизацию каждого клиента и тем больше пакетов уходит по сети.

## Открываем UDP-порт

SL:MP общается по UDP через собственный протокол SL:NET. Если порт закрыт, сервер запустится, вы даже сможете зайти на него с этой же машины, а все остальные будут видеть пустоту.

На Windows входящее правило добавляется через «Брандмауэр Защитника Windows» → «Дополнительные параметры» → «Правила для входящих подключений», либо одной командой из консоли администратора:

```bat
netsh advfirewall firewall add rule name="SL:MP" dir=in action=allow protocol=UDP localport=7777
```

На Linux с ufw:

```sh
sudo ufw allow 7777/udp
```

Дальше два частых случая:

1. Сервер дома за роутером. Нужно пробросить UDP 7777 на локальный IP компьютера (раздел Port Forwarding или «Виртуальные серверы» в настройках роутера). Если провайдер выдаёт серый IP за CGNAT, проброс не поможет – выручит VPS или VPN с белым адресом.
2. Сервер на VPS. Кроме системного файрвола, у многих хостеров есть свой сетевой фильтр в панели управления. Порт открывают и там.

Самая частая ошибка – открыть TCP вместо UDP.

## Запуск и подключение

Сервер стартует под LuaJIT из папки, где лежат его файлы и `server.cfg`. На Linux удобно держать его в `screen` или `tmux`, чтобы процесс не умирал при закрытии SSH-сессии. Перед тем как звать людей, проверьте вывод консоли и зайдите на сервер сами.

Игроки подключаются через лаунчер SL:MP. Он написан на Java с интерфейсом на ImGui и отвечает за список серверов и подключение. Для внешних игроков сервер должен быть доступен по вашему публичному IP (или домену) и порту из конфига.

Если сами вы заходите, а друзья нет, проблема почти наверняка в сети: порт, проброс, фильтр хостера.

## Чего ждать от альфы

В 1.0.0-alpha.1 есть синхронизация пешком и в транспорте (водитель и пассажиры), диалоги трёх типов, пикапы и виртуальные миры. Этого хватает, чтобы собрать небольшой фрирум или поэкспериментировать с собственным режимом на Lua. Для публичного сервера с десятками игроков проект не готов, и обновлений уже не будет. Если интересна сама сетевая часть, она живёт отдельно в библиотеке [SNET](https://pakulichev.com/projects/snet), а о том, как всё начиналось с LuaSocket, я написал в статье [«UDP в Lua»](https://pakulichev.com/wiki/luasocket-udp).

## FAQ

### Можно ли поставить maxSlots больше 10?

Технически значение задаётся любое, но в альфа-версии мы рекомендовали не больше 10 игроков: синхронизацию проверяли примерно на десятке человек рядом друг с другом. Больше – на свой страх и риск.

### Друзья не могут подключиться, хотя я захожу на сервер сам. Что проверить?

Скорее всего, закрыт порт. Нужно разрешить входящий UDP на порт из server.cfg (по умолчанию 7777) в файрволе системы и пробросить его на роутере. Правило для TCP не поможет: SL:MP работает только по UDP.

### Нужен ли на сервере установленный GTA: San Andreas?

Нет. Сервер – это Lua-код под LuaJIT, игра ему не нужна. GTA: SA 1.0 US с MoonLoader нужны только игрокам на клиенте.
