RE:NODE

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

Carbon или Oxide для Rust: как перейти

Чем фреймворк Carbon для Rust отличается от Oxide, какие плагины переносятся, как установить его на Windows или Linux и как безопасно перейти с одного на другой.

0 прочтений

Carbon - это фреймворк модов для Rust, который запускает плагины Oxide. Большинство плагинов .cs, написанных для Oxide, загружается на Carbon без изменений, команды прав работают так же, а структура папок почти зеркальная. Разница - внутри: Oxide патчит собственные сборки игры, а Carbon внедряется при запуске и не трогает файлы игры. На практике это значит, что после ежемесячного обновления Carbon обычно снова готов к работе быстрее, поставляется с дополнительными встроенными возможностями и немного уступает Oxide в совместимости с редкими случаями, накопленной за десять лет. Переход занимает около получаса: вернуть ванильные файлы через SteamCMD, поставить Carbon и перенести четыре папки. Остальная часть статьи - подробности: что меняется, что ломается и как выбрать.

Чем отличаются два фреймворка#

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

Oxide (uMod)Carbon
Как загружаетсяПатчит файлы в RustDedicated_Data/ManagedВнедряется загрузчиком при старте, файлы игры не трогает
Формат плагиновC# .cs, компилируется на сервереТо же, плюс API, специфичные для Carbon
Папка плагиновoxide/pluginscarbon/plugins
Командыoxide.*, короткая форма o.*c.*
Встроенные дополненияМинимум: только фреймворкОпциональные модули и профайлер
После обновленияЖдать новую сборку OxideЧасто меньше шагов; сборку всё равно проверять
КаталогuMod хранит тысячи плагиновИспользует те же плагины с uMod и других сайтов

Oxide - эталон. Авторы плагинов пишут под него и тестируют на нём, а сайт uMod по-прежнему остаётся крупнейшим бесплатным каталогом. Carbon позиционирует себя как более быструю и современную платформу для той же экосистемы. Ни один из них не является отдельным игровым режимом и не меняет то, что видят игроки; игрок не может понять, какой фреймворк стоит на сервере, если об этом не скажет какой-нибудь плагин.

Если плагины для вас в новинку, начните со статьи о плагинах Oxide (uMod) для Rust, где разобраны основные понятия - хуки, конфиги, данные, права. Всё, что там написано, относится и к Carbon, только с другими названиями папок.

Что переносится, а что нет#

Если честно: плагины, которые вы, скорее всего, будете использовать, - телепорты, киты, кланы, remover tool, форматирование чата, контроллеры стаков и добычи, админские инструменты - почти всегда работают. Ломается код, который лезет дальше API плагинов.

  • Обычные плагины Oxide, использующие документированные хуки и API прав, конфигов, данных и языковых файлов: работают.
  • Плагины, которые заглядывают во внутренности Oxide через рефлексию или рассчитывают на точное устройство его классов: могут не работать. Консоль сообщит об этом при загрузке.
  • Расширения Oxide - скомпилированные файлы .dll вроде Oxide.Ext.Something.dll, лежащие в RustDedicated_Data/Managed: так, как это делает Oxide, не загружаются. У Carbon свой механизм расширений, и некоторые популярные он реализует заново. Проверяйте каждое отдельно, особенно то, от чего зависит кастомная карта.
  • Плагины со своими патчами Harmony: обычно работают, но два патча на один и тот же метод могут конфликтовать независимо от фреймворка.
  • Плагины, авторы которых ориентируются только на Carbon: на Oxide работать не будут. Среди платных плагинов такое встречается всё чаще.

Прежде чем переводить живой сервер, составьте список всех плагинов и расширений и проверьте каждое. Большинство авторов указывает поддержку Carbon на странице плагина или в changelog. Остальное выясняйте на тестовом сервере, а не в день вайпа.

Установка Carbon#

Carbon публикует сборки для Windows и Linux, причём отдельные для релизной ветки Rust и для staging. Берите ту, что подходит и под вашу операционную систему, и под ветку, на которой работает сервер. Некоторые редакции урезаны; в документации проекта описано, какие модули входят в каждую.

  1. Корректно остановите сервер командой quit.
  2. Удалите Oxide, если он установлен. Запустите SteamCMD с app_update 258550 validate, чтобы восстановить оригинальные сборки игры. Папку oxide не удаляйте, а перенесите в надёжное место.
  3. Распакуйте архив Carbon в корень сервера. Он добавит папку carbon и файлы загрузчика рядом с исполняемым файлом.
  4. На Windows загрузчик подхватывается автоматически, когда RustDedicated.exe запускается из этой папки.
  5. На Linux окружение нужно настроить до запуска бинарника. Для этого Carbon поставляет скрипт:
start.sh
#!/bin/bashcd /home/rust/serversource carbon/tools/environment.sh./RustDedicated -batchmode -nographics -logfile - \  +server.identity "main" +server.port 28015 \  +rcon.web 1 +rcon.port 28016 +rcon.password "change-me"
  1. Запустите и проверьте консоль на наличие стартового баннера Carbon, затем выполните c.plugins. Ошибка о неизвестной команде означает, что загрузчик не сработал, - на Linux почти всегда из-за отсутствующей строки source.

В панели вроде Pterodactyl, будет ли выполняться скрипт окружения, решает egg. Многие современные egg-и для Rust предлагают на вкладке Startup выбор фреймворка (vanilla, Oxide или Carbon) и делают всё за вас. Если у вашего такого нет, ручная установка Carbon будет выглядеть успешной и ничего не даст, потому что команда запуска его так и не загрузит.

Папки, команды и права#

ПутьСодержимоеАналог в Oxide
carbon/plugins/Файлы плагинов .csoxide/plugins/
carbon/configs/JSON-конфиги плагиновoxide/config/
carbon/data/Данные плагинов, праваoxide/data/
carbon/lang/Файлы сообщенийoxide/lang/
carbon/logs/Логиoxide/logs/
carbon/modules/Конфиги встроенных модулейнет
carbon/extensions/Расширения Carbonрасширения .dll в Managed
carbon/config.jsonНастройки фреймворкаoxide/oxide.config.json

Обратите внимание на единственную ловушку в написании: у Oxide папка называется config, у Carbon - configs. Конфиги, скопированные под Carbon в папку config, ни на что не влияют, и каждый плагин молча записывает свои значения по умолчанию.

code
c.plugins                     list plugins and their statec.load Kits                   load a pluginc.unload Kits                 unload itc.reload Kits                 reload, rereading its configc.grant group default kits.usec.revoke group default kits.usec.group add vipc.usergroup add 76561198012345678 vipc.show user 76561198012345678

Модель прав взята у Oxide: права регистрируют плагины, у групп есть родители, default - для всех, admin - для владельцев, права выдаются группам или пользователям по SteamID64. Если вы знаете oxide.grant, вы знаете и c.grant. Ради совместимости Carbon понимает и многие названия команд Oxide, но свои скрипты пишите с формами c., чтобы никому не приходилось гадать, для какого фреймворка была задумана команда.

Встроенные модули

Carbon поставляется с опциональными модулями, которые заменяют то, для чего на серверах с Oxide ставят плагины. Они лежат в carbon/modules, у каждого свой конфиг, и они выключены, пока вы их не включите. Набор меняется от версии к версии; в текущем списке есть, среди прочего, модули для рейтов добычи, размеров стаков, невидимости и белого списка, а также внутриигровая админ-панель.

Довод за модули - меньше движущихся частей: один поддерживаемый компонент вместо стороннего плагина, который могут забросить. Довод против - ваша конфигурация становится специфичной для Carbon, и возврат на Oxide превращается из переноса папок в пересборку. Если думаете, что можете вернуться на Oxide, для всего, что определяет геймплей, вроде рейтов и стаков, используйте обычные плагины.

Ещё в Carbon есть профайлер, который записывает, сколько времени занимают плагины и хуки. На Oxide вы полагаетесь на время хуков в oxide.plugins и на внешние инструменты; на Carbon можно снять профиль, пока сервер тормозит, и увидеть, какой плагин и какой хук виноваты. Это одна из самых практичных причин для перехода, а на что ещё смотреть, объясняет статья о производительности сервера и числе сущностей.

Сначала проверьте переход на копии#

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

  1. Сделайте тестовый сервер из backup-а живого - та же версия Rust, те же плагины, те же конфиги, те же данные. На VDS это вторая папка и второй набор портов; в панели это обычно второй сервер, восстановленный из backup-а.
  2. Поставьте Carbon на копию по шагам выше и перенесите папки.
  3. Запустите её и прочитайте каждую строку лога запуска. Плагины, которые не компилируются, отсутствующие зависимости и предупреждения о правах появляются здесь один раз, и нигде больше они не видны так ясно.
  4. Зайдите на неё с двух аккаунтов - админского и обычного игрока - и пройдитесь по командам, которыми игроки действительно пользуются. Киты, дома, телепорты, кланы, remover tool, любой магазин. Запишите всё, что ведёт себя иначе.
  5. Оставьте её работать на вечер с несколькими добровольцами. Некоторые проблемы проявляются только тогда, когда хуки срабатывают в реальной игре: урон, лутание, строительство, рейды.

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

Переход с Oxide на Carbon#

Планируйте его на день вайпа или тихий вечер и сначала сделайте backup всей папки сервера, включая папку oxide.

  1. Сделайте backup, остановите сервер и запустите SteamCMD с validate.
  2. Установите Carbon, как описано выше, и запустите один раз без плагинов, чтобы он создал свои папки. Снова остановите.
  3. Скопируйте oxide/plugins/*.cs в carbon/plugins/.
  4. Скопируйте oxide/config/*.json в carbon/configs/ - во множественном числе.
  5. Скопируйте содержимое oxide/data/ в carbon/data/, а oxide/lang/ - в carbon/lang/.
  6. Прочитайте заметки Carbon о миграции данных прав для вашей версии, затем запустите сервер.
  7. Убедитесь через c.plugins, что каждый плагин загрузился, и проверьте права через c.show group default, c.show group admin и на паре реальных игроков.
  8. Зайдите обычным игроком и проверьте команды, которыми люди действительно пользуются, - киты, дома, телепорты, remover.

Кусается шаг с правами. Если права набирались вручную целый год, никто точно не знает, что было у default. Перед переходом выполните oxide.show group default и то же для каждой группы и сохраните вывод. А ещё лучше - держите обычный текстовый файл со всеми командами grant и group parent, которые нужны вашему серверу; он заодно служит документацией и позволяет за минуту восстановить права на любом фреймворке.

Обратный переход - то же самое в обратном порядке: validate, установка Oxide, перенос carbon/configs обратно в oxide/config и так далее. Всё, что вы собрали на модулях Carbon, придётся заменить плагинами.

Ежемесячное обновление на Carbon#

Обновление первого четверга затрагивает и Carbon. Поскольку он не патчит сборки игры, SteamCMD его не перезаписывает, но хуки всё равно могут сдвинуться, а плагины - сломаться, когда Facepunch меняет код игры. Порядок действий близок к Oxide:

  1. Остановите сервер, обновите Rust с validate.
  2. Проверьте, выпустил ли Carbon сборку или обновление хуков под новую версию игры, и если да - обновитесь.
  3. Запустите сервер, найдите в консоли плагины, которые не компилируются.
  4. Исправьте или выгрузите сломанное, прежде чем открывать сервер.

На Carbon вы можете пропустить переустановку, но не проверку. Сервер, который стартует с загруженным Carbon, но с половиной сломанных плагинов, находится в том же положении, что и сервер на Oxide, потерявший фреймворк. Календарь есть в статье о графике ежемесячного принудительного вайпа, а порядок действий в день вайпа - в статье о вайпах Rust без потери игроков.

Что выбрать?#

СитуацияВыбор
Новый модовый сервер, популярные плагиныЛюбой; Carbon, если нужны его модули и профайлер
Работающий сервер на OxideОставайтесь, если нет причины переезжать
Платные плагины только под CarbonCarbon
Кастомная карта, зависящая от конкретного расширения OxideOxide, если Carbon не поддерживает это расширение
Проблемы с производительностью, источник которых не найтиПопробуйте профайлер Carbon на тестовой копии
Нужен самый проверенный путь для редкого плагинаOxide

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

Цена перехода - в основном время и внимание, и она выше всего на сервере с большим количеством плагинов и долгой историей прав, выданных вручную. Новый сервер почти ничего не платит за старт на любом из фреймворков, поэтому именно тогда и стоит выбирать осознанно. Устоявшийся сервер с рабочим Oxide и командой, которая его знает, мало выигрывает от переезда, если только конкретный плагин, профайлер или порядок обновления не стали настоящей болью.

Где бы вы ни хостились, плагины и фреймворки загружаете вы сами. В панели RE:NODE это файловый менеджер, который распаковывает архив на месте, или SFTP с доступом, ограниченным одним сервером; установщика фреймворков и белого списка плагинов нет, так что следуете вы именно шагам установки, описанным выше. Оба инструмента разобраны в статье SFTP и файловый менеджер.

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

`c.plugins` - неизвестная команда. Загрузчик Carbon не сработал. На Linux в команде запуска нет source carbon/tools/environment.sh или она выполняется из другой папки. В панели проверьте настройку фреймворка в egg-е.

Плагины загружаются, но все конфиги по умолчанию. Конфиги скопировали в carbon/config вместо carbon/configs.

Сообщения появляются дважды, сервер нестабилен. Пропатченные сборки Oxide всё ещё на месте. Остановите сервер, выполните validate, переустановите Carbon.

Один плагин не работает на Carbon, хотя работал на Oxide. Он использует внутренности Oxide или расширение Oxide. Ищите обновление или альтернативу под Carbon.

Пропали функции кастомной карты. Не загружено расширение, на которое опиралась карта. Проверьте, поддерживает ли его Carbon, прежде чем винить карту.

После перехода права выглядят пустыми. Данные прав в вашей версии не перенеслись. Восстановите их из сохранённого списка выдач.

FAQ#

Разрешает ли Facepunch использовать Carbon?

Серверы Rust запускают сторонние фреймворки на одних и тех же условиях, будь то Oxide или Carbon: дело не во фреймворке, а в том, как сервер указан в списке. Сервер, плагины которого меняют геймплей, в любом случае должен быть на вкладке Modded.

Можно ли запустить Oxide и Carbon одновременно?

Нет. Они цепляются к одному и тому же коду игры и конфликтуют. Выберите один и при переходе запустите SteamCMD с validate, чтобы файлы игры были чистыми.

Нужно ли игрокам устанавливать Carbon, чтобы зайти?

Нет. Как и Oxide, Carbon работает только на сервере. Игроки заходят с обычным клиентом игры.

Carbon быстрее Oxide?

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

Будут ли мои плагины с uMod работать на Carbon?

Подавляющее большинство - да. Исключения - плагины, которые опираются на внутренности Oxide или на расширения .dll, и находят их тестированием до перевода живого сервера.


Комментарии

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

0/2000