Добавить моды на сервер BeamMP - это одна папка и одна строка. Каждый мод на машину или карту кладётся в Resources/Client в виде исходного .zip, нераспакованным, и сервер отправляет его каждому игроку при входе. Для кастомной карты дополнительно нужен ключ Map в ServerConfig.toml, указывающий на info.json этой карты в формате /levels/<folder>/info.json, где <folder> - это имя папки внутри zip, а не название на странице загрузки. Перезапустите сервер, и всё готово.
О том, что это не бесплатно, обычно не предупреждают. Каждый байт в Resources/Client скачивает каждый игрок, у которого этого ещё нет, через исходящий канал вашего сервера, и только потом может поехать. Набор на 3 ГБ - это пять минут ожидания для нового игрока при хорошем соединении и потерянный игрок при плохом. Это руководство о том, как правильно выполнить простую часть и удержать под контролем дорогую: правила для zip, путь к карте, как размер набора превращается во время входа и трафик, как сохранять набор согласованным при обновлениях и как найти и убрать мод, который всё сломал.
Если сам сервер ещё не запущен, начните с руководства по серверу BeamMP: там разобраны ключ авторизации, остальные параметры ServerConfig.toml, порты и основы Lua.
Как BeamMP раздаёт моды#
В BeamMP нет интеграции с мастерской и нет менеджера модов на стороне сервера. Модель намеренно грубая: у сервера есть папка с zip-архивами, и подключившийся клиент должен в итоге загрузить ровно эти архивы.
При входе сервер сообщает клиенту, какие файлы он раздаёт. Лаунчер сравнивает этот список с тем, что у него уже есть, и скачивает всё недостающее или отличающееся через TCP-часть порта 30814. Только когда все файлы получены, игра загружает уровень и сажает игрока в него. Вернувшийся игрок, у которого уже есть идентичная копия, ничего не скачивает - поэтому первый вход медленный, а последующие нет, и поэтому изменение файла, даже небольшое, возвращает всех игроков на медленный путь.
Из такой конструкции следуют два вывода:
- Частичного набора не бывает. Игрок не может отказаться от мода, который ему не нужен. Если файл лежит в
Resources/Client, его обязан скачать каждый. - Серверная и клиентская стороны - разные миры.
Resources/Client- это контент для игроков. ВResources/Serverлежат Lua-плагины, которые никому не отправляются. Zip мода, положенный вResources/Server, ничего не делает, а Lua-плагин, положенный вResources/Client, будет разослан всем игрокам как бесполезная загрузка. Серверной стороне посвящено руководство по Lua-плагинам BeamMP.
Правила для zip в Resources/Client#
Моды BeamNG.drive - это zip-архивы со структурой папок игры в корне. Мод машины выглядит как vehicles/<model>/..., карта - как levels/<mapname>/..., а у некоторых модов рядом лежат папки ui/, art/ или lua/. BeamMP отправляет эти архивы как есть, так что действуют правила самой игры плюс одно собственное.
| Правило | Почему это важно |
|---|---|
Оставляйте .zip упакованным | Сервер отправляет архивы, а не папки |
| Структура в корне zip | vehicles/ или levels/ должны быть на верхнем уровне |
| Никакого zip внутри zip | Игра не заглядывает внутрь |
| Одна копия каждого мода | Две версии борются за одни и те же пути |
| Простые имена файлов | Пробелы и странные символы создают проблемы |
На первом правиле попадаются на любом хостинге с веб-файловым менеджером. Вы загружаете мод, видите архив, по привычке нажимаете «распаковать» - и теперь у вас папка, которую сервер не отправляет, а игроки не видят машину. Если вы случайно что-то распаковали, удалите папку и загрузите zip заново.
На втором правиле попадаются те, кто скачивает моды с форумов. Мод, выложенный как CoolCar_v2.zip, иногда содержит папку CoolCar_v2/, в которой настоящая папка vehicles/ лежит уровнем ниже, или содержит сам CoolCar.zip, потому что кто-то упаковал zip в zip. Ни то ни другое не загрузится. Откройте архив перед загрузкой: первым внутри должна быть vehicles, levels или другая папка верхнего уровня игры. Если это не так, перепакуйте архив. В Linux исправление выглядит так:
$ mkdir fix && cd fix$ unzip ../CoolCar_v2.zip$ lsCoolCar_v2$ cd CoolCar_v2 && zip -r ../../coolcar.zip . && cd ../..$ unzip -l coolcar.zip | headПоследняя команда выводит содержимое перепакованного архива; пути в выводе должны начинаться с vehicles/.
Модам на машины больше ничего не нужно. Как только zip лежит в Resources/Client, а сервер перезапущен, машина появляется в списке транспорта у всех, кто зашёл после перезапуска. Если нужно запретить игрокам создавать определённую модель, это задача для Lua в onVehicleSpawn, папка с модами такого выразить не может.
Кастомные карты и путь Map#
Ключ Map - это путь внутри виртуальной файловой системы игры, указывающий на info.json уровня. Для стандартного уровня это имя папки из базовой игры:
[General]Map = "/levels/west_coast_usa/info.json"Модифицированная карта работает так же. Zip кладётся в Resources/Client, а путь называет папку внутри levels/ в этом zip. Шаги по порядку:
- Загрузите zip карты в
Resources/Client. - Выведите содержимое архива и найдите строку, оканчивающуюся на
info.json, вlevels/. - Скопируйте имя этой папки в
Mapв точности, включая регистр. - Перезапустите сервер и сами зайдите на него, прежде чем кому-то сообщать.
$ unzip -l Resources/Client/some_map_v3.zip | grep info.json 812 2026-08-02 14:10 levels/somemap/info.jsonВ итоге получается Map = "/levels/somemap/info.json". Обратите внимание, как мало имя папки связано с именем zip: в some_map_v3.zip лежит somemap. Угадывание по странице загрузки - с этого начинается большинство сообщений вида «моя карта не загружается».
Есть три детали, на которых спотыкаются:
- Начальный слеш и `info.json` входят в значение.
levels/somemap,/levels/somemap/иsomemap- все неверны. Возьмите формат строки по умолчанию и меняйте только папку. - Регистр важен. Серверы BeamMP обычно работают на Linux, где
SomeMapиsomemap- разные папки. Используйте ровно то, что написано в архиве. - На сервере только одна карта. Все игроки находятся на уровне, указанном в
Map. Чтобы его сменить, нужно изменить файл и перезапустить сервер, что выбрасывает всех. Серверы со сменой карт делают это по расписанию с перезапуском или запускают второй сервер.
Некоторые карты зависят от отдельного пакета контента - общих ресурсов, которые используют несколько карт одного автора и которые публикуются отдельным zip. Обычно об этом сказано на странице карты. Если карта загружается с пропавшими текстурами, фиолетовыми поверхностями или без зданий, не хватает зависимости; её кладут в Resources/Client рядом с картой.
Что происходит при неверном пути, зависит от версии: одни сборки откатываются на уровень по умолчанию, другие оставляют клиентов на экране загрузки. В любом случае исправление одно: снова выведите содержимое zip и сравните посимвольно. Если карта слишком новая или слишком старая для версии игры у игроков, она обычно загружается частично или выдаёт ошибки во внутреннем журнале игры; это проблема версий, а не пути, и убрать zip в сторону - это докажет.
Размер модов, время входа и что терпят игроки#
Время входа - это арифметика. Первая загрузка равна размеру всего содержимого Resources/Client, делённому на меньшую из двух величин: сколько ваш сервер может отдать этому игроку и сколько может принять его соединение. Игроки, заходящие одновременно, делят исходящий канал сервера между собой.
| Размер набора | При 50 Мбит/с | При 10 Мбит/с |
|---|---|---|
| 300 MB | около 50 секунд | около 4 минут |
| 1 GB | около 3 минут | около 14 минут |
| 3 GB | около 8 минут | около 40 минут |
Это идеальные значения для одного игрока, у которого канал целиком в распоряжении; реальные загрузки идут медленнее. Цифры делают компромисс наглядным. Набор на 300 MB незаметен. Набор на 1 GB подходит постоянной компании, которая скачивает его один раз. Набор на 3 GB на публичном сервере означает, что большинство людей, нажавших на ваше название в списке серверов, уйдут до окончания загрузки, а некоторые попробуют позже и начнут с нуля.
Размер набора обычно определяет не то, что ожидают владельцы серверов. Один детализированный мод машины - это обычно от десятков до нескольких сотен мегабайт, а самые тяжёлые - карты: большая кастомная карта сама по себе может весить заметно больше гигабайта. Размеры сильно различаются у разных авторов, поэтому проверяйте zip, а не полагайтесь на правило большого пальца:
$ du -h Resources/Client/*.zip | sort -h$ du -sh Resources/ClientЗапускайте это до и после каждого изменения. Список, отсортированный по размеру, показывает, где сосредоточен вес, и очень часто это одна карта и два огромных набора машин, которые вместе дают большую часть общего объёма.
Практические пределы, которые работают:
- Публичные серверы: держите общий размер примерно до 1 GB и указывайте его в описании сервера или в тексте
Description, чтобы люди знали, на что соглашаются. - Частные группы: размер важен меньше, потому что каждый скачивает один раз. Попросите людей зайти накануне вечером перед мероприятием, чтобы загрузка осталась позади.
- Серверы для мероприятий: одна карта, машины для мероприятия и больше ничего. Гонке не нужны сорок запасных машин в наборе.
Если у вас возникает соблазн добавить «несколько популярных машин», чтобы сервер был привлекательнее, сначала посмотрите на цифры входов. Небольшой быстрый сервер обычно заполняется; большой медленный обычно пропускают.
Трафик: кто платит за загрузки#
Каждая загрузка мода уходит через исходящий канал сервера. Умножьте набор на число новых игроков, и цифра быстро становится большой. Публичный сервер с набором на 2 GB и пятьюдесятью новыми игроками за неделю отправляет около 100 GB трафика модов - сверх обычного состояния машин. После перезапуска, который меняет файл, каждый постоянный игрок снова становится новичком.
Сверху добавляется внутриигровой трафик, который растёт как число игроков, умноженное на число машин, потому что каждый клиент получает обновления по каждой машине. Трафик игрового сервера на одного игрока даёт метод оценки; для BeamMP полезный вывод в том, что MaxCars влияет и на производительность клиента, и на трафик.
Всплеск важен не меньше, чем общий объём. Десять человек, зашедших вместе после перезапуска, одновременно тянут набор и делят между собой исходящий канал, поэтому у каждого загрузка медленнее, чем была бы в одиночку. Затем игроки получают тайм-ауты, пробуют снова и добавляют нагрузку. Если вы используете плановые перезапуски, ставьте их на тихий час, а если пришлось менять набор, делайте это один раз, а не в пять мелких шагов за вечер.
Если хостинг не тарифицирует по гигабайтам, ничего из этого не стоит лишних денег, но канал всё равно общий, а трафик и справедливое использование объясняет, что на практике значит «безлимитный». Важна и дисковая сторона: тарифы BeamMP в RE:NODE - от 10 GB NVMe на самом маленьком до 30 GB на самом большом, и набор вместе с резервными копиями должен поместиться.
Как поддерживать согласованность набора модов#
Большинство проблем с модами в BeamMP - это проблемы версий: мод обновил автор, патч игры изменил то, на что опирался мод, или в наборе одновременно лежат две версии одного мода. Небольшая дисциплина позволяет избежать почти всего этого.
Держите по одной копии каждого мода. Обновляя мод, удаляйте старый zip перед загрузкой нового. Два архива, оба содержащие vehicles/coolcar/, перезаписывают друг друга в порядке, который вы не контролируете, и в итоге получается машина, у которой то новые детали, то нет. Это та же проблема, которую порядок загрузки модов описывает для других игр, с той разницей, что в BeamNG нет порядка загрузки, которым можно управлять - просто не должно быть дубликатов.
Указывайте версии в именах файлов. coolcar_v2.1.zip, а не coolcar.zip. Когда что-то ломается, сразу видно, что изменилось с прошлой недели.
Ведите манифест. Обычный текстовый файл рядом с сервером или в вашем Discord со списком каждого zip, его версии, размера и источника. Именно к нему вы обратитесь, когда выйдет обновление игры и придётся решать, какие моды проверять первыми.
somemap_v3.zip 1.4 GB map, requires somemap_assetssomemap_assets.zip 310 MB dependency of somemapcoolcar_v2.1.zip 180 MB vehiclepickup_pack_v1.0.zip 95 MB vehicleУчитывайте локальные моды игроков. Если у игрока в обычной папке модов BeamNG лежит собственная копия мода другой версии, чем у вас, возможно странное поведение. BeamMP хранит скачанные файлы отдельно от собственных модов игрока, но то, как они взаимодействуют, менялось между версиями лаунчера. Когда один игрок сообщает о проблеме, которой нет у остальных, попросите его отключить локальные моды и зайти снова, прежде чем трогать сервер.
Обновляйтесь осознанно. После выхода релиза BeamNG.drive игроки обновляют игру, BeamMP следует за ней, и некоторые моды машин и карт перестают работать, пока авторы не подтянутся. Не гонитесь за обновлениями в тот вечер, когда люди ждут возможности поехать. Сначала сделайте резервную копию Resources/Client и ServerConfig.toml, обновите сервер, затем возвращайте моды контролируемо. Общий порядок действий описывает что делать, когда обновление мода всё ломает.
Как найти и убрать сломанный мод#
Сломанный мод BeamMP проявляется на стороне игроков, а не сервера. Сервер не загружает моды, он их только отправляет, поэтому консоль сервера обычно выглядит чистой, а игроки видят машину, которая не создаётся, транспорт с пропавшими деталями, окно с ошибкой Lua в игре, уровень, который никак не догружается, или вылет на рабочий стол.
Самая быстрая диагностика - деление пополам, и она работает потому, что состояния мира, которое можно повредить, нет:
- Остановите сервер и переместите всё из
Resources/Clientв соседнюю папку, напримерResources/Disabled. - Запустите сервер со стандартной картой и убедитесь, что чистый вход работает.
- Верните половину модов, перезапустите, проверьте.
- Если проблема вернулась, виновник в этой половине. Если нет - в другой. Повторите с подозрительной половиной.
При двадцати модах это около пяти перезапусков. Если карта под подозрением, включите её в первую проверяемую половину и на время проверки машин верните в Map стандартный уровень, чтобы проблема карты не скрывала проблему машины.
Второй источник данных - игроки. Игра пишет журнал beamng.log в пользовательской папке, и ошибка ближе к его концу обычно называет папку мода. Попросите одного из пострадавших игроков прислать его, а не описывать, что он видел.
Чтобы убрать мод насовсем:
- Удалите zip из
Resources/Client, а не просто переименуйте - переименованный.zipвсё равно остаётся zip и может по-прежнему отправляться. - Если убрана карта, верните в
Mapстандартный уровень или другую карту, которая у вас осталась. - Перезапустите сервер.
- Обновите манифест и сообщите игрокам, чтобы никто не продолжал сообщать о машине, которой больше нет.
Перемещение файлов в соседнюю папку вроде Resources/Disabled - безопасный способ отложить мод, не удаляя его; сервер читает только те папки, которые ему указано читать. Не оставляйте отключённые моды внутри Resources/Client с изменённым расширением в расчёте, что на любой версии они будут проигнорированы.
Прежде чем добавлять замену, подумайте, откуда она взялась. Каждый zip, который вы раздаёте, запускается на чужих компьютерах, а моды машин могут содержать Lua. Используйте моды от авторов и сайтов, которые можете назвать, и относитесь с подозрением к моду, который появился только как файл в чате. Подробно об этом говорят вредоносные плагины и моды и как держать модифицированный сервер чистым.
Загрузка наборов и резервные копии#
Загрузка многогигабайтного набора через браузер работает, но загрузка, зависшая на 90%, - это потерянное время. Для всего, что больше нескольких сотен мегабайт, используйте SFTP: в большинстве клиентов он умеет докачивать и позволяет загрузить сразу целый набор zip. Подключение описано в SFTP и файловом менеджере; в RE:NODE у каждого сервера свои учётные данные SFTP, а браузерный файловый менеджер нужен для быстрых правок ServerConfig.toml.
Поскольку сервер не хранит состояния мира, резервная копия BeamMP - это копия настройки, и о ней легко забыть, пока плохое обновление не заставит восстанавливать всё по памяти. Что стоит сохранять:
ServerConfig.toml, где хранятся выбор карты и настройки.Resources/Server- ваши Lua-плагины, которые заново скачать нельзя.Resources/Client- точный набор версий модов, которые в последний раз работали вместе, или хотя бы манифест со списком.
Большие наборы делают полные копии тяжёлыми, поэтому разумно разделить: копия конфигурации и плагинов перед каждым изменением и полная копия вместе с Resources/Client, когда набор в заведомо рабочем состоянии. В RE:NODE игровые тарифы включают слоты резервных копий, которые можно запускать по требованию или по расписанию и восстанавливать одной кнопкой; они хранятся вне машины, а элементы управления описывает руководство по резервным копиям панели. Резервные копии, которые действительно восстанавливаются - напоминание проверить хотя бы одну.
FAQ#
Нужно ли игрокам самим устанавливать моды?
Нет. Всё, что лежит в Resources/Client, лаунчер BeamMP скачивает автоматически при входе игрока и загружает на время сессии. Игрокам нужны только BeamNG.drive и BeamMP. Просьба установить моды вручную обычно только ухудшает ситуацию, потому что их ручная копия может оказаться другой версии.
Можно ли держать две карты на одном сервере BeamMP?
Можно загрузить несколько zip с картами, но используется только та, что указана в Map, и все находятся на ней вместе. Остальные всё равно отправляются каждому игроку, так что неиспользуемые карты - чистая стоимость загрузки. Держите только ту карту, которая запущена, и переключайтесь, изменяя Map и перезапуская сервер.
Почему вместо моей кастомной карты загружается уровень по умолчанию?
Путь Map не соответствует существующему уровню. Выведите содержимое zip, найдите папку в levels/, где лежит info.json, и запишите её как /levels/<folder>/info.json с тем же регистром. Проверьте, что zip по-прежнему упакован и лежит прямо в Resources/Client.
Поддерживает ли BeamMP Steam Workshop или внутриигровой репозиторий?
Для серверов нет. Сервер раздаёт только zip из собственной папки Resources/Client. Чтобы использовать мод из репозитория BeamNG, скачайте zip сами и загрузите его, записав версию.
Почему вернувшимся игрокам приходится скачивать всё заново?
Потому что изменился файл. Лаунчер скачивает любой файл, которого нет или который отличается от имеющейся копии. Замена, перепаковка или обновление zip считаются изменением, поэтому вносите изменения в набор разом, а не по одному.
Насколько большим может быть набор модов BeamMP?
Жёсткого предела, кроме диска, нет, но практический предел задаёт время входа. До примерно 1 GB - комфортно для публичного сервера; частные группы могут позволить больше, потому что каждый скачивает один раз. Измеряйте командой du -sh Resources/Client и сообщайте игрокам общий размер.


