RE:NODE

Руководства10 мин чтения

Сервер Assetto Corsa через Content Manager

Как собрать сервер Assetto Corsa в Content Manager: пресеты, упаковка контента, папки модовых трасс и машин, конфигурации и боксы, чексуммы, CSP и ссылки на загрузку.

0 прочтений

Content Manager - это лаунчер от сообщества, которым уже пользуется большинство игроков Assetto Corsa, и он же самый простой способ собрать сервер: его раздел Server редактирует пресеты, которые превращаются в server_cfg.ini и entry_list.ini, проверяет, что каждая выбранная вами машина, скин и конфигурация трассы действительно существуют, и умеет упаковать бинарник сервера, конфиг и нужные серверу данные контента в один архив, который вы загружаете на хостинг. Модовые трассы и машины после этого работают точно так же, как стандартные, при двух условиях, из-за которых проваливается почти каждый неудачный вход: у сервера и у каждого пилота должна быть одна и та же версия каждого мода (сервер сверяет чексуммы файлов), а имена папок в конфиге должны совпадать с папками на диске символ в символ - на Linux-сервере, включая регистр.

Собственные файлы сервера подробно разобраны в руководстве по серверу Assetto Corsa. Эта статья - о стороне контента: серверные пресеты Content Manager, как устроены папки трасс и машин, конфигурации трасс и боксы, что сервер на самом деле проверяет, требования Custom Shaders Patch и как доставить нужные файлы вашим пилотам.

Что Content Manager делает для сервера#

Content Manager (CM) - это лаунчер-замена для Assetto Corsa, написанный сообществом. Админам серверов он полезен четырьмя вещами:

  • Редактирует серверные пресеты в форме, а не в сырых ini-файлах: выбор трассы и конфигурации, список машин, entry list со скинами, сессии, погода и помощники.
  • Проверяет контент: он знает, какие машины, скины и конфигурации установлены на вашем компьютере, и помечает всё недостающее до запуска сервера.
  • Запускает сервер локально, чтобы вы могли проверить пресет на своей машине, прежде чем что-то загружать.
  • Упаковывает пресет вместе с бинарниками сервера, конфигом и нужными серверу данными контента, готовый к загрузке на хостинг.

У CM есть бесплатная версия и платная полная, которая открывает дополнительные функции. Серверными инструментами можно пользоваться бесплатно; если какая-то упомянутая здесь опция у вас неактивна, причина, скорее всего, в этом.

CM хранит пресеты в папке игры в server/presets/, по одной папке на пресет (SERVER_00, SERVER_01 и так далее), и в каждой лежат свои server_cfg.ini и entry_list.ini. Это те же файлы, которые читает acServer; CM - это интерфейс, а не другой формат. Это важно, потому что вы можете открыть файлы, которые создал пресет, прочитать их и позже править на сервере вручную, без CM.

Как собрать пресет#

В CM раздел сервера показывает пресеты слева; создайте пресет и пройдите по вкладкам:

  1. Main: название, пароль, админский пароль, трасса и её конфигурация, список машин. Выбирайте конфигурацию явно - она задаёт CONFIG_TRACK.
  2. Entry list: одна строка на место на стартовой решётке, у каждой машина и скин. CM показывает число боксов на трассе и предупреждает, если список длиннее.
  3. Rules and conditions: помощники, повреждения, расход топлива и износ шин, сессии, время суток, погода, динамическая трасса.
  4. Запустите локально и зайдите с того же компьютера. Если вы можете зайти на свой локальный сервер, пресет корректен.

Затем упакуйте его. Опция упаковки создаёт архив с исполняемым файлом сервера для выбранных платформ, папкой cfg и папкой content, в которой лежат только нужные серверу файлы данных каждой машины и трассы - без текстур и 3D-моделей. Папка сервера, собранная так, весит несколько мегабайт на машину, а не сотни.

упаковка пресетазагрузка и распаковкавход, сверка чексуммContent Managerпресет и контентПилотыполный контент модовУпакованный архивбинарник, cfg, данныеСервер на хостингеacServer
От Content Manager на вашем ПК до сервера на хостинге

Загрузите архив на сервер и распакуйте его на месте - файловый менеджер, который распаковывает архивы прямо там, где они лежат, здесь экономит много времени, - или распакуйте у себя и загрузите папки по SFTP. Оба варианта описаны в статье SFTP и файловый менеджер. На хостинге бинарник сервера уже установлен, так что из упаковки вам нужны cfg/ и content/.

Как устроены папки трасс#

Трассы лежат в content/tracks/<track_folder>/. В TRACK= указывается имя папки, и часто оно совсем не похоже на отображаемое имя: модовая трасса "Circuit of the Example Hills" может жить в ex_hills_2024. Смотрите на папку, а не на название в меню.

У трассы с несколькими конфигурациями есть подпапка на каждую, и CONFIG_TRACK= указывает одну из них:

code
content/tracks/ex_hills_2024/  gp/    data/      surfaces.ini      ...  national/    data/  ui/    gp/ui_track.json    national/ui_track.json  models_gp.ini  models_national.ini

У трассы с одной конфигурацией папка data/ лежит прямо в папке трассы, её UI-файлы - прямо в ui/, а CONFIG_TRACK остаётся пустым.

Тип трассыTRACK=CONFIG_TRACK=
Одна конфигурацияИмя папкиПусто
Несколько конфигурацийИмя папкиИмя подпапки конфигурации
Несколько конфигураций, оставлено пустымИмя папкиОбычно падает при запуске

Боксы - это жёсткий предел размера стартовой решётки. В ui_track.json каждой конфигурации трассы указано число боксов, и MAX_CLIENTS и entry list не должны его превышать. У модовых трасс это число сильно разнится: на клубной трассе их может быть двенадцать, на переделанной дороге общего пользования - пять. CM показывает это число при выборе конфигурации; проверьте его, прежде чем обещать решётку на 24 машины.

Как устроены папки машин#

Машины лежат в content/cars/<car_folder>/, а CARS= в server_cfg.ini - это список имён этих папок через точку с запятой.

code
content/cars/ex_gt3_2024/  data.acd  skins/    01_red/    02_blue/  ui/    ui_car.json  ...model and sound files

Данные физики обычно упакованы в data.acd. Некоторые модовые машины поставляются с распакованной папкой data/ вместо него или в дополнение к нему. В любом случае данные физики - часть того, что сервер сравнивает с копией у каждого пилота, так что два пилота с разными сборками одной и той же папки машины не взаимозаменяемы.

Скины - это косметика. Entry list назначает один на каждое место через SKIN=, указывая папку в skins/. Пилот, у которого этого скина нет, видит вместо него стандартный; зайти ему это не мешает. Паки скинов - приятная деталь для лиги, но не повод кого-то не пускать.

Чексуммы: что сервер на самом деле сравнивает#

Когда пилот подключается, сервер сравнивает чексуммы ключевых файлов в копии трассы и машины у пилота со своими. Любое различие - и пилот получает отказ. Сравниваются файлы, которые влияют на вождение, - данные покрытий и конфигурации трассы, физика машины, - а не текстуры, звуки или скины.

Из этого следуют практические выводы:

  • Серверу нужны правильные файлы данных, а не полный контент. Именно поэтому упакованный CM контент маленький, и поэтому сервер только с data.acd и папками данных трасс работает.
  • Визуальный мод не ломает чексуммы, а мод, который правит физику или данные покрытий, ломает. "Графическое обновление" трассы, которое заодно трогает surfaces.ini, для сервера - уже другая трасса.
  • Повторное скачивание мода может его изменить. Сайты модов тихо перевыпускают файлы. "На прошлой неделе работало" обычно означает, что кто-то из пилотов или сервер получил более новую сборку.
  • Ошибка называет файл. Прочитайте её: сбой чексуммы на данных покрытия трассы указывает на трассу, на данных машины - на эту машину.

Linux-серверы и имена папок#

Большинство серверов Assetto Corsa на хостинге работают на Linux-версии acServer. Имена файлов в Linux чувствительны к регистру, а в Windows - нет, а значит, пресет, собранный в Windows, может прекрасно работать на вашем компьютере и падать на сервере.

Если TRACK=Ex_Hills_2024, а папка называется ex_hills_2024, Windows её найдёт, а Linux - нет. То же относится к папкам машин, конфигураций и скинов. Исправление - сделать так, чтобы конфиг в точности совпадал с папкой: копируйте имена из списка файлов самого сервера, а не из отображения в CM и не по памяти. Когда сервер завершается при запуске, его лог называет папку, которую он не нашёл; как быстро найти эту строку, рассказано в статье как читать консоль.

Custom Shaders Patch и требования#

Custom Shaders Patch (CSP) - широко используемое расширение рендерера и движка игры. Многие современные модовые трассы и машины используют возможности CSP - дополнительное освещение, эффекты дождя, расширения физики, - и некоторые без него работают неправильно или не работают вовсе.

Для сервера это порождает вопрос, которого стандартная игра никогда не задавала: какая версия CSP должна быть у пилотов? Серверные настройки CM позволяют объявить для пресета минимальную версию CSP, чтобы пилотам без неё об этом сообщалось до входа, а не чтобы они обнаруживали сломанную трассу посреди сессии. AssettoServer, открытая замена acServer, описанная в основном руководстве, идёт дальше и строит поверх CSP свои функции - синхронизированные погоду и время, трафик и многое другое.

Это решение про аудиторию. Публичный сервер, который требует свежую версию CSP, отсекает игроков с чистой установкой. Лига, где все пилоты работают с CSP, много выигрывает от этого требования. В любом случае укажите требование в названии или описании сервера и опубликуйте его вместе со списком контента.

Как доставить контент пилотам#

Стандартный сервер никогда не отправляет контент пилотам, так что распространение - задача админа. Что работает:

  • Список контента с точными версиями и ссылками. Названия машин и трасс, имена папок, версия и откуда скачать именно эту версию. Закреплённый в вашем Discord и обновляемый при каждом изменении сервера.
  • Один архив на весь набор. Для лиги упакуйте все машины и трассы в одну загрузку, размещённую где-то в надёжном месте. Пилоты перетаскивают её в CM, который устанавливает контент Assetto Corsa из архивов.
  • Ссылки на загрузку, которые сообщает сервер. Обёртки серверов от сообщества и AssettoServer могут передавать в CM ссылки на загрузку недостающего контента, так что пилоту, который заходит без машины, показывают, где её взять. Это самое близкое к загрузке при входе, что есть в Assetto Corsa, и зависит оно от используемых инструментов, так что проверьте, что поддерживает ваш серверный софт, прежде чем это обещать.

Храните список рядом с бэкапами сервера. Конфигурация, о которой лига договаривалась три недели, маленькая, и её легко потерять; список контента - то, что позволит пересобрать сервер, когда сайт с модами исчезнет. Почему восстановление тоже нужно проверять, объясняет статья бэкапы, которые действительно восстанавливаются. В RE:NODE слоты для бэкапов есть на каждом тарифе Assetto Corsa, так что папки cfg и content можно сохранить перед каждым изменением контента и восстановить одной кнопкой.

Занятое место на диске сервера растёт вместе с контентом, хотя нужны только файлы данных. Сервер с трафиком или свободной ездой с десятками машин и большой картой всё равно может дойти до нескольких гигабайт, в основном за счёт трасс. Удаляйте машины и трассы, которыми больше не пользуетесь, когда меняете пресет; старый контент - обычная причина, по которой заполняется диск сервера.

Решение проблем#

"Checksum failed" для машины. Сборка этой машины у пилота отличается от серверной. Сравните версии и договоритесь об одной.

"Checksum failed" для трассы. То же самое для трассы - часто это графический пак или пак обновления, который заодно изменил данные покрытия.

Сервер завершается при запуске, называя папку. Расхождение в имени папки или в регистре либо пустой CONFIG_TRACK у трассы с несколькими конфигурациями.

Решётка стартует с машинами в странных местах или сессия ломается. Записей больше, чем боксов в конфигурации.

Пилоты без CSP видят сломанную трассу. Трассе нужен CSP. Объявите требование в пресете и в названии сервера.

Пресет работает локально, но не на хостинге. Чувствительность к регистру в Linux или контент, который вы не загрузили. Сравните папку content/ на сервере с упакованным архивом.

Скины отображаются стандартными. У пилота нет пака скинов. Это только косметика.

FAQ#

Нужен ли Content Manager, чтобы запустить сервер Assetto Corsa?

Нет. acServer читает два ini-файла и папку контента, и их можно написать руками. Content Manager ускоряет работу и ловит ошибки вроде недостающих скинов или большего числа записей, чем боксов.

Нужны ли серверу полные файлы модовых машин и трасс?

Нет, только файлы данных, по которым считаются чексуммы. Опция упаковки в Content Manager копирует именно их, и сервер остаётся маленьким. Пилотам полный контент нужен, чтобы его видеть и на нём ездить.

Почему у пилотов не проходит проверка чексуммы на модовой трассе?

Их версия отличается от серверной. У многих модовых трасс в обращении несколько сборок и паков обновлений. Опубликуйте точную сборку и убедитесь, что она же стоит на сервере.

Как выбрать конфигурацию трассы на сервере?

Укажите в TRACK= папку трассы, а в CONFIG_TRACK= - имя подпапки конфигурации. В Content Manager выбор конфигурации в пресете задаёт оба значения.

Может ли сервер автоматически отправлять игрокам машины и трассы?

Стандартный сервер не может. Обёртки от сообщества и AssettoServer могут сообщать ссылки на загрузку, которые Content Manager показывает пилотам с недостающим контентом, и это ближайший аналог.

Стоит ли моему серверу требовать Custom Shaders Patch?

Если ваши трассы или машины от него зависят - да, и укажите это в названии сервера. Для публичного сервера на стандартном или более старом контенте необязательный CSP позволит зайти большему числу игроков.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000