Palworld Dedicated Server Modding — 从零到完美运行的终极指南
Palworld 使用 Unreal Engine 5 (UE5) 开发。Mod 的核心加载器叫做 UE4SS(Unreal Engine 4/5 Scripting System),它通过注入 DLL 的方式,在游戏/服务器启动时加载自定义 Lua 脚本和蓝图 Mod,从而实现对游戏逻辑的修改。
| 项目 | 说明 |
|---|---|
| 💻 服务器 | Windows Server 2019+ 或 Ubuntu 22.04+,建议 4核8G 以上 |
| 🎮 游戏本体 | Steam 正版 Palworld(用于获取服务器文件) |
| 📦 SteamCMD | Steam 命令行工具,用于下载/更新服务器文件 |
| 🔧 UE4SS | Mod 加载框架,GitHub 下载:RE-UE4SS Releases |
| 📁 Mod 文件 | 从 Nexus Mods / CurseForge / GitHub 下载 |
| 🗜️ 解压工具 | 7-Zip 或 WinRAR,用于解压 UE4SS 和 Mod 包 |
| 📝 文本编辑器 | VS Code / Notepad++,用于编辑配置文件 |
Pal/Saved/SaveGames/。Mod 操作失误可能导致存档损坏。
安装 Palworld 服务器
打开命令提示符,运行:
C:\steamcmd\steamcmd.exe +force_install_dir C:\palworld_server +login anonymous +app_update 2394010 validate +quit
参数说明:2394010 是 Palworld Dedicated Server 的 App ID,validate 验证文件完整性。
首次启动(生成配置文件)
cd C:\palworld_server
PalServer.exe
启动后等待 10 秒然后关闭。这会生成 Pal/Saved/Config/WindowsServer/PalWorldSettings.ini。
开放防火墙端口
# PowerShell(管理员)
New-NetFirewallRule -DisplayName "Palworld Server" -Direction Inbound -Protocol UDP -LocalPort 8211 -Action Allow
如果你使用云服务器(阿里云/腾讯云等),还需要在安全组中放行 UDP 8211 端口。
安装依赖 & SteamCMD
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd lib32gcc-s1 curl wget unzip -y
创建服务器用户(推荐)
sudo useradd -m -s /bin/bash palworld
sudo -u palworld -i
下载服务器文件
steamcmd +force_install_dir /home/palworld/server +login anonymous +app_update 2394010 validate +quit
首次启动生成配置
cd /home/palworld/server
./PalServer.sh
等待 10 秒 Ctrl+C 终止。然后编辑配置文件:
nano Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
开放端口
sudo ufw allow 8211/udp
sudo ufw enable
云服务器同样记得在安全组放行 UDP 8211。
服务器IP:8211 连上服务器了。确认正常后再继续加 Mod。
UE4SS 是 Palworld Mod 的基石,几乎所有 Mod 都依赖它。它通过 xinput1_3.dll 代理注入实现 Mod 加载。
前往 RE-UE4SS GitHub Releases,下载最新版本。
选择 UE4SS_vX.X.X.zip(非 UE4SS_Signatures 版本)。
当前推荐版本:v3.0.1+,确保兼容 Palworld 最新版本。
定位目录
进入你的服务器安装目录下的 Pal/Binaries/Win64/:
C:\palworld_server\Pal\Binaries\Win64\
解压 UE4SS
将 UE4SS zip 包中的所有文件解压到这个目录中。
解压后你应该看到:
Pal/Binaries/Win64/
├── xinput1_3.dll ← UE4SS 核心 DLL(代理注入)
├── UE4SS.dll ← UE4SS 主程序
├── dwmapi.dll ← 辅助 DLL
├── UE4SS-settings.ini ← UE4SS 配置文件(重要!)
├── uesave.dll ← 存档工具(可选)
├── Mods/ ← Mod 文件夹(可能需要手动创建)
│ ├── mods.txt ← Mod 加载列表
│ └── shared/ ← 共享库目录
└── PalServer-Win64-Test.exe ← 原服务器可执行文件
配置 UE4SS-settings.ini
打开 UE4SS-settings.ini,修改以下关键配置:
[General]
; 启用 GUI 控制台(服务器建议设为 0,因为没有桌面环境)
GuiConsoleEnabled = 0
; 启用控制台输出
ConsoleEnabled = 1
[Debug]
; 调试模式。测试时设为 1 方便排查,正式运行设为 0
ConsoleDebugConsoleEnabled = 0
[Engine]
; 使用 xinput 方式注入(服务器必须用这个)
UseUObjectArrayCache = 1
[Mods]
; Mod 加载目录
ModsFolderPath = Mods
创建/编辑 Mod 加载列表
在 Mods/ 目录下创建 mods.txt,格式如下:
# Mod名称 : 是否启用
# 示例(安装Mod后再改):
MyFirstMod : 1
Linux 下 UE4SS 的安装流程与 Windows 类似,但需要额外注意:
定位目录
cd /home/palworld/server/Pal/Binaries/Win64/
解压 UE4SS
wget https://github.com/UE4SS-RE/RE-UE4SS/releases/download/v3.0.1/UE4SS_v3.0.1.zip
unzip UE4SS_v3.0.1.zip
# (请替换为最新版本链接)
配置 UE4SS(与 Windows 相同)
nano UE4SS-settings.ini
设置 GuiConsoleEnabled = 0,ConsoleEnabled = 1。
创建 Mods/mods.txt。
我们以一个最简单的 Mod 为例——增加基地帕鲁数量上限(纯服务器端 Mod,客户端无需安装)。
下载 Mod
以 Nexus Mods 上流行的 "More Pals In Base" 类 Mod 为例。Mod 通常是一个 .pak 文件或者一个包含 Lua 脚本的文件夹。
确定 Mod 类型
| Mod 类型 | 安装位置 | 说明 |
|---|---|---|
.pak 文件 |
Pal/Content/Paks/~mods/ |
UE 蓝图/资源 Mod。如果 ~mods 文件夹不存在则手动创建。文件名必须以 _P 结尾(如 MyMod_P.pak) |
| Lua 脚本文件夹 | Pal/Binaries/Win64/Mods/ModName/ |
UE4SS Lua Mod。通常包含 main.lua 或 Scripts/ 目录 |
| LogicMods / Blueprint Mod | Pal/Content/Paks/LogicMods/ |
需要特定加载器的 BP Mod,较少见 |
放置 Mod 文件
如果是 .pak Mod:
mkdir -p Pal/Content/Paks/~mods
# 将 .pak 文件放入,并确保文件名以 _P 结尾
cp MyBasePalsMod.pak Pal/Content/Paks/~mods/MyBasePalsMod_P.pak
如果是 Lua Mod:
cd Pal/Binaries/Win64/Mods/
mkdir MyMod
# 将 Mod 的 Lua 文件放入 MyMod/ 目录
# 目录结构通常为:
# Mods/MyMod/
# ├── main.lua
# └── Scripts/
# └── config.lua
启用 Mod
编辑 Pal/Binaries/Win64/Mods/mods.txt,添加一行:
MyMod : 1
(文件夹名与 mods.txt 中的名称必须一致)
启动服务器测试
# Windows
PalServer.exe
# Linux
./PalServer.sh
查看控制台输出,确认没有报错,并且能看到类似以下日志:
[UE4SS] Mod 'MyMod' loaded successfully
[UE4SS] Lua script 'main.lua' executed
这是最多人踩坑的地方。不是所有 Mod 都只需要安装在服务器端。
| Mod 改动内容 | 客户端需要安装? |
|---|---|
| 服务器倍率、掉落率、经验值 | ❌ 不需要 |
| 帕鲁生成数量、基地上限 | ❌ 不需要 |
| 新增物品/装备/帕鲁 | ✅ 必须 |
| 修改模型/贴图/音效 | ✅ 必须 |
| UI 修改/HUD | ✅ 必须 |
| 新增建筑/工作台 | ✅ 必须 |
| 修改已有物品属性(不新增资源) | ⚠️ 看情况 |
客户端的安装流程与服务器完全相同:
Pal/Binaries/Win64/Pal/Content/Paks/~mods/Pal/Binaries/Win64/Mods/ 并编辑 mods.txt推荐做法:
Pal/ 目录结构)打包成 zip| 类型 | 格式 | 加载方式 | 客户端需要? |
|---|---|---|---|
| Lua 脚本 Mod | 文件夹 + .lua | UE4SS | 视内容而定 |
| 蓝图 .pak Mod | .pak 文件 | UE4SS + ~mods/ | 通常需要 |
| LogicMod | .pak + 特殊路径 | 特定加载器 | 通常需要 |
| 配置文件修改 | 修改 .ini | 原生 | ❌ |
| Mod 名称(Nexus Mods ID) | 功能 | 客户端需装? |
|---|---|---|
| Always Drop Pal Souls | 帕鲁必定掉落魂 | ❌ |
| More Beds / Bigger Bases | 增加基地帕鲁上限 | ❌ |
| Faster Breeding | 加快孵蛋速度 | ❌ |
| Increased Resource Harvest | 增加资源采集量 | ❌ |
| No Building Restrictions | 移除建造限制 | ❌ |
| Guild Bases / Alliance | 工会共享基地 | ⚠️ 部分需要 |
| New Pals / Pokemon Mod | 新增帕鲁(如宝可梦) | ✅ 必须 |
| HUD / Minimap Mod | 小地图 / UI 增强 | ✅ 必须 |
在 Nexus Mods 搜索 Palworld:nexusmods.com/palworld
在 mods.txt 中,Mod 按从上到下的顺序加载。后面的 Mod 会覆盖前面的同名文件/函数。
# 基础 Mod 先加载
BaseLibrary : 1
# 依赖 Mod 后加载
MyFeatureMod : 1
# 补丁/覆盖最后加载
MyFeatureMod_Patch : 1
在 ~mods/ 目录中,文件按字母顺序加载。可以通过命名控制优先级:
Pal/Content/Paks/~mods/
├── 00_BaseLibrary_P.pak ← 最先加载
├── 01_CoreFeatures_P.pak
├── 02_ExtraContent_P.pak
└── 99_FinalPatch_P.pak ← 最后加载,最高优先级
Pal/Binaries/Win64/UE4SS.log 中搜索 ERROR 和 WARN如果你有多个 .pak Mod 需要合并,可以使用 UnrealPak 工具(UE5 自带)。但这对普通用户门槛较高,建议优先选择「同一个作者出的合集 Mod」来避免冲突。
Palworld Linux 服务器实际上通过 Proton 运行 Windows 版本。确保 Proton 已正确安装:
# 通过 SteamCMD 安装的服务器通常自带 Proton
# 检查 Proton 版本
ls ~/Steam/steamapps/common/Proton*/
| 问题 | 解决方案 |
|---|---|
| xinput1_3.dll 不被 Wine 自动加载 | 在启动参数中设置 WINEDLLOVERRIDES="xinput1_3=n,b" |
| UE4SS GUI 控制台崩溃 | 设置 GuiConsoleEnabled = 0(必须) |
| 部分 Lua Mod 调用 Windows API | 此类 Mod 无法在 Linux 下运行,需寻找替代方案 |
| 性能损失 | Proton 本身有 5-15% 性能开销,加 Mod 后可能更高 |
#!/bin/bash
# Palworld Linux Server with UE4SS
export WINEDLLOVERRIDES="xinput1_3=n,b"
export WINEARCH=win64
export WINEPREFIX=/home/palworld/.wine
cd /home/palworld/server
# 先更新服务器
steamcmd +force_install_dir /home/palworld/server +login anonymous +app_update 2394010 validate +quit
# 启动(带 UE4SS 日志输出)
./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS 2>&1 | tee server.log
社区有制作好的 Docker 镜像,内置 UE4SS 和常见 Mod:
# 搜索 Docker Hub
docker search palworld-server
# 推荐镜像(示例)
docker run -d \
--name palworld \
-p 8211:8211/udp \
-v /path/to/saves:/palworld/Pal/Saved \
-e SERVER_NAME="My Server" \
thijsvanloef/palworld-server-docker:latest
Docker 方式通常已预配置好 UE4SS,只需将 Mod 文件挂载进去即可。
检查顺序:
1. UE4SS 版本是否兼容当前 Palworld 版本
2. 查看 UE4SS.log 中的错误信息
3. 尝试临时移除所有 Mod(重命名 mods.txt→mods.txt.bak)看能否启动
4. 检查 UE4SS-settings.ini 中 GuiConsoleEnabled = 0
检查:
• UDP 8211 端口是否放行(防火墙 + 安全组)
• 服务器是否正常启动(查看控制台日志)
• 客户端和服务器的 Mod 是否完全一致
• 如果客户端装了 UE4SS 但服务器没装(或反过来),也可能连不上
检查:
1. mods.txt 中的 Mod 名字是否与文件夹名完全一致(包括大小写)
2. .pak 文件名是否以 _P 结尾
3. .pak 是否放在了正确的 ~mods/ 目录(不是 Paks/ 根目录)
4. UE4SS 日志中搜索 Mod 名称确认是否加载
正常现象。每次 Palworld 更新后:
1. 先更新服务器文件(steamcmd +app_update 2394010)
2. 重新安装 UE4SS(因为更新可能覆盖了 DLL)
3. 重新放置 .pak Mod 文件
4. 检查 UE4SS 是否有新版本
5. 部分 Mod 本身也需要更新以兼容新版本
1. Lua Mod:在 mods.txt 中将 : 1 改为 : 0,或者删除/重命名 Mod 文件夹
2. .pak Mod:从 ~mods/ 目录中移除文件
3. 完全卸载:删除 xinput1_3.dll、UE4SS.dll、dwmapi.dll 和整个 Mods/ 文件夹
通常是因为某个 Mod 导致了死循环或无限等待。用二分法逐个关闭 Mod 找出问题源。
@echo off
cd /d C:\palworld_server
echo ================================
echo Palworld Server with Mods
echo ================================
echo.
:: 自动更新服务器
echo [1/3] Updating server...
C:\steamcmd\steamcmd.exe +force_install_dir C:\palworld_server +login anonymous +app_update 2394010 validate +quit
:: 检查 UE4SS 是否完整
echo [2/3] Checking UE4SS...
if not exist "Pal\Binaries\Win64\xinput1_3.dll" (
echo [WARN] UE4SS not found! Mods will NOT load.
echo [WARN] Please install UE4SS first.
)
:: 启动服务器
echo [3/3] Starting server...
echo.
PalServer.exe -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publiclobby
pause
#!/bin/bash
set -e
SERVER_DIR="/home/palworld/server"
STEAMCMD="/usr/games/steamcmd"
echo "================================"
echo " Palworld Server with Mods"
echo "================================"
echo ""
# 更新服务器
echo "[1/4] Updating server..."
$STEAMCMD +force_install_dir $SERVER_DIR +login anonymous +app_update 2394010 validate +quit
# 备份存档
echo "[2/4] Backing up saves..."
BACKUP_DIR="$SERVER_DIR/backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r "$SERVER_DIR/Pal/Saved/SaveGames" "$BACKUP_DIR/" 2>/dev/null || true
echo " Backup saved to: $BACKUP_DIR"
# 检查 UE4SS
echo "[3/4] Checking UE4SS..."
if [ ! -f "$SERVER_DIR/Pal/Binaries/Win64/xinput1_3.dll" ]; then
echo " [WARN] UE4SS not found! Mods will NOT load."
fi
# 启动服务器
echo "[4/4] Starting server..."
echo ""
cd "$SERVER_DIR"
export WINEDLLOVERRIDES="xinput1_3=n,b"
./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publiclobby
# 创建服务文件 /etc/systemd/system/palworld.service
sudo nano /etc/systemd/system/palworld.service
[Unit]
Description=Palworld Dedicated Server
After=network.target
[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/home/palworld/server
Environment="WINEDLLOVERRIDES=xinput1_3=n,b"
ExecStartPre=/usr/games/steamcmd +force_install_dir /home/palworld/server +login anonymous +app_update 2394010 validate +quit
ExecStart=/home/palworld/server/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable palworld
sudo systemctl start palworld
# 查看状态
sudo systemctl status palworld
# 查看日志
sudo journalctl -u palworld -f