# SL:MP – Simple Lua Multiplayer для GTA: San Andreas

> SL:MP (Simple Lua Multiplayer) – открытый мультиплеер для GTA: San Andreas на Lua и MoonLoader без SA:MP. История, возможности, протокол SL:NET, сервер на LuaJIT для Windows и Linux, релизы 2020–2021.

- URL: https://pakulichev.com/projects/sl-mp
- Author: Pakulichev (https://pakulichev.com/)
- Language: ru
- Updated: 2026-10-15
- Whole site for LLMs: https://pakulichev.com/llms.txt (index), https://pakulichev.com/llms-full.txt (full text)

## Facts

- **Тип:** Мультиплеер для GTA: San Andreas
- **Язык:** Lua (MoonLoader, LuaJIT)
- **Клиент:** GTA: SA 1.0 US + MoonLoader
- **Сервер:** LuaJIT, Windows / Linux
- **Сеть:** UDP, протокол SL:NET
- **Начало:** август 2020
- **Последний релиз:** 1.0.0-alpha.1 (18.01.2021)
- **Авторы:** Pakulichev, SEVEN
- **Лицензия:** открытый исходный код

**SL:MP** (Simple Lua Multiplayer) – открытый мультиплеер для **GTA: San Andreas**, который мы с **SEVEN** разрабатывали в 2020–2021 годах. Он целиком написан на **Lua**: клиент работает как набор скриптов [MoonLoader](https://pakulichev.com/wiki/moonloader-lua-gta-sa) прямо в игре, сервер крутится на **LuaJIT** под Windows и Linux.


![Баннер SL:MP: Simple Lua Multiplayer, разработчики Pakulichev и Seven.exe](https://pakulichev.com/img/sl-mp/slmp-banner.png "Баннер проекта из темы на BLAST.HK, 2020")

## Как появился проект

Всё началось в **августе 2020 года** с эксперимента: получится ли синхронизировать игроков одним LuaSocket поверх SA:MP? Получилось, и эксперимент быстро превратился в отдельный проект.

Как он развивался:

1. Прототип поверх SA:MP, позиции игроков передавались через LuaSocket.
2. Потом зависимость от SA:MP убрали, и мультиплеер заработал на **чистой GTA: San Andreas 1.0 US**, где нужен только MoonLoader.
3. Протокол прошёл путь от сжатого JSON через сериализованные Lua-таблицы к собственному бинарному протоколу **SL:NET** поверх UDP.
4. Появились отдельный сервер на LuaJIT для Windows и Linux, лаунчер на Java и интерфейс на ImGui.

Тема проекта на BLAST.HK открылась **23 августа 2020 года** с пометкой «Эксклюзив», а первый публичный релиз вышел уже **25 августа**.

## Возможности

- синхронизация пешком в настраиваемой зоне стрима (в тестах – около 10 игроков рядом друг с другом);
- синхронизация в транспорте, для водителя и пассажиров;
- диалоги трёх типов: информационный, с полем ввода и со списком;
- пикапы, в том числе внутри интерьеров;
- виртуальные миры, чтобы разводить игроков по измерениям;
- примеры патчинга игры через `memory` и LuaJIT FFI.

## Архитектура

| Часть | Технологии | Назначение |
| --- | --- | --- |
| Клиент | Lua, MoonLoader, LuaJIT FFI | Работает в игре, отправляет и применяет синхронизацию |
| Сервер | LuaJIT, LuaSocket | Принимает игроков, рассылает данные, исполняет игровой режим |
| Протокол | UDP, SL:NET | Бинарные пакеты с собственным битстримом |
| Лаунчер | Java, ImGui | Список серверов и подключение |

Позже сетевую часть я вынес в отдельную библиотеку **[SNET](https://pakulichev.com/projects/snet)**.

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

Сервер настраивается файлом `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
```

Порт по умолчанию **7777**, как у SA:MP. Значения `serverName`, `gamemode` и `stream` в примере условные.

## Релизы

| Версия | Дата |
| --- | --- |
| 0.0.1-Alpha | 25.08.2020 |
| Alpha rev.2 – rev.4 | 26–28.08.2020 |
| RC5, RC6 | 29.08.2020 |
| RC7 | 30.08.2020 |
| RC8 | 01.09.2020 |
| RC9 | 06.09.2020 |
| 0.0.1-RC-X | 12.09.2020 |
| **1.0.0-alpha.1** | **18.01.2021** |

Только за первый месяц вышло десять сборок. Клиент версии 0.0.1-RC-X скачали более 200 раз, сервер (Windows и Linux) – около 170; у 1.0.0-alpha.1 больше 200 скачиваний клиента. В репозитории проекта больше 120 коммитов.

## Команда

Я был основным разработчиком (около 100 коммитов из 124) и выкладывал релизы. Соавтор проекта – **SEVEN**. Спасибо **imring**, **FYP** (автору MoonLoader) и **Akionka**, который написал кодировщик битстрима для SL:NET.

Время SL:MP и SL Team я до сих пор считаю одним из лучших за всё, что делал в моддинге GTA: San Andreas.

## FAQ

### Нужен ли SA:MP для SL:MP?

Нет. Первые эксперименты шли поверх SA:MP, но уже в 2020 году зависимость убрали: SL:MP работает на чистой GTA: San Andreas 1.0 US с MoonLoader.

### Кто разработал SL:MP?

SL:MP разрабатывали Pakulichev и SEVEN (команда SL Team). Благодарности в проекте указаны imring, FYP и Akionka – автору кодировщика битстрима для протокола SL:NET.

### Сколько игроков поддерживает SL:MP?

Количество слотов задаётся в server.cfg параметром maxSlots. На этапе альфа-тестов авторы рекомендовали не более 10 игроков; в тестах синхронизировалось около 10 игроков рядом друг с другом.

### Чем SL:MP отличается от SA:MP и MTA?

SA:MP и MTA – зрелые мультиплееры на C/C++ с собственными клиентами. SL:MP – экспериментальный проект, в котором и клиент, и сервер написаны на Lua: его можно читать, менять и расширять, не трогая нативный код.
