Rust принудительно вайпит карту в первый четверг каждого месяца: Facepunch выпускает ежемесячное обновление, формат сохранения меняется, и старые миры перестают загружаться. Это единственный вайп, который вы не выбираете. Всё остальное - уйдут ли чертежи вместе с картой, что происходит в три недели между вайпами и что об этом сказано игрокам - зависит от вас, и ошибка здесь опустошает сервер быстрее любых лагов.
Здесь разобрана вся работа целиком: что именно ломает принудительный вайп, какие файлы удаляет каждый вид вайпа, как выбрать периодичность, которую вы сможете выдержать, чек-лист самого дня вайпа и что делать с плагинами, которые не загружаются, пока их авторы не выпустят обновление.
Что на самом деле принудительно стирает вайп#
В первый четверг месяца, обычно около 19:00 UTC, Facepunch выпускает обновление клиента и сервера одновременно. Меняются сразу три вещи, и полезно держать их в голове раздельно.
- Сетевой протокол. Клиенты на новой сборке не могут зайти на сервер со старой, и наоборот. Пока вы не обновились, каждый игрок видит ошибку протокола соединения и делает вывод, что ваш сервер лежит.
- Версия сохранения. Сохранение мира записывается с номером версии в имени файла, и новая сборка предыдущее не загрузит. Именно из-за этого вайп карты обязателен, а не просто желателен.
- Процедурная генерация. Генерация карты меняется почти каждый месяц. Тот же seed и тот же размер мира после принудительного вайпа дают другую карту, так что «оставить карту» не получится, даже если она вам нравилась.
Чертежи всё это не затрагивает. Принудительный вайп - это вайп карты; база чертежей лежит в отдельном файле и переживёт его, пока вы сами её не удалите. Все споры о «полном вайпе» и «вайпе карты», что вам доводилось видеть, - это споры об одном файле.
Вайп карты и вайп чертежей - это разные файлы#
Всё, что помнит сервер Rust, лежит в каталоге установки, в server/<identity>/, где <identity> - то, что вы передали в +server.identity. Разберитесь с этой папкой, и вайп перестанет быть загадкой.
server/ main/ the identity folder cfg/ server.cfg convars executed at startup users.cfg ownerid, moderatorid, bans proceduralmap.3500.1934572.248.map the generated terrain proceduralmap.3500.1934572.248.sav everything built on it player.blueprints.3.db what players have learned player.deaths.3.db player.identities.3.db player.states.3.db player.tokens.dboxide/ plugins/ config/ data/ logs/ if you run OxideФайл карты называется proceduralmap.<worldsize>.<seed>.<version>.map, и это действительно удобно: размер мира и seed работающего сервера можно прочитать прямо с диска, а по номеру версии сразу видно, что после обновления он сдвинулся.
| Вайп | Что удалить | Результат |
|---|---|---|
| Только карта | *.sav и *.map | Новый мир, базы исчезли, чертежи остались |
| Карта и чертежи | то же плюс player.blueprints.*.db | Настоящий чистый старт |
| Полный сброс | то же плюс player.*.db и oxide/data | Заодно очищает смерти, состояния, кланы, наборы, экономику |
Несколько замечаний, которые потом избавят от споров. Если удалить только .sav, а .map оставить, получится тот же рельеф без построек, и это вполне законный выбор для сервера с понравившейся игрокам картой - пока следующий принудительный вайп всё равно не сделает файл негодным. В oxide/data плагины хранят состав кланов, балансы, кулдауны и точки домов, так что «полный вайп», не тронувший эту папку, вернёт всем их старые кланы и старые деньги на свежей карте. Решайте это сознательно, а не случайно.
Выбор периодичности и верность ей#
Работают четыре режима, и одно правило важнее выбора между ними: соблюдайте выбранный. Сервер, который вайпится каждый четверг в 19:00 UTC целый год, формирует у игроков привычку. Сервер, который вайпится, «когда надоест», не имеет вернувшихся игроков, потому что никто не спланирует вечер вокруг настроения.
| Периодичность | Что поощряет | Кому подходит |
|---|---|---|
| Карта раз в неделю, чертежи раз в месяц | Быстрые рейды, постоянные новые старты | Многолюдные ванильные серверы и серверы 2x |
| Карта раз в две недели, чертежи раз в месяц | Одно полное дерево технологий за цикл | Большинство серверов сообществ |
| Раз в месяц, только принудительный | Долгие стройки, большие базы, кланы | Малонаселённые и ролевые серверы |
| Полный вайп раз в неделю | Чистое равенство, без накопления | Небольшие соревновательные и клановые серверы |
Проектировать нужно вокруг кривой онлайна. На большинстве серверов сообществ первые сорок восемь часов после вайпа дают основную часть игрового времени за цикл, а к пятому дню онлайн составляет малую долю от пика. Недельный цикл держит вас возле пика почти всё время, но выматывает строителей. Месячный цикл даёт строителям то, за чем они пришли, а вам оставляет три тихие недели и очередь в день вайпа. Двухнедельный - привычный компромисс, и не зря.
Вайп чертежей - второй регулятор. Если чертежи сохраняются, возвращаться дёшево: пропустивший неделю игрок не начинает с отставанием, а первый день превращается в гонку за ресурсами, а не за скрапом. Если их стирать, все оказываются равны, но первый день становится гриндом дерева технологий, от которого некоторые в Rust как раз и бегут. Ни то ни другое не ошибка. Ошибка - менять это без предупреждения: те, кто построил вечер вокруг вайпа чертежей, узнают о новом порядке, только когда войдут в игру.
Seed, размер мира и во что они обходятся#
Новая карта - это новый seed и, возможно, новый размер. Оба задаются в строке запуска, и у обоих есть последствия сверх пейзажа.
$ ./RustDedicated -batchmode -nographics \ +server.identity "main" \ +server.hostname "Longship | Biweekly | Next wipe Thu 2 Oct 19:00 UTC" \ +server.port 28015 \ +server.level "Procedural Map" \ +server.seed 1934572 \ +server.worldsize 3500 \ +server.maxplayers 100 \ +server.saveinterval 300 \ +server.tickrate 10 \ +rcon.web 1 +rcon.port 28016 +rcon.password "a-long-random-string" \ +app.port 28082| Convar | По умолчанию | Что делает |
|---|---|---|
server.worldsize | 3000 | Край карты в метрах. Диапазон 1000-6000; обычно 3500-4500 |
server.seed | random | Карта. Тот же seed плюс тот же размер плюс та же сборка дают ту же карту |
server.saveinterval | 300 | Секунд между сохранениями. Уменьшите, и сбой обойдётся дешевле |
server.tickrate | 10 | Максимум 30. Повышение стоит реального CPU при малой ощутимой пользе |
server.maxplayers | - | Слоты. Переполнение обрабатывает очередь |
server.level | Procedural Map | Или Barren, HapisIsland, CraggyIsland |
Размер мира - самый мощный рычаг расхода ресурсов, и зависимость нелинейна: переход с 3000 на 4500 примерно вдвое увеличивает рельеф, который держит сервер, и число сущностей, которые на нём могут существовать. Выбирайте размер под реальный онлайн, а не под амбициозный. Сто игроков на карте 3000 - это жёсткий и людный сервер; двадцать игроков на карте 4500 - это симулятор ходьбы с редкой стрельбой.
| Размер мира | Реалистичный онлайн | RAM | Примечания |
|---|---|---|---|
| 3000 | до 50 | 8-10 GB | Небольшая и плотная |
| 3500-4000 | 75-125 | 12-16 GB | Обычный диапазон |
| 4500-5000 | 150+ | 16-24 GB | Только если есть онлайн, чтобы её заполнить |
В этой таблице людей удивляют две вещи. Первая: потребление памяти у Rust минимально в день вайпа и максимально накануне следующего, потому что базы и деплоймент копятся, - так что сервер, подобранный по тому, как он выглядит в пятницу, к среде окажется на пределе. Вторая: сама генерация карты - самый тяжёлый момент в жизни сервера: первый запуск после вайпа строит весь мир в памяти, прежде чем записать файл .map, и сервер может исчерпать память во время генерации на тарифе, которого вполне хватило бы для готовой карты. Если вайп падает при запуске, а со второй попытки после уменьшения карты проходит, произошло именно это.
Порты и удалённое администрирование#
| Порт | Протокол | Назначение |
|---|---|---|
28015 | UDP | Игровой трафик и запрос списка серверов |
28016 | TCP | RCON, как websocket при rcon.web 1 |
28082 | TCP | Мобильное приложение Rust+, задаётся через app.port |
Если хостер выделяет отдельный порт для запросов, задайте server.queryport явно, а не полагайтесь на значение по умолчанию. RCON - инструмент, которым вы реально будете проводить вайп: через веб-консоль на странице RCON у Facepunch или через настольный клиент. Он аутентифицируется паролем по соединению, которое не стоит открывать шире необходимого; что это значит на практике, описано в статье как безопасно пользоваться RCON. Почему вообще существует порт запросов, объясняет статья порты игровых серверов простыми словами.
Команды, которые стоит знать до дня вайпа, коротки. server.save принудительно сохраняет мир. server.writecfg записывает на диск users.cfg и изменения владельцев - без неё список модераторов пропадёт при следующем перезапуске. quit - чистое завершение с предварительным сохранением; всё, что убивает процесс иначе, теряет до server.saveinterval секунд мира.
Чек-лист дня вайпа#
- За день до вайпа сделайте backup всей папки identity и заблокируйте его от ротации. Опубликуйте напоминание. Именно этот backup вам понадобится, если вы удалите не то, и снять его можно только один раз.
- В час вайпа остановите сервер чисто. Используйте команду консоли
quitили кнопку Stop в панели. Принудительное завершение теряет последние минуты; для карты, которую вы собираетесь удалить, это неважно, а вот если вы решите откатиться, важно очень. - Обновите сервер.
steamcmd +force_install_dir <path> +login anonymous +app_update 258550 validate +quit. Анонимный вход работает;validateмедленный и служит единственным надёжным средством от частичного обновления. Остальное есть в статье SteamCMD простыми словами. - Дождитесь своего фреймворка для модов. Не пропускайте этот шаг. См. следующий раздел.
- Удалите файлы сохранений.
*.savи*.mapдля вайпа карты, плюсplayer.blueprints.*.dbдля вайпа чертежей, плюс всё остальное, что требует ваш план. Инструмент для этого - файловый менеджер или SFTP; запланированная задача файлы за вас удалить не может. - Задайте новый seed и размер мира в строке запуска и проверьте, что они совпадают с объявленными.
- Запустите и наблюдайте. Генерация карты занимает несколько минут на большой карте и не выводит ничего, похожего на прогресс. Дождитесь строки о завершении запуска, прежде чем кому-либо сообщать.
- Опубликуйте данные заново: имя сервера, описание, Discord, трекеры вайпов. Сервер считается вайпнутым, только когда об этом знают другие.
Вся последовательность занимает от тридцати минут до часа, если ничего не пошло не так, а не так она идёт примерно раз в четыре месяца, и это довод в пользу того, чтобы проводить её в фиксированный час, когда вы не спите, а не в полночь.
Oxide, Carbon и плагины в день вайпа#
Если на вашем сервере работает Oxide (uMod) или Carbon, ежемесячное обновление его ломает. Не иногда, а каждый месяц и по устройству: фреймворки цепляются за игровой код, который только что изменился. Сборка под новый протокол обычно появляется в течение нескольких часов, а если запустить сервер до её появления, он заработает вообще без плагинов: без прав, без наборов, без клановой системы, без античита, а игроки тихо пользуются всем тем, что ваши плагины запрещали.
Привычка, которая этого избегает: после обновления через SteamCMD проверьте, выпустил ли фреймворк сборку под новую версию, и только потом запускайте. Если ваш сервер обновляется при загрузке автоматически, значит, в день вайпа автозапуск нужно отключить.
- Плагины лежат в
oxide/pluginsкак файлы.csи компилируются при загрузке; плагин, который не скомпилировался, печатает ошибку в консоль, а остальные продолжают работать. - Конфигурация лежит в
oxide/config, данные - вoxide/data, и их постоянно путают. Очистка данных сбрасывает то, что видят игроки; очистка конфигурации сбрасывает ваши настройки. - Права переживают вайпы, если вы их не сбросили.
oxide.grant group default kit.useи подобные команды сохраняются, а не вычисляются заново.
Храните копию рабочей папки oxide от до обновления и заметку о том, на каких версиях плагинов вы были. Общий вариант этой проблемы разобран в статье что делать, когда обновление мода всё ломает, а гигиена, не дающая списку плагинов превратиться в неподдерживаемый за год вайпов, - в статье как держать модифицированный сервер в порядке.
Объявить там, где это действительно прочтут#
Большинство объявлений о вайпе не срабатывают потому, что сделаны там, где их увидят только те, кто и так внимателен.
- Название сервера - это и есть объявление.
server.hostname- единственное поле в браузере серверов, которое читают все. Впишите в него периодичность и дату следующего вайпа:Longship | Biweekly | Next wipe Thu 2 Oct. Обновляйте его сразу после вайпа, а не накануне следующего. - `server.description` и `server.url` отображаются на информационной панели сервера. Описание вмещает несколько строк и подходит для правил, периодичности и приглашения в Discord.
- Трекеры вайпов добавляют вас автоматически. Они определяют новую карту по данным запросов, так что ничего отправлять не нужно. От вас зависит одно: сообщают ли имя и описание пришедшему из трекера игроку, когда следующий вайп.
- В игре - за сутки и за час, а не за пять минут.
sayчерез RCON работает; плагин с обратным отсчётом лучше, потому что повторяет сообщение. - Discord, по расписанию. Сообщение, которое нужно не забыть отправить, вы забудете в тот месяц, когда всё остальное пойдёт не так.
Переобщаться стоит не из вежливости. Игрок, зашедший и обнаруживший, что базы нет, а предупреждения не было, решает, что сервер сбросили по ошибке или по злому умыслу админа, и не возвращается выяснять, что из этого. Игрок, который знал заранее, заходит в день вайпа в тот час, который вы назвали. О том, как устроена остальная часть этого цикла, рассказано в статье как растить сообщество игрового сервера.
Backup и что переживает вайп#
Вайп и ошибка наутро выглядят одинаково, поэтому backup перед вайпом - единственное, что отделяет «мы провели вайп» от «мы потеряли не тот сервер». Делайте его перед каждым вайпом, храните до следующего и уносите с машины, где лежит оригинал.
В RE:NODE вкладка Schedules запускает выражение cron с упорядоченными задачами - backup, команда консоли, действие с питанием, - так что backup перед вайпом и остановка происходят в фиксированный час, спите вы или нет; как писать само выражение, описано в статье выражения cron простыми словами, а что ещё стоит туда добавить, - в статье задачи по расписанию, которые стоит завести. Слоты backup есть в каждом тарифе, backup хранятся вне машины, которую защищают, а backup можно заблокировать, чтобы ротация его не удалила, - и это именно то, что нужно снимку перед вайпом. Удаление файлов сохранений по-прежнему делается через файловый менеджер или SFTP; расписание эту часть за вас не сделает.
Чего оно сделать не может - это доказать, что backup работает. В статье backup, которые действительно восстанавливаются это разобрано подробно; коротко: один раз восстановить его на тестовый сервер в тихую неделю ценнее, чем год ежедневного создания. Мир Rust - это несколько файлов, и восстановить его быстро, а потому проверять не удосуживается никто.
Память - второе, за чем нужно следить на протяжении цикла. Потребление памяти сервером Rust растёт по мере того, как игроки строят базы, а сервер, упёршийся в лимит памяти, останавливается и перезапускается, а не уходит в своп: чисто, но всё, что не было сохранено, теряется. Сократите server.saveinterval на загруженном сервере и прочитайте статью расписания перезапуска, которые помогают, прежде чем добавлять ночной перезапуск, о котором никто не просил.
Диагностика#
Игроки получают ошибку протокола соединения после ежемесячного обновления. Сервер ещё не обновлён. Запустите SteamCMD с validate и перезапустите сервер.
Сервер сгенерировал новую карту, хотя вы не вайпили. Изменились seed, размер мира или версия сохранения. Сверьте имя файла .map с аргументами запуска - числа в имени файла означают размер мира и seed, с которыми он был сгенерирован.
После вайпа мир вернулся. .sav удалён, но сервер загрузил .sav.old или файл из другой папки identity. Проверьте server.identity и посмотрите содержимое папки, а не доверяйте поиску файлового менеджера.
После обновления плагины не загрузились. Фреймворк ещё не пересобран под новый протокол, либо пересобран, но не установлен. Какой именно случай, консоль сообщает при запуске.
Модераторы потеряли права после перезапуска. Изменения ownerid и moderatorid так и не записались в users.cfg. Выполняйте server.writecfg после выдачи прав.
Серверу не хватило памяти при первом запуске после вайпа. Виновата генерация карты, а не игровой процесс. Уменьшите server.worldsize либо выполните генерацию один раз на более крупном тарифе и сохраните файл .map.
FAQ#
Когда именно проходит принудительный вайп Rust?
В первый четверг каждого месяца, когда Facepunch выпускает ежемесячное обновление, как правило вечером по UTC. Обновление меняет формат сохранения, поэтому предыдущая карта не загрузится, чего бы вам ни хотелось.
Обязательно ли вайпить чертежи, когда вайпается карта?
Нет. Чертежи лежат в player.blueprints.*.db, которого принудительный вайп не касается. Удаление этого файла - отдельное, осознанное решение, и оно сильнее всего определяет, каким будет ощущаться ваш сервер.
Как часто нужно вайпить сервер Rust?
Как получится выдержать. Еженедельные карты с ежемесячными чертежами подходят загруженным серверам, раз в две недели - большинству сообществ, только принудительный - строителям и ролевым проектам. Постоянство важнее самого интервала.
Можно ли сохранить ту же карту после вайпа?
Между принудительными вайпами - да: удалите .sav, оставьте .map, и все начнут заново на знакомом рельефе. Через принудительный вайп - нет: генерация меняется, и тот же seed даёт другую карту.
Почему мой сервер использует больше памяти, чем на прошлой неделе?
Потому что игроки строят. Потребление памяти в Rust следует за числом сущностей, которое растёт на протяжении цикла вайпа и сбрасывается вайпом. Рассчитывайте на день перед вайпом, а не на день после.
Нужно ли предупреждать игроков о вайпе?
Да, и раньше, чем кажется нужным. За день в игре, за неделю в названии сервера. Незапланированный вайп неотличим от ошибки, и игроки воспринимают его именно так.




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