Когда игра получает патч, безопасный порядок всегда одинаковый: сделайте backup до того, как что-либо коснётся сервера, выясните, работают ли ваши моды или плагины на новой версии, обновите файлы сервера, запустите его и проверьте, что он действительно загрузил ваш мир, а затем сообщите игрокам, что всё готово. На ванильном сервере это пятнадцать минут. На сервере с модами это может означать день ожидания авторов модов, и самое трудное - удержаться и не обновиться всё равно, потому что игроки спрашивают. Этот чек-лист описывает каждый шаг, порядок, при котором не теряется мир, и то, как откатиться, если обновление пошло не так.
Почему день патча ломает серверы#
Почти любая многопользовательская игра требует, чтобы клиент и сервер работали на одной и той же сборке. Когда Steam обновляет клиенты игроков, они больше не могут зайти на сервер, оставшийся на старой, - они видят "version mismatch", "server is outdated" или просто не могут подключиться. Поэтому давление "обнови сервер" начинается в ту же минуту, как вышел патч.
Однако обновление сервера может сломать три вещи, которые обновление клиента сломать не может:
- Моды и плагины, которые цепляются за код игры. Фреймворки вроде BepInEx, Oxide и Carbon, SourceMod и Metamod, CounterStrikeSharp, RocketMod и плагины Paper зависят от внутреннего кода игры, который меняется с патчами. Пока их авторы не догонят, они роняют сервер, не загружаются или - что хуже всего - загружаются и тихо портят данные.
- Сохранение. Некоторые патчи при первой загрузке переводят мир в новый формат. Как только новый сервер записал что-то в сохранение, старый может отказаться его читать, и неудачное обновление превращается в потерянный мир, если вы заранее не сделали backup.
- Конфиги. Новые версии добавляют, переименовывают или удаляют настройки. Сервер может запуститься со значениями по умолчанию для переименованного ключа и работать с настройками, которых вы не выбирали, без единой ошибки.
Остальная часть статьи - о том, как держать эти три вещи под контролем.
До выхода патча#
Лучшие дни обновления готовятся ещё до того, как патч существует.
Знайте, как ваша игра объявляет обновления. Rust делает принудительный вайп и обновляется в первый четверг каждого месяца; большинство игр публикуют патчноуты в новостях Steam незадолго до или сразу после выхода; у релизов Minecraft за несколько недель выходят снапшоты и пре-релизы. Следите за каналом объявлений игры и за каналами критически важных для вас модов.
Отключите автообновления на серверах с модами. На ванильном сервере обновление при каждом перезапуске удобно и в основном безопасно. На сервере с модами это означает, что первый плановый перезапуск после патча установит версию, которую ваши моды не поддерживают. В большинстве панелей и стартовых скриптов есть переключатель автообновления; для серверов с модами его место - в положении "выключено", а обновления делаются вручную. Когда автоматизация безопасна, разобрано в статье автоматизация обновлений игрового сервера.
Ведите список того, что установлено. Названия модов, версии и откуда они взяты. Когда выходит патч, нужно проверить каждый, и если делать это по памяти, пропустите именно тот, который сломается.
Заведите тестовый сервер, если сообщество достаточно большое, чтобы он был нужен. Копия продакшена на собственном небольшом тарифе позволяет сначала опробовать обновление. Насколько маленьким он может быть, - в статье тестовый сервер рядом с продакшеном.
Чек-лист#
В сам день, в таком порядке:
- Прочитайте патчноуты. Ищите слова вроде "save", "world", "format", "server", "config" и "breaking". Балансный патч и миграция сохранений - это разные дни.
- Проверьте моды и плагины. Загляните на страницу каждого критически важного, в релизы на GitHub или в Discord. Сказал ли автор, что мод работает на новой версии, или выпустил обновление? Если критически важный мод не обновлён, остановитесь здесь и сообщите игрокам.
- Расскажите игрокам, что происходит. Короткое сообщение: патч вышел, сервер обновится в такое-то время или подождёт моды. Задержку с объяснением игроки переносят гораздо лучше, чем молчание. Формулировки, которые работают, - в статье как объявлять о техработах и простое.
- Остановите сервер корректно. Корректная остановка сохраняет мир. Принудительное завершение - нет.
- Сделайте backup сейчас. Не вчерашний, а сделанный после корректной остановки, чтобы в нём было последнее состояние. Если хостинг позволяет, заблокируйте его от ротации, чтобы неделя плановых backup-ов его не вытеснила.
- Запишите текущую сборку. Build id из лога сервера или SteamCMD (его показывает
app_status <appid>). Он нужен для отката. - Обновите файлы сервера. Через функцию обновления или переустановки в панели или через SteamCMD с
app_update <appid> validate. - Обновите моды и плагины до версий, которые поддерживают новую сборку.
- Сравните конфиги. Если обновление принесло новые конфиги по умолчанию, сравните их со своими на предмет новых или переименованных ключей.
- Запустите и прочитайте лог. Досмотрите его до строки о готовности. Ищите ошибки загрузчиков модов, строку "creating new world" (значит, ваш мир не найден) и предупреждения о неизвестных настройках.
- Зайдите и проверьте. Войдите, посмотрите на известную базу или постройку, проверьте инвентарь, выполните админ-команду. Пять минут проверки лучше вечера жалоб.
- Сообщите игрокам, что сервер работает.
Как заметить изменения в конфигах
Шаг 9 - тот, который пропускают, и он вызывает самые тихие проблемы. Игры обрабатывают изменившийся конфиг одним из трёх способов: добавляют новый ключ со значением по умолчанию и не трогают ваш файл, перезаписывают ваш файл свежим конфигом по умолчанию (редко и неприятно) или читают ваш старый файл, игнорируют ключ, который больше не узнают, и продолжают работу. В последнем случае сервер запускается, никто не жалуется, а настройка, на которую вы полагались, молча перестала работать.
Дешёвая защита - держать копию каждого изменённого вами конфига, сделанную до обновления, и сравнивать её после. Файловые менеджеры большинства панелей позволяют скачать файл в один клик; на своей машине сравнение делает diff:
$ diff -u serverconfig.xml.before serverconfig.xmlИщите в выводе три вещи: ключи, которые исчезли, ключи, которые появились со значениями по умолчанию, которых вы бы не выбрали, и изменившиеся форматы значений (число, ставшее словом, список, ставший блоком). Затем загляните в патчноуты или конфиг игры по умолчанию, чтобы понять, что делают новые ключи. Пять минут такой проверки после каждого крупного патча перехватывают жалобу "почему с вторника лут неправильный" до того, как кто-то её напишет.
Обновление через SteamCMD#
Для серверов, распространяемых через Steam, само обновление - одна команда. На своей машине:
$ steamcmd +force_install_dir /home/game/server +login anonymous \ +app_update 896660 validate +quitvalidate сверяет каждый файл с манифестом Steam и заменяет всё, что отличается. Это хорошо для починки повреждённой установки и плохо для всего, что вы правили внутри собственных папок игры, - эти правки откатываются. Держите свою конфигурацию в тех файлах и папках, которые игра считает вашими, а не вшитой в поставляемые файлы.
После этого убедитесь, что сборка сменилась:
$ steamcmd +force_install_dir /home/game/server +login anonymous \ +app_status 896660 +quitИграм, которым нужен настоящий вход в Steam, а не анонимный (Arma 3, DayZ и некоторые другие), нужен аккаунт, на котором есть игра. В панели обновление - это обычно переустановка или перезапуск с включённым переключателем обновления; под капотом панель выполняет ту же команду SteamCMD. Флаги и ошибки разобраны в статье что такое SteamCMD.
Игры не из Steam
Не всё обновляется через Steam:
| Игра | Как обновляется сервер |
|---|---|
| Minecraft (Paper) | Скачать новую сборку Paper для нужной версии |
| FiveM | Заменить server artifacts на более новую сборку |
| Terraria | Скачать новый zip выделенного сервера |
| Factorio | Новая headless-сборка с factorio.com |
| BeamMP | Новый релиз сервера от проекта BeamMP |
У каждой свой ритм. Minecraft - крайний случай: новая версия может означать недели ожидания Paper и плагинов, и многие серверы намеренно остаются на версию позади, используя ViaVersion, чтобы пускать более новые клиенты. Этот путь описан в статье обновление версии Minecraft, а рекомендуемые сборки FiveM - в статье обновления сервера FiveM и artifacts.
Когда моды не готовы#
Это решение, которое определяет день патча на сервере с модами. Ваши варианты:
Ждать. Оставить сервер на старой сборке. Игроки с обновлёнными клиентами не смогут зайти, пока он не обновится, так что сервер фактически лежит, но мир и моды в безопасности. Для популярных модов ожидание часто занимает день-два. Скажите игрокам об этом честно.
Остаться на старой версии через beta-ветку. Некоторые игры публикуют предыдущие сборки как beta-ветки в Steam - 7 Days to Die так держит доступными старые мажорные версии, а у Valheim была публичная тестовая ветка. Игроки могут переключить свой клиент на ту же ветку, и все продолжают играть. Это работает только там, где разработчик это предлагает, а названия веток меняются; их перечисляют объявления самой игры. Как выбрать ветку, - в статье app id в SteamCMD и beta-ветки, а что можно и что нельзя закрепить, - в статье закрепление версии и откаты игрового сервера.
Обновиться без сломанных модов. Отключить моды, которые не готовы, обновиться и работать с остальными. Безопасно только для модов, которые ничего не добавляют в мир, - фильтр чата или просмотрщик карты. Удаление мода, который добавлял предметы, блоки или существ, может стереть их из мира или помешать ему загрузиться.
Обновиться всё равно. Иногда мод работает, хотя и не помечен как обновлённый. Проверяйте это на копии, никогда на единственном мире, который у вас есть.
Неправильный ответ - самый частый: обновить всё разом, потому что игроки торопят, обнаружить, что сервер падает при запуске, а потом пытаться всё исправить под давлением. Если это уже случилось, читайте статью что делать, когда обновление мода сломало сервер.
Откат#
Если обновление пошло не так, нужны две вещи: старая сборка игры и сохранение до обновления. Сохранение лежит в backup, сделанном на шаге 5. Со старой сборкой сложнее:
- В Steam старые сборки доступны только через beta-ветки, которые публикует разработчик, или через загрузку конкретного манифеста depot командой
download_depot- это возможно, но кропотливо, и не каждая панель это позволяет. - Некоторые панели и backup-ы включают всю папку сервера вместе с файлами игры. Восстановление такого backup-а возвращает и старую сборку, и сохранение, и это самый простой откат из возможных.
- Для игр не из Steam храните архив предыдущей сборки, пока новая не проработает без проблем неделю.
Как бы то ни было, восстанавливайте их вместе. Старый сервер с сохранением, уже переведённым новой версией, может отказаться его загружать, а новый сервер со старым сохранением может перевести его повторно. Статьи backup-ы, которые действительно восстанавливаются и проверьте восстановление до того, как оно понадобится - причина, по которой шаг 5 не опционален.
После обновления#
Следующий день тоже важен.
- Следите за медленными сбоями. Некоторые поломки проявляются только под нагрузкой или через несколько часов: память растёт быстрее, чем раньше, сервер падает при загрузке определённой области, предмет исчезает после перезахода. Прочитайте логи на следующее утро.
- Держите backup до обновления заблокированным хотя бы неделю, пока не будете уверены, что ничего не пошло не так.
- Обновите свой список модов новыми версиями, чтобы в следующий раз начать с точной записи.
- Верните расписание. Если на время работы вы отключали плановые перезапуски или backup-ы, включите их обратно. Какие именно вернуть, перечислено в статье задачи по расписанию, которые стоит завести.
- Запишите, что пошло не так. Если мод обновлялся неделю, подумайте, хотите ли вы от него зависеть. Если процесс обновления был мучительным, запишите шаги, которые сработали, на следующий месяц.
FAQ#
Почему после обновления игры никто не может зайти на мой сервер?
Потому что клиенты обновились, а сервер нет, и версии больше не совпадают. Остановите сервер, сделайте backup, обновите файлы сервера и запустите его снова. Если у вас моды, сначала проверьте, что они поддерживают новую версию.
Стоит ли включать автообновления на игровом сервере?
На ванильном сервере обновление при каждом перезапуске разумно. На сервере с модами это рискованно, потому что первый перезапуск после патча установит версию, которую ваши моды могут не поддерживать. Обновляйте серверы с модами вручную, после проверки.
Сколько ждать, пока обновятся моды?
Популярные, активно поддерживаемые моды часто обновляются за день-два. Небольшие могут обновляться неделями или не обновиться никогда. Если мод, от которого вы зависите, не обновился и через неделю, планируйте работу без него.
Можно ли остаться на старой версии игры?
Только если разработчик публикует старые сборки как beta-ветки в Steam или вы сохранили старые файлы. Игрокам тоже нужно переключить свои клиенты на ту же ветку. Многие игры вообще не дают пути назад.
Нужно ли вайпать мир после обновления?
Обычно нет. Большинство обновлений нормально загружают существующие миры. Некоторые крупные обновления рекомендуют или требуют новый мир, чтобы сгенерировался новый контент, а некоторые принудительно вайпают. Когда это важно, об этом сказано в патчноутах.




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