SNET – сетевой интерфейс для Lua поверх UDP

Сетевой модуль для Lua, выросший из мультиплеера SL:MP: UDP с подтверждением доставки и приоритетами пакетов.

Автор: Проект: 2020Обновлено: 1 мин чтения

SNET – сетевой модуль для Lua, который работает поверх UDP через LuaSocket. Гайд по нему я опубликовал на BLAST.HK 24 сентября 2020 года. Библиотека выросла из сетевой части мультиплеера SL:MP.

Логотип SNET
Логотип SNET из гайда на BLAST.HK

Что он добавляет к UDP

UDP быстрый, но ничего не гарантирует: пакеты теряются и приходят не по порядку. Игре нужна низкая задержка, но и терять ключевые события нельзя. Поэтому в SNET есть подтверждение доставки для важных пакетов и приоритеты: что-то можно отправить «как получится», а что-то должно дойти обязательно. Ограничения на число клиентов в самой библиотеке нет.

Где работает

  • LuaJIT на Windows и Linux – для серверов;
  • MoonLoader – для клиентских скриптов в GTA: San Andreas.

Протокол одинаковый на клиенте и на сервере, так что сетевой мод можно написать целиком на Lua, будь то чат, синхронизация или свой мультиплеер.

Порты

Сообщество сделало порт на Node.js (node-snet), был ещё экспериментальный порт на Go.

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

Как SNET связан с SL:MP?

SNET вырос из сетевой части мультиплеера SL:MP – в описании проекта SL:MP прямо назван прародителем SNET.

Есть ли порты SNET на другие языки?

Да, сообщество сделало порт на Node.js (node-snet), также существовал экспериментальный порт на Go.