RE:NODE

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

Мультиплеерный сервер RimWorld: моды, рассинхроны и хостинг

В RimWorld нет официального мультиплеера. Что делают моды Multiplayer и RimWorld Together, какой из них работает на сервере, конфиги, списки модов и рассинхроны.

0 прочтений

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

Два способа играть в RimWorld с другими людьми#

Multiplayer (Zetrith / rwmt)RimWorld Together
ФормаОдна общая колония, одна временная линияКаждому своя колония, одна планета
СимуляцияДетерминированный lockstep на каждой машинеСервер хранит состояние мира, клиенты играют локально
Выделенный серверНетДа, автономная программа
Работает, когда никого нет онлайнНетДа
Список модовОдинаковый, строго проверяетсяСверяется со списком сервера
Типичная группа2-4 друга, одна сессия за раз4-20 человек, приходят и уходят

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

Если вам нужно первое, мод Multiplayer превосходен, и сервер вам вовсе не нужен. Если второе - а именно это большинство людей имеет в виду, когда ищет хостинг сервера RimWorld, - вам нужен RimWorld Together.

Multiplayer: одна колония, lockstep, без сервера#

Мод Multiplayer, созданный Zetrith и теперь поддерживаемый командой rwmt, никому не передаёт состояние игры. Каждая машина, хост и клиенты одинаково, выполняет одну и ту же симуляцию RimWorld. Хост рассылает команды - приказ призвать, изменение заказа, назначение - с номером тика, и все применяют их на одном тике и приходят к одному и тому же миру.

У такой конструкции три следствия, и знать их стоит до начала.

Выделенного сервера нет. Ответ самого проекта на вопрос, поддерживается ли он, - категорическое нет. Хостинг делается изнутри игры: главное меню, Multiplayer, создать новую игру или открыть существующее сохранение. Авторитетна копия RimWorld хоста. Когда он закрывает игру, сессия заканчивается, и ничего не движется, пока он не откроет её снова.

У всех игроков должна быть одинаковая конфигурация. Одна и та же версия RimWorld, те же DLC, где они нужны модам, те же моды тех же версий, включённые в том же порядке, с теми же настройками модов. Всё, что отличается, - это машина, которая посчитает другой результат. Последние версии мода при подключении синхронизируют большую часть этого за вас, но базовое требование не изменилось.

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

Для прямых подключений мод слушает UDP 30502. Хостинг через Steam идёт через сетевую часть Steam и не требует открытия портов вообще, поэтому большинство небольших групп никогда не заглядывают в роутер.

Можно ли разместить Multiplayer на сервере?#

Не так, как размещают сервер Minecraft. Нет ни headless-сборки, ни консоли, ни файла конфигурации, ни RCON. RimWorld - игра на Unity с пользовательским интерфейсом, а режим хоста мода Multiplayer - это меню, по которому нужно кликать.

Есть два обходных пути, и оба хуже, чем кажутся. Можно поставить полную копию RimWorld на VDS под виртуальным фреймбуфером и считать эту машину постоянным хостом: это работает, но требует, чтобы на этой машине бездействовала лицензия на игру, нужна машина размером с десктоп, потому что хост запускает полную игру с отрисовкой, и каждый перезапуск делается вручную кликом. Либо признать, что хостом служит один человек и все играют, когда он в сети, - так делают почти все. Честная версия этого компромисса - в статье выбор между VDS и игровой панелью; в этом конкретном случае панель помочь не может, потому что запускать нечего: ничего серверного здесь нет.

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

RimWorld Together: отдельные колонии и настоящий сервер#

RimWorld Together идёт противоположным путём. Сервер вообще не симулирует RimWorld. Это небольшая консольная программа на .NET, которая хранит планету, поселения всех игроков, их сохранения, рынок и очередь событий и передаёт действия между игроками. Каждый игрок ведёт свою колонию в своём темпе на своей машине, а общий слой - это карта мира: караваны, набеги друг на друга, торговля, подарки, гильдии и площадки.

Поскольку сервер не запускает игру, он чрезвычайно лёгкий. Сам проект описывает требования к железу так: справится и современный e-toaster, и это близко к правде: важнее пропускная способность и диск, чем CPU.

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

Установка и запуск сервера#

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

bash
$ mkdir -p /opt/rwt && cd /opt/rwt$ unzip ~/Downloads/rimworld-together-server.zip$ ./RimworldTogether

Есть и официальный образ контейнера, это более аккуратный способ запуска на собственной машине с Linux:

bash
$ mkdir -p RWTData$ docker run -it --rm -v './RWTData:/Data' -p 25555:25555 \    ghcr.io/rimworld-together/rimworld-together:latest

При первом запуске сервер записывает всю структуру каталогов и каждый файл конфигурации со значениями по умолчанию, после чего останавливается в ожидании ввода в консоли. Именно на этом первом запуске стоит его остановить, отредактировать конфигурацию и запустить снова.

code
/opt/rwt/  Configs/        ServerConfig.json and the rest  Configs/Actions/  per-action tuning, one file each  Assets/         Maps, Users, Saves, Settlements, Sites, Guilds, WorldObjects  Backups/        Servers and Users  Logs/           System and Chat
ПортПротоколНазначение
25555TCPЕдинственный порт. Клиенты подключаются прямо к нему

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

Линейка RimWorld на RE:NODE - это сервер именно такого вида: постоянная мультиплеерная колония с включёнными модами, и каждый тариф идёт с одним выделенным портом, а больше и не нужно. Конфигурации и список модов правятся в файловом менеджере в браузере или по SFTP; данные для подключения - в статье SFTP и файловый менеджер.

ServerConfig.json и папка Configs#

Главный файл - Configs/ServerConfig.json. Вот значения по умолчанию, которые записывает сервер:

Configs/ServerConfig.json
{  "Name": "RimWorld Together Server",  "Description": "",  "DiscordURL": "",  "SteamWorkshopURL": "",  "IP": "0.0.0.0",  "Port": 25555,  "MaxPlayers": 100,  "Verbosity": 0,  "DisplayChatInConsole": false,  "UseUPnP": false,  "UseClientSave": true,  "EnableServerBrowser": true,  "EnableServerTelemetry": true}
КлючПо умолчаниюЧто делает
NameRimWorld Together ServerПоказывается в браузере и при подключении
IP0.0.0.0Адрес прослушивания. Не трогайте, если не знаете зачем
Port25555Должен совпадать с тем, куда подключаются клиенты
MaxPlayers100С запасом. Реальный предел - ваша пропускная способность
Verbosity0Повышайте при отладке, а не в обычной работе
DisplayChatInConsolefalseПолезно в консоли панели, за которой вы и так следите
UseUPnPfalseДля домашнего роутера. Бессмысленно на арендованном сервере
UseClientSavetrueЯвляется ли сохранение клиента авторитетным
EnableServerBrowsertrueПубликовать в игровом списке серверов

Остальная часть папки делится по назначению, и каждый файл записывается со значениями по умолчанию, так что вы можете прочесть структуру, прежде чем что-то менять: ModConfig.json для списка модов, DifficultyConfig.json, StorytellerConfig.json и ScenarioConfig.json для того, с чего начинается новая колония, ChatConfig.json, PasswordConfig.json, WhitelistConfig.json, BackupConfig.json, а также каталог Configs/Actions с одним файлом на каждое взаимодействие - набеги, караваны, торговлю, площадки, события, рынок, гильдии, - чтобы можно было назначить цену каждому или отключить его по отдельности.

У backup свой файл и разумные значения по умолчанию:

Configs/BackupConfig.json
{  "AutomaticBackups": true,  "IntervalHours": 1,  "AutomaticDeletion": true,  "Amount": 6}

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

Моды: список, общий для всех#

Configs/ModConfig.json - место, где сервер задаёт политику модов, в трёх списках: обязательные моды, необязательные и запрещённые. Подключающийся клиент сверяется с ними. Обязательные моды должны присутствовать, запрещённые закрывают подключение, а необязательные допускаются в любом случае - и в этом важное отличие от мода Multiplayer, где необязательных модов не существует.

Практические правила для общего списка модов, для любого из двух модов:

  1. Договоритесь о списке до первого дня. Добавление контентного мода в мир, где уже есть колонии, означает, что каждый игрок пересинхронизируется, а кто-то что-то теряет. Удаление хуже.
  2. Используйте коллекцию Steam. Опубликуйте одну коллекцию, поместите её ссылку в SteamWorkshopURL и скажите людям подписываться на неё и ни на что больше. Коллекция - единственный список модов, который сам поддерживает единство.
  3. Зафиксируйте порядок загрузки. RimWorld исключительно чувствителен к порядку. Экспортируйте рабочий список модов из игры и отправляйте файл, а не скриншот.
  4. Избегайте модов, которые иначе генерируют мир, если они не у всех, и считайте моды производительности частью списка, а не личным выбором.
  5. Не обновляйте посреди недели. Мод из workshop, обновившийся у одного игрока и не обновившийся у другого, - самая частая причина вечера понедельника, потраченного на отладку. Порядок действий по восстановлению - в статье что делать, когда обновление мода всё ломает.

Команды сервера, администраторы и backup#

Сервер читает команды из своей консоли, а на панели это окно консоли. Отдельного удалённого протокола нет: консоль и есть интерфейс администратора.

КомандаЧто делает
op <username>Выдаёт права администратора
deop <username>Отбирает их
listПодключённые игроки
deeplistВсе игроки, о которых знает сервер
kick <username>Отключает игрока
ban <username>Банит его
pardon <username>Снимает бан
banlistВыводит баны
broadcast <text>Отправляет всем сообщение в виде письма
chat <text>Отправляет сообщение в чат
backupДелает backup сервера сейчас
backupuser <username>Делает backup одного игрока
forcesave <username>Принудительно сохраняет подключённого игрока
modlistВыводит список модов сервера
setpassword <text>Задаёт пароль для входа
clearpasswordУбирает его
resetplayer <username>Стирает данные одного игрока
resetserverСтирает мир
event <username> <event>Запускает событие для одного игрока
eventall <event>Запускает его для всех
eventlistПеречисляет события, которые можно запустить
getversionВерсия сервера
verbosity <level>Меняет подробность лога на ходу

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

Требования и устранение неполадок#

КонфигурацияRAMCPUПримечания
RimWorld Together, до 8 игроков1 GB0.75 ядраСервер не запускает игру
8-20 игроков, долгоживущий мир2 GB1 ядроДиск растёт вместе с сохранениями и backup
Машина-хост мода Multiplayer8 GB+Игровой CPUЭто десктоп, а не тариф сервера

Обратите внимание на третью строку. Если кто-то называет вам цену на «выделенный сервер RimWorld Multiplayer» с модом Zetrith, спросите, что именно там запущено, потому что машина, способная вести такую сессию, - это компьютер десктопного класса с графической средой, а не игровой тариф за $5.

Клиенты не могут подключиться. Сверьте версию мода с версией сервера: они выходят вместе, и несоответствия отклоняются. Затем проверьте порт, потом пароль.

Игрок заходит и сразу отключается. Обычно виновата проверка модов: чего-то обязательного нет или установлено что-то запрещённое. В логе сервера это названо.

Рассинхроны в моде Multiplayer. Сравните версии модов, настройки и порядок загрузки у всех, убедитесь, что сборка RimWorld совпадает, и посмотрите на производительность хоста. Отправьте файл из папки MpDesyncs разработчикам мода, а не гадайте.

Мир занимает огромное место на диске. Накапливаются сохранения игроков и почасовые backup. Уменьшите Amount в BackupConfig.json или вынесите старые backup с сервера.

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

FAQ#

Есть ли в RimWorld официальный мультиплеер?

Нет. Ludeon никогда не выпускала мультиплеер, и оба варианта - это моды сообщества с разной конструкцией. Всё, что рекламируется как официальный мультиплеер RimWorld, описывает один из этих модов.

Можно ли запустить мод Multiplayer на хостинговом тарифе?

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

Сколько человек могут играть на одном сервере RimWorld Together?

MaxPlayers по умолчанию равен 100, а сервер достаточно лёгкий, чтобы это число редко было пределом. Двадцать активных игроков на общей планете - это оживлённый мир. Практические ограничения - сколько модерации вы готовы вести и сколько места занимают сохранения.

Нужны ли всем игрокам одинаковые моды?

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

Почему у нас рассинхрон каждый раз, когда происходит набег?

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

Можно ли перенести одиночную колонию на сервер?

Напрямую в моде Multiplayer - нет: он начинает с сохранения, которое хост загружает, а все присоединяются. В RimWorld Together каждый игрок приносит в общий мир свою колонию, так что личное сохранение можно перенести, если его моды удовлетворяют списку сервера.


Комментарии

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

0/2000