幻兽帕鲁游戏部署,你想知道的一切。

windows端

脚本分析

一键安装

源代码

param (
    [switch]$EnableAutoRestart,
    [int]$ServerPort
)

$ErrorActionPreference = "Stop"

# 定义要检查的进程名称
$ProcessNames = @("PalServer", "PalServer-Win64-Test-Cmd")
foreach ($ProcessName in $ProcessNames) {
    if (Get-Process $ProcessName -ErrorAction SilentlyContinue) {
        Write-Host "$ProcessName is already running."
        exit
    }
}

# 初始化安装目录
$DirectoryPath = "C:\Program Files\PalServer\"
if (-not (Test-Path -Path $directoryPath)) {
    New-Item -ItemType Directory -Path $directoryPath | Out-Null
}

# 下载安装 C++ 运行库
Write-Host "Start download vc_redist.x64.exe..."
$VcUrl = "https://aka.ms/vs/17/release/vc_redist.x64.exe"
$VcOutput = "C:\Program Files\PalServer\vc_redist.x64.exe"
Invoke-WebRequest -Uri $VcUrl -OutFile $VcOutput
Write-Host "Installing vc_redist.x64.exe..."
Start-Process -FilePath $VcOutput -Args '/install', '/quiet', '/norestart' -Wait
Remove-Item -Path $VcOutput

# 下载安装 DirectX 支持库
Write-Host "Start download dxwebsetup.exe..."
$DxUrl = "https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe"
$DxOutput = "C:\Program Files\PalServer\dxwebsetup.exe"
Invoke-WebRequest -Uri $DxUrl -OutFile $DxOutput
$retryCount = 0
do {
    Write-Host "Installing dxwebsetup.exe... $retryCount"
    $process = Start-Process -FilePath $DxOutput -ArgumentList '/Q' -PassThru
    $hasExited = $process.WaitForExit(180000) # 等待3分钟
    if (-not $hasExited) {
        $process | Stop-Process -Force
    }
    $retryCount++
} while ($retryCount -lt 3 -and -not $hasExited)
Remove-Item -Path $DxOutput

# 下载 Steamcmd
Write-Host "Start download steamcmd.zip..."
$StUrl = "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip"
$StOutput = "C:\Program Files\PalServer\steamcmd.zip"
$StUnzipPath = "C:\Program Files\PalServer\steam\"
Invoke-WebRequest -Uri $StUrl -OutFile $StOutput
Expand-Archive -LiteralPath $StOutput -DestinationPath $StUnzipPath -Force
Remove-Item -Path $StOutput

# 运行 SteamCMD 更新服务器
Write-Host "Running steamcmd.exe..."
Set-Location -Path $StUnzipPath
Start-Process ".\steamcmd.exe" -ArgumentList "+login anonymous +app_update 2394010 validate +quit" -Wait

# 设置开机自启动
Write-Host "Setting scheduled task..."
$TaskName = "PalServerAutoStart"
$TaskDescription = "Automatically starts PalServer on system startup and restarts on failure."
$TaskExecutable = "C:\Program Files\PalServer\steam\steamapps\common\PalServer\PalServer.exe" 
if ($PSBoundParameters.ContainsKey('ServerPort')) {
    Write-Host "ServerPort is set to $ServerPort"
    $TaskArguments="-port=$ServerPort"
    $TaskAction = New-ScheduledTaskAction -Execute $TaskExecutable -Argument $TaskArguments
} else {
    $TaskAction = New-ScheduledTaskAction -Execute $TaskExecutable
}
$TaskTrigger = New-ScheduledTaskTrigger -AtStartup
$TaskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

# 设置任务失败后的重启策略,失败后等待 1 分钟,最多尝试 3 次
$RestartInterval = New-TimeSpan -Minutes 1
$RestartCount = 3
$TaskSettings = New-ScheduledTaskSettingsSet -RestartInterval $RestartInterval -RestartCount $RestartCount
Register-ScheduledTask -TaskName $TaskName -Description $TaskDescription -Action $TaskAction -Trigger $TaskTrigger -Principal $TaskPrincipal -Settings $TaskSettings -Force | Out-Null

if ($PSBoundParameters.ContainsKey('EnableAutoRestart') -and $EnableAutoRestart) {
    Write-Host "Install auto_restart_on_high_memory"
    iex (irm 'https://pal.pet/pal-server/Windows/auto_restart_on_high_memory.ps1')
}

# 运行 PalServer
Write-Host "Running PalServer.exe..."
Start-ScheduledTask -TaskName $TaskName
Write-Host "PalServer deploy success!"

分析

  1. 参数定义
  • $EnableAutoRestart:一个开关参数,用于启用或禁用自动重启功能,若不提供,默认为false
  • $ServerPort:整数参数,用于指定服务器端口。
  1. 检查进程是否已运行
  • 通过Get-Process检查指定的进程名称是否已经在运行,如果已经运行,则输出消息并退出脚本。
  1. 初始化安装目录
  • 检查并创建安装目录。
  1. 下载并安装 C++ 运行库
  • 从官网下载vc_redist.x64.exe,然后使用Start-Process启动安装,安装参数包括/install,/quiet,/norestart
  • 删除下载的安装文件。
  1. 下载并安装 DirectX 支持库
  • 从指定的URL下载dxwebsetup.exe,然后使用Start-Process启动安装,安装参数包括/Q
  • 安装过程中,通过循环等待最多3次,每次等待3分钟。
  • 删除下载的安装文件。
  1. 下载并安装Steamcmd
  • 从指定的URL下载steamcmd.zip,然后使用Expand-Archive解压到指定目录。
  • 删除下载的压缩文件。
  1. 运行SteamCMD更新服务器
  • 切换到 SteamCMD 的目录,然后使用Start-Process启动更新服务器的命令。
  1. 设置开机自启动
  • 创建一个定时任务,以在系统启动时运行 PalServer。
  • 如果提供了$ServerPort参数,则将端口号作为参数传递给 PalServer。
  • 设置任务失败后的重启策略,等待1分钟,最多尝试3次。
  1. 安装自动重启脚本
  • 如果启用了自动重启功能,则通过执行远程脚本安装一个名为auto_restart_on_high_memory.ps1的脚本。
  1. 运行PalServer
  • 使用Start-ScheduledTask启动之前创建的定时任务,开始运行 PalServer。

一些变量

  1. 安装路径变量
  • $DirectoryPath:PalServer 的安装目录路径,C:\Program Files\PalServer\
  • $StUnzipPath:Steamcmd 解压后的路径,即C:\Program Files\PalServer\steam\
  1. 下载位置变量
  • $VcUrl:Visual C++ 运行库vc_redist.x64.exe下载地址
  1. 本地文件路径变量
  • $VcOutput:下载的 Visual C++ 运行库的保存路径,C:\Program Files\PalServer\vc_redist.x64.exe
  • $DxOutput:下载的 DirectX 支持库的保存路径,C:\Program Files\PalServer\dxwebsetup.exe
  • $StOutput:下载的 Steamcmd 客户端的保存路径,C:\Program Files\PalServer\steamcmd.zip

一键更新

源代码

$TaskName = "PalServerAutoStart"
$ProcessName = "PalServer-Win64-Test-Cmd"

if (Get-Process -Name $ProcessName -ErrorAction SilentlyContinue) {
    Stop-Process -Name $ProcessName -Force
    Start-Sleep -Seconds 1
}

& "C:\Program Files\PalServer\steam\steamcmd.exe" +login anonymous +app_update 2394010 validate +quit
Start-ScheduledTask -TaskName $TaskName

分析

  1. if (Get-Process -Name $ProcessName -ErrorAction SilentlyContinue):通过Get-Process命令检查指定名称的进程是否正在运行。-ErrorAction SilentlyContinue表示如果发生错误(例如找不到进程),则不显示错误信息。
  2. 如果进程正在运行,执行以下操作:
  • Stop-Process -Name $ProcessName -Force:强制停止进程。
  • Start-Sleep -Seconds 1:暂停脚本执行 1 秒,确保进程完全停止。
  1. & "C:\Program Files\PalServer\steam\steamcmd.exe" +login anonymous +app_update 2394010 validate +quit:使用&运算符运行 SteamCMD 命令来更新 PalServer。+login anonymous表示匿名登录,+app_update 2394010 validate +quit是 SteamCMD 的参数,用于更新 PalServer 。
  2. Start-ScheduledTask -TaskName $TaskName:启动进程。

自动云/本地备份(采用Webdav)

源代码

$sourceFolderPath = "C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved"  #   需要备份的文件夹路径
$backupfilespath = "C:\backup"    #   备份文件存放路径
$waitTimeInSeconds = 1 * 60 * 60	# 备份间隔时间,单位:秒
$webdavUrl = "" #   WebDAV 服务器地址
$webdavUsername = ""   #   账号
$webdavPassword = ""   #   密码

if (-not (Test-Path -Path $backupfilespath -PathType Container)) {
    New-Item -ItemType Directory -Path $backupfilespath | Out-Null
    Write-Host "已创建备份文件夹: $backupfilespath"
}

function Upload-FileToWebDAV {
    param(
        [string]$WebDAVUrl,
        [string]$Username,
        [string]$Password,
        [string]$LocalFilePath,
        [string]$RemoteFilePath
    )
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("${Username}:${Password}")))
    $headers = @{
        Authorization = "Basic $base64AuthInfo"
    }
    try {
        $uploadResponse = Invoke-WebRequest -Uri "$WebDAVUrl$RemoteFilePath" -Method Put -InFile $LocalFilePath -Headers $headers -UseBasicParsing
        Write-Host "上传成功. 响应: $($uploadResponse.StatusCode)"
    } catch {
        Write-Host "上传失败. 错误: $_"
    }
}
while ($true) {
    $currentDateTime = Get-Date
    $formattedCurrentTimeStamp = $currentDateTime.ToString("yyyyMMdd_HHmmss")
    $zipFileName = $backupfilespath + "\backup_" + $formattedCurrentTimeStamp + ".zip"
    Compress-Archive -Path $sourceFolderPath -DestinationPath $zipFileName
    $remoteFilePath = "/backup_" + $formattedCurrentTimeStamp + ".zip"
    $uploadParams = @{
        WebDAVUrl      = $webdavUrl
        Username       = $webdavUsername
        Password       = $webdavPassword
        LocalFilePath  = $zipFileName
        RemoteFilePath = $remoteFilePath
    }
    Upload-FileToWebDAV @uploadParams
    for ($i = $waitTimeInSeconds; $i -gt 0; $i--) {
        $minutes = [math]::floor($i / 60)
        $seconds = $i % 60
        Write-Host -NoNewline "等待 $($minutes) 分钟 $($seconds) 秒..."
        Start-Sleep -Seconds 1
        Write-Host -NoNewline "`r"
    }
    Write-Host "备份完成。上传到 WebDAV 完成。等待下一次备份..."
}

分析

该 PowerShell 脚本是用于定期备份指定文件夹并将备份文件上传到 WebDAV 服务器的自动化脚本。

  1. $sourceFolderPath = "C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved":定义需要备份的文件夹路径。
  2. $backupfilespath = "C:\backup":定义备份文件存放路径。
  3. $waitTimeInSeconds = 1 * 60 * 60:定义备份间隔时间,单位为秒,这里设置为1小时。
  4. $webdavUrl$webdavUsername$webdavPassword:定义 WebDAV 服务器的地址、账号和密码。
  5. 使用Test-Path检查备份文件夹是否存在,如果不存在,则创建。
  6. 定义Upload-FileToWebDAV函数,用于上传文件到 WebDAV 服务器。
  7. 使用while ($true)进入一个无限循环,执行以下操作:
  • 获取当前日期时间,并格式化成yyyyMMdd_HHmmss形式,用于生成备份文件名。
  • 使用Compress-Archive压缩指定文件夹到一个备份文件。
  • 构建备份文件的远程路径。
  • 调用Upload-FileToWebDAV函数上传备份文件到 WebDAV 服务器。
  • 使用for循环等待指定的备份间隔时间,每秒输出等待信息。
  • 完成一次备份后输出信息,并继续下一轮循环。

部署

一键安装

iex (irm 'https://pal-server-1251810746.cos.accelerate.myqcloud.com/pal-server/Windows/install.ps1')

一键更新

iex (irm 'https://pal-server-1251810746.cos.accelerate.myqcloud.com/pal-server/Windows/update.ps1')

启动PalServer服务

Start-ScheduledTask -TaskName "PalServerAutoStart"

关闭PalServer服务

Stop-Process -Name "PalServer-Win64-Test-Cmd" -Force

各重要文件

  • 存档ID配置位置
C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved\Config\WindowsServer\GameUserSettings.ini

中的DedicatedServerName

  • 配置文件
C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini
  • 存档
C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved\SaveGames\0\
  • 云服务器默认登录名
Administrator

Ubuntu/Debian 端

脚本分析

一键安装

源代码

#!/bin/bash

enable_zram=false
enable_auto_restart=false
server_port=""

for arg in "$@"
do
    case $arg in
        --enable-zram)
        enable_zram=true
        ;;
        --enable-auto-restart)
        enable_auto_restart=true
        ;;
        --server-port=*)
        server_port="${arg#*=}"
        ;;
    esac
done

steam_user=steam
log_path=/tmp/pal_server.log
sudo rm /tmp/pal_server.log

if getent passwd "$steam_user" >/dev/null 2>&1; then
    echo "User $steam_user exists."
else
    echo "User $steam_user does not exist.Adding $steam_user ..."
    sudo useradd -m -s /bin/bash $steam_user
fi

steam_user_path=~steam
exec_start="$steam_user_path/Steam/steamapps/common/PalServer/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS"

# Apply arguments
if [ "$enable_zram" = true ]; then
    echo "Enabling Zram..."
    wget -O  - "https://pal.pet/pal-server/Ubuntu/zram.sh" --no-check-certificate | sh
fi

if [ "$enable_auto_restart" = true ]; then
    echo "Enabling auto restart on high memory usage..."
    wget -O  - "https://pal.pet/pal-server/Ubuntu/auto_restart_on_high_memory.sh" --no-check-certificate | sh
fi

if [ ! -z "$server_port" ]; then
    echo "PAL server port set to $server_port"
    exec_start="$exec_start -port=$server_port"
fi



echo "Installing SteamCMD..."

sudo add-apt-repository multiverse -y > $log_path
sudo dpkg --add-architecture i386 >> $log_path
sudo apt update -y >> $log_path
sudo apt-get remove needrestart -y >> $log_path

echo steam steam/license note '' | sudo debconf-set-selections
echo steam steam/question select "I AGREE" | sudo debconf-set-selections
sudo apt install steamcmd -y >> $log_path


steamcmd_path=$(which steamcmd)

if [ -z "$steamcmd_path" ]; then
    echo "Error: Install SteamCMD failed"
    exit 1
else
    echo "Install SteamCMD successfully"
fi

sudo -u $steam_user mkdir -p $steam_user_path/.steam/sdk64/ >> $log_path
echo "Downloading palServer..."
sudo -u $steam_user $steamcmd_path +login anonymous +app_update 1007 validate +quit >> $log_path
sudo -u $steam_user $steamcmd_path +login anonymous +app_update 2394010 validate +quit >> $log_path

sudo cp $steam_user_path/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so $steam_user_path/.steam/sdk64/

systemd_unit=pal-server
cat <<EOF > $systemd_unit.service
[Unit]
Description=$systemd_unit.service

[Service]
Type=simple
User=$steam_user
Restart=on-failure
RestartSec=30s
ExecStart=$exec_start

[Install]
WantedBy=multi-user.target
EOF

sudo mv $systemd_unit.service /usr/lib/systemd/system/
echo "Starting palServer..."
sudo systemctl enable $systemd_unit
sudo systemctl restart $systemd_unit
sudo systemctl -l --no-pager status $systemd_unit

if systemctl --quiet is-active "$systemd_unit"
then
    echo -e "\nPalServer is running successfully, enjoy!"
else
    echo -e "\nThere were some problems with the installation, please check the log $log_path."
fi

echo "Installing zram..."
sudo apt-get install zram-config -y
sudo systemctl start zram-config.service

分析

  1. enable_zramenable_auto_restart是用于设置是否启用Zram和自动重启的标志。
  2. server_port用于存储服务器端口号。
  3. 通过命令行参数解析用户提供的选项,例如--enable-zram启用Zram,--enable-auto-restart启用自动重启,--server-port=xxx设置服务器端口号。
  4. 设置一些变量,如 Steam 用户、日志路径等。
  5. 检查是否存在 Steam 用户,如果不存在则创建。
  6. 设置 PalServer 的执行路径和参数。
  7. 根据用户提供的选项,执行相应的操作,比如启用 Zram 和自动重启。
  8. 安装 SteamCMD,添加 multiverse 存储库,更新系统,安装SteamCMD,并验证安装是否成功。
  9. 下载 PalServer 并安装所需的依赖项。
  10. 创建 systemd 服务单元,以便启动 PalServer 。
  11. 将服务单元移动到系统目录,并启用、重启 PalServer 服务。
  12. 检查 PalServer 服务是否成功启动,并输出相应的消息。
  13. 安装 zram-config ,该工具用于配置和启动 zram 服务。
  14. 启用 zram 来提高系统的性能。

一键更新

源代码

#!/bin/bash

steamcmd_path=$(which steamcmd)
steam_user=steam
systemd_unit=pal-server
sudo -u $steam_user $steamcmd_path +login anonymous +app_update 2394010 validate +quit

sudo systemctl restart $systemd_unit
sudo systemctl -l --no-pager status $systemd_unit

if systemctl --quiet is-active "$systemd_unit"
then
    echo -e "\nPalServer is running successfully, enjoy!"
else
    echo -e "\nThere were some problems with the installation."
fi

分析

  1. steamcmd_path=$(which steamcmd): 这一行使用which命令来找到steamcmd的路径,并将其赋给变量steamcmd_path
  2. steam_user=steam: 这一行定义了 Steam 服务器使用的用户名,赋给变量steam_user
  3. systemd_unit=pal-server: 这一行定义了 systemd 单元的名称,赋给变量systemd_unit
  4. sudo -u $steam_user steamcmd_path +login anonymous +app_update 2394010 validate +quit: 这一行使用sudosteam用户身份执行steamcmd命令,该命令登录匿名用户,更新 Steam App ID 为 2394010 的游戏服务器,并验证更新。
  5. sudo systemctl restart $systemd_unit: 这一行使用systemctl命令重启指定的 systemd 单元。
  6. sudo systemctl -l --no-pager status $systemd_unit: 这一行使用systemctl命令查看指定 systemd 单元的状态,并输出状态语句。

部署

一键安装

wget -O - https://pal-server-1251810746.cos.accelerate.myqcloud.com/pal-server/Ubuntu/install_and_zram.sh|sh

一键更新

wget -O - https://pal-server-1251810746.cos.accelerate.myqcloud.com/pal-server/Ubuntu/update.sh | sh

服务状态查看

sudo systemctl status pal-server

启动服务

sudo systemctl start pal-server

停止服务

sudo systemctl stop pal-server

各重要文件

  • 配置文件
/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

  • 存档位置
/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0/

配置文件相关

配置含义

Difficulty=None (难度)
DayTimeSpeedRate=1.000000 (日间速度倍率)
NightTimeSpeedRate=1.000000 (夜间速度倍率)
ExpRate=1.000000 (经验倍率)
PalCaptureRate=1.000000 (伙伴捕获倍率)
PalSpawnNumRate=1.000000 (伙伴生成数量倍率)
PalDamageRateAttack=1.000000 (伙伴攻击伤害倍率)
PalDamageRateDefense=1.000000 (伙伴防御伤害倍率)
PlayerDamageRateAttack=1.000000 (玩家攻击伤害倍率)
PlayerDamageRateDefense=1.000000 (玩家防御伤害倍率)
PlayerStomachDecreaceRate=1.000000 (玩家饥饿减少速率)
PlayerStaminaDecreaceRate=1.000000 (玩家体力减少速率)
PlayerAutoHPRegeneRate=1.000000 (玩家自动血量恢复倍率)
PlayerAutoHpRegeneRateInSleep=1.000000 (睡眠中玩家自动血量恢复倍率)
PalStomachDecreaceRate=1.000000 (伙伴饥饿减少速率)
PalStaminaDecreaceRate=1.000000 (伙伴体力减少速率)
PalAutoHPRegeneRate=1.000000 (伙伴自动血量恢复倍率)
PalAutoHpRegeneRateInSleep=1.000000 (睡眠中伙伴自动血量恢复倍率)
BuildObjectDamageRate=1.000000 (建筑物受损倍率)
BuildObjectDeteriorationDamageRate=1.000000 (建筑物劣化受损倍率)
CollectionDropRate=1.000000 (收集物掉落倍率)
CollectionObjectHpRate=1.000000 (收集物体生命值倍率)
CollectionObjectRespawnSpeedRate=1.000000 (收集物体重生速度倍率)
EnemyDropItemRate=1.000000 (敌人掉落物品倍率)
DeathPenalty=All (死亡惩罚)
bEnablePlayerToPlayerDamage=False (允许玩家对玩家造成伤害)
bEnableFriendlyFire=False (允许友军伤害)
bEnableInvaderEnemy=True (允许入侵敌人)
bActiveUNKO=False (未知)
bEnableAimAssistPad=True (启用手柄瞄准辅助)
bEnableAimAssistKeyboard=False (启用键盘瞄准辅助)
DropItemMaxNum=3000 (掉落物品最大数量)
DropItemMaxNum_UNKO=100 (掉落物品最大数量_UNKO)
BaseCampMaxNum=128 (基地最大数量)
BaseCampWorkerMaxNum=15 (基地工人最大数量)
DropItemAliveMaxHours=1.000000 (掉落物品存活最长时间(小时)
bAutoResetGuildNoOnlinePlayers=False (自动重置公会无在线玩家)
AutoResetGuildTimeNoOnlinePlayers=72.000000 (无在线玩家时自动重置公会时间(小时)
GuildPlayerMaxNum=20 (公会最大玩家数量)
PalEggDefaultHatchingTime=72.000000 (伙伴蛋默认孵化时间(小时)
WorkSpeedRate=1.000000 (工作速度倍率)
bIsMultiplay=False (多人游戏)
bIsPvP=False (PvP模式)
bCanPickupOtherGuildDeathPenaltyDrop=False (可以拾取其他公会死亡惩罚掉落)
bEnableNonLoginPenalty=True (启用非登录惩罚)
bEnableFastTravel=True (启用快速旅行)
bIsStartLocationSelectByMap=True (根据地图选择起始位置)
bExistPlayerAfterLogout=False (登出后玩家仍存在)
bEnableDefenseOtherGuildPlayer=False (启用防御其他公会玩家)
CoopPlayerMaxNum=4 (合作玩家最大数量)
ServerPlayerMaxNum=32 (服务器玩家最大数量)
ServerName="" (服务器名字)
ServerDescription="" (服务器描述)
AdminPassword="" (管理员密码)
ServerPassword="" (服务器密码)
PublicPort=8211 (公共端口号)
PublicIP="" (公共IP地址)
RCONEnabled=False (启用RCON)
RCONPort=25575 (RCON端口号)
Region="" (区域)
bUseAuth=True (使用身份验证)
BanListURL="https://api.palworldgame.com/api/banlist.txt" (封禁名单URL)

配置文件在线生成

在线生成(临时开放,寒山雨大佬提供)

在线生成(Github大佬Bluefissure原作者提供,更新快,访问可能较慢)

存档相关

本地存档位置

%localappdata%\Pal\Saved\SaveGames\***************\存档ID

存档转换工具下载

tools.zip

Q&A

问:目前可以实现的转档方案?

答:首先明确几种游戏的区别:

  • 开始游戏:开房间,本机作为房主,可允许最多3人通过加入多人游戏(邀请码)的方式进入,称为本地档
  • 加入多人游戏(专用服务器):包括社区服务器和自建服务器,称为:联机档

目前可以实现的转档方案:

  • 本地档联机档
  • 联机档本地档
  • 联机档迁移

问:本地档转联机档/联机档迁移后黑地图?

答:先登录一次服务器,然后退出,在文件资源管理器里输入%localappdata%\Pal\Saved\SaveGames\,往里找旧存档ID文件夹里的LocalData.sav文件复制到新存档ID文件夹

问:服务器可分配至据点工作的帕鲁数量上限修改后不生效?

答:当前游戏版本中PalWorldSettings.iniBaseCampWorkerMaxNum修改后不生效,可使用同样的配置生成WorldOption.sav文件后放置到服务器steamapps/common/PalServer/Pal/Saved/SaveGames/0/.../WorldOption.sav路径下,运行一次服务器在游戏中生效后即可删除重启服务器。

问:转档后有的帕鲁举不起来?

答:把据点的帕鲁放进背包里面,按 P 进入背包,然后按 R 丢弃该帕鲁,再按 F 捡起来,放回据点里面,这样帕鲁就可以互动了。

问:如何修改服务器端FPS限制?

答:服务器端找到路径:

  • C:\Program Files\PalServer\Palworld\Pal\Saved\Config\WindowsServer\Engine.ini(windows服务器)
  • /home/steam/Steam/steamapps/common/PalServer/Palworld/Pal/Saved/Config/LinuxServer/Engine.ini(Linux服务器)

在该文件最下面下添加(最后的数字建议填30/60/90/120)

[/Script/OnlineSubsystemUtils.IpNetDriver]

NetServerMaxTickRate=90

保存文件,重启服务器生效。

问:Linux下迁移存档成功但变成新建角色?

答:查看/home/steam/Steam/steamapps/common/PalServer/Palworld/Pal/Saved/SaveGames/路径下新存档ID文件夹及子文件的权限及权限组是否为steam:steam,若不是则修改。

参考命令:

sudo chown -R steam:steam /home/steam/Steam/steamapps/common/PalServer/Palworld/Pal/Saved/SaveGames/*  

问:Windows服务端如何迁移到Windows服务端?

答:在新的 Windows服务器上正常安装服务端,然后关闭服务端,复制旧的 Windows 服务器上C:\Program Files\PalServer\steam\steamapps\common\PalServer\Pal\Saved\路径下的所有文件到新服务器上,再次开启服务端,即可无缝迁移。

注意!若在 PalWorldSettings.ini 设置了服务器 IP 的需要修改为的新的服务器 IP 。

问:转档工具如何使用?

答:改转档工具为 Github 项目xNul/palworld-host-save-fix可以修复在迁移转档过程中导致的创建新用户问题。

命令:

python fix-host-save.py <uesave.exe> <save_path> <new_guid> <old_guid> <guild_fix>

<uesave.exe>- uesave.exe 的路径

<save_path>- 保存文件夹的路径

<new_guid>- 新服务器上玩家的 GUID

<old_guid>- 旧服务器上玩家的 GUID

<guild_fix>- True 或 False,是否修复[公会错误]

示例:

python fix-host-save.py "C:\Users\John\.cargo\bin\uesave.exe" "C:\Users\John\Desktop\my_temporary_folder\2E85FD38BAA792EB1D4C09386F3A3CDA" 6E80B1A6000000000000000000000000 00000000000000000000000000000001 False

 
转自:https://www.anye.xyz/archives/6nDusLL2

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录