Выделенный сервер Palworld настраивается одной строкой в одном файле: PalWorldSettings.ini в папке Pal/Saved/Config/LinuxServer/, и всё, что сервер знает о сложности, множителях, паролях, портах и лимитах, лежит внутри единственного кортежа OptionSettings=(...) на этой строке. Ошибётесь со скобкой - и вся строка молча отбрасывается: сервер поднимается с настройками по умолчанию, и ничто вам об этом не сообщает. Ещё две вещи сбивают людей раньше, чем они до этого доберутся: файл в корневой папке сервера - это шаблон, который сервер никогда не читает, а мир, загруженный из кооператива, несёт собственные настройки, которые полностью перекрывают файл. Ниже разобрано всё это, ключ за ключом.
Где лежат настройки#
Есть два файла с почти одинаковыми именами, и делает что-то только один из них.
<server root>/DefaultPalWorldSettings.ini <- template, read-only reference<server root>/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini <- the live fileНа сервере под Windows рабочий путь другой: Pal/Saved/Config/WindowsServer/PalWorldSettings.ini. Рабочего файла нет, пока сервер хотя бы раз не запускался, поэтому обычный первый шаг такой: запустить сервер, остановить, а потом редактировать. Скопировать DefaultPalWorldSettings.ini поверх рабочего файла - стандартный способ получить полный список ключей для той версии, которую вы действительно запускаете, и в Palworld это важнее, чем в большинстве игр, потому что Pocketpair добавляет параметры почти с каждым обновлением. Какой бы список вы ни читали в интернете, включая этот, авторитетом остаётся файл из вашей сборки.
На хостинге с панелью тот же путь вы найдёте в файловом менеджере или по SFTP с учётными данными сервера, указанными на его странице. О том, как подключить редактор к этому пути, рассказано в статье SFTP и файловый менеджер. Редактируйте файл при остановленном сервере. Palworld записывает конфиг заново при завершении работы, поэтому правка, внесённая на работающем сервере, обычно затирается в тот момент, когда вы его останавливаете, и люди теряют на этом час, прежде чем понимают, в чём дело.
Часть настроек можно передать и в командной строке, и на этот запуск она перекроет файл. Это удобно на панели, где вкладка Startup открывает несколько переменных, и именно так меняют порт или число игроков, не трогая конфиг:
$ ./PalServer.sh -port=8211 -queryport=27015 -players=16 -publiclobby \ -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDSТри флага производительности в конце Pocketpair не документирует, но их рекомендует практически каждый, кто держит сервер в серьёзном масштабе, и у большинства хостеров они включены по умолчанию.
Одна строка, все параметры#
В рабочем файле важны ровно две строки: заголовок секции и кортеж параметров.
[/Script/Pal.PalGameWorldSettings]OptionSettings=(Difficulty=None,DayTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,ServerName="Longship Crew",AdminPassword="...")Здесь строка перенесена, чтобы уместиться на странице. В настоящем файле это одна непрерывная строка. Поставьте перенос внутри скобок - и парсер бросает всё, что идёт после него. Из этого формата следуют такие правила:
- Никаких пробелов после запятых и вокруг знаков
=. - Строки берутся в двойные кавычки, числа - без кавычек, булевы значения -
TrueилиFalseс заглавной буквы. - Дробные числа по традиции пишутся с шестью знаками после запятой.
1.5тоже работает, но держите единый стиль, чтобы различия в файле читались легко. - Ключи можно опускать. Всё отсутствующее берёт встроенное значение по умолчанию, так что короткий кортеж из десяти изменённых вами параметров вполне допустим и поддерживать его гораздо проще, чем чудовище из 90 ключей.
- Ключ, которого сборка не знает, игнорируется. Именно так руководство, написанное для старого обновления, тихо перестаёт что-либо делать.
Вариант отказа стоит повторить, потому что это самое частое обращение в поддержку по Palworld: синтаксическая ошибка не порождает никакой ошибки. Сервер запускается, мир загружается, все множители возвращаются к 1.0, а пароль пропадает. Если ваши настройки «сами сбрасываются», сначала ищите лишний пробел, «умные» кавычки, вставленные с веб-страницы, или пропущенную закрывающую скобку и только потом смотрите куда-то ещё.
Название сервера, пароли и порты#
Эти ключи вы задаёте до того, как кто-либо подключится.
| Ключ | По умолчанию | Что делает |
|---|---|---|
ServerName | Default Palworld Server | Показывается в списке сообществ |
ServerDescription | пусто | Произвольный текст под названием |
ServerPassword | пусто | Пароль для входа. Пусто - заходит любой |
AdminPassword | пусто | Нужен для админ-команд, RCON и REST API |
PublicIP | пусто | Задавайте, только если сервер объявляет не тот адрес |
PublicPort | 8211 | Порт, объявляемый в списке |
ServerPlayerMaxNum | 32 | Жёсткий предел числа подключённых игроков |
CoopPlayerMaxNum | 4 | Только для кооператива. На выделенном сервере ничего не делает |
bUseAuth | True | Аутентификация платформы. Оставьте включённой |
Region | пусто | Метка региона для списка сообществ |
RCONEnabled | False | Source RCON на порту RCONPort |
RCONPort | 25575 | TCP |
RESTAPIEnabled | False | Административный HTTP API |
RESTAPIPort | 8212 | TCP |
BanListURL | Список Pocketpair | Глобальный список банов, который сервер загружает при старте |
ServerName - это ещё и то, как вас находят, поэтому сделайте его удобным для поиска: фильтр списка в игре - это обычное совпадение подстроки, а серверов в нём десятки тысяч. Если вы вообще не хотите попадать в список, не добавляйте -publiclobby в командную строку.
Порты:
| Порт | Протокол | Назначение |
|---|---|---|
8211 | UDP | Игровой трафик. Единственный, который нужен игрокам |
27015 | UDP | Steam query, задаётся через -queryport |
25575 | TCP | RCON, только если вы его включили |
8212 | TCP | REST API, только если вы его включили |
Игровой трафик Palworld идёт по UDP, поэтому правило файрвола, открывающее только TCP, даёт сервер, который прекрасно работает, но к которому нельзя подключиться. Вторая половина этой пары, порт запросов, разобрана в статье порты игрового сервера: именно он решает, появитесь ли вы в списке вообще. RCON и REST API никогда не должны быть открыты в интернет со слабым паролем; оба подробно описаны в статье админ-команды Palworld, RCON и REST API.
Сложность и множители#
Difficulty принимает значения None, Casual, Normal и Hard. Оставьте None и задайте отдельные множители сами. Именованная сложность и таблица множителей, выставленная вручную, - это два источника истины для одного и того же числа, и вы потратите больше времени на выяснение, какой из них победил, чем ушло бы на ввод значений.
Всё ниже - множители около 1.000000.
| Ключ | По умолчанию | Что меняет |
|---|---|---|
DayTimeSpeedRate | 1.0 | Чем выше, тем быстрее проходит светлое время |
NightTimeSpeedRate | 1.0 | Поставьте 2.0, если ваша группа не любит темноту |
ExpRate | 1.0 | От 1.5 до 2.0 подходит группе, которая играет несколько вечеров в неделю |
PalCaptureRate | 1.0 | Шанс, что сфера попадёт |
PalSpawnNumRate | 1.0 | Плотность диких палов. Ещё и рычаг производительности |
WorkSpeedRate | 1.0 | Как быстро работают палы на базе |
CollectionDropRate | 1.0 | Добыча с руды, деревьев и камня |
CollectionObjectHpRate | 1.0 | Сколько ударов нужно, чтобы разбить залежь |
CollectionObjectRespawnSpeedRate | 1.0 | Скорость возрождения залежей |
EnemyDropItemRate | 1.0 | Добыча с побеждённых палов и людей |
PalEggDefaultHatchingTime | 72 | Часы, а не множитель. Обычно меняют на 1 |
Два из них требуют предупреждения. CollectionObjectRespawnSpeedRate, по многочисленным сообщениям, работает наоборот относительно своего названия: меньшие значения возрождают залежи раньше, поэтому меняйте его за один шаг и сходите посмотреть на камень, а не верьте подписи. А PalEggDefaultHatchingTime - это реальные часы настенного времени, есть кто-нибудь в сети или нет, и именно поэтому почти на каждом закрытом сервере там стоит 1 или 0.
Множители выживания устроены так же, но с названиями там минное поле. Pocketpair выпустила Decreace вместо Decrease и так и не исправила, а между ключами ещё и смешиваются HP и Hp. Копируйте их в точности:
| Ключ | По умолчанию | Что меняет |
|---|---|---|
PlayerDamageRateAttack | 1.0 | Урон, который наносите вы |
PlayerDamageRateDefense | 1.0 | Урон, который получаете вы |
PalDamageRateAttack | 1.0 | Урон, который наносят ваши палы |
PalDamageRateDefense | 1.0 | Урон, который получают ваши палы |
PlayerStomachDecreaceRate | 1.0 | Скорость голода. Чем ниже, тем мягче |
PlayerStaminaDecreaceRate | 1.0 | Расход выносливости |
PlayerAutoHPRegeneRate | 1.0 | Пассивное лечение |
PlayerAutoHpRegeneRateInSleep | 1.0 | Лечение в кровати |
PalStomachDecreaceRate | 1.0 | Как быстро голодают палы на базе |
PalAutoHPRegeneRate | 1.0 | Пассивное лечение палов |
BuildObjectDamageRate | 1.0 | Урон, который получают постройки |
BuildObjectDeteriorationDamageRate | 1.0 | Обветшание. 0 отключает его |
PalStomachDecreaceRate где-нибудь около 0.3 - это настройка, которая не даёт вашей базе развалиться, пока никого нет в сети, а BuildObjectDeteriorationDamageRate=0.000000 не даёт базе гнить между сессиями. На сервере, который компания друзей навещает по выходным, эти два параметра делают для настроения больше любого множителя опыта.
Штраф за смерть, PvP, гильдии и рейды#
| Ключ | По умолчанию | Примечания |
|---|---|---|
DeathPenalty | All | None, Item, ItemAndEquipment, All |
bEnablePlayerToPlayerDamage | False | Игроки могут ранить друг друга |
bEnableFriendlyFire | False | Урон внутри гильдии |
bIsPvP | False | Режим PvP |
bCanPickupOtherGuildDeathPenaltyDrop | False | Забирать мешки смерти других гильдий |
bEnableDefenseOtherGuildPlayer | False | Защита базы стреляет по чужакам |
bEnableInvaderEnemy | True | Рейды на вашу базу |
bEnableNonLoginPenalty | True | Штраф, применяемый к игрокам не в сети |
bEnableFastTravel | True | Точки быстрого перемещения |
bIsStartLocationSelectByMap | True | Выбор места появления на карте |
bExistPlayerAfterLogout | False | Ваше тело остаётся в мире после выхода |
GuildPlayerMaxNum | 20 | Участников в гильдии |
bAutoResetGuildNoOnlinePlayers | False | Удалять гильдии, где давно никого нет |
AutoResetGuildTimeNoOnlinePlayers | 72 | Через сколько часов это происходит |
bActiveUNKO | False | Палы оставляют помёт |
DeathPenalty=All означает, что вы роняете весь инвентарь вместе со снаряжением, а на публичном сервере с bCanPickupOtherGuildDeathPenaltyDrop=True это PvP с полным лутом. Для закрытой группы обычный компромисс - Item (выпадает сумка, надетое остаётся), а None - это то, к чему приходит большинство серверов на шестерых после первого раза, когда кто-нибудь погиб в вулкане.
bExistPlayerAfterLogout=True звучит безобидно, но это не так: для каждого вышедшего игрока в мире остаётся тело, а это ещё один набор сущностей для симуляции и ещё одна цель, которую могут убить, пока хозяин спит. Оставляйте выключенным, если только вы сознательно не запускаете хардкорный сервер.
Пара параметров автосброса гильдий рассчитана на публичные серверы. bAutoResetGuildNoOnlinePlayers=True при значении по умолчанию в 72 часа удалит гильдию и базы каждого, кто взял длинные выходные, так что если вы включаете её, поднимите таймер до чего-нибудь вроде 336 (две недели) и предупредите людей.
Базы, палы и настройки, которые стоят памяти#
Расход памяти в Palworld определяется числом симулируемых объектов, а не числом игроков, и об этом статья почему серверу Palworld нужно больше памяти, чем вы думаете. Четыре из этих ключей решают, сколько таких объектов будет.
| Ключ | По умолчанию | Влияние на нагрузку |
|---|---|---|
BaseCampMaxNum | 128 | Всего баз на сервере |
BaseCampWorkerMaxNum | 15 | Палов, работающих на одной базе |
PalSpawnNumRate | 1.0 | Диких палов, живущих в мире |
DropItemMaxNum | 3000 | Одновременно отслеживаемых выпавших предметов |
DropItemMaxNum_UNKO | 100 | Одновременно отслеживаемого помёта |
DropItemAliveMaxHours | 1.0 | Часов до исчезновения выпавшего предмета |
SupplyDropSpan | 180 | Минут между сбросами припасов |
ChatPostLimitPerMinute | 10 | Ограничение частоты сообщений в чате |
bIsUseBackupSaveData | True | Хранить скользящие копии сохранения |
LogFormatType | Text | Text или Json |
Порядок в этом списке примерно соответствует порядку, в котором к ним стоит тянуться. BaseCampWorkerMaxNum выше 20 - это то место, где люди сообщают о проблемах: игра примет большее число, а база станет вести себя странно. BaseCampMaxNum в 128 щедро для закрытого сервера, и его можно снизить до 20 или 30, чтобы никто не заметил, а заодно один игрок не построит двенадцать аванпостов по всей карте. PalSpawnNumRate на уровне 0.7 заметно разрежает дикую местность на испытывающем трудности сервере, а веселья отнимает меньше, чем вы ожидаете, потому что плотность подобрана под одиночную игру.
DropItemMaxNum=3000 - это очень много отслеживаемых объектов. Вдвое меньшее значение и DropItemAliveMaxHours в 0.5 - бесплатная производительность на загруженном сервере. Честная картина того, что эти ручки могут и чего не могут, есть в статье CPU или RAM для игровых серверов: если контейнер упёрся в потолок памяти, никакой множитель его не спасёт, и ответом будет тариф побольше.
Оставьте bIsUseBackupSaveData=True. Он записывает скользящие копии сохранения рядом с рабочим: они не переживут исчезновение диска, зато спасут от повреждённого Level.sav, а именно от повреждённых сохранений миры Palworld обычно и гибнут. Настоящие резервные копии вне машины по-прежнему обязательны - см. резервные копии, которые действительно восстанавливаются.
Сохранения, WorldOption.sav и перенос кооперативного мира#
Мир лежит в папке сохранений, по одному каталогу на мир, с именем из 32 шестнадцатеричных символов:
Pal/Saved/SaveGames/0/<WorldID>/ Level.sav the world: bases, pals, structures LevelMeta.sav name and metadata shown in the list WorldOption.sav settings baked into the world (co-op saves only) Players/<id>.sav one file per characterСервер выбирает мир по -worldname или, если ничего не задано, берёт единственную найденную папку. Загрузка кооперативного мира - это четыре шага: остановить сервер, скопировать всю папку <WorldID>, удалить из неё WorldOption.sav, запустить сервер. Третий шаг - тот, о котором никто не упоминает. WorldOption.sav записывается, когда мир создаётся в кооперативе, в нём лежат настройки, с которыми мир был создан, и пока он существует, выделенный сервер читает его вместо вашего аккуратно отредактированного ini. Удалите его - и PalWorldSettings.ini вступит в права.
Сохранения игроков привязаны к персонажу и к миру. Файл Players/<id>.sav связан с идентификатором платформы игрока, так что при переносе мира между серверами персонажи переезжают вместе с ним, а удаление одного файла игрока сбрасывает этого человека на первый уровень, оставляя базу его гильдии на месте.
В отличие от Valheim, Palworld записывает мир часто, а не по длинному таймеру, так что сбой стоит секунд прогресса, а не получаса. Риск другой: запись большая и идёт, пока мир продолжает работать, поэтому остановка посреди неё может оставить усечённый Level.sav. Всегда останавливайте сервер штатно, держите bIsUseBackupSaveData включённым и делайте настоящую резервную копию перед каждым обновлением игры. На RE:NODE кнопка Stop в панели - это штатное завершение, слоты резервных копий входят в каждый тариф Palworld, а вкладка Schedules по cron-выражению запускает за вас ночной backup и перезапуск.
Диагностика#
Все настройки вернулись к значениям по умолчанию. Синтаксис. Проверьте, нет ли переноса строки внутри OptionSettings=(...), пропущенной ), изогнутой кавычки из браузера или пробела после запятой. А ещё убедитесь, что вы правили файл в Pal/Saved/Config/LinuxServer/, а не шаблон в корне.
Изменения игнорируются, а остальная часть файла работает. Либо такого ключа нет в вашей сборке, либо у мира есть WorldOption.sav. Сверьте имена ключей с DefaultPalWorldSettings.ini из той же сборки, символ за символом, включая Decreace.
Сервера нет в списке сообществ. В командной строке должен быть -publiclobby, оба UDP-порта должны быть доступны, а списку нужно несколько минут. Сначала проверьте прямое подключение по IP:8211; если оно работает, с сервером всё в порядке.
Игроки подключаются и сразу отключаются. Обычно не совпадает пароль или включён bUseAuth=True во время сбоя платформы. Прежде чем винить конфиг, посмотрите вывод консоли: чтение консоли - кратчайший путь к нужной строке.
Память растёт всю неделю, а потом сервер сам перезапускается. Это контейнер упирается в свой предел. Palworld растёт вместе с числом палов и построек, а не игроков, так что на долго живущем мире это ожидаемо. Ночной перезапуск держит график ровным; постоянно заполненный график памяти означает, что тариф мал.
Мир пропал, а появился новый. Сервер не смог прочитать папку сохранений и создал рядом свежий мир. Ваша старая папка <WorldID> на месте. Остановите сервер, проверьте, что -worldname в точности совпадает с именем папки, и удалите новый пустой мир.
FAQ#
Сколько игроков выдержит выделенный сервер Palworld?
ServerPlayerMaxNum доходит до 32, и это поддерживаемый максимум. Разумно ли 32 - вопрос другой: каждый игрок строит базы, на каждой базе работают палы, поэтому полному серверу нужно куда больше памяти, чем подсказывает число игроков. Шестнадцать - комфортная цель на правильно подобранном тарифе.
Нужно ли перезапускать сервер после смены настроек?
Да. PalWorldSettings.ini читается один раз при запуске, а работающий сервер перезаписывает его при завершении, так что правки, внесённые во время работы, теряются. Остановите, отредактируйте, запустите.
Какие настройки нельзя менять в существующем мире?
Почти все можно. Множители, урон, штрафы и лимиты применяются со следующего запуска. Нельзя задним числом изменить лишь то, что уже построено или поймано: если снизить BaseCampWorkerMaxNum ниже числа палов, уже закреплённых за базой, эта база останется сверх лимита, пока кто-нибудь не поправит её вручную.
Чем отличаются AdminPassword и ServerPassword?
ServerPassword игроки вводят, чтобы войти. AdminPassword вводит администратор, чтобы открыть набор команд, и это же учётные данные для RCON и REST API. Это не должна быть одна и та же строка.
Могут ли игроки Xbox и Steam делить один сервер?
Свежие сборки открывают кроссплей через список платформ в настройках, а точное имя ключа менялось между обновлениями, так что смотрите DefaultPalWorldSettings.ini в своей сборке, а не копируйте ключ из руководства. Неизменно одно: на серверы с кроссплеем заходят через список в игре, а не вводя IP.
Стоит ли включать RCON?
Только если вы им будете пользоваться. Это практичный способ запускать объявления и сохранения по расписанию, но протокол не шифруется и защищён одним общим паролем, поэтому его место за правилом файрвола, а не открытым в интернет. Минимум описан в статье RCON без риска.




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