Сервер Palworld замедляется по мере роста баз, а не числа игроков. Каждый работающий пал на каждой базе симулируется всё время, есть рядом кто-то или нет, и каждый из них ищет путь, работает, ест, спит и время от времени застревает. Важные рычаги находятся в PalWorldSettings.ini: BaseCampMaxNumInGuild и BaseCampWorkerMaxNum (сколько палов работает), BaseCampMaxNum (общее число баз на сервере), PalSpawnNumRate (дикие палы) и DropItemMaxNum (предметы на земле). Прежде чем что-то менять, измерьте - REST API сообщает частоту кадров сервера, - и перезапускайте сервер ежедневно, потому что долго работающий сервер Palworld деградирует сам по себе. Это краткое изложение. Ниже - логика, цифры и лаги, которые настройками не исправить.
Та же история со стороны памяти - сколько гигабайт нужно конкретному миру - разобрана в статье память сервера Palworld. Эта статья о том, когда сервер ощущается медленным: палов отбрасывает назад, действия приходят с опозданием, базы встают.
Что на самом деле такое лаги на сервере Palworld#
Словом «лаги» игроки называют три разные проблемы, и только одна из них - сервер.
| Симптом | Вероятная причина | Куда смотреть |
|---|---|---|
| У всех всё с задержкой, палы телепортируются, двери открываются поздно | Упала частота кадров сервера | Метрики REST API, график CPU |
| Одного игрока отбрасывает назад, у остальных всё в порядке | Соединение этого игрока | Его пинг и потеря пакетов |
| Время от времени у всех короткий подвис, затем всё нормально | Автосохранение записывает Level.sav | AutoSaveSpan, размер сохранения |
| Сервер останавливается без единой строки в логе | Закончилась память | График памяти за несколько дней |
Сервер выполняет цикл симуляции. За каждый проход цикла - кадр - он обновляет каждого активного пала, каждого игрока, каждый снаряд и каждую задачу на базе, а затем отправляет результаты клиентам. Когда работы больше, чем помещается в кадр, кадры удлиняются, и частота кадров сервера падает. Клиенты получают обновления реже и вынуждены угадывать в промежутках - отсюда телепортации и откаты, которые все замечают. Это и есть серверные лаги в собственном смысле, и почти всегда их причина - объём симулируемого мира, а не сеть.
Плохое соединение одного игрока с его стороны выглядит похоже, но никому больше не видно. Как их различить, разобрано в статье задержка, джиттер и потеря пакетов; если жалуется только один человек, начните с неё.
Как измерить частоту кадров сервера#
Не настраивайте на ощупь. У REST API есть эндпоинт метрик, который возвращает текущую частоту кадров и время кадра сервера вместе с числом игроков и временем работы:
$ curl -s -u admin:YOUR_ADMIN_PASSWORD http://203.0.113.10:8212/v1/api/metrics{ "serverfps": 58, "currentplayernum": 7, "serverframetime": 17.2, "maxplayernum": 16, "uptime": 41820}Вам нужны поля serverfps и serverframetime (в миллисекундах). В поздних сборках добавились и другие поля; основные остаются стабильными. REST API нужно включить через RESTAPIEnabled=True, и он слушает RESTAPIPort, по умолчанию 8212, - как его включить и не открыть всем, разобрано в статье команды администратора Palworld и RCON.
Важно не абсолютное число, а то, как оно меняется. Запишите частоту кадров тихим вечером на свежем мире, затем когда все в сети, затем через неделю в то же время. Сервер, который держит обычную частоту при полной группе, здоров. Сервер, у которого частота падает каждую неделю по мере роста баз, прямо показывает, где проблема. Частота кадров, которая резко проседает, когда люди собираются на одной базе, и восстанавливается, когда они уходят, указывает на эту базу.
Сопоставляйте это с графиком CPU. Сервер, упёршийся в предел CPU, пока частота кадров падает, ограничен процессором; поможет больше CPU или меньше симуляции. Сервер с запасом CPU и низкой частотой кадров ограничен своим основным потоком, и это более частый случай: большая часть цикла однопоточная, так что помогает более быстрое ядро, а не больше ядер. Как это читать, объясняют статьи CPU или RAM для игровых серверов и как читать график нагрузки сервера.
Базы и работники: главная статья расходов#
База - это область с palbox. Назначенные на неё палы работают - добывают руду, рубят лес, крафтят, носят, выращивают урожай, - и эта работа симулируется непрерывно. Сколько её будет, задают три настройки.
| Настройка | По умолчанию | Что ограничивает |
|---|---|---|
BaseCampMaxNum | 128 | Базы на всём сервере |
BaseCampMaxNumInGuild | 4 | Базы на гильдию |
BaseCampWorkerMaxNum | 15 | Работающих палов на базу |
GuildPlayerMaxNum | 20 | Игроков в гильдии |
Значения по умолчанию менялись от версии к версии, а допустимый максимум BaseCampWorkerMaxNum со временем вырос. Авторитетный список - DefaultPalWorldSettings.ini в вашей собственной установке.
Вся аргументация - это арифметика. Число работающих палов на сервере примерно равно числу гильдий, умноженному на число баз на гильдию и на число работников на базу:
| Гильдий | Баз у каждой | Работников на каждой | Работающих палов |
|---|---|---|---|
| 1 (друзья) | 3 | 15 | 45 |
| 1 (друзья) | 4 | 20 | 80 |
| 4 (небольшой публичный) | 4 | 15 | 240 |
| 4 (небольшой публичный) | 3 | 12 | 144 |
| 10 (публичный, гильдии-одиночки) | 4 | 15 | 600 |
Сервер с 600 работающими палами выполняет огромный объём работы в каждом кадре, сколько бы людей ни было в сети. Самое быстрое улучшение для публичного сервера - обычно BaseCampMaxNumInGuild=3 и BaseCampWorkerMaxNum=12: почти никто этого не замечает, а число симулируемых палов падает больше чем на треть.
Поднять BaseCampWorkerMaxNum - самая частая просьба, которую вы будете получать, и на небольшом частном сервере это нормально: одна гильдия с 20 или 25 работниками на базу вполне укладывается в возможности сервера. На публичном сервере каждая гильдия получает тот же лимит, так что считайте итоговые суммы, а не по гильдиям.
Почему одни базы дороже других#
Две базы с одинаковым числом палов могут стоить совсем по-разному. Палы в Palworld прокладывают путь к работе, и стоимость поиска пути зависит от формы базы.
- Многоэтажные базы с лестницами, пандусами и узкими коридорами делают поиск пути дорогим, а застрявших палов - обычным делом. Застрявший пал пытается снова и снова, в каждом кадре.
- Рабочие станции, разбросанные далеко друг от друга в радиусе базы, означают долгие прогулки со множеством пересчётов пути.
- Базы на неровной местности дают палов, которые падают с уступов и с трудом возвращаются.
- Пересекающиеся или тесные базы, где палы с разных баз мешают друг другу.
Если частота кадров падает, когда игроки собираются на какой-то конкретной базе, эта база - кандидат. Попросите владельца упростить планировку: рабочие станции по возможности на одном уровне, широкие проходы, лестницы заменить пандусами, palbox поставить ближе к центру. Это лучшее исправление, чем любая настройка, и игроки обычно охотно его делают, когда понимают, почему их палы тоже постоянно застревают.
Дикие палы, предметы и остальной мир#
Базы - самая большая статья расходов на обжитом сервере, но не единственная.
Спавн диких палов. PalSpawnNumRate масштабирует, сколько диких палов появляется в мире; по умолчанию 1.0. Снижение примерно до 0.8 уменьшает число палов, которых сервер симулирует в активных областях. Повышение делает мир оживлённее и стоит пропорционально. Это влияет и на поимку и фарм, так что предупредите игроков, прежде чем менять.
Выброшенные предметы. DropItemMaxNum ограничивает, сколько предметов одновременно лежит на земле, а DropItemAliveMaxHours задаёт, сколько живёт каждый. На загруженном сервере выброшенные предметы копятся быстро - после смертей, из полных инвентарей, от палов, - и каждый из них объект. Если вдвое уменьшить лимит, это редко кого-то задевает и почти бесплатно даёт производительность.
Рейды. bEnableInvaderEnemy включает или выключает рейды на базы. Рейд создаёт у базы группу врагов и даёт короткий всплеск дополнительной симуляции. На сервере, где рейдят сразу несколько баз, это видно как просадка. Большинство групп оставляют рейды включёнными, потому что они часть игры; отключить их - вариант, если сервер не справляется.
Дальность видимости. В поздних сборках появилась ServerReplicatePawnCullDistance, которая определяет, на каком расстоянии сервер отправляет каждому клиенту других игроков и палов. Уменьшение снижает сетевую нагрузку и работу по репликации; увеличение делает дальние объекты видимыми раньше. Прежде чем добавлять настройку, проверьте, есть ли она в вашей версии.
Число построек. В свежих сборках есть настройка лимита построек (поищите MaxBuildingLimitNum в значениях по умолчанию своей версии). Каждая стена, пол и сундук - это объект в сохранении и в памяти; лимит - самый грубый способ не дать публичному миру превратиться в соревнование мегабаз.
Перезапуски и медленная деградация#
Сервер Palworld, который перезапускают ежедневно, работает лучше, чем тот, что неделю не выключали, даже на том же мире. За долгое время работы память растёт, копятся мелкие проблемы симуляции (палы, застрявшие в стенах, предметы, которые так и не исчезли), и частота кадров постепенно сползает вниз. Перезапуск всё это очищает: мир загружается из последнего сохранения, и всё начинается заново.
Ежедневный перезапуск в час, когда никто не играет, - обычная практика для Palworld. Сначала предупредите игроков через Broadcast, сохраните через Save, затем перезапустите. В RE:NODE вкладка Schedules выполняет эту последовательность по cron-выражению - объявление, ожидание, сохранение, backup и перезапуск - как упорядоченные задачи, так что никому не нужно помнить. О времени перезапусков - в статье расписания перезапусков, которые помогают, а о том, как включить backup в то же расписание, - в статье резервные копии и сброс мира Palworld.
Если сервер нужно перезапускать чаще раза в день, чтобы на нём можно было играть, мир слишком велик для сервера. Это выбор между большими ресурсами и меньшим миром, а не повод перезапускать каждые шесть часов.
Подвисания при автосохранении#
AutoSaveSpan задаёт, как часто мир записывается в Level.sav, в секундах. Запись большого сохранения занимает время, и на зрелом мире она вызывает заметный подвис. Значение по умолчанию короткое - тридцать секунд: это ограничивает потери при падении, но на большом мире означает частые подвисания. Если поднять его до 180 или 300, игра станет плавнее; цена - до стольких же секунд потерянного прогресса, если сервер остановится нештатно. На стабильном сервере более длинный интервал обычно выгоднее.
Быстрый накопитель сокращает подвис, но не убирает его, потому что часть стоимости - это сериализация мира, а не только запись. RE:NODE везде работает на NVMe, что помогает с половиной, связанной с записью.
Порядок настройки, который работает#
Когда сервер тормозит, меняйте всё в таком порядке и измеряйте после каждого шага:
- Перезапустите его. Если производительность возвращается к норме и снова падает за несколько дней, добавьте ежедневный перезапуск и на этом остановитесь.
- Проверьте память. Сервер у предела памяти начинает вести себя плохо ещё до того, как она закончится. Если дело в памяти, прочитайте статью память сервера Palworld.
- Посчитайте базы и работников. Выясните, сколько существует баз и работников. Если их сотни, уменьшите
BaseCampMaxNumInGuildиBaseCampWorkerMaxNum. - Найдите дорогую базу. Следите за частотой кадров, пока игроки перемещаются по миру. Упростите базу, которая её тянет вниз.
- Сократите мир.
DropItemMaxNum,PalSpawnNumRate,AutoResetGuildNoOnlinePlayersдля заброшенных гильдий. - И только потом смотрите на ресурсы. Если после всего этого сервер постоянно упирается в предел CPU, ему нужно больше CPU. В RE:NODE смена тарифа поднимает лимит на том же сервере без пересборки - см. когда переходить на тариф выше.
Если что-то не так#
Палы телепортируются, а двери у всех открываются с опозданием. Частота кадров сервера. Проверьте эндпоинт метрик и график CPU, затем пройдите по порядку настройки.
Неделями всё было нормально, а потом медленно ухудшалось. Рост мира. Больше баз, больше работников, больше сохранение. Перезапускайте ежедневно и урежьте лимиты.
На одной базе играть невозможно, в остальном мире всё в порядке. Планировка этой базы. Упростите её и проверьте, нет ли застрявших палов.
Подвис каждые тридцать секунд. AutoSaveSpan по умолчанию на большом мире. Увеличьте его.
После перезапуска сервер быстрый, а к вечеру медленный. Деградация от времени работы. Ежедневные перезапуски и проверка роста памяти в течение дня.
Снижение лимитов ничего не дало. Существующие базы и работники сверх новых лимитов остаются, пока их не уберут. Эффект накапливается по мере ухода старых баз.
FAQ#
Сколько баз выдерживает сервер Palworld?
Зависит от числа работников на базу и от CPU сервера. Считайте общее число работающих палов, а не баз: сотня-другая комфортна для сервера среднего размера, а с нескольких сотен частота кадров начинает страдать.
Убирает ли снижение BaseCampWorkerMaxNum уже существующих палов?
Нет. Палы, которые уже работают, остаются; просто никто не может назначить новых сверх лимита. Полный эффект проявляется по мере перестройки или забрасывания баз.
Почему мой сервер Palworld лагает всего с несколькими игроками?
Потому что стоимость определяет мир, а не игроки. Несколько игроков с множеством больших баз могут нагрузить сервер сильнее, чем полный сервер новичков.
Ускорят ли сервер Palworld дополнительные ядра CPU?
Лишь до определённого предела. Большая часть симуляции идёт в одном основном потоке, поэтому более быстрое ядро помогает сильнее, чем дополнительные ядра. Флаги многопоточности при запуске помогают задействовать те дополнительные ядра, что есть.
Как часто перезапускать сервер Palworld?
Ежедневно - это нормально. Перезапуск очищает накопившиеся проблемы и рост памяти. Если сервер нужно перезапускать чаще, чтобы на нём можно было играть, он слишком мал для этого мира.




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