К содержимому
NodeMP

Одна карта. Много машин.

NodeMP — мультиплеер для BeamNG.drive: свои серверы, честная синхронизация машин и плагины на Lua. Поставьте лаунчер, выберите сервер и удерживайте Hold to play.

3 сервера · 0 игроков сейчас в игре

Начало работы

Три шага до первого заезда

  1. BeamNG.drive в Steam

    Нужна игра версии 0.39.4.0, запущенная хотя бы раз: первый запуск создаёт папку пользователя, куда лаунчер поставит клиентский мод.

  2. Скачать NodeMP

    Лаунчер для Windows ставится для текущего пользователя, без прав администратора, и сам скачивает и обновляет клиентский мод перед каждым подключением.

    СкачатьВерсия 1.1.13 · 4,5 МБ
  3. Войти или Test Drive

    С аккаунтом у вас постоянное имя, которое подтверждает директория. Без него — режим Test Drive со случайным гостевым именем; часть серверов гостей не пускает.

Что это

Платформа, а не просто мод

Кадр из BeamNG.drive: вид сервера с несколькими игроками

Серверы

Свой сервер — ваши правила

Node-Server работает на Linux, Windows и в Docker: одна программа, один порт, server.toml. Ключ сервера с этого сайта добавляет его в общий список; без ключа сервер всё равно работает — к нему подключаются по адресу.

Кадр из BeamNG.drive: две машины в столкновении

Синхронизация

Честная игра по умолчанию

TLS 1.3, одноразовые билеты на вход, имена, подтверждённые директорией. Перед каждым подключением лаунчер проверяет файлы игры настолько строго, насколько просит сервер — вплоть до сверки всей установки и папки пользователя с эталоном чистой игры.

Кадр из BeamNG.drive: чат и интерфейс плагина в игре

Плагины

Lua на сервере и в игре

Ресурс — папка с resource.toml: серверная часть на Lua или JavaScript, клиентская уходит игрокам при входе и выполняется внутри BeamNG. События, команды чата, таймеры, HTTP и PostgreSQL — один API node.

Сейчас

Живая статистика

—
серверов онлайн
—
игроков онлайн
—
пик за сутки

Разработчикам

Плагин — это папка и файл на Lua

Серверная часть подписывается на события и отвечает игрокам, клиентская выполняется внутри BeamNG с полным доступом к игре. Ниже — настоящий API: подписка на событие, запрет спавна, команда чата. Строки в чат идут через пример-ресурс chat из архива сервера.

resources/welcome/server/main.lua
node.on("playerJoined", function(player)    player:tell("Welcome, %s", player.name)    node.log("%s joined from %s", tostring(player), player.ip)end)node.on("vehicleSpawnRequest", function(player, id, config)    if player.vehicleCount >= 2 then        return false, "two cars per player"    endend)node.commands.add("online", function(player, args, raw)    player:tell("%d players online", node.players.count())end)