moeblack 发表于 2024-1-22 09:20

Docker/Linux 幻兽帕鲁 PalWorld 独立服务器 开设教程/存档迁移

本帖最后由 moeblack 于 2024-1-25 20:33 编辑

更新
教程文字版在github上,我不会用markdown在论坛排版

github连接 https://github.com/GalileoFe/PalWorld-Save-Movement-Complete-Tutorio/tree/main




更新
新的教程等我下班之后写,现在唯一能信的只有github,其他教程都不正确,包括我之前写的。



在写啦!




更新
github存档转移方法更新
https://github.com/xNul/palworld-host-save-fix?tab=readme-ov-file
有问题直接回帖问我,看到了就回答。
我现在把服务器迁移到炼丹用的64G内存主机上了哭笑
这游戏太吃内存了16G根本不够

想来我服务器玩的可以私信我

jammsen/palworld-dedicated-server
docker image
官方教程


关于“将本地/合作模式存档迁移到服务器”的话题,社区已经有了一套完整的解决方案。这套方案比较复杂,建议有一定程序操作能力的人来执行。

操作步骤:

对于本地/合作模式存档迁移到服务器:

1. 通过 SteamCMD 创建一个专用服务器。
2. 运行服务器一次。
3. 登录服务器,使其创建一个玩家文件夹和 .sav 文件。
- 我的看起来像是 "EE256A5000000000000000000000000.sav",这是你稍后在脚本中需要的文件名(不包括 .sav)。
4. 停止服务器。
5. 备份所有文件以防万一。
6. 将 C:\Users\domin\AppData\Local\Pal\Saved\SaveGames\Your Steam ID\BUNCH OF LETTERS AND NUMBERS\ 文件夹中的内容复制过来。
7. 确保安装了最新版本的 Python,从 Nul 下载脚本和 UEsave 可执行文件。
8. 用正确的参数运行命令行。
- 例如,对我来说是 "python fix-host-save.py F:\Fixit\uesave.exe F:\Palworld\Server_1\Pal\Saved\SaveGames\0\8A15EB32440279628FB4587AF7718787 EE256A5000000000000000000000000"
9. 稍等片刻,这可能需要一些时间。
10. 复制所有文件和文件夹,覆盖原有文件。
11. 启动服务器。
12. 理论上你现在应该可以开始了。
如果你使用的是云/游戏主机:

- 运行你的新服务器。
- 登录服务器,使其创建一个玩家文件夹和 .sav 文件。
- 停止你的服务器。
- 通过 FTP 连接到你的服务器,并找到保存游戏的目录(这个文件夹包含了所有的存档数据)。
- 将文件下载到你的电脑上,这样你才能运行脚本,因为在主机提供商那里是无法做到的。
= 你也可以通过为 sav 文件创建一个文件夹来使其更加整洁。
- 现在你可以按照上面 #7 提到的其余步骤进行操作。
- 脚本运行完后,你可以将文件上传回服务器,然后启动。


链接:

Nul 的脚本:https://github.com/xNul/palworld-host-save-fix
UESave 扩展:https://github.com/trumank/uesave-rs
Python 下载:https://www.python.org/downloads/

额外选项,如果你想手动将文件从 sav 转换为 json 反之亦然,这些脚本可以帮助你。
https://gist.github.com/cheahjs/300239464dd84fe6902893b6b9250fd0

https://gist.github.com/Toakan/3 ... erver-community-faq

另一种选择:https://www.reddit.com/r/Palworl ... ile_incl/?rdt=55658

附加信息:
加入官方 Discord:
https://discord.gg/pocketpair
准备
一台有Linux或者Windows的服务器:官方推荐是4核CPU 内存16G以上

官方的服务器配置要求原文


CPU4Cores (recommend)
RAM16GB
Recommend over 32GB for stable operation.
It is possible to start the server with 8 GB, but the further you play, the server will crash due to out of memory.
NetworkUDP Port 8211 (Default) Port forwarding required.


最大的问题是内存问题,拉到主楼最后有暂时的解决方法

SSH终端连接服务器

良好的网络环境

关于网络
目前几个解决办法
1. 租用云服务器,这是最快捷的,因为没有奸商赞助所以我不推荐,上淘宝和小黄鱼都能搜到组服务器的。建议找给Minecraft开过服务器的商家,他们对这种吃CPU和内存的游戏服务端有经验。
2. 家用电脑开服,有公网IP使用公网iP,在路由器后台设置端口映射,给好朋友分享IP即可。
2.1 使用FRP服务,例如樱花FRP,把自己的电脑端口通过樱花的服务器转发出去,我记得这个是免费10G,够用一周了。

安装

以下使用Linux安装,windows服务器可以直接使用steam 下载安装

ssh连接服务器后台:无论使用什么服务器,是自己家里闲置的还是网络上购买的

使用root登入

新建一个账号,名字叫steam,使用这个账号完成下面的工序
注意,一定要使用非root账号来安装使用steamcmd,这就是新建steam用户的原因

sudo useradd -m steam
sudo passwd steam

切换到steam账号


sudo -u steam -s
cd /home/steam

进入home目录,

cd ~
安装steamcmd

在Ubuntu上使用

sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
如果是其他发行版或者windows 查看官方教程

steamcmd官方安装指南

这个steamcmd同样可以使用docker进行安装
docker安装steamcmd教程

之后docker和Linux是类似的操作,集体看steamcmd安装的教程


使用steamcmd安装幻兽帕鲁服务端

steamcmd +login anonymous +app_update 2394010 validate +quit
切换到幻兽帕鲁的目录,执行(目录一般在~/.local/这个文件夹里面)

./PalServer.sh

-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS 这几个参数据官方所说可以实现多线程加速,建议加上 更多参数可以查看官方指南
如果显示

.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 path/to/your/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/

正常启动

$ ./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
SteamAPI_Init(): Loaded '/home/ubuntu/.steam/sdk64/steamclient.so' OK.(First tried local 'steamclient.so')
输入端口号8211即可连接

记得是自己服务器的ip:端口号

比如本机就是127.0.0.1:8211

如果是其他ip 例如 123.123.123.123

就是123.123.123.123:8211

./mon_202401/20/biQ2t-1o8kK15T3cSyw-k7.webp

一些问题

防火墙,linux允许端口通过防火墙的命令是

sudo ufw allow <port>

在执行之前记得安装ufw这个package,当然,你也可以关闭防火墙,如果是在家庭网络中的话,记得在光猫界面把服务器IP的端口映射出去。
光猫 高级 端口映射 光猫密码在光猫背后
需要有IPV4公网IP

关于爆内存

目前看来可以通过把Linux的Swap(Windows上应该叫虚拟内存,但是两者本质不一样)设置更大来解决,我设置了32G的swap,目前一整天没有爆。
或者使用Linux脚本,让服务器一天重启一次即可。
这个服务器爆内存的本质是内存清理没有做好,而不是真的需要这么多内存。

关于服务器指令

Palworld给服务器管理员设置了一系列指令,可以在这个网站查找到

幻兽帕鲁服务器指令

在这之前,需要对玩家的管理员资格进行认证 原版教程在这里

服务器认证教程

开服之前可以在服务器根目录
DefaultPalWorldSettings.ini 这个文件里,通过修改
AdminPassword=“”
这个参数来设定服务器密码

开服之后,可以通过修改
Pal/Saved/Config/LinuxServer/PalWorldSettings.ini 这个文件来修改服务器配置

将DefaultPalWorldSettings.ini 里的参数粘贴进去即可

之后再服务器聊天框里输入/AdminPassword 你的密码 来认证为管理员
管理员可以用的指令大致如下


Command 命令Description 描述
/Shutdown {Seconds} {MessageText}Gracefully shuts down server with an optional timer and/or message to notify players in your server.使用可选的计时器和/或消息正常关闭服务器,以通知服务器中的玩家。
/DoExitForcefully shuts down the server immediately. It is not recommended to use this option unless you've got a technical problem or are okay with potentially losing data.立即强制关闭服务器。不建议使用此选项,除非您遇到技术问题或可以接受可能丢失数据的情况。
/Broadcast {MessageText}Broadcasts a message to all players in the server.向服务器中的所有玩家广播消息。
/KickPlayer {PlayerUID or SteamID}Kicks player from the server. Useful for getting a player's attention with moderation.将玩家踢出服务器。有助于适度地吸引玩家的注意力。
/BanPlayer {PlayerUID or SteamID}Bans player from the server. The Player will not be able to rejoin the server until they are unbanned.禁止玩家进入服务器。玩家在解禁之前将无法重新加入服务器。
/TeleportToPlayer {PlayerUID or SteamID}INGAME ONLY
Immediately teleport to the target player仅限游戏内
立即传送到目标玩家
/TeleportToMe {PlayerUID or SteamID}INGAME ONLY
Immediately teleports target player to you.仅限游戏内
立即将目标玩家传送到您身边。
/ShowPlayersShows information on all connected players显示所有已连接玩家的信息
/InfoShows server information 显示服务器信息
/SaveSave the world data to disk. Useful to ensure your Pal, player, and other data is saved before stopping the server or performing a risky gameplay option.将世界数据保存到磁盘。有助于确保您的好友、玩家和其他数据在停止服务器或执行有风险的游戏选项之前得到保存。


在服务器的设置文件里,还有其他的设置可以调整。注意,行内不能换行

设置项中文释义
Difficulty难度
DayTimeSpeedRate白天时间速率
NightTimeSpeedRate夜间时间速率
ExpRate经验值率
PalCaptureRatePal捕获率
PalSpawnNumRatePal出现率
PalDamageRateAttackPal攻击伤害倍率
PalDamageRateDefense对Pal的防御伤害倍率
PlayerDamageRateAttack玩家攻击伤害倍率
PlayerDamageRateDefense对玩家的防御伤害倍率
PlayerStomachDecreaceRate玩家饥饿消耗率
PlayerStaminaDecreaceRate玩家耐力消耗率
PlayerAutoHPRegeneRate玩家自动HP恢复率
PlayerAutoHpRegeneRateInSleep玩家睡眠HP恢复率
PalStomachDecreaceRatePal饥饿消耗率
PalStaminaDecreaceRatePal耐力消耗率
PalAutoHPRegeneRatePal自动HP恢复率
PalAutoHpRegeneRateInSleepPal睡眠HP恢复率(Palbox中)
BuildObjectDamageRate建筑物伤害倍率
BuildObjectDeteriorationDamageRate建筑物损耗率
CollectionDropRate采集物品掉落倍率
CollectionObjectHpRate可采集对象HP倍率
CollectionObjectRespawnSpeedRate可采集对象重生间隔
EnemyDropItemRate敌人掉落物品倍率
DeathPenalty死亡惩罚(无:无丢失,物品:不带装备的丢失物品,物品和装备:丢失物品和装备,全部:丢失所有物品、装备、伙伴(库存中))
None : No lost, Item : Lost item without equipment, ItemAndEquipment : Lost item and equipment, All : Lost All item, equipment, pal(in inventory)
GuildPlayerMaxNum公会最大玩家数
PalEggDefaultHatchingTimePal蛋孵化时间(小时)
ServerPlayerMaxNum服务器最大玩家数
ServerName服务器名称
ServerDescription服务器描述
AdminPassword管理员密码
ServerPassword设置服务器密码
PublicPort公共端口号
PublicIP公共IP
RCONEnabled启用RCON
RCONPortRCON端口号



给开服的坛友推荐用RCON管理后端


效果如此,类似于在游戏里输入管理员密码之后控制服务器
可以关闭服务器,T人之类的。

我用的是之前MC开服时候用的RCON控制台。
你们也可以换自己的,地址如下

https://github.com/zkhssb/NectarRCON
丢存档警告我和朋友已经遇上了

关于存档删除
如上,存档损坏之后需要修复

如果有对应玩家PID,可以进入
PalServer\Pal\Saved\SaveGames\0\<HEX>\Players\

这个文件夹,删除对应的文件

PID=10进制
FileName=16进制

如果没有的话,询问一下玩家最后登录的时间,通过最后存档时间来查询存档。

查到之后删除玩家对应存档 即可新建存档


玩家PID获取

在RCON后台输入
ShowPlayers

可以查看当前在线玩家Name,PID,SteamID

lvcha3 发表于 2024-1-22 10:01

不是买了游戏就可以玩的啊?

传说中的天才 发表于 2024-1-22 10:03

lvcha3 发表于 2024-1-22 10:01
不是买了游戏就可以玩的啊?

一个人玩单机,是。

简单的自己或者朋友开主机联机,是,

(和朋友)加入官方服务器,是,

想和朋友一起享受最佳联机体验,不是。

mwj 发表于 2024-1-22 10:04

lvcha3 发表于 2024-1-22 10:01
不是买了游戏就可以玩的啊?

可以直接开玩,官方也提供了类似mc的私服搭建工具可以搭建服务器后玩。

丹德里恩 发表于 2024-1-22 10:23

挺傻瓜式的,分享给傻吊群友了

lyt777 发表于 2024-1-22 10:25

抽空我在公司服务器上整一个,用不着DOCKER,我司ESXI有的是。

晨曦之下 发表于 2024-1-22 10:41

lvcha3 发表于 2024-1-22 10:01
不是买了游戏就可以玩的啊?

你可以翻翻差评 官服卡顿连不上的一堆 还有丢存档的
你也不想和小伙伴一晚上掉十几次吧

moeblack 发表于 2024-1-22 11:06

lyt777 发表于 2024-1-22 10:25
抽空我在公司服务器上整一个,用不着DOCKER,我司ESXI有的是。

我用PVE,LXC容器开的服务器,很稳

lvcha3 发表于 2024-1-22 11:11

阿里云我的服务器只有2g内存是不是就不用试了

moeblack 发表于 2024-1-22 11:15

lvcha3 发表于 2024-1-22 11:11
阿里云我的服务器只有2g内存是不是就不用试了

开不起来

midearth 发表于 2024-1-22 11:27

硫磺之火 发表于 2024-1-22 11:31

midearth 发表于 2024-1-22 11:27
请问下同服务器上限32人是说什么原因吗?这种开放世界游戏非同时在线的玩家数量再多又有什么影响 ...

内存会爆

—— 来自 Xiaomi 22041216C, Android 13上的 S1Next-鹅版 v2.5.2

moeblack 发表于 2024-1-22 12:15

midearth 发表于 2024-1-22 11:27
请问下同服务器上限32人是说什么原因吗?这种开放世界游戏非同时在线的玩家数量再多又有什么影响 ...

同时在线多了内存会爆

—— 来自 HUAWEI ALN-AL80, Android 12上的 S1Next-鹅版 v2.1.2

Litccc 发表于 2024-1-22 12:19

可惜不支持arm的服务器,不然甲骨文薅的服务器就能排上用场了

今天你提了吗 发表于 2024-1-22 13:06

没公网ip,能不能图便宜买个最低档有公网ip的小鸡,反代家里电脑,不知道这么搞延迟怎么样

蒜苗 发表于 2024-1-22 13:30

这游戏到底支不支持IPv6,支持的话就不需要愁什么公网IP了

qianoooo 发表于 2024-1-22 14:32

蒜苗 发表于 2024-1-22 13:30
这游戏到底支不支持IPv6,支持的话就不需要愁什么公网IP了

不支持 discord有人测过

tk553521 发表于 2024-1-22 15:29

lvcha3 发表于 2024-1-22 11:11
阿里云我的服务器只有2g内存是不是就不用试了

可以试一试,我也是2G阿里云,服务端起了并且玩了一阵子

sakilin2013 发表于 2024-1-22 15:39

谁知道我4核8G的能撑住8人一起玩么, 是要定期重启?

-- 来自 能手机投票的 Stage1官方 Android客户端

赤星ビスコ 发表于 2024-1-22 15:40

今天你提了吗 发表于 2024-1-22 13:06
没公网ip,能不能图便宜买个最低档有公网ip的小鸡,反代家里电脑,不知道这么搞延迟怎么样 ...

我感觉不如直接买个反向代理的服务

moeblack 发表于 2024-1-22 15:53

sakilin2013 发表于 2024-1-22 15:39
谁知道我4核8G的能撑住8人一起玩么, 是要定期重启?

-- 来自 能手机投票的 Stage1官方 Android ...

可以
不需要定时重启

linux swap设置成32G 然后swapiness设置成100

MMIno 发表于 2024-1-22 15:56

我问一下,在启用rcon的情况下,登录rcon的密码是啥?是adminpassword吗?

tasuku 发表于 2024-1-22 15:57

那么理论上nas上也可以架?

moeblack 发表于 2024-1-22 16:06

MMIno 发表于 2024-1-22 15:56
我问一下,在启用rcon的情况下,登录rcon的密码是啥?是adminpassword吗?

是的

moeblack 发表于 2024-1-22 16:14

tasuku 发表于 2024-1-22 15:57
那么理论上nas上也可以架?

可以,NAS可以用docker
让docker使用swap就能保证不崩溃

zx09 发表于 2024-1-22 16:36

我开了服务器 怎么改最大工会可以派驻帕鲁数量 默认是15 最大应该可以到20的 我不知道怎么改

moeblack 发表于 2024-1-22 16:40

zx09 发表于 2024-1-22 16:36
我开了服务器 怎么改最大工会可以派驻帕鲁数量 默认是15 最大应该可以到20的 我不知道怎么改 ...

有些设定是单纯的占位符,并不能修改以后才能改,这是官方服务器专门说了的事情

—— 来自 HUAWEI ALN-AL80, Android 12上的 S1Next-鹅版 v2.1.2

鱼肉丸子 发表于 2024-1-22 16:48

插眼,准备租服务器了

—— 来自 HUAWEI ALT-AL10, Android 12上的 S1Next-鹅版 v2.1.2

非典型叶子 发表于 2024-1-22 16:50

服务器到服务器的存档便宜没有主贴中贴的第三方教程里那么简单,仍有不小的失败可能性。建议非必要不迁移不重启云服务器,等待官方更新

—— 来自 S1Fun

蒜苗 发表于 2024-1-22 16:51

qianoooo 发表于 2024-1-22 14:32
不支持 discord有人测过

sad,这就有点难受了

干将莫邪 发表于 2024-1-22 17:15

其实阿里云最便宜的那个2核4G都开的起来(新人优惠一次性机会,3个月30块钱),只是人多了的话就更快到缓存极限导致服务器端关掉。可以写个bat小脚本定时2小时自动重启一下服务端,楼上说的虚拟内存设置大了也许能延长时间。

moeblack 发表于 2024-1-22 17:18

非典型叶子 发表于 2024-1-22 16:50
服务器到服务器的存档便宜没有主贴中贴的第三方教程里那么简单,仍有不小的失败可能性。建议非必要不迁移不 ...

了解

—— 来自 HUAWEI ALN-AL80, Android 12上的 S1Next-鹅版 v2.1.2

afer 发表于 2024-1-22 17:27

moeblack 发表于 2024-1-22 17:28

afer 发表于 2024-1-22 17:27
问下局域网能开么,对,我就是想用蛤蟆吃。

可以,方法一样,推荐
tailscape

—— 来自 HUAWEI ALN-AL80, Android 12上的 S1Next-鹅版 v2.1.2

afer 发表于 2024-1-22 17:34

afer 发表于 2024-1-22 20:01

HSJ1992 发表于 2024-1-22 21:08

afer 发表于 2024-1-22 20:01
再问下,现在有没有一般模式迁移到服务器成功的?另外主机之间存档能迁移么?

我现在主机的朋友因为电脑配 ...

单机模式存档迁移到服务器我尝试了一下,有装备没角色,角色会显示需要新建。

MMIno 发表于 2024-1-22 22:50

奇怪,为什么我打不开rconenable的开关?

发光的球 发表于 2024-1-23 00:49

@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION

:: Define the paths to the executables
SET "GameServerExecutable=PalServer-Win64-Test-Cmd.exe"
SET "RestartServerPath=C:\Program Files\SteamCMD\steamapps\common\PalServer\PalServer.exe"

:: Set the interval for checking the server process (in seconds)
SET /A checkInterval=120

:: Set the interval for restarting the server (in seconds)
SET /A restartInterval=14400

:: Initialize the timer
SET /A timer=0

:loop
:: Check if it's time to restart the server
IF !timer! GEQ %restartInterval% (
echo Time to restart the server.
taskkill /F /IM "%GameServerExecutable%"
timeout /t 3 /nobreak > NUL
SET /A timer=0
)

:: Check if the game server process is running
tasklist /FO "csv" /FI "IMAGENAME eq %GameServerExecutable%" 2>NUL | find /I /N "%GameServerExecutable%">NUL
IF "%ERRORLEVEL%"=="1" (
echo %GameServerExecutable% is not running, starting PalServer.exe...
start "" "%RestartServerPath%"
SET /A timer=0
)

:: Wait for the specified check interval
timeout /t %checkInterval% /nobreak > NUL

:: Increment the timer
SET /A timer+=checkInterval

:: Loop back
GOTO loop用gpt帮忙写了个win下自动重启的脚本,现在是四小时重启一次,同时没两分钟检查服务端是否存在,不存在也会自动启动,记得要把RestartServerPath改成自己服务端exe的位置


然后存档备份看b站用的Cobian Backup 11 (Gravity),感觉还行
不过网站上有个 普京是战犯,Z小鬼和脑残普粉滚粗 的小字
担心作者和n++一样魔怔的人可以再找个别的

非典型叶子 发表于 2024-1-23 02:36

本帖最后由 非典型叶子 于 2024-1-23 02:38 编辑

关于“一般模式迁移到服务器”的话题,社区已经有了一套完整的解决方案,比较复杂建议有一点程序能力的人来操作
How to's

For Local/Co-op Save to Server:
```
1Create a dedicated server via SteamCMD
2Run the server once
3Login to the server so it creates a player folder and .sav file.
    - Mine looked like "EE256A5000000000000000000000000.sav" this is what you later need for the script. (without the .sav)
4Stop the server
5Make sure to backup everything just in case.
6Copy your contents of your folder from C:\Users\domin\AppData\Local\Pal\Saved\SaveGames\Your Steam ID\BUNCH OF LETTERS AND NUMBERS\
7Make sure to have the lastest version of Python installed, download the script from Nul and the UEsave Executable.
8Run the cmd with the correct parameters.
    - "python fix-host-save.py C:\Folder\uesave.exe C:\Palworld\Pal\Saved\SaveGames\0\BunchOfLetterAndNumbers" "the file name that has been made from joining it once "
      = For example for me "python fix-host-save.py F:\Fixit\uesave.exe F:\Palworld\Server_1\Pal\Saved\SaveGames\0\8A15EB32440279628FB4587AF7718787 EE256A5000000000000000000000000"
9Wait a bit, it can take some time.
10 Copy all the files and folder over and overwrite the files.
11 Start the server
12 Voila in theory you should be good to go.

```


Extra info for if you are using a **/Cloud/Game Host:
```
-Run your fresh server
-Login to the server so it creates a player foler and .sav file.
-Stop your Server
-FTP into your server and find the savegame directory (In this folder has all your save data)
-Download the files on your own pc, so that you can run your script since this isnt possible with the host provider.
    = You can also make it a bit more nicer by making a folder for the sav files.
-Now you can follow the rest of the stuff from #7 mentioned above.
-Once the script is done you can upload the files back to the server and you should be good to go.
```

Links:

Nuls script: https://github.com/xNul/palworld-host-save-fix
UESave Extension: https://github.com/trumank/uesave-rs
Python Download: https://www.python.org/downloads/

Extra Options,if you want to manually convert the files from sav to json and vice versa these script can help you.
https://gist.github.com/cheahjs/300239464dd84fe6902893b6b9250fd0

Extra General info: https://gist.github.com/Toakan/3 ... erver-community-faq

Alternate option: https://www.reddit.com/r/Palworl ... ile_incl/?rdt=55658
来源:官方discord频道,在多位大佬的共同努力下完成
Append:
加入官方discord
https://discord.gg/pocketpair
可以在此Thread中翻阅讨论内容进一步学习
https://discord.com/channels/505994577942151180/1198474488426279054
页: [1] 2 3 4
查看完整版本: Docker/Linux 幻兽帕鲁 PalWorld 独立服务器 开设教程/存档迁移