服务器搭建

安装steamcmd和游戏服务器

# 创建 steam 用户
useradd -m steam
# 设置密码
echo 123456|passwd --stdin steam
# 切换到steam用户
su - steam
# 进入目录
cd ~
# 创建目录
mkdir Steam
# 进入目录
cd ~/Steam
# 下载steamcmd
wget https://media.st.dl.bscstorage.net/client/installer/steamcmd_linux.tar.gz --no-check-certificate
# 解压
tar -zxvf steamcmd_linux.tar.gz

# 在开始之前,您必须先安装运行 SteamCMD 所需的依赖项
# Ubuntu/Debian 64-Bit
sudo apt-get install lib32gcc1
# RedHat/CentOS
yum install glibc libstdc++
# RedHat/CentOS 64-Bit
yum install glibc.i686 libstdc++.i686

# 下载服务器
./steamcmd.sh +login anonymous +app_update 2394010 validate +quit
#进入目录
cd ~/Steam/steamapps/common/PalServer
#启动服务器
./PalServer.sh

运行steamcmd报错

  • 由于 SteamCMD 是一个32位应用,所以需要32位的库。可能会出现以下错误:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
# 基于 Debian 的发行版(Ubuntu,Mint 等。)
sudo apt-get install lib32stdc++6
# 基于Red Hat 的发行版(RHEL,Fedora,CentOS 等。)
yum install glibc.i686 libstdc++.i686

启动服务器报错

  • 如果启动时出现以下消息,可以通过执行以下步骤来纠正错误

如果在服务器运行后执行此过程,游戏将从角色重新创建开始。我们建议您不要在已经运行的服务器上执行此操作。

.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
  • 为了解决这个问题
mkdir -p ~/.steam/sdk64/
steamcmd +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
  • 启动时显示一次错误。如果显示.steam/sdk64/steamclient.so OK. (First tried local 'steamclient.so'),没有问题。
$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/ubuntu/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')

防火墙拦截

如果外部访问不到端口 可能是防火墙的原因
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭selinux
setenforce 0

vi /etc/selinux/config
# 将对应行的值修改为disabled
SELINUX=disabled

常用命令

steamcmd位置

/home/steam/Steam/steamcmd.sh

切换到steam用户

su - steam
cd ~/Steam/steamapps/common/PalServer

下载并更新服务器

su - steam
cd ~/Steam
./steamcmd.sh +login anonymous +app_update 2394010 validate +quit

启动服务器

su - steam -c "nohup /home/steam/Steam/steamapps/common/PalServer/PalServer.sh &"

停止服务器

kill $(netstat -luntp|grep udp|grep PalServer|awk '{print $6}'|awk -F "/" '{print $1}')

游戏存档位置

# 存档位置
/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames
# 创建备份目录
mkdir /backup

备份存档

cd /home/steam/Steam/steamapps/common/PalServer/Pal/Saved && tar -zcvf /backup/pal_$(date +%F).tar.gz SaveGames

配置文件位置

#参考配置文件
/home/steam/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini
#运行配置文件位置
/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
  • 配置参数

我们建议您将默认设置复制到配置文件,然后仅更改必要的设置。另外,一行中间不允许换行。*请注意,有为将来更新保留的参数

参数名 参数解释 数值范围 默认值
Difficulty 困难程度 None,Casual,Normal,Hard None
DayTimeSpeedRate 白天流逝速度 0.1~5 1.000000
NightTimeSpeedRate 夜间流逝速度 0.1~5 1.000000
ExpRate 经验值倍率 0.1~20 1.000000
PalCaptureRate 捕获概率倍率 0.5~2 1.000000
PalSpawnNumRate 帕鲁出现数量倍率 0.5~3 1.000000
PalDamageRateAttack 帕鲁攻击伤害倍率 0.1~5 1.000000
PalDamageRateDefense 帕鲁承受伤害倍率 0.1~5 1.000000
PlayerDamageRateAttack 玩家攻击伤害倍率 0.1~5 1.000000
PlayerDamageRateDefense 玩家承受伤害倍率 0.1~5 1.000000
PlayerStomachDecreaceRate 玩家饱食度降低倍率 0.1~5 1.000000
PlayerStaminaDecreaceRate 玩家耐力降低倍率 0.1~5 1.000000
PlayerAutoHPRegeneRate 玩家生命值自然回复倍率 0.1~5 1.000000
PlayerAutoHpRegeneRateInSleep 玩家睡眠时生命回复倍率 0.1~5 1.000000
PalStomachDecreaceRate 帕鲁饱食度降低倍率 0.1~5 1.000000
PalStaminaDecreaceRate 帕鲁耐力降低倍率 0.1~5 1.000000
PalAutoHPRegeneRate 帕鲁生命值自然回复倍率 0.1~5 1.000000
PalAutoHpRegeneRateInSleep 帕鲁睡眠时生命回复倍率 0.1~5 1.000000
BuildObjectDamageRate 对建筑伤害倍率 0.5~3 1.000000
BuildObjectDeteriorationDamageRate 建筑物的劣化速度倍率 0~10 1.000000
CollectionDropRate 道具采集量倍率 0.5~3 1.000000
CollectionObjectHpRate 可采集物品生命值倍率 0.5~3 1.000000
CollectionObjectRespawnSpeedRate 可采集物品刷新间隔 0.5~3 1.000000
EnemyDropItemRate 道具掉落量倍率 0.5~3 1.000000
DeathPenalty 死亡惩罚 None:死亡不掉落,Item:死亡掉物品,ItemAndEquipment:死亡掉物品和装备,All:全部掉 All
bEnablePlayerToPlayerDamage 启用玩家之间伤害 True,False False
bEnableFriendlyFire 启用友军伤害 True,False False
bEnableInvaderEnemy 启用侵略者敌人 True,False True
bActiveUNKO 激活UNKO 可能是Unidentified Nocturnal Nocturnal Knock-Off,可能和游戏中的据点袭击事件有关,也可能和据点内帕鲁的工作有关 True,False False
bEnableAimAssistPad 启用手柄瞄准辅助 True,False True
bEnableAimAssistKeyboard 启用键盘瞄准辅助 True,False False
DropItemMaxNum 掉落物品最大数量 0~5000 3000
DropItemMaxNum_UNKO UNKO掉落物品最大数量 - 100
BaseCampMaxNum 服务器据点最大数量 - 128
BaseCampWorkerMaxNum 可分派至据点工作的帕鲁数量上限 - 15
DropItemAliveMaxHours 掉落物品存活最大时间 - 1.000000
bAutoResetGuildNoOnlinePlayers 自动重置没有在线玩家的公会 True,False False
AutoResetGuildTimeNoOnlinePlayers 自动重置没有在线玩家的公会时间 0~240 72.000000
GuildPlayerMaxNum 公会人数上限 1~100 20
PalEggDefaultHatchingTime 巨大化蛋孵化所需时间(小时) 0~240 72.000000
WorkSpeedRate 工作速度倍率 - 1.000000
bIsMultiplay 是否为多人游戏 True,False False
bIsPvP 是否为PvP游戏 True,False False
bCanPickupOtherGuildDeathPenaltyDrop 是否能拾取其他公会死亡惩罚掉落物品 True,False False
bEnableNonLoginPenalty 启用非登录惩罚 多人服务器中,超过一定时间不上线,服务器会清理玩家存档以节约资源 True,False True
bEnableFastTravel 启用快速旅行 True,False True
bIsStartLocationSelectByMap 通过地图选择起始位置 True,False True
bExistPlayerAfterLogout 退出后是否存在玩家 True,False False
bEnableDefenseOtherGuildPlayer 启用防御其他公会玩家 True,False False
CoopPlayerMaxNum 合作玩家最大数量 - 4
ServerPlayerMaxNum 服务器玩家最大数量 - 32
ServerName 服务器名称 - Default Palworld Server
ServerDescription 服务器描述 - -
AdminPassword 管理员密码 - -
ServerPassword 设置服务器密码 - -
PublicPort 公共端口号 1~65535 8211
PublicIP 公共IP - -
RCONEnabled 启用RCON True,False False
RCONPort RCON 的端口号 1~65535 25575
bShowPlayerList 启用按下esc键显示玩家列表 True,False -
Region 地区 - -
bUseAuth 是否使用身份验证,可能是正版验证 True,False True
BanListURL 封禁列表URL - https://api.palworldgame.com/api/banlist.txt

服务器命令

命令必须在游戏内或通过 RCON 执行,如果你想使用那里的命令。您需要设置 AdminPassword 并使用 /AdminPassword 命令获取管理权限。

命令 中文解释
/Shutdown {Seconds} {MessageText} 服务器关闭后的秒数将通知您的 MessageText
/DoExit 强制停止服务器。
/Broadcast {MessageText} 向服务器中的所有玩家发送消息
/KickPlayer {SteamID} 将玩家从服务器中踢出
/BanPlayer {SteamID} 从服务器禁止玩家
/TeleportToPlayer {SteamID} 传送到目标玩家的当前位置
/TeleportToMe {SteamID} 目标玩家传送到您当前的位置
/ShowPlayers 显示所有已连接玩家的信息
/Info 显示服务器信息
/Save 保存世界数据
  • 关于 SteamID

如果您有管理权限,则可以复制 SteamID。要复制,请在玩家列表上右键单击两次。

  • 如何取消封禁玩家

这个时候是无法命令解禁的。不过,可以通过直接编辑文件来解除禁止。该文件位于 Steam 游戏库文件夹中的steamapps/common/PalServer/Pal/Saved/SaveGames/banlist.txt中。从此文件中删除您想要取消禁止的玩家的 SteamID。编辑文件后,大约需要 2 分钟才会受到影响

rcon工具

Linux

下载解压

# 下载 pst_{version}_{platform}_{arch}.tar.gz 文件并解压到 pst 目录
mkdir -p pst && tar -xzf pst_v0.5.5_linux_x86_64.tar.gz -C /usr/local/pst

配置

  1. 打开目录并允许可执行

    cd /usr/local/pst
    chmod +x pst sav_cli
  2. 找到其中的 config.yaml 文件并按照说明修改。

    关于其中的 decode_path,一般就是解压后的 pst 目录加上 sav_cli ,如果不知道绝对路径,在终端执行 pwd 即可

    web: # web 相关配置
      password: "" # web 管理模式密码
      port: 8080 # web 服务端口
      tls: false # 是否开启 TLS
      cert_path: "" # Cert 文件路径
      key_path: "" # Key 文件路径
    rcon: # RCON 相关配置
      address: "127.0.0.1:25575" # RCON 地址
      password: "" # 设置的 AdminPassword
      timeout: 5 # 请求 RCON 超时时间,推荐 <= 5
      sync_interval: 60 # 定时向 RCON 服务获取玩家在线情况的间隔,单位秒
    save: # 存档文件解析相关配置
      path: "/path/to/your/Pal/Saved" # 存档文件路径
      decode_path: "/path/to/your/sav_cli" # 存档解析工具路径,一般和 pst 在同一目录
      sync_interval: 120 # 定时从存档获取数据的间隔,单位秒,推荐 >= 120
    manage: # 管理相关
      kick_non_whitelist: false # 玩家不在白名单是否自动踢出

运行

./pst
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:75 | Starting PalWorld Server Tool...
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:76 | Version: Develop
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:77 | Listening on http://127.0.0.1:8080 or http://192.168.1.66:8080
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:78 | Swagger on http://127.0.0.1:8080/swagger/index.html

若需要后台运行(关闭 ssh 窗口后仍运行)

# 后台运行并将日志保存在 server.log
nohup ./pst > server.log 2>&1 &
# 查看日志
tail -f server.log

关闭后台运行

kill $(ps aux | grep 'pst' | awk '{print $2}') | head -n 1

添加到system

cat >/usr/lib/systemd/system/pst.service <<EOF
[Unit]
Description=Palworld pst server
After=network.target
After=syslog.target

[Service]
Type=simple
WorkingDirectory=/usr/local/pst
ExecStart=/usr/local/pst/pst -config /usr/local/pst/config.yaml
StandardOutput=file:/usr/local/pst/output.log
StandardError=file:/usr/local/pst/error.log

[Install]
WantedBy=multi-user.target
EOF

Windows

下载解压

解压 pst_v0.5.5_windows_x86_64.zip 到任意目录(推荐命名文件夹目录名称为 pst

配置

找到解压目录中的 config.yaml 文件并按照说明修改。

关于其中的 decode_path,一般就是解压后的 pst 目录加上 sav_cli.exe

你也可以直接鼠标右键——“属性”,查看路径和文件名,再将它们拼接起来。(存档文件路径和工具路径同理)

[!WARNING] 请不要直接将复制的路径粘贴到 config.yaml 中,而是需要在所有的 '\' 前面再加一个 '\',像下面展示的一样

还有比较重要的是,请确保 config.yaml 文件为 ANSI 编码,其它编码格式将会导致路径错误等问题!!

# WebUI 设置
web:
  # WebUI 管理员密码
  password: ""
  # WebUI 访问端口
  port: 8080
  # 是否开启使用 HTTPS TLS 访问
  tls: false
  # TLS Cert 如果开启使用 HTTPS 请输入证书文件路径
  cert_path: ""
  # TLS Key 如果开启使用 HTTPS 请输入证书密钥文件路径
  key_path: ""
  # 若开启 HTTPS 访问请填写你的 HTTPS 证书绑定的域名 eg. https://yourdomain.com
  public_url: ""

# RCON 相关设置
rcon:
  # RCON 的地址和端口
  address: "127.0.0.1:25575"
  # 服务 端设置的 RCON AdminPassword
  password: ""
  # RCON 通信超时时间,推荐 <= 5
  timeout: 5
  # 定时向 RCON 服务获取玩家在线情况的间隔,单位秒
  sync_interval: 60

# sav_cli Config 存档文件解析相关配置
save:
  # 存档文件路径
  path: "/path/to/your/Pal/Saved"
  # Sav_cli Path 存档解析工具路径,一般和 pst 在同一目录
  decode_path: "/path/to/your/sav_cli"
  # Sav Decode Interval Sec 定时从存档获取数据的间隔,单位秒,推荐 >= 120
  sync_interval: 120

# Automation Config 自动化管理相关
manage:
  # 玩家不在白名单是否自动踢出
  kick_non_whitelist: false
运行

这里有两种方式可以在 Windows 下运行

  1. start.bat(推荐)

    找到解压目录下的 start.bat 文件,双击运行

  2. 按下 Win + R,输入 powershell 打开 Powershell,通过 cd 命令到下载的可执行文件目录

    .\pst.exe
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:75 | Starting PalWorld Server Tool...
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:76 | Version: Develop
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:77 | Listening on http://127.0.0.1:8080 or http://192.168.31.214:8080
2024/01/31 - 22:39:20 | INFO | palworld-server-tool/main.go:78 | Swagger on http://127.0.0.1:8080/swagger/index.html
  • 看到上述界面表示成功运行,请保持窗口打开