MAATRIX GAMES / Блог / Necesse: установка модов на сервер

Necesse: установка модов на сервер

MAATRIX GAMES

Подписался в Steam Workshop на десяток модов, зашёл на сервер — а там будто ничего не изменилось. Знакомая история: Necesse не тянет моды с клиента на сервер и обратно, так что одной подпиской в Workshop задача не решается. Разберём по шагам, как реально прописать моды в dedicated-сервер — через SteamCMD в headless-режиме или руками, — и как не словить рассинхрон версий, из-за которого игроки просто не смогут зайти.

Как устроены моды в Necesse

Моды для Necesse — это .jar-файлы: скомпилированный код на Java плюс mod.info в корне архива (там как минимум название, автор и версия игры, под которую собран мод) и папка resources с текстурами, звуками и локализацией. Основной канал распространения — Steam Workshop, привязанный к App ID клиентской игры 1169040. Не путайте его с App ID 1169370 — это отдельная запись для dedicated-сервера, через которую вы ставите сам сервер, но она не связана со страницей Workshop напрямую.

Ключевой нюанс, который ломает ожидания новичков: подписка на мод в Steam Workshop работает только для клиента игры. На сервер она никак не влияет — Necesse не синхронизирует список модов между сервером и игроками автоматически. Файлы .jar нужно физически положить в папку модов сервера, отдельно от того, что скачал себе игрок.

Подписка на моды и поиск Workshop ID

Даже если вы будете ставить моды на сервер вручную, Workshop ID мода всё равно понадобится — как минимум чтобы понимать, какую версию мода искать и на что подписывать игроков.

  1. Откройте страницу Workshop для Necesse и найдите нужный мод через поиск или фильтры по популярности.
  2. Нажмите «Подписаться» (Subscribe) — Steam скачает .jar в клиентскую папку мода при следующем запуске игры.
  3. Скопируйте числовой ID мода из адресной строки: в ссылке вида https://steamcommunity.com/sharedfiles/filedetails/?id=3574352062 идентификатор — это 3574352062 в конце URL.

Держите список используемых ID под рукой (простой текстовый файл или закреплённое сообщение в Discord сообщества) — он пригодится и для обновления сервера, и чтобы новые игроки быстро подписались на тот же набор.

Поднять сервер Necesse за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Установка модов на сервер через SteamCMD

На headless VPS у сервера нет Steam-клиента с кнопкой «Подписаться», поэтому мод скачивается напрямую через SteamCMD командой workshop_download_item. Важно: анонимный логин (+login anonymous), которым вы ставили сам сервер, для Workshop не годится — Steam отдаёт контент мастерской только аккаунтам, реально владеющим игрой.

steamcmd +login "ваш_steam_логин" \
  +force_install_dir ~/necesse \
  +workshop_download_item 1169040 3574352062 \
  +quit

При первом запуске SteamCMD спросит пароль и, если включена двухфакторка, код Steam Guard — это нормально, интерактивно вводите один раз. Обратите внимание на App ID в команде: это 1169040 (клиентская игра, к которой привязан Workshop), а не 1169370 сервера.

Скачанный .jar окажется в ~/necesse/steamapps/workshop/content/1169040/3574352062/. Сам сервер моды из этой папки не читает — файл нужно скопировать в папку модов сервера:

mkdir -p ~/necesse/mods
cp ~/necesse/steamapps/workshop/content/1169040/3574352062/*.jar ~/necesse/mods/

Повторите workshop_download_item для каждого ID из вашего списка. Если арендуете сервер у хостинга с готовой панелью — там обычно есть поле вроде «Steam Workshop Mods», куда просто вставляются ID через запятую, а панель сама прогоняет эти же команды SteamCMD за вас.

Логин личным Steam-аккаунтом на арендованной машине — не самый приятный момент с точки зрения безопасности, даже с учётом того, что права доступа у вас к своей же VPS. Если не хочется хранить сессию личного аккаунта на сервере, есть вариант проще — следующий пункт.

Ручная установка без Steam-логина на сервере

Скачайте мод на своём ПК как обычный игрок — подпишитесь в Workshop, запустите Necesse один раз, чтобы клиент подтянул файлы. Готовый .jar найдётся в клиентской папке модов:

ОСПуть
Windows%AppData%\Necesse\mods\
Linux~/.config/Necesse/mods
macOS~/Library/Application Support/Necesse/mods/

Дальше просто копируете файл на сервер по SFTP/SCP — без входа в Steam на самой машине:

scp ./ИмяМода.jar necserver@ваш-vps-ip:~/necesse/mods/

Чтобы сервер вообще заметил папку mods, при запуске нужен флаг -mod <путь> либо -localdir, который заставляет сервер брать и сохранения, и моды из своей рабочей директории (тот же флаг, что описан в статье про первый запуск сервера). Обновлённая строка запуска в systemd-юните:

ExecStart=/home/necserver/necesse/StartServer-nogui.sh -world friends_world -owner Telim -localdir

После правки — sudo systemctl restart necesse. Моды подхватываются только при старте процесса: докинули .jar в папку, а сервер не перезапустили — считайте, что мода нет.

Синхронизация версий: сервер и клиенты должны совпадать

Это главный источник проблем с модами в Necesse. Раз клиент и сервер не обмениваются списком модов автоматически, у каждого игрока должен стоять ровно тот же набор .jar-файлов, что и на сервере — то же название, та же версия. Разошлись версии хотя бы одного мода — игрок получает ошибку подключения или несовпадение контента вместо нормального коннекта.

Что помогает на практике:

  • Зафиксируйте список модов и их версий в одном месте (текстовый файл, закреплённое сообщение) и раздайте игрокам вместе с ID сервера.
  • Попросите игроков отключить автообновление модов в Steam Workshop (в настройках подписки), если вы сами не готовы обновлять сервер день в день с автором мода.
  • Обновляйте сервер и просите игроков обновляться синхронно, в одно окно — а не «кто когда вспомнил».

Отдельно: mod.info внутри .jar содержит поле с версией игры, под которую собран мод. Если Necesse обновилась, а автор мода ещё не выпустил патч — мод может отказаться грузиться или вести себя нестабильно уже независимо от того, что настроено на вашем сервере.

Автообновление модов и типичные ошибки

Для регулярного обновления модов на голой VPS проще всего повесить на cron повторный вызов workshop_download_item по вашему списку ID с последующим перезапуском сервиса — логика та же, что и для автообновления модов на любом другом сервере, общие принципы SteamCMD-апдейтов описаны и в отдельном разборе SteamCMD. Но с оговоркой: слепое автообновление модов без тестового окна рискует уронить совместимость раньше, чем вы это заметите — лучше обновлять руками и держать бэкап мира перед каждым апдейтом.

Частые причины, почему «моды не работают»:

  • Флаг -mod/-localdir не указан или указывает не туда — сервер стартует как обычно, без единой ошибки в логе, а игроки просто видят несовпадение контента.
  • Анонимный логин в SteamCMD вместо реального аккаунта — workshop_download_item либо не отдаёт файл, либо скачивает пустышку.
  • Забыли перезапустить сервис после копирования .jar — новый мод физически лежит в папке, но процесс его не подхватил.
  • У сервера и у игрока разные версии одного и того же мода — итог тот же, что при полностью разных модах: подключиться не выйдет.
  • Слишком много модов, конфликтующих между собой по одинаковым ID предметов или структур — на загрузке мира сервер может упасть; если сталкивались с крашем именно на старте мира, отдельно разберите крэш при загрузке мира — там же и общий подход к поиску виновного мода методом отключения по одному.

Поднять сервер Necesse за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

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

Можно ли обойтись вообще без Steam Workshop?

Да, .jar-файл можно получить любым легальным способом (например, скачать вручную на своём ПК через клиент) и просто скопировать в папку mods сервера — Workshop лишь самый удобный канал распространения, а не единственный.

Нужен ли на сервере Steam-аккаунт, купивший игру, чтобы качать моды?

Да, если качаете моды напрямую на сервере через steamcmd +login. Анонимного логина, которым обычно ставят сам сервер, для Workshop-контента недостаточно.

Где взять Workshop ID мода?

Это числа в конце ссылки на страницу мода в Steam Workshop, вида .../filedetails/?id=3574352062 — ID здесь 3574352062.

Сервер запущен, но моды не подхватились — что проверить в первую очередь?

Путь в -mod/-localdir, наличие .jar в правильной папке и то, был ли сервер перезапущен после копирования файла — моды читаются только при старте.

Обновление Necesse ломает старые моды?

Может, если автор мода ещё не выпустил обновление под новую версию игры — это зависит от конкретного мода, а не от настроек вашего сервера.